Bug 1479836 - Add recommendation actions, title-cased headers and bug fixes to Activity Stream. r?ursula draft
authorEd Lee <edilee@mozilla.com>
Tue, 31 Jul 2018 10:31:47 -0700
changeset 825413 72bd432bedabf3f5bc1c292711e929dc0c44a2ca
parent 824607 0d72c7996d60a7c07e35c5f90d78b02a47d17460
push id118102
push userbmo:edilee@mozilla.com
push dateWed, 01 Aug 2018 18:25:37 +0000
reviewersursula
bugs1479836
milestone63.0a1
Bug 1479836 - Add recommendation actions, title-cased headers and bug fixes to Activity Stream. r?ursula MozReview-Commit-ID: 5NchCD9TNNS
browser/components/newtab/.sass-lint.yml
browser/components/newtab/aboutNewTabService.js
browser/components/newtab/common/Actions.jsm
browser/components/newtab/content-src/asrouter/README.md
browser/components/newtab/content-src/asrouter/asrouter-content.jsx
browser/components/newtab/content-src/asrouter/schemas/provider-response.schema.json
browser/components/newtab/content-src/components/Card/_Card.scss
browser/components/newtab/content-src/components/CollapsibleSection/_CollapsibleSection.scss
browser/components/newtab/content-src/components/TopSites/_TopSites.scss
browser/components/newtab/content-src/lib/link-menu-options.js
browser/components/newtab/css/activity-stream-linux.css
browser/components/newtab/css/activity-stream-linux.css.map
browser/components/newtab/css/activity-stream-mac.css
browser/components/newtab/css/activity-stream-mac.css.map
browser/components/newtab/css/activity-stream-windows.css
browser/components/newtab/css/activity-stream-windows.css.map
browser/components/newtab/data/content/activity-stream.bundle.js
browser/components/newtab/data/content/activity-stream.bundle.js.map
browser/components/newtab/docs/v2-system-addon/data_events.md
browser/components/newtab/karma.mc.config.js
browser/components/newtab/lib/ASRouter.jsm
browser/components/newtab/lib/ASRouterFeed.jsm
browser/components/newtab/lib/ASRouterTargeting.jsm
browser/components/newtab/lib/ASRouterTriggerListeners.jsm
browser/components/newtab/lib/ActivityStream.jsm
browser/components/newtab/lib/OnboardingMessageProvider.jsm
browser/components/newtab/lib/TopSitesFeed.jsm
browser/components/newtab/locales/cak/strings.properties
browser/components/newtab/locales/cy/strings.properties
browser/components/newtab/locales/ff/strings.properties
browser/components/newtab/locales/lv/strings.properties
browser/components/newtab/locales/mr/strings.properties
browser/components/newtab/prerendered/locales/cak/activity-stream-strings.js
browser/components/newtab/prerendered/locales/cy/activity-stream-strings.js
browser/components/newtab/prerendered/locales/ff/activity-stream-strings.js
browser/components/newtab/prerendered/locales/lv/activity-stream-strings.js
browser/components/newtab/prerendered/locales/mr/activity-stream-strings.js
browser/components/newtab/test/browser/browser.ini
browser/components/newtab/test/browser/browser_asrouter_targeting.js
browser/components/newtab/test/browser/browser_asrouter_trigger_listeners.js
browser/components/newtab/test/browser/red_page.html
browser/components/newtab/test/unit/asrouter/ASRouter.test.js
browser/components/newtab/test/unit/asrouter/ASRouterFeed.test.js
browser/components/newtab/test/unit/asrouter/ASRouterTriggerListeners.test.js
browser/components/newtab/test/unit/asrouter/MessageLoaderUtils.test.js
browser/components/newtab/test/unit/lib/TopSitesFeed.test.js
browser/components/newtab/test/unit/unit-entry.js
--- a/browser/components/newtab/.sass-lint.yml
+++ b/browser/components/newtab/.sass-lint.yml
@@ -12,15 +12,16 @@ rules:
   force-element-nesting: 0
   force-pseudo-nesting: 0
   hex-notation: [2, {style: uppercase}]
   indentation: [2, {size: 2}]
   leading-zero: [2, {include: true}]
   mixins-before-declarations: [2, {exclude: [breakpoint, mq]}]
   nesting-depth: [2, {max-depth: 4}]
   no-debug: 1
+  no-disallowed-properties: [1, {properties: [text-transform]}]
   no-duplicate-properties: 2
   no-misspelled-properties: [2, {extra-properties: [-moz-context-properties]}]
   no-url-domains: 0
   no-vendor-prefixes: 0
   no-warn: 1
   placeholder-in-extend: 2
   property-sort-order: 0
--- a/browser/components/newtab/aboutNewTabService.js
+++ b/browser/components/newtab/aboutNewTabService.js
@@ -304,17 +304,19 @@ AboutNewTabService.prototype = {
 
   get activityStreamDebug() {
     return this._activityStreamDebug;
   },
 
   get activityStreamLocale() {
     // Pick the best available locale to match the app locales
     return Services.locale.negotiateLanguages(
-      Services.locale.getAppLocalesAsBCP47(),
+      // Fix up incorrect BCP47 that are actually lang tags as a workaround for
+      // bug 1479606 returning the wrong values in the content process
+      Services.locale.getAppLocalesAsBCP47().map(l => l.replace(/^(ja-JP-mac)$/, "$1os")),
       ACTIVITY_STREAM_BCP47,
       // defaultLocale's strings aren't necessarily packaged, but en-US' are
       "en-US",
       Services.locale.langNegStrategyLookup
     // Convert the BCP47 to lang tag, which is what is used in our paths, as a
     // workaround for bug 1478930 negotiating incorrectly with lang tags
     )[0].replace(/^(ja-JP-mac)os$/, "$1");
   },
--- a/browser/components/newtab/common/Actions.jsm
+++ b/browser/components/newtab/common/Actions.jsm
@@ -113,16 +113,17 @@ for (const type of [
 ]) {
   actionTypes[type] = type;
 }
 
 // These are acceptable actions for AS Router messages to have. They can show up
 // as call-to-action buttons in snippets, onboarding tour, etc.
 const ASRouterActions = {};
 for (const type of [
+  "INSTALL_ADDON_FROM_URL",
   "OPEN_PRIVATE_BROWSER_WINDOW",
   "OPEN_URL",
   "OPEN_ABOUT_PAGE"
 ]) {
   ASRouterActions[type] = type;
 }
 
 // Helper function for creating routed actions between content and main
new file mode 100644
--- /dev/null
+++ b/browser/components/newtab/content-src/asrouter/README.md
@@ -0,0 +1,29 @@
+# Activity Stream Router
+
+## Preferences `browser.newtab.activity-stream.asrouter.*`
+
+Name | Used for | Type | Example value
+---  | ---      | ---  | ---
+`whitelistHosts` | Whitelist a host in order to fetch messages from its endpoint | `[String]` |  `["gist.github.com", "gist.githubusercontent.com", "localhost:8000"]`
+`snippetsUrl` | The main remote endpoint that serves all snippet messages | `String` | `https://activity-stream-icons.services.mozilla.com/v1/messages.json.br`
+
+## Admin Interface
+
+* Navigate to `about:newtab#asrouter`
+  * See all available messages and message providers
+  * Block, unblock or force show a specific message
+
+## Snippet Preview
+
+* Whitelist the provider host that will serve the messages
+  * In `about:config`, `browser.newtab.activity-stream.asrouter.whitelistHosts` can contain a array of hosts
+  * Example value `["gist.github.com", "gist.githubusercontent.com", "localhost:8000"]`
+  * Errors are surfaced in the `Console` tab of the `Browser Toolbox` ([read how to enable](https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox))
+* Navigate to `about:newtab?endpoint=<URL>`
+  * Example `https://gist.githubusercontent.com/piatra/70234f08696c0a0509d7ba5568cd830f/raw/68370f34abc134142c64b6f0a9b9258a06de7aa3/messages.json`
+  * URL should be from an endpoint that was just whitelisted
+  * The snippet preview should imediately load
+  * The endpoint must be HTTPS, the host must be whitelisted
+  * Errors are surfaced in the `Console` tab of the `Browser Toolbox`
+
+### [Snippet message format documentation](https://github.com/mozilla/activity-stream/blob/master/content-src/asrouter/schemas/message-format.md)
--- a/browser/components/newtab/content-src/asrouter/asrouter-content.jsx
+++ b/browser/components/newtab/content-src/asrouter/asrouter-content.jsx
@@ -186,17 +186,17 @@ export class ASRouterUISurface extends R
   }
 
   componentWillMount() {
     const endpoint = ASRouterUtils.getEndpoint();
     ASRouterUtils.addListener(this.onMessageFromParent);
 
     // If we are loading about:welcome we want to trigger the onboarding messages
     if (this.props.document.location.href === "about:welcome") {
-      ASRouterUtils.sendMessage({type: "TRIGGER", data: {trigger: "firstRun"}});
+      ASRouterUtils.sendMessage({type: "TRIGGER", data: {trigger: {id: "firstRun"}}});
     } else {
       ASRouterUtils.sendMessage({type: "CONNECT_UI_REQUEST", data: {endpoint}});
     }
   }
 
   componentWillUnmount() {
     ASRouterUtils.removeListener(this.onMessageFromParent);
   }
--- a/browser/components/newtab/content-src/asrouter/schemas/provider-response.schema.json
+++ b/browser/components/newtab/content-src/asrouter/schemas/provider-response.schema.json
@@ -31,21 +31,37 @@
             "description": "If bundled with other messages of the same template, which order should this one be placed in? (optional - defaults to 0)"
           },
           "content": {
             "type": "object",
             "description": "An object containing all variables/props to be rendered in the template. See individual template schemas for details."
           },
           "targeting": {
             "type": "string",
-            "description": "a JEXL expression representing targeting information"
+            "description": "A JEXL expression representing targeting information"
           },
           "trigger": {
-            "type": "string",
-            "description": "A string representing what the trigger to show this message is."
+            "type": "object",
+            "description": "An action to trigger potentially showing the message",
+            "properties": {
+              "id": {
+                "type": "string",
+                "description": "A string identifying the trigger action",
+                "enum": ["firstRun", "openURL"]
+              },
+              "params": {
+                "type": "array",
+                "description": "An optional array of string parameters for the trigger action",
+                "items": {
+                  "type": "string",
+                  "description": "A parameter for the trigger action"
+                }
+              }
+            },
+            "required": ["id"]
           },
           "frequency": {
             "type": "object",
             "description": "An object containing frequency cap information for a message.",
             "properties": {
               "lifetime": {
                 "type": "integer",
                 "description": "The maximum lifetime impressions for a message.",
--- a/browser/components/newtab/content-src/components/Card/_Card.scss
+++ b/browser/components/newtab/content-src/components/Card/_Card.scss
@@ -122,17 +122,17 @@
   }
 
   .card-host-name {
     color: var(--newtab-text-secondary-color);
     font-size: 10px;
     overflow: hidden;
     padding-bottom: 4px;
     text-overflow: ellipsis;
-    text-transform: uppercase;
+    text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties
     white-space: nowrap;
   }
 
   .card-host-name.alternate { display: none; }
 
   .card-title {
     font-size: 14px;
     font-weight: 600;
--- a/browser/components/newtab/content-src/components/CollapsibleSection/_CollapsibleSection.scss
+++ b/browser/components/newtab/content-src/components/CollapsibleSection/_CollapsibleSection.scss
@@ -3,17 +3,16 @@
   transition-delay: 100ms;
   transition-duration: 100ms;
   transition-property: background-color;
 
   .section-title {
     font-size: $section-title-font-size;
     font-weight: bold;
     margin: 0;
-    text-transform: uppercase;
 
     span {
       color: var(--newtab-section-header-text-color);
       display: inline-block;
       fill: var(--newtab-section-header-text-color);
       vertical-align: middle;
     }
 
--- a/browser/components/newtab/content-src/components/TopSites/_TopSites.scss
+++ b/browser/components/newtab/content-src/components/TopSites/_TopSites.scss
@@ -129,17 +129,17 @@
 
     // For letter fallback
     align-items: center;
     color: var(--newtab-text-secondary-color);
     display: flex;
     font-size: 32px;
     font-weight: 200;
     justify-content: center;
-    text-transform: uppercase;
+    text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties
 
     &::before {
       content: attr(data-fallback);
     }
   }
 
   .screenshot {
     background-color: $white;
@@ -294,17 +294,16 @@
     .top-site-outer {
       padding: 0;
       margin: 24px 0 0;
       margin-inline-start: $form-spacing;
       pointer-events: none;
     }
 
     .section-title {
-      text-transform: none;
       font-size: 16px;
       margin: 0 0 16px;
     }
   }
 
   .fields-and-preview {
     display: flex;
   }
--- a/browser/components/newtab/content-src/lib/link-menu-options.js
+++ b/browser/components/newtab/content-src/lib/link-menu-options.js
@@ -62,17 +62,17 @@ export const LinkMenuOptions = {
     }),
     userEvent: "OPEN_NEW_WINDOW"
   }),
   BlockUrl: (site, index, eventSource) => ({
     id: "menu_action_dismiss",
     icon: "dismiss",
     action: ac.AlsoToMain({
       type: at.BLOCK_URL,
-      data: {url: site.url, pocket_id: site.pocket_id}
+      data: {url: site.open_url || site.url, pocket_id: site.pocket_id}
     }),
     impression: ac.ImpressionStats({
       source: eventSource,
       block: 0,
       tiles: [{id: site.guid, pos: index}]
     }),
     userEvent: "BLOCK"
   }),
--- a/browser/components/newtab/css/activity-stream-linux.css
+++ b/browser/components/newtab/css/activity-stream-linux.css
@@ -620,17 +620,16 @@ main {
   margin: 0 auto;
   padding: 32px; }
   .topsite-form .form-input-container .top-site-outer {
     padding: 0;
     margin: 24px 0 0;
     margin-inline-start: 32px;
     pointer-events: none; }
   .topsite-form .form-input-container .section-title {
-    text-transform: none;
     font-size: 16px;
     margin: 0 0 16px; }
 
 .topsite-form .fields-and-preview {
   display: flex; }
 
 .topsite-form label {
   font-size: 13px; }
@@ -1564,18 +1563,17 @@ a.firstrun-link {
 .collapsible-section {
   padding: 10px 25px;
   transition-delay: 100ms;
   transition-duration: 100ms;
   transition-property: background-color; }
   .collapsible-section .section-title {
     font-size: 13px;
     font-weight: bold;
-    margin: 0;
-    text-transform: uppercase; }
+    margin: 0; }
     .collapsible-section .section-title span {
       color: var(--newtab-section-header-text-color);
       display: inline-block;
       fill: var(--newtab-section-header-text-color);
       vertical-align: middle; }
     .collapsible-section .section-title .click-target {
       cursor: pointer;
       vertical-align: top;
--- a/browser/components/newtab/css/activity-stream-linux.css.map
+++ b/browser/components/newtab/css/activity-stream-linux.css.map
@@ -31,28 +31,28 @@
 		"/* This is the linux variant */ // sass-lint:disable-line no-css-comments\n\n$os-infopanel-arrow-height: 10px;\n$os-infopanel-arrow-offset-end: 6px;\n$os-infopanel-arrow-width: 20px;\n\n@import './activity-stream';\n",
 		"@import './normalize';\n@import './variables';\n@import './theme';\n@import './icons';\n\nhtml {\n  height: 100%;\n}\n\nbody,\n#root { // sass-lint:disable-line no-ids\n  min-height: 100vh;\n}\n\nbody {\n  background-color: var(--newtab-background-color);\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;\n  font-size: 16px;\n  overflow-y: scroll;\n\n  &.hide-onboarding > #onboarding-overlay-button, // sass-lint:disable-line no-ids\n  &.hide-main > #onboarding-overlay-button { // sass-lint:disable-line no-ids\n    display: none !important; // sass-lint:disable-line no-important\n  }\n\n  &.hide-main > #onboarding-notification-bar { // sass-lint:disable-line no-ids\n    display: none;\n  }\n}\n\nh1,\nh2 {\n  font-weight: normal;\n}\n\na {\n  text-decoration: none;\n}\n\n// For screen readers\n.sr-only {\n  border: 0;\n  clip: rect(0, 0, 0, 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px;\n}\n\n.inner-border {\n  border: $border-secondary;\n  border-radius: $border-radius;\n  height: 100%;\n  left: 0;\n  pointer-events: none;\n  position: absolute;\n  top: 0;\n  width: 100%;\n  z-index: 100;\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n.show-on-init {\n  opacity: 0;\n  transition: opacity 0.2s ease-in;\n\n  &.on {\n    animation: fadeIn 0.2s;\n    opacity: 1;\n  }\n}\n\n.actions {\n  border-top: $border-secondary;\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n  margin: 0;\n  padding: 15px 25px 0;\n}\n\n// Default button (grey)\n.button,\n.actions button {\n  background-color: var(--newtab-button-secondary-color);\n  border: $border-primary;\n  border-radius: 4px;\n  color: inherit;\n  cursor: pointer;\n  margin-bottom: 15px;\n  padding: 10px 30px;\n  white-space: nowrap;\n\n  &:hover:not(.dismiss) {\n    box-shadow: $shadow-primary;\n    transition: box-shadow 150ms;\n  }\n\n  &.dismiss {\n    background-color: transparent;\n    border: 0;\n    padding: 0;\n    text-decoration: underline;\n  }\n\n  // Blue button\n  &.primary,\n  &.done {\n    background-color: var(--newtab-button-primary-color);\n    border: solid 1px var(--newtab-button-primary-color);\n    color: $white;\n    margin-inline-start: auto;\n  }\n}\n\ninput {\n  &[type='text'],\n  &[type='search'] {\n    border-radius: $border-radius;\n  }\n}\n\n// Make sure snippets show up above other UI elements\n#snippets-container { // sass-lint:disable-line no-ids\n  z-index: 1;\n}\n\n// Components\n@import '../components/Base/Base';\n@import '../components/ErrorBoundary/ErrorBoundary';\n@import '../components/TopSites/TopSites';\n@import '../components/Sections/Sections';\n@import '../components/StartupOverlay/StartupOverlay';\n@import '../components/Topics/Topics';\n@import '../components/Search/Search';\n@import '../components/ContextMenu/ContextMenu';\n@import '../components/ConfirmDialog/ConfirmDialog';\n@import '../components/Card/Card';\n@import '../components/ManualMigration/ManualMigration';\n@import '../components/CollapsibleSection/CollapsibleSection';\n@import '../components/ASRouterAdmin/ASRouterAdmin';\n\n// AS Router\n@import '../asrouter/components/Button/Button';\n@import '../asrouter/components/SnippetBase/SnippetBase';\n@import '../asrouter/components/ModalOverlay/ModalOverlay';\n@import '../asrouter/templates/SimpleSnippet/SimpleSnippet';\n@import '../asrouter/templates/OnboardingMessage/OnboardingMessage';\n",
 		"html {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n\n*::-moz-focus-inner {\n  border: 0;\n}\n\nbody {\n  margin: 0;\n}\n\nbutton,\ninput {\n  background-color: inherit;\n  color: inherit;\n  font-family: inherit;\n  font-size: inherit;\n}\n\n[hidden] {\n  display: none !important; // sass-lint:disable-line no-important\n}\n",
 		"// Photon colors from http://design.firefox.com/photon/visuals/color.html\n$blue-40: #45A1FF;\n$blue-50: #0A84FF;\n$blue-60: #0060DF;\n$blue-70: #003EAA;\n$blue-80: #002275;\n$grey-10: #F9F9FA;\n$grey-20: #EDEDF0;\n$grey-30: #D7D7DB;\n$grey-40: #B1B1B3;\n$grey-50: #737373;\n$grey-60: #4A4A4F;\n$grey-70: #38383D;\n$grey-80: #2A2A2E;\n$grey-90: #0C0C0D;\n$teal-70: #008EA4;\n$red-60: #D70022;\n$yellow-50: #FFE900;\n\n// Photon opacity from http://design.firefox.com/photon/visuals/color.html#opacity\n$grey-10-10: rgba($grey-10, 0.1);\n$grey-10-20: rgba($grey-10, 0.2);\n$grey-10-40: rgba($grey-10, 0.4);\n$grey-10-60: rgba($grey-10, 0.6);\n$grey-10-80: rgba($grey-10, 0.8);\n$grey-20-60: rgba($grey-20, 0.6);\n$grey-20-80: rgba($grey-20, 0.8);\n$grey-30-60: rgba($grey-30, 0.6);\n$grey-90-10: rgba($grey-90, 0.1);\n$grey-90-20: rgba($grey-90, 0.2);\n$grey-90-30: rgba($grey-90, 0.3);\n$grey-90-40: rgba($grey-90, 0.4);\n$grey-90-50: rgba($grey-90, 0.5);\n$grey-90-60: rgba($grey-90, 0.6);\n$grey-90-70: rgba($grey-90, 0.7);\n$grey-90-80: rgba($grey-90, 0.8);\n$grey-90-90: rgba($grey-90, 0.9);\n\n$black: #000;\n$black-5: rgba($black, 0.05);\n$black-10: rgba($black, 0.1);\n$black-15: rgba($black, 0.15);\n$black-20: rgba($black, 0.2);\n$black-25: rgba($black, 0.25);\n$black-30: rgba($black, 0.3);\n\n// Other colors\n$white: #FFF;\n$white-10: rgba($white, 0.1);\n$pocket-teal: #50BCB6;\n$bookmark-icon-fill: #0A84FF;\n$download-icon-fill: #12BC00;\n$pocket-icon-fill: #D70022;\n$email-input-focus: rgba($blue-50, 0.3);\n$email-input-invalid: rgba($red-60, 0.3);\n$aw-extra-blue-1: #004EC2;\n$aw-extra-blue-2: #0080FF;\n$aw-extra-blue-3: #00C7FF;\n$about-welcome-gradient: linear-gradient(to bottom, $blue-70 40%, $aw-extra-blue-1 60%, $blue-60 80%, $aw-extra-blue-2 90%, $aw-extra-blue-3 100%);\n$about-welcome-extra-links: #676F7E;\n\n// Photon transitions from http://design.firefox.com/photon/motion/duration-and-easing.html\n$photon-easing: cubic-bezier(0.07, 0.95, 0, 1);\n\n$border-radius: 3px;\n\n// Grid related styles\n$base-gutter: 32px;\n$section-horizontal-padding: 25px;\n$section-vertical-padding: 10px;\n$section-spacing: 40px - $section-vertical-padding * 2;\n$grid-unit: 96px; // 1 top site\n\n$icon-size: 16px;\n$smaller-icon-size: 12px;\n$larger-icon-size: 32px;\n\n$wrapper-default-width: $grid-unit * 2 + $base-gutter * 1 + $section-horizontal-padding * 2; // 2 top sites\n$wrapper-max-width-small: $grid-unit * 3 + $base-gutter * 2 + $section-horizontal-padding * 2; // 3 top sites\n$wrapper-max-width-medium: $grid-unit * 4 + $base-gutter * 3 + $section-horizontal-padding * 2; // 4 top sites\n$wrapper-max-width-large: $grid-unit * 6 + $base-gutter * 5 + $section-horizontal-padding * 2; // 6 top sites\n$wrapper-max-width-widest: $grid-unit * 8 + $base-gutter * 7 + $section-horizontal-padding * 2; // 8 top sites\n// For the breakpoints, we need to add space for the scrollbar to avoid weird\n// layout issues when the scrollbar is visible. 16px is wide enough to cover all\n// OSes and keeps it simpler than a per-OS value.\n$scrollbar-width: 16px;\n$break-point-small: $wrapper-max-width-small + $base-gutter * 2 + $scrollbar-width;\n$break-point-medium: $wrapper-max-width-medium + $base-gutter * 2 + $scrollbar-width;\n$break-point-large: $wrapper-max-width-large + $base-gutter * 2 + $scrollbar-width;\n$break-point-widest: $wrapper-max-width-widest + $base-gutter * 2 + $scrollbar-width;\n\n$section-title-font-size: 13px;\n\n$card-width: $grid-unit * 2 + $base-gutter;\n$card-height: 266px;\n$card-preview-image-height: 122px;\n$card-title-margin: 2px;\n$card-text-line-height: 19px;\n// Larger cards for wider screens:\n$card-width-large: 309px;\n$card-height-large: 370px;\n$card-preview-image-height-large: 155px;\n// Compact cards for Highlights\n$card-height-compact: 160px;\n$card-preview-image-height-compact: 108px;\n\n$topic-margin-top: 12px;\n\n$context-menu-button-size: 27px;\n$context-menu-button-boxshadow: 0 2px $grey-90-10;\n$context-menu-shadow: 0 5px 10px $black-30, 0 0 0 1px $black-20;\n$context-menu-font-size: 14px;\n$context-menu-border-radius: 5px;\n$context-menu-outer-padding: 5px;\n$context-menu-item-padding: 3px 12px;\n\n$error-fallback-font-size: 12px;\n$error-fallback-line-height: 1.5;\n\n$image-path: '../data/content/assets/';\n\n$snippets-container-height: 120px;\n\n$textbox-shadow-size: 4px;\n\n@mixin fade-in {\n  box-shadow: inset $inner-box-shadow, $shadow-primary;\n  transition: box-shadow 150ms;\n}\n\n@mixin fade-in-card {\n  box-shadow: $shadow-primary;\n  transition: box-shadow 150ms;\n}\n\n@mixin context-menu-button {\n  .context-menu-button {\n    background-clip: padding-box;\n    background-color: var(--newtab-contextmenu-button-color);\n    background-image: url('chrome://browser/skin/page-action.svg');\n    background-position: 55%;\n    border: $border-primary;\n    border-radius: 100%;\n    box-shadow: $context-menu-button-boxshadow;\n    cursor: pointer;\n    fill: var(--newtab-icon-primary-color);\n    height: $context-menu-button-size;\n    inset-inline-end: -($context-menu-button-size / 2);\n    opacity: 0;\n    position: absolute;\n    top: -($context-menu-button-size / 2);\n    transform: scale(0.25);\n    transition-duration: 200ms;\n    transition-property: transform, opacity;\n    width: $context-menu-button-size;\n\n    &:-moz-any(:active, :focus) {\n      opacity: 1;\n      transform: scale(1);\n    }\n  }\n}\n\n@mixin context-menu-button-hover {\n  .context-menu-button {\n    opacity: 1;\n    transform: scale(1);\n  }\n}\n\n@mixin context-menu-open-middle {\n  .context-menu {\n    margin-inline-end: auto;\n    margin-inline-start: auto;\n    inset-inline-end: auto;\n    inset-inline-start: -$base-gutter;\n  }\n}\n\n@mixin context-menu-open-left {\n  .context-menu {\n    margin-inline-end: 5px;\n    margin-inline-start: auto;\n    inset-inline-end: 0;\n    inset-inline-start: auto;\n  }\n}\n\n@mixin flip-icon {\n  &:dir(rtl) {\n    transform: scaleX(-1);\n  }\n}\n",
 		"@function textbox-shadow($color) {\n  @return 0 0 0 1px $color, 0 0 0 $textbox-shadow-size rgba($color, 0.3);\n}\n\n@mixin textbox-focus($color) {\n  --newtab-textbox-focus-color: $color;\n  --newtab-textbox-focus-boxshadow: textbox-shadow($color);\n}\n\n// scss variables related to the theme.\n$border-primary: 1px solid var(--newtab-border-primary-color);\n$border-secondary: 1px solid var(--newtab-border-secondary-color);\n$inner-box-shadow: 0 0 0 1px var(--newtab-inner-box-shadow-color);\n$input-border: 1px solid var(--newtab-textbox-border);\n$input-border-active: 1px solid var(--newtab-textbox-focus-color);\n$input-error-border: 1px solid $red-60;\n$input-error-boxshadow: textbox-shadow($red-60);\n$shadow-primary: 0 0 0 5px var(--newtab-card-active-outline-color);\n$shadow-secondary: 0 1px 4px 0 $grey-90-20;\n\n// Default theme\nbody {\n  // General styles\n  --newtab-background-color: $grey-10;\n  --newtab-border-primary-color: $grey-40;\n  --newtab-border-secondary-color: $grey-30;\n  --newtab-button-primary-color: $blue-60;\n  --newtab-button-secondary-color: inherit;\n  --newtab-element-active-color: $grey-30-60;\n  --newtab-element-hover-color: $grey-20;\n  --newtab-icon-primary-color: $grey-90-80;\n  --newtab-icon-secondary-color: $grey-90-60;\n  --newtab-icon-tertiary-color: $grey-30;\n  --newtab-inner-box-shadow-color: $black-10;\n  --newtab-link-primary-color: $blue-60;\n  --newtab-link-secondary-color: $teal-70;\n  --newtab-text-conditional-color: $grey-60;\n  --newtab-text-primary-color: $grey-90;\n  --newtab-text-secondary-color: $grey-50;\n  --newtab-textbox-background-color: $white;\n  --newtab-textbox-border: $grey-90-20;\n  @include textbox-focus($blue-60); // sass-lint:disable-line mixins-before-declarations\n\n  // Context menu\n  --newtab-contextmenu-background-color: $grey-10;\n  --newtab-contextmenu-button-color: $white;\n\n  // Modal + overlay\n  --newtab-modal-color: $white;\n  --newtab-overlay-color: $grey-20-80;\n\n  // Sections\n  --newtab-section-header-text-color: $grey-50;\n  --newtab-section-navigation-text-color: $grey-50;\n  --newtab-section-active-contextmenu-color: $grey-90;\n\n  // Search\n  --newtab-search-border-color: transparent;\n  --newtab-search-dropdown-color: $white;\n  --newtab-search-dropdown-header-color: $grey-10;\n  --newtab-search-icon-color: $grey-90-40;\n\n  // Top Sites\n  --newtab-topsites-background-color: $white;\n  --newtab-topsites-icon-shadow: inset $inner-box-shadow;\n  --newtab-topsites-label-color: inherit;\n\n  // Cards\n  --newtab-card-active-outline-color: $grey-30;\n  --newtab-card-background-color: $white;\n  --newtab-card-hairline-color: $black-10;\n  --newtab-card-shadow: 0 1px 4px 0 $grey-90-10;\n\n  // Snippets\n  --newtab-snippets-background-color: $white;\n  --newtab-snippets-hairline-color: transparent;\n\n  &[lwt-newtab-brighttext] {\n    // General styles\n    --newtab-background-color: $grey-80;\n    --newtab-border-primary-color: $grey-10-80;\n    --newtab-border-secondary-color: $grey-10-10;\n    --newtab-button-primary-color: $blue-60;\n    --newtab-button-secondary-color: $grey-70;\n    --newtab-element-active-color: $grey-10-20;\n    --newtab-element-hover-color: $grey-10-10;\n    --newtab-icon-primary-color: $grey-10-80;\n    --newtab-icon-secondary-color: $grey-10-40;\n    --newtab-icon-tertiary-color: $grey-10-40;\n    --newtab-inner-box-shadow-color: $grey-10-20;\n    --newtab-link-primary-color: $blue-40;\n    --newtab-link-secondary-color: $pocket-teal;\n    --newtab-text-conditional-color: $grey-10;\n    --newtab-text-primary-color: $grey-10;\n    --newtab-text-secondary-color: $grey-10-80;\n    --newtab-textbox-background-color: $grey-70;\n    --newtab-textbox-border: $grey-10-20;\n    @include textbox-focus($blue-40); // sass-lint:disable-line mixins-before-declarations\n\n    // Context menu\n    --newtab-contextmenu-background-color: $grey-60;\n    --newtab-contextmenu-button-color: $grey-80;\n\n    // Modal + overlay\n    --newtab-modal-color: $grey-80;\n    --newtab-overlay-color: $grey-90-80;\n\n    // Sections\n    --newtab-section-header-text-color: $grey-10-80;\n    --newtab-section-navigation-text-color: $grey-10-80;\n    --newtab-section-active-contextmenu-color: $white;\n\n    // Search\n    --newtab-search-border-color: $grey-10-20;\n    --newtab-search-dropdown-color: $grey-70;\n    --newtab-search-dropdown-header-color: $grey-60;\n    --newtab-search-icon-color: $grey-10-60;\n\n    // Top Sites\n    --newtab-topsites-background-color: $grey-70;\n    --newtab-topsites-icon-shadow: none;\n    --newtab-topsites-label-color: $grey-10-80;\n\n    // Cards\n    --newtab-card-active-outline-color: $grey-60;\n    --newtab-card-background-color: $grey-70;\n    --newtab-card-hairline-color: $grey-10-10;\n    --newtab-card-shadow: 0 1px 8px 0 $grey-90-20;\n\n    // Snippets\n    --newtab-snippets-background-color: $grey-70;\n    --newtab-snippets-hairline-color: $white-10;\n  }\n}\n",
 		".icon {\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-size: $icon-size;\n  -moz-context-properties: fill;\n  display: inline-block;\n  fill: var(--newtab-icon-primary-color);\n  height: $icon-size;\n  vertical-align: middle;\n  width: $icon-size;\n\n  &.icon-spacer {\n    margin-inline-end: 8px;\n  }\n\n  &.icon-small-spacer {\n    margin-inline-end: 6px;\n  }\n\n  &.icon-bookmark-added {\n    background-image: url('chrome://browser/skin/bookmark.svg');\n  }\n\n  &.icon-bookmark-hollow {\n    background-image: url('chrome://browser/skin/bookmark-hollow.svg');\n  }\n\n  &.icon-clear-input {\n    fill: var(--newtab-icon-secondary-color);\n    background-image: url('#{$image-path}glyph-cancel-16.svg');\n  }\n\n  &.icon-delete {\n    background-image: url('#{$image-path}glyph-delete-16.svg');\n  }\n\n  &.icon-search {\n    background-image: url('chrome://browser/skin/search-glass.svg');\n  }\n\n  &.icon-modal-delete {\n    flex-shrink: 0;\n    background-image: url('#{$image-path}glyph-modal-delete-32.svg');\n    background-size: $larger-icon-size;\n    height: $larger-icon-size;\n    width: $larger-icon-size;\n  }\n\n  &.icon-dismiss {\n    background-image: url('#{$image-path}glyph-dismiss-16.svg');\n  }\n\n  &.icon-info {\n    background-image: url('#{$image-path}glyph-info-16.svg');\n  }\n\n  &.icon-import {\n    background-image: url('#{$image-path}glyph-import-16.svg');\n  }\n\n  &.icon-new-window {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-newWindow-16.svg');\n  }\n\n  &.icon-new-window-private {\n    background-image: url('chrome://browser/skin/privateBrowsing.svg');\n  }\n\n  &.icon-settings {\n    background-image: url('chrome://browser/skin/settings.svg');\n  }\n\n  &.icon-pin {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-pin-16.svg');\n  }\n\n  &.icon-unpin {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-unpin-16.svg');\n  }\n\n  &.icon-edit {\n    background-image: url('#{$image-path}glyph-edit-16.svg');\n  }\n\n  &.icon-pocket {\n    background-image: url('#{$image-path}glyph-pocket-16.svg');\n  }\n\n  &.icon-history-item {\n    background-image: url('chrome://browser/skin/history.svg');\n  }\n\n  &.icon-trending {\n    background-image: url('#{$image-path}glyph-trending-16.svg');\n    transform: translateY(2px); // trending bolt is visually top heavy\n  }\n\n  &.icon-now {\n    background-image: url('chrome://browser/skin/history.svg');\n  }\n\n  &.icon-topsites {\n    background-image: url('#{$image-path}glyph-topsites-16.svg');\n  }\n\n  &.icon-pin-small {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-pin-12.svg');\n    background-size: $smaller-icon-size;\n    height: $smaller-icon-size;\n    width: $smaller-icon-size;\n  }\n\n  &.icon-check {\n    background-image: url('chrome://browser/skin/check.svg');\n  }\n\n  &.icon-download {\n    background-image: url('chrome://browser/skin/downloads/download-icons.svg#arrow-with-bar');\n  }\n\n  &.icon-copy {\n    background-image: url('chrome://browser/skin/edit-copy.svg');\n  }\n\n  &.icon-open-file {\n    background-image: url('#{$image-path}glyph-open-file-16.svg');\n  }\n\n  &.icon-webextension {\n    background-image: url('#{$image-path}glyph-webextension-16.svg');\n  }\n\n  &.icon-highlights {\n    background-image: url('#{$image-path}glyph-highlights-16.svg');\n  }\n\n  &.icon-arrowhead-down {\n    background-image: url('#{$image-path}glyph-arrowhead-down-16.svg');\n  }\n\n  &.icon-arrowhead-down-small {\n    background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n    background-size: $smaller-icon-size;\n    height: $smaller-icon-size;\n    width: $smaller-icon-size;\n  }\n\n  &.icon-arrowhead-forward-small {\n    background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n    background-size: $smaller-icon-size;\n    height: $smaller-icon-size;\n    transform: rotate(-90deg);\n    width: $smaller-icon-size;\n\n    &:dir(rtl) {\n      transform: rotate(90deg);\n    }\n  }\n\n  &.icon-arrowhead-up {\n    background-image: url('#{$image-path}glyph-arrowhead-down-16.svg');\n    transform: rotate(180deg);\n  }\n\n  &.icon-add {\n    background-image: url('#{$image-path}glyph-add-16.svg');\n  }\n\n  &.icon-minimize {\n    background-image: url('#{$image-path}glyph-minimize-16.svg');\n  }\n\n  &.icon-maximize {\n    background-image: url('#{$image-path}glyph-maximize-16.svg');\n  }\n}\n",
 		".outer-wrapper {\n  color: var(--newtab-text-primary-color);\n  display: flex;\n  flex-grow: 1;\n  min-height: 100vh;\n  padding: ($section-spacing + $section-vertical-padding) $base-gutter $base-gutter;\n\n  &.fixed-to-top {\n    display: block;\n  }\n\n  a {\n    color: var(--newtab-link-primary-color);\n  }\n}\n\nmain {\n  margin: auto;\n  // Offset the snippets container so things at the bottom of the page are still\n  // visible when snippets / onboarding are visible. Adjust for other spacing.\n  padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n  width: $wrapper-default-width;\n\n  @media (min-width: $break-point-small) {\n    width: $wrapper-max-width-small;\n  }\n\n  @media (min-width: $break-point-medium) {\n    width: $wrapper-max-width-medium;\n  }\n\n  @media (min-width: $break-point-large) {\n    width: $wrapper-max-width-large;\n  }\n\n  @media (min-width: $break-point-widest) {\n    width: $wrapper-max-width-widest;\n  }\n\n  section {\n    margin-bottom: $section-spacing;\n    position: relative;\n  }\n\n  .hide-main & {\n    visibility: hidden;\n  }\n\n}\n\n.base-content-fallback {\n  // Make the error message be centered against the viewport\n  height: 100vh;\n}\n\n.body-wrapper {\n  // Hide certain elements so the page structure is fixed, e.g., placeholders,\n  // while avoiding flashes of changing content, e.g., icons and text\n  $selectors-to-hide: '\n    .section-title,\n    .sections-list .section:last-of-type,\n    .topic\n  ';\n\n  #{$selectors-to-hide} {\n    opacity: 0;\n  }\n\n  &.on {\n    #{$selectors-to-hide} {\n      opacity: 1;\n    }\n  }\n}\n\n.non-collapsible-section {\n  padding: 0 $section-horizontal-padding;\n}\n\n.prefs-button {\n  button {\n    background-color: transparent;\n    border: 0;\n    cursor: pointer;\n    fill: var(--newtab-icon-primary-color);\n    inset-inline-end: 15px;\n    padding: 15px;\n    position: fixed;\n    top: 15px;\n    z-index: 1000;\n\n    &:hover,\n    &:focus {\n      background-color: var(--newtab-element-hover-color);\n    }\n\n    &:active {\n      background-color: var(--newtab-element-active-color);\n    }\n  }\n}\n",
 		".as-error-fallback {\n  align-items: center;\n  border-radius: $border-radius;\n  box-shadow: inset $inner-box-shadow;\n  color: var(--newtab-text-conditional-color);\n  display: flex;\n  flex-direction: column;\n  font-size: $error-fallback-font-size;\n  justify-content: center;\n  justify-items: center;\n  line-height: $error-fallback-line-height;\n\n  a {\n    color: var(--newtab-text-conditional-color);\n    text-decoration: underline;\n  }\n}\n",
-		"$top-sites-size: $grid-unit;\n$top-sites-border-radius: 6px;\n$top-sites-title-height: 30px;\n$top-sites-vertical-space: 8px;\n$screenshot-size: cover;\n$rich-icon-size: 96px;\n$default-icon-wrapper-size: 42px;\n$default-icon-size: 32px;\n$default-icon-offset: 6px;\n$half-base-gutter: $base-gutter / 2;\n\n.top-sites {\n  // Take back the margin from the bottom row of vertical spacing as well as the\n  // extra whitespace below the title text as it's vertically centered.\n  margin-bottom: $section-spacing - ($top-sites-vertical-space + $top-sites-title-height / 3);\n}\n\n.top-sites-list {\n  list-style: none;\n  margin: 0 (-$half-base-gutter);\n  padding: 0;\n\n  // Two columns\n  @media (max-width: $break-point-small) {\n    :nth-child(2n+1) {\n      @include context-menu-open-middle;\n    }\n\n    :nth-child(2n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Three columns\n  @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n    :nth-child(3n+2),\n    :nth-child(3n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Four columns\n  @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n    :nth-child(4n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n    :nth-child(4n+3) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Six columns\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n    :nth-child(6n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n    :nth-child(6n+5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Eight columns\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n    :nth-child(8n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n    :nth-child(8n+7) {\n      @include context-menu-open-left;\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n\n  li {\n    margin: 0 0 $top-sites-vertical-space;\n  }\n\n  &:not(.dnd-active) {\n    .top-site-outer:-moz-any(.active, :focus, :hover) {\n      .tile {\n        @include fade-in;\n      }\n\n      @include context-menu-button-hover;\n    }\n  }\n}\n\n// container for drop zone\n.top-site-outer {\n  padding: 0 $half-base-gutter;\n  display: inline-block;\n\n  // container for context menu\n  .top-site-inner {\n    position: relative;\n\n    > a {\n      color: inherit;\n      display: block;\n      outline: none;\n\n      &:-moz-any(.active, :focus) {\n        .tile {\n          @include fade-in;\n        }\n      }\n    }\n  }\n\n  @include context-menu-button;\n\n  .tile { // sass-lint:disable-block property-sort-order\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow, var(--newtab-card-shadow);\n    height: $top-sites-size;\n    position: relative;\n    width: $top-sites-size;\n\n    // For letter fallback\n    align-items: center;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 32px;\n    font-weight: 200;\n    justify-content: center;\n    text-transform: uppercase;\n\n    &::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .screenshot {\n    background-color: $white;\n    background-position: top left;\n    background-size: $screenshot-size;\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow;\n    height: 100%;\n    left: 0;\n    opacity: 0;\n    position: absolute;\n    top: 0;\n    transition: opacity 1s;\n    width: 100%;\n\n    &.active {\n      opacity: 1;\n    }\n  }\n\n  // Some common styles for all icons (rich and default) in top sites\n  .top-site-icon {\n    background-color: var(--newtab-topsites-background-color);\n    background-position: center center;\n    background-repeat: no-repeat;\n    border-radius: $top-sites-border-radius;\n    box-shadow: var(--newtab-topsites-icon-shadow);\n    position: absolute;\n  }\n\n  .rich-icon {\n    background-size: cover;\n    height: 100%;\n    inset-inline-start: 0;\n    top: 0;\n    width: 100%;\n  }\n\n  .default-icon { // sass-lint:disable block property-sort-order\n    background-size: $default-icon-size;\n    bottom: -$default-icon-offset;\n    height: $default-icon-wrapper-size;\n    inset-inline-end: -$default-icon-offset;\n    width: $default-icon-wrapper-size;\n\n    // for corner letter fallback\n    align-items: center;\n    display: flex;\n    font-size: 20px;\n    justify-content: center;\n\n    &[data-fallback]::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .title {\n    color: var(--newtab-topsites-label-color);\n    font: message-box;\n    height: $top-sites-title-height;\n    line-height: $top-sites-title-height;\n    text-align: center;\n    width: $top-sites-size;\n    position: relative;\n\n    .icon {\n      fill: var(--newtab-icon-tertiary-color);\n      inset-inline-start: 0;\n      position: absolute;\n      top: 10px;\n    }\n\n    span {\n      height: $top-sites-title-height;\n      display: block;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    &.pinned {\n      span {\n        padding: 0 13px;\n      }\n    }\n  }\n\n  .edit-button {\n    background-image: url('#{$image-path}glyph-edit-16.svg');\n  }\n\n  &.placeholder {\n    .tile {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .screenshot {\n      display: none;\n    }\n  }\n\n  &.dragged {\n    .tile {\n      background: $grey-20;\n      box-shadow: none;\n\n      *,\n      &::before {\n        display: none;\n      }\n    }\n\n    .title {\n      visibility: hidden;\n    }\n  }\n}\n\n.edit-topsites-wrapper {\n  .modal {\n    box-shadow: $shadow-secondary;\n    left: 0;\n    margin: 0 auto;\n    position: fixed;\n    right: 0;\n    top: 40px;\n    width: $wrapper-default-width;\n\n    @media (min-width: $break-point-small) {\n      width: $wrapper-max-width-small;\n    }\n\n    @media (min-width: $break-point-medium) {\n      width: $wrapper-max-width-medium;\n    }\n\n    @media (min-width: $break-point-large) {\n      width: $wrapper-max-width-large;\n    }\n  }\n}\n\n.topsite-form {\n  $form-width: 300px;\n  $form-spacing: 32px;\n\n  .form-input-container {\n    max-width: $form-width + 3 * $form-spacing + $rich-icon-size;\n    margin: 0 auto;\n    padding: $form-spacing;\n\n    .top-site-outer {\n      padding: 0;\n      margin: 24px 0 0;\n      margin-inline-start: $form-spacing;\n      pointer-events: none;\n    }\n\n    .section-title {\n      text-transform: none;\n      font-size: 16px;\n      margin: 0 0 16px;\n    }\n  }\n\n  .fields-and-preview {\n    display: flex;\n  }\n\n  label {\n    font-size: $section-title-font-size;\n  }\n\n  .form-wrapper {\n    width: 100%;\n\n    .field {\n      position: relative;\n\n      .icon-clear-input {\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n    }\n\n    .url {\n      input:dir(ltr) {\n        padding-right: 32px;\n      }\n\n      input:dir(rtl) {\n        padding-left: 32px;\n\n        &:not(:placeholder-shown) {\n          direction: ltr;\n          text-align: right;\n        }\n      }\n    }\n\n    .enable-custom-image-input {\n      display: inline-block;\n      font-size: 13px;\n      margin-top: 4px;\n      cursor: pointer;\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n\n    .custom-image-input-container {\n      margin-top: 4px;\n\n      .loading-container {\n        width: 16px;\n        height: 16px;\n        overflow: hidden;\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n\n      // This animation is derived from Firefox's tab loading animation\n      // See https://searchfox.org/mozilla-central/rev/b29daa46443b30612415c35be0a3c9c13b9dc5f6/browser/themes/shared/tabs.inc.css#208-216\n      .loading-animation {\n        @keyframes tab-throbber-animation {\n          100% { transform: translateX(-960px); }\n        }\n\n        @keyframes tab-throbber-animation-rtl {\n          100% { transform: translateX(960px); }\n        }\n\n        width: 960px;\n        height: 16px;\n        -moz-context-properties: fill;\n        fill: $blue-50;\n        background-image: url('chrome://browser/skin/tabbrowser/loading.svg');\n        animation: tab-throbber-animation 1.05s steps(60) infinite;\n\n        &:dir(rtl) {\n          animation-name: tab-throbber-animation-rtl;\n        }\n      }\n    }\n\n    input {\n      &[type='text'] {\n        background-color: var(--newtab-textbox-background-color);\n        border: $input-border;\n        margin: 8px 0;\n        padding: 0 8px;\n        height: 32px;\n        width: 100%;\n        font-size: 15px;\n\n        &:focus {\n          border: $input-border-active;\n          box-shadow: var(--newtab-textbox-focus-boxshadow);\n        }\n\n        &[disabled] {\n          border: $input-border;\n          box-shadow: none;\n          opacity: 0.4;\n        }\n      }\n    }\n\n    .invalid {\n      input {\n        &[type='text'] {\n          border: $input-error-border;\n          box-shadow: $input-error-boxshadow;\n        }\n      }\n    }\n\n    .error-tooltip {\n      animation: fade-up-tt 450ms;\n      background: $red-60;\n      border-radius: 2px;\n      color: $white;\n      inset-inline-start: 3px;\n      padding: 5px 12px;\n      position: absolute;\n      top: 44px;\n      z-index: 1;\n\n      // tooltip caret\n      &::before {\n        background: $red-60;\n        bottom: -8px;\n        content: '.';\n        height: 16px;\n        inset-inline-start: 12px;\n        position: absolute;\n        text-indent: -999px;\n        top: -7px;\n        transform: rotate(45deg);\n        white-space: nowrap;\n        width: 16px;\n        z-index: -1;\n      }\n    }\n  }\n\n  .actions {\n    justify-content: flex-end;\n\n    button {\n      margin-inline-start: 10px;\n      margin-inline-end: 0;\n    }\n  }\n\n  @media (max-width: $break-point-small) {\n    .fields-and-preview {\n      flex-direction: column;\n\n      .top-site-outer {\n        margin-inline-start: 0;\n      }\n    }\n  }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n  0% {\n    opacity: 0;\n    transform: translateY(15px);\n  }\n\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n",
+		"$top-sites-size: $grid-unit;\n$top-sites-border-radius: 6px;\n$top-sites-title-height: 30px;\n$top-sites-vertical-space: 8px;\n$screenshot-size: cover;\n$rich-icon-size: 96px;\n$default-icon-wrapper-size: 42px;\n$default-icon-size: 32px;\n$default-icon-offset: 6px;\n$half-base-gutter: $base-gutter / 2;\n\n.top-sites {\n  // Take back the margin from the bottom row of vertical spacing as well as the\n  // extra whitespace below the title text as it's vertically centered.\n  margin-bottom: $section-spacing - ($top-sites-vertical-space + $top-sites-title-height / 3);\n}\n\n.top-sites-list {\n  list-style: none;\n  margin: 0 (-$half-base-gutter);\n  padding: 0;\n\n  // Two columns\n  @media (max-width: $break-point-small) {\n    :nth-child(2n+1) {\n      @include context-menu-open-middle;\n    }\n\n    :nth-child(2n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Three columns\n  @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n    :nth-child(3n+2),\n    :nth-child(3n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Four columns\n  @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n    :nth-child(4n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n    :nth-child(4n+3) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Six columns\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n    :nth-child(6n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n    :nth-child(6n+5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Eight columns\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n    :nth-child(8n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n    :nth-child(8n+7) {\n      @include context-menu-open-left;\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n\n  li {\n    margin: 0 0 $top-sites-vertical-space;\n  }\n\n  &:not(.dnd-active) {\n    .top-site-outer:-moz-any(.active, :focus, :hover) {\n      .tile {\n        @include fade-in;\n      }\n\n      @include context-menu-button-hover;\n    }\n  }\n}\n\n// container for drop zone\n.top-site-outer {\n  padding: 0 $half-base-gutter;\n  display: inline-block;\n\n  // container for context menu\n  .top-site-inner {\n    position: relative;\n\n    > a {\n      color: inherit;\n      display: block;\n      outline: none;\n\n      &:-moz-any(.active, :focus) {\n        .tile {\n          @include fade-in;\n        }\n      }\n    }\n  }\n\n  @include context-menu-button;\n\n  .tile { // sass-lint:disable-block property-sort-order\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow, var(--newtab-card-shadow);\n    height: $top-sites-size;\n    position: relative;\n    width: $top-sites-size;\n\n    // For letter fallback\n    align-items: center;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 32px;\n    font-weight: 200;\n    justify-content: center;\n    text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n\n    &::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .screenshot {\n    background-color: $white;\n    background-position: top left;\n    background-size: $screenshot-size;\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow;\n    height: 100%;\n    left: 0;\n    opacity: 0;\n    position: absolute;\n    top: 0;\n    transition: opacity 1s;\n    width: 100%;\n\n    &.active {\n      opacity: 1;\n    }\n  }\n\n  // Some common styles for all icons (rich and default) in top sites\n  .top-site-icon {\n    background-color: var(--newtab-topsites-background-color);\n    background-position: center center;\n    background-repeat: no-repeat;\n    border-radius: $top-sites-border-radius;\n    box-shadow: var(--newtab-topsites-icon-shadow);\n    position: absolute;\n  }\n\n  .rich-icon {\n    background-size: cover;\n    height: 100%;\n    inset-inline-start: 0;\n    top: 0;\n    width: 100%;\n  }\n\n  .default-icon { // sass-lint:disable block property-sort-order\n    background-size: $default-icon-size;\n    bottom: -$default-icon-offset;\n    height: $default-icon-wrapper-size;\n    inset-inline-end: -$default-icon-offset;\n    width: $default-icon-wrapper-size;\n\n    // for corner letter fallback\n    align-items: center;\n    display: flex;\n    font-size: 20px;\n    justify-content: center;\n\n    &[data-fallback]::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .title {\n    color: var(--newtab-topsites-label-color);\n    font: message-box;\n    height: $top-sites-title-height;\n    line-height: $top-sites-title-height;\n    text-align: center;\n    width: $top-sites-size;\n    position: relative;\n\n    .icon {\n      fill: var(--newtab-icon-tertiary-color);\n      inset-inline-start: 0;\n      position: absolute;\n      top: 10px;\n    }\n\n    span {\n      height: $top-sites-title-height;\n      display: block;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    &.pinned {\n      span {\n        padding: 0 13px;\n      }\n    }\n  }\n\n  .edit-button {\n    background-image: url('#{$image-path}glyph-edit-16.svg');\n  }\n\n  &.placeholder {\n    .tile {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .screenshot {\n      display: none;\n    }\n  }\n\n  &.dragged {\n    .tile {\n      background: $grey-20;\n      box-shadow: none;\n\n      *,\n      &::before {\n        display: none;\n      }\n    }\n\n    .title {\n      visibility: hidden;\n    }\n  }\n}\n\n.edit-topsites-wrapper {\n  .modal {\n    box-shadow: $shadow-secondary;\n    left: 0;\n    margin: 0 auto;\n    position: fixed;\n    right: 0;\n    top: 40px;\n    width: $wrapper-default-width;\n\n    @media (min-width: $break-point-small) {\n      width: $wrapper-max-width-small;\n    }\n\n    @media (min-width: $break-point-medium) {\n      width: $wrapper-max-width-medium;\n    }\n\n    @media (min-width: $break-point-large) {\n      width: $wrapper-max-width-large;\n    }\n  }\n}\n\n.topsite-form {\n  $form-width: 300px;\n  $form-spacing: 32px;\n\n  .form-input-container {\n    max-width: $form-width + 3 * $form-spacing + $rich-icon-size;\n    margin: 0 auto;\n    padding: $form-spacing;\n\n    .top-site-outer {\n      padding: 0;\n      margin: 24px 0 0;\n      margin-inline-start: $form-spacing;\n      pointer-events: none;\n    }\n\n    .section-title {\n      font-size: 16px;\n      margin: 0 0 16px;\n    }\n  }\n\n  .fields-and-preview {\n    display: flex;\n  }\n\n  label {\n    font-size: $section-title-font-size;\n  }\n\n  .form-wrapper {\n    width: 100%;\n\n    .field {\n      position: relative;\n\n      .icon-clear-input {\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n    }\n\n    .url {\n      input:dir(ltr) {\n        padding-right: 32px;\n      }\n\n      input:dir(rtl) {\n        padding-left: 32px;\n\n        &:not(:placeholder-shown) {\n          direction: ltr;\n          text-align: right;\n        }\n      }\n    }\n\n    .enable-custom-image-input {\n      display: inline-block;\n      font-size: 13px;\n      margin-top: 4px;\n      cursor: pointer;\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n\n    .custom-image-input-container {\n      margin-top: 4px;\n\n      .loading-container {\n        width: 16px;\n        height: 16px;\n        overflow: hidden;\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n\n      // This animation is derived from Firefox's tab loading animation\n      // See https://searchfox.org/mozilla-central/rev/b29daa46443b30612415c35be0a3c9c13b9dc5f6/browser/themes/shared/tabs.inc.css#208-216\n      .loading-animation {\n        @keyframes tab-throbber-animation {\n          100% { transform: translateX(-960px); }\n        }\n\n        @keyframes tab-throbber-animation-rtl {\n          100% { transform: translateX(960px); }\n        }\n\n        width: 960px;\n        height: 16px;\n        -moz-context-properties: fill;\n        fill: $blue-50;\n        background-image: url('chrome://browser/skin/tabbrowser/loading.svg');\n        animation: tab-throbber-animation 1.05s steps(60) infinite;\n\n        &:dir(rtl) {\n          animation-name: tab-throbber-animation-rtl;\n        }\n      }\n    }\n\n    input {\n      &[type='text'] {\n        background-color: var(--newtab-textbox-background-color);\n        border: $input-border;\n        margin: 8px 0;\n        padding: 0 8px;\n        height: 32px;\n        width: 100%;\n        font-size: 15px;\n\n        &:focus {\n          border: $input-border-active;\n          box-shadow: var(--newtab-textbox-focus-boxshadow);\n        }\n\n        &[disabled] {\n          border: $input-border;\n          box-shadow: none;\n          opacity: 0.4;\n        }\n      }\n    }\n\n    .invalid {\n      input {\n        &[type='text'] {\n          border: $input-error-border;\n          box-shadow: $input-error-boxshadow;\n        }\n      }\n    }\n\n    .error-tooltip {\n      animation: fade-up-tt 450ms;\n      background: $red-60;\n      border-radius: 2px;\n      color: $white;\n      inset-inline-start: 3px;\n      padding: 5px 12px;\n      position: absolute;\n      top: 44px;\n      z-index: 1;\n\n      // tooltip caret\n      &::before {\n        background: $red-60;\n        bottom: -8px;\n        content: '.';\n        height: 16px;\n        inset-inline-start: 12px;\n        position: absolute;\n        text-indent: -999px;\n        top: -7px;\n        transform: rotate(45deg);\n        white-space: nowrap;\n        width: 16px;\n        z-index: -1;\n      }\n    }\n  }\n\n  .actions {\n    justify-content: flex-end;\n\n    button {\n      margin-inline-start: 10px;\n      margin-inline-end: 0;\n    }\n  }\n\n  @media (max-width: $break-point-small) {\n    .fields-and-preview {\n      flex-direction: column;\n\n      .top-site-outer {\n        margin-inline-start: 0;\n      }\n    }\n  }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n  0% {\n    opacity: 0;\n    transform: translateY(15px);\n  }\n\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n",
 		".sections-list {\n  .section-list {\n    display: grid;\n    grid-gap: $base-gutter;\n    grid-template-columns: repeat(auto-fit, $card-width);\n    margin: 0;\n\n    @media (max-width: $break-point-medium) {\n      @include context-menu-open-left;\n    }\n\n    @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n      :nth-child(2n) {\n        @include context-menu-open-left;\n      }\n    }\n\n    @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n      :nth-child(3n) {\n        @include context-menu-open-left;\n      }\n    }\n\n    @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n      :nth-child(3n) {\n        @include context-menu-open-left;\n      }\n    }\n  }\n\n  .section-empty-state {\n    border: $border-secondary;\n    border-radius: $border-radius;\n    display: flex;\n    height: $card-height;\n    width: 100%;\n\n    .empty-state {\n      margin: auto;\n      max-width: 350px;\n\n      .empty-state-icon {\n        background-position: center;\n        background-repeat: no-repeat;\n        background-size: 50px 50px;\n        -moz-context-properties: fill;\n        display: block;\n        fill: var(--newtab-icon-secondary-color);\n        height: 50px;\n        margin: 0 auto;\n        width: 50px;\n      }\n\n      .empty-state-message {\n        color: var(--newtab-text-primary-color);\n        font-size: 13px;\n        margin-bottom: 0;\n        text-align: center;\n      }\n    }\n\n    @media (min-width: $break-point-widest) {\n      height: $card-height-large;\n    }\n  }\n}\n\n@media (min-width: $break-point-widest) {\n  .sections-list {\n    // Compact cards stay the same size but normal cards get bigger.\n    .normal-cards {\n      .section-list {\n        grid-template-columns: repeat(auto-fit, $card-width-large);\n      }\n    }\n  }\n}\n",
 		".activity-stream {\n  &.welcome {\n    overflow: hidden;\n  }\n\n  &:not(.welcome) {\n    .overlay-wrapper {\n      display: none;\n    }\n  }\n}\n\n.overlay-wrapper {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100vw;\n  height: 100vh;\n  z-index: 21000;\n  transition: opacity 0.4s;\n  opacity: 0;\n  overflow-x: auto;\n\n  &.show {\n    transition: none;\n    opacity: 1;\n\n    .firstrun-sign-in {\n      transition: opacity 1.5s, transform 1.5s;\n      transition-delay: 0.2s;\n      transform: translateY(-50%) scale(1);\n      opacity: 1;\n\n      @media screen and (max-width: 790px) {\n        float: none;\n        margin: auto;\n        top: 190px;\n        margin-bottom: 100px;\n      }\n    }\n\n    .firstrun-firefox-logo {\n      transition: opacity 2.3s;\n      opacity: 1;\n    }\n\n    .firstrun-title,\n    .firstrun-content,\n    .firstrun-link {\n      transition: transform 0.5s, opacity 0.8s;\n      transform: translateY(0);\n      opacity: 1;\n    }\n\n    .firstrun-title {\n      transition-delay: 0.2s;\n    }\n\n    .firstrun-content {\n      transition-delay: 0.4s;\n    }\n\n    .firstrun-link {\n      transition-delay: 0.6s;\n    }\n\n    .fxaccounts-container {\n      transition: none;\n      opacity: 1;\n    }\n  }\n}\n\n.background,\nbody.hide-main { // sass-lint:disable-line no-qualifying-elements\n  width: 100%;\n  height: 100%;\n  display: block;\n  background-image: url('#{$image-path}fox-tail.png'), $about-welcome-gradient;\n  background-position-x: center;\n  background-position-y: -200px, top;\n  background-repeat: no-repeat;\n  background-size: cover;\n  position: fixed;\n}\n\n.firstrun-sign-in {\n  transform: translateY(-50%) scale(0.8);\n  position: relative;\n  top: 50%;\n  width: 358px;\n  opacity: 0;\n  background-color: $white;\n  float: inline-end;\n  color: $grey-90;\n  text-align: center;\n  padding: 10px;\n\n  form {\n    position: relative;\n  }\n\n  .extra-links {\n    font-size: 12px;\n    max-width: 340px;\n    margin: 17px 50px;\n    color: $about-welcome-extra-links;\n    cursor: default;\n\n    a {\n      color: $grey-50;\n      cursor: pointer;\n      text-decoration: underline;\n    }\n\n    a:hover,\n    a:active,\n    a:focus {\n      color: $blue-50;\n    }\n  }\n\n  .email-input {\n    box-shadow: none;\n    margin: auto;\n    width: 244px;\n    display: block;\n    height: 40px;\n    padding-inline-start: 20px;\n    border: 1px solid $grey-50;\n    border-radius: 2px;\n    font-size: 16px;\n    transition: border-color 150ms, box-shadow 150ms;\n\n    &:hover {\n      border-color: $grey-90;\n    }\n\n    &:focus {\n      border-color: $blue-50;\n      box-shadow: 0 0 0 3px $email-input-focus;\n    }\n\n    &.invalid {\n      border-color: $red-60;\n    }\n\n    &.invalid:focus {\n      box-shadow: 0 0 0 3px $email-input-invalid;\n    }\n  }\n\n  .form-header {\n    font-size: 22px;\n    margin: 15px auto;\n  }\n\n  .form-header .sub-header {\n    font-size: 14px;\n    margin-top: 4px;\n    display: block;\n  }\n\n  button {\n    display: block;\n    cursor: pointer;\n    margin: 10px auto 0;\n  }\n\n  .continue-button {\n    font-size: 18px;\n    height: 43px;\n    width: 250px;\n    padding: 8px 0;\n    border: 0;\n    border-radius: 4px;\n    color: $white;\n    background-color: $blue-60;\n    transition: background-color 150ms;\n\n    &:not([disabled]):active,\n    &:not([disabled]):hover {\n      background: $blue-70;\n      border-color: $blue-80;\n    }\n  }\n\n  .skip-button {\n    font-size: 13px;\n    margin-top: 20px;\n    margin-bottom: 20px;\n    background-color: $grey-10;\n    color: $blue-50;\n    border: 1px solid $blue-50;\n    border-radius: 2px;\n    min-height: 24px;\n    padding: 5px 10px;\n    transition: background-color 150ms, color 150ms, border-color 150ms;\n\n    &[disabled] {\n      background-color: $grey-20;\n      border-color: $grey-40;\n      color: $grey-50;\n      cursor: default;\n      opacity: 0.5;\n    }\n\n    &:not([disabled]):hover {\n      background-color: $blue-50;\n      border-color: $blue-60;\n      color: $white;\n    }\n  }\n}\n\n.firstrun-left-divider {\n  position: relative;\n  float: inline-start;\n  clear: both;\n  width: 435px;\n\n  @media screen and (max-width: 825px) {\n    width: 400px;\n  }\n\n  @media screen and (max-width: 790px) {\n    margin: auto;\n    float: none;\n    width: 352px;\n    text-align: center;\n  }\n}\n\n.firstrun-content {\n  line-height: 1.5;\n  margin-bottom: 48px;\n  max-width: 352px;\n  background: url('#{$image-path}sync-devices.svg') bottom center no-repeat;\n  padding-bottom: 210px;\n}\n\na.firstrun-link { // sass-lint:disable-line no-qualifying-elements\n  color: $white;\n  display: block;\n  text-decoration: underline;\n\n  &:hover,\n  &:active,\n  &:focus {\n    color: $white;\n  }\n}\n\n.firstrun-title {\n  background: url('chrome://branding/content/about-logo.png') top left no-repeat;\n  background-size: 90px 90px;\n  margin: 40px 0 10px;\n  padding-top: 110px;\n\n  @media screen and (max-width: 790px) {\n    background: url('chrome://branding/content/about-logo.png') top center no-repeat;\n    background-size: 90px 90px;\n  }\n\n  &:dir(rtl) {\n    background-position: top right;\n  }\n}\n\n.fxaccounts-container {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  top: 0;\n  left: 0;\n  color: $white;\n  height: 515px;\n  margin: auto;\n  width: 819px;\n  z-index: 10;\n  transition: opacity 0.3s;\n  opacity: 0;\n\n  @media screen and (max-width: 825px) {\n    width: 784px;\n  }\n\n  @media screen and (max-width: 790px) {\n    width: auto;\n    height: 100%;\n  }\n}\n\n.firstrun-title,\n.firstrun-content,\n.firstrun-link {\n  opacity: 0;\n  transform: translateY(-5px);\n}\n\n.error {\n  display: none;\n}\n\n.error.active {\n  display: block;\n  padding: 5px 12px;\n  animation: fade-down 450ms;\n  font-size: 12px;\n  font-weight: 500;\n  color: $white;\n  background-color: $red-60;\n  position: absolute;\n  inset-inline-start: 50px;\n  top: -28px;\n  border-radius: 2px;\n\n  &::before {\n    inset-inline-start: 12px;\n    background: $red-60;\n    bottom: -8px;\n    content: '.';\n    height: 16px;\n    position: absolute;\n    text-indent: -999px;\n    transform: rotate(45deg);\n    white-space: nowrap;\n    width: 16px;\n    z-index: -1;\n  }\n}\n\n@keyframes fade-down {\n  0% {\n    opacity: 0;\n    transform: translateY(-15px);\n  }\n\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n",
 		".topic {\n  color: var(--newtab-section-navigation-text-color);\n  font-size: 12px;\n  line-height: 1.6;\n  margin-top: $topic-margin-top;\n\n  @media (min-width: $break-point-large) {\n    line-height: 16px;\n  }\n\n  ul {\n    margin: 0;\n    padding: 0;\n    @media (min-width: $break-point-large) {\n      display: inline;\n      padding-inline-start: 12px;\n    }\n  }\n\n\n  ul li {\n    display: inline-block;\n\n    &::after {\n      content: '•';\n      padding: 8px;\n    }\n\n    &:last-child::after {\n      content: none;\n    }\n  }\n\n  .topic-link {\n    color: var(--newtab-link-secondary-color);\n    font-weight: bold;\n  }\n\n  .topic-read-more {\n    color: var(--newtab-link-secondary-color);\n    font-weight: bold;\n\n    @media (min-width: $break-point-large) {\n      // This is floating to accomodate a very large number of topics and/or\n      // very long topic names due to l10n.\n      float: right;\n\n      &:dir(rtl) {\n        float: left;\n      }\n    }\n\n    &::after {\n      background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n      content: '';\n      -moz-context-properties: fill;\n      display: inline-block;\n      fill: var(--newtab-link-secondary-color);\n      height: 16px;\n      margin-inline-start: 5px;\n      vertical-align: top;\n      width: 12px;\n    }\n\n    &:dir(rtl)::after  {\n      transform: scaleX(-1);\n    }\n  }\n\n  // This is a clearfix to for the topics-read-more link which is floating and causes\n  // some jank when we set overflow:hidden for the animation.\n  &::after {\n    clear: both;\n    content: '';\n    display: table;\n  }\n}\n",
 		".search-wrapper {\n  $search-height: 35px;\n  $search-icon-size: 18px;\n  $search-icon-padding: 8px;\n  $search-icon-width: 2 * $search-icon-padding + $search-icon-size;\n  $search-input-left-label-width: 35px;\n  $search-button-width: 36px;\n  $glyph-forward: url('chrome://browser/skin/forward.svg');\n\n  cursor: default;\n  display: flex;\n  height: $search-height;\n  margin-bottom: $section-spacing;\n  position: relative;\n  width: 100%;\n\n  input {\n    background: var(--newtab-textbox-background-color) var(--newtab-search-icon) $search-icon-padding center / $search-icon-size no-repeat;\n    border: solid 1px var(--newtab-search-border-color);\n    box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n    font-size: 15px;\n    -moz-context-properties: fill;\n    fill: var(--newtab-search-icon-color);\n    padding: 0;\n    padding-inline-end: $search-button-width;\n    padding-inline-start: $search-icon-width;\n    width: 100%;\n\n    &:dir(rtl) {\n      background-position-x: right $search-icon-padding;\n    }\n  }\n\n  &:hover input {\n    box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n  }\n\n  &:active input,\n  input:focus {\n    border: $input-border-active;\n    box-shadow: var(--newtab-textbox-focus-boxshadow);\n  }\n\n  .search-button {\n    background: $glyph-forward no-repeat center center;\n    background-size: 16px 16px;\n    border: 0;\n    border-radius: 0 $border-radius $border-radius 0;\n    -moz-context-properties: fill;\n    fill: var(--newtab-search-icon-color);\n    height: 100%;\n    inset-inline-end: 0;\n    position: absolute;\n    width: $search-button-width;\n\n    &:focus,\n    &:hover {\n      background-color: $grey-90-10;\n      cursor: pointer;\n    }\n\n    &:active {\n      background-color: $grey-90-20;\n    }\n\n    &:dir(rtl) {\n      transform: scaleX(-1);\n    }\n  }\n}\n\n@at-root {\n  // Adjust the style of the contentSearchUI-generated table\n  .contentSearchSuggestionTable {\n    background-color: var(--newtab-search-dropdown-color);\n    border: 0;\n    box-shadow: $context-menu-shadow;\n    transform: translateY($textbox-shadow-size);\n\n    .contentSearchHeader {\n      background-color: var(--newtab-search-dropdown-header-color);\n      color: var(--newtab-text-secondary-color);\n    }\n\n    .contentSearchHeader,\n    .contentSearchSettingsButton {\n      border-color: var(--newtab-border-secondary-color);\n    }\n\n    .contentSearchSuggestionsList {\n      border: 0;\n    }\n\n    .contentSearchOneOffsTable {\n      background-color: var(--newtab-search-dropdown-header-color);\n      border-top: solid 1px var(--newtab-border-secondary-color);\n    }\n\n    .contentSearchSearchWithHeaderSearchText {\n      color: var(--newtab-text-primary-color);\n    }\n\n    .contentSearchSuggestionsContainer {\n      background-color: var(--newtab-search-dropdown-color);\n    }\n\n    .contentSearchSuggestionRow {\n      &.selected {\n        background: var(--newtab-element-hover-color);\n        color: var(--newtab-text-primary-color);\n\n        &:active {\n          background: var(--newtab-element-active-color);\n        }\n\n        .historyIcon {\n          fill: var(--newtab-icon-secondary-color);\n        }\n      }\n    }\n\n    .contentSearchOneOffsTable {\n      .contentSearchSuggestionsContainer {\n        background-color: var(--newtab-search-dropdown-header-color);\n      }\n    }\n\n    .contentSearchOneOffItem {\n      // Make the border slightly shorter by offsetting from the top and bottom\n      $border-offset: 18%;\n\n      background-image: none;\n      border-image: linear-gradient(transparent $border-offset, var(--newtab-border-secondary-color) $border-offset, var(--newtab-border-secondary-color) 100% - $border-offset, transparent 100% - $border-offset) 1;\n      border-inline-end: 1px solid;\n      position: relative;\n\n      &.selected {\n        background: var(--newtab-element-hover-color);\n      }\n\n      &:active {\n        background: var(--newtab-element-active-color);\n      }\n    }\n\n    .contentSearchSettingsButton {\n      &:hover {\n        background: var(--newtab-element-hover-color);\n        color: var(--newtab-text-primary-color);\n      }\n    }\n  }\n}\n",
 		".context-menu {\n  background: var(--newtab-contextmenu-background-color);\n  border-radius: $context-menu-border-radius;\n  box-shadow: $context-menu-shadow;\n  display: block;\n  font-size: $context-menu-font-size;\n  margin-inline-start: 5px;\n  inset-inline-start: 100%;\n  position: absolute;\n  top: ($context-menu-button-size / 4);\n  z-index: 10000;\n\n  > ul {\n    list-style: none;\n    margin: 0;\n    padding: $context-menu-outer-padding 0;\n\n    > li {\n      margin: 0;\n      width: 100%;\n\n      &.separator {\n        border-bottom: $border-secondary;\n        margin: $context-menu-outer-padding 0;\n      }\n\n      > a {\n        align-items: center;\n        color: inherit;\n        cursor: pointer;\n        display: flex;\n        line-height: 16px;\n        outline: none;\n        padding: $context-menu-item-padding;\n        white-space: nowrap;\n\n        &:-moz-any(:focus, :hover) {\n          background: var(--newtab-element-hover-color);\n        }\n\n        &:active {\n          background: var(--newtab-element-active-color);\n        }\n\n        &.disabled {\n          opacity: 0.4;\n          pointer-events: none;\n        }\n      }\n    }\n  }\n}\n",
 		".confirmation-dialog {\n  .modal {\n    box-shadow: 0 2px 2px 0 $black-10;\n    left: 50%;\n    margin-left: -200px;\n    position: fixed;\n    top: 20%;\n    width: 400px;\n  }\n\n  section {\n    margin: 0;\n  }\n\n  .modal-message {\n    display: flex;\n    padding: 16px;\n    padding-bottom: 0;\n\n    p {\n      margin: 0;\n      margin-bottom: 16px;\n    }\n  }\n\n  .actions {\n    border: 0;\n    display: flex;\n    flex-wrap: nowrap;\n    padding: 0 16px;\n\n    button {\n      margin-inline-end: 16px;\n      padding-inline-end: 18px;\n      padding-inline-start: 18px;\n      white-space: normal;\n      width: 50%;\n\n      &.done {\n        margin-inline-end: 0;\n        margin-inline-start: 0;\n      }\n    }\n  }\n\n  .icon {\n    margin-inline-end: 16px;\n  }\n}\n\n.modal-overlay {\n  background: var(--newtab-overlay-color);\n  height: 100%;\n  left: 0;\n  position: fixed;\n  top: 0;\n  width: 100%;\n  z-index: 11001;\n}\n\n.modal {\n  background: var(--newtab-modal-color);\n  border: $border-secondary;\n  border-radius: 5px;\n  font-size: 15px;\n  z-index: 11002;\n}\n",
-		".card-outer {\n  @include context-menu-button;\n  background: var(--newtab-card-background-color);\n  border-radius: $border-radius;\n  display: inline-block;\n  height: $card-height;\n  margin-inline-end: $base-gutter;\n  position: relative;\n  width: 100%;\n\n  &.placeholder {\n    background: transparent;\n\n    .card {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .card-preview-image-outer,\n    .card-context {\n      display: none;\n    }\n  }\n\n  .card {\n    border-radius: $border-radius;\n    box-shadow: var(--newtab-card-shadow);\n    height: 100%;\n  }\n\n  > a {\n    color: inherit;\n    display: block;\n    height: 100%;\n    outline: none;\n    position: absolute;\n    width: 100%;\n\n    &:-moz-any(.active, :focus) {\n      .card {\n        @include fade-in-card;\n      }\n\n      .card-title {\n        color: var(--newtab-link-primary-color);\n      }\n    }\n  }\n\n  &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n    @include fade-in-card;\n    @include context-menu-button-hover;\n    outline: none;\n\n    .card-title {\n      color: var(--newtab-link-primary-color);\n    }\n\n    .alternate ~ .card-host-name {\n      display: none;\n    }\n\n    .card-host-name.alternate {\n      display: block;\n    }\n  }\n\n  .card-preview-image-outer {\n    background-color: $grey-30;\n    border-radius: $border-radius $border-radius 0 0;\n    height: $card-preview-image-height;\n    overflow: hidden;\n    position: relative;\n\n    [lwt-newtab-brighttext] & {\n      background-color: $grey-60;\n    }\n\n    &::after {\n      border-bottom: 1px solid var(--newtab-card-hairline-color);\n      bottom: 0;\n      content: '';\n      position: absolute;\n      width: 100%;\n    }\n\n    .card-preview-image {\n      background-position: center;\n      background-repeat: no-repeat;\n      background-size: cover;\n      height: 100%;\n      opacity: 0;\n      transition: opacity 1s $photon-easing;\n      width: 100%;\n\n      &.loaded {\n        opacity: 1;\n      }\n    }\n  }\n\n  .card-details {\n    padding: 15px 16px 12px;\n  }\n\n  .card-text {\n    max-height: 4 * $card-text-line-height + $card-title-margin;\n    overflow: hidden;\n\n    &.no-host-name,\n    &.no-context {\n      max-height: 5 * $card-text-line-height + $card-title-margin;\n    }\n\n    &.no-host-name.no-context {\n      max-height: 6 * $card-text-line-height + $card-title-margin;\n    }\n\n    &:not(.no-description) .card-title {\n      max-height: 3 * $card-text-line-height;\n      overflow: hidden;\n    }\n  }\n\n  .card-host-name {\n    color: var(--newtab-text-secondary-color);\n    font-size: 10px;\n    overflow: hidden;\n    padding-bottom: 4px;\n    text-overflow: ellipsis;\n    text-transform: uppercase;\n    white-space: nowrap;\n  }\n\n  .card-host-name.alternate { display: none; }\n\n  .card-title {\n    font-size: 14px;\n    font-weight: 600;\n    line-height: $card-text-line-height;\n    margin: 0 0 $card-title-margin;\n    word-wrap: break-word;\n  }\n\n  .card-description {\n    font-size: 12px;\n    line-height: $card-text-line-height;\n    margin: 0;\n    overflow: hidden;\n    word-wrap: break-word;\n  }\n\n  .card-context {\n    bottom: 0;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 11px;\n    inset-inline-start: 0;\n    padding: 9px 16px 9px 14px;\n    position: absolute;\n  }\n\n  .card-context-icon {\n    fill: var(--newtab-text-secondary-color);\n    height: 22px;\n    margin-inline-end: 6px;\n  }\n\n  .card-context-label {\n    flex-grow: 1;\n    line-height: 22px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n\n.normal-cards {\n  .card-outer {\n    // Wide layout styles\n    @media (min-width: $break-point-widest) {\n      $line-height: 23px;\n      height: $card-height-large;\n\n      .card-preview-image-outer {\n        height: $card-preview-image-height-large;\n      }\n\n      .card-details {\n        padding: 13px 16px 12px;\n      }\n\n      .card-text {\n        max-height: 6 * $line-height + $card-title-margin;\n      }\n\n      .card-host-name {\n        font-size: 12px;\n        padding-bottom: 5px;\n      }\n\n      .card-title {\n        font-size: 17px;\n        line-height: $line-height;\n        margin-bottom: 0;\n      }\n\n      .card-text:not(.no-description) {\n        .card-title {\n          max-height: 3 * $line-height;\n        }\n      }\n\n      .card-description {\n        font-size: 15px;\n        line-height: $line-height;\n      }\n\n      .card-context {\n        bottom: 4px;\n        font-size: 14px;\n      }\n    }\n  }\n}\n\n.compact-cards {\n  $card-detail-vertical-spacing: 12px;\n  $card-title-font-size: 12px;\n\n  .card-outer {\n    height: $card-height-compact;\n\n    .card-preview-image-outer {\n      height: $card-preview-image-height-compact;\n    }\n\n    .card-details {\n      padding: $card-detail-vertical-spacing 16px;\n    }\n\n    .card-host-name {\n      line-height: 10px;\n    }\n\n    .card-text {\n      .card-title,\n      &:not(.no-description) .card-title {\n        font-size: $card-title-font-size;\n        line-height: $card-title-font-size + 1;\n        max-height: $card-title-font-size + 5;\n        overflow: hidden;\n        padding: 0 0 4px;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n      }\n    }\n\n    .card-description {\n      display: none;\n    }\n\n    .card-context {\n      $icon-size: 16px;\n      $container-size: 32px;\n      background-color: var(--newtab-card-background-color);\n      border-radius: $container-size / 2;\n      clip-path: inset(-1px -1px $container-size - ($card-height-compact - $card-preview-image-height-compact - 2 * $card-detail-vertical-spacing));\n      height: $container-size;\n      width: $container-size;\n      padding: ($container-size - $icon-size) / 2;\n      top: $card-preview-image-height-compact - $icon-size;\n      inset-inline-end: 12px;\n      inset-inline-start: auto;\n\n      &::after {\n        border: 1px solid var(--newtab-card-hairline-color);\n        border-bottom: 0;\n        border-radius: ($container-size / 2) + 1 ($container-size / 2) + 1 0 0;\n        content: '';\n        position: absolute;\n        height: ($container-size + 2) / 2;\n        width: $container-size + 2;\n        top: -1px;\n        left: -1px;\n      }\n\n      .card-context-icon {\n        margin-inline-end: 0;\n        height: $icon-size;\n        width: $icon-size;\n\n        &.icon-bookmark-added {\n          fill: $bookmark-icon-fill;\n        }\n\n        &.icon-download {\n          fill: $download-icon-fill;\n        }\n\n        &.icon-pocket {\n          fill: $pocket-icon-fill;\n        }\n      }\n\n      .card-context-label {\n        display: none;\n      }\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n}\n",
+		".card-outer {\n  @include context-menu-button;\n  background: var(--newtab-card-background-color);\n  border-radius: $border-radius;\n  display: inline-block;\n  height: $card-height;\n  margin-inline-end: $base-gutter;\n  position: relative;\n  width: 100%;\n\n  &.placeholder {\n    background: transparent;\n\n    .card {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .card-preview-image-outer,\n    .card-context {\n      display: none;\n    }\n  }\n\n  .card {\n    border-radius: $border-radius;\n    box-shadow: var(--newtab-card-shadow);\n    height: 100%;\n  }\n\n  > a {\n    color: inherit;\n    display: block;\n    height: 100%;\n    outline: none;\n    position: absolute;\n    width: 100%;\n\n    &:-moz-any(.active, :focus) {\n      .card {\n        @include fade-in-card;\n      }\n\n      .card-title {\n        color: var(--newtab-link-primary-color);\n      }\n    }\n  }\n\n  &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n    @include fade-in-card;\n    @include context-menu-button-hover;\n    outline: none;\n\n    .card-title {\n      color: var(--newtab-link-primary-color);\n    }\n\n    .alternate ~ .card-host-name {\n      display: none;\n    }\n\n    .card-host-name.alternate {\n      display: block;\n    }\n  }\n\n  .card-preview-image-outer {\n    background-color: $grey-30;\n    border-radius: $border-radius $border-radius 0 0;\n    height: $card-preview-image-height;\n    overflow: hidden;\n    position: relative;\n\n    [lwt-newtab-brighttext] & {\n      background-color: $grey-60;\n    }\n\n    &::after {\n      border-bottom: 1px solid var(--newtab-card-hairline-color);\n      bottom: 0;\n      content: '';\n      position: absolute;\n      width: 100%;\n    }\n\n    .card-preview-image {\n      background-position: center;\n      background-repeat: no-repeat;\n      background-size: cover;\n      height: 100%;\n      opacity: 0;\n      transition: opacity 1s $photon-easing;\n      width: 100%;\n\n      &.loaded {\n        opacity: 1;\n      }\n    }\n  }\n\n  .card-details {\n    padding: 15px 16px 12px;\n  }\n\n  .card-text {\n    max-height: 4 * $card-text-line-height + $card-title-margin;\n    overflow: hidden;\n\n    &.no-host-name,\n    &.no-context {\n      max-height: 5 * $card-text-line-height + $card-title-margin;\n    }\n\n    &.no-host-name.no-context {\n      max-height: 6 * $card-text-line-height + $card-title-margin;\n    }\n\n    &:not(.no-description) .card-title {\n      max-height: 3 * $card-text-line-height;\n      overflow: hidden;\n    }\n  }\n\n  .card-host-name {\n    color: var(--newtab-text-secondary-color);\n    font-size: 10px;\n    overflow: hidden;\n    padding-bottom: 4px;\n    text-overflow: ellipsis;\n    text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n    white-space: nowrap;\n  }\n\n  .card-host-name.alternate { display: none; }\n\n  .card-title {\n    font-size: 14px;\n    font-weight: 600;\n    line-height: $card-text-line-height;\n    margin: 0 0 $card-title-margin;\n    word-wrap: break-word;\n  }\n\n  .card-description {\n    font-size: 12px;\n    line-height: $card-text-line-height;\n    margin: 0;\n    overflow: hidden;\n    word-wrap: break-word;\n  }\n\n  .card-context {\n    bottom: 0;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 11px;\n    inset-inline-start: 0;\n    padding: 9px 16px 9px 14px;\n    position: absolute;\n  }\n\n  .card-context-icon {\n    fill: var(--newtab-text-secondary-color);\n    height: 22px;\n    margin-inline-end: 6px;\n  }\n\n  .card-context-label {\n    flex-grow: 1;\n    line-height: 22px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n\n.normal-cards {\n  .card-outer {\n    // Wide layout styles\n    @media (min-width: $break-point-widest) {\n      $line-height: 23px;\n      height: $card-height-large;\n\n      .card-preview-image-outer {\n        height: $card-preview-image-height-large;\n      }\n\n      .card-details {\n        padding: 13px 16px 12px;\n      }\n\n      .card-text {\n        max-height: 6 * $line-height + $card-title-margin;\n      }\n\n      .card-host-name {\n        font-size: 12px;\n        padding-bottom: 5px;\n      }\n\n      .card-title {\n        font-size: 17px;\n        line-height: $line-height;\n        margin-bottom: 0;\n      }\n\n      .card-text:not(.no-description) {\n        .card-title {\n          max-height: 3 * $line-height;\n        }\n      }\n\n      .card-description {\n        font-size: 15px;\n        line-height: $line-height;\n      }\n\n      .card-context {\n        bottom: 4px;\n        font-size: 14px;\n      }\n    }\n  }\n}\n\n.compact-cards {\n  $card-detail-vertical-spacing: 12px;\n  $card-title-font-size: 12px;\n\n  .card-outer {\n    height: $card-height-compact;\n\n    .card-preview-image-outer {\n      height: $card-preview-image-height-compact;\n    }\n\n    .card-details {\n      padding: $card-detail-vertical-spacing 16px;\n    }\n\n    .card-host-name {\n      line-height: 10px;\n    }\n\n    .card-text {\n      .card-title,\n      &:not(.no-description) .card-title {\n        font-size: $card-title-font-size;\n        line-height: $card-title-font-size + 1;\n        max-height: $card-title-font-size + 5;\n        overflow: hidden;\n        padding: 0 0 4px;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n      }\n    }\n\n    .card-description {\n      display: none;\n    }\n\n    .card-context {\n      $icon-size: 16px;\n      $container-size: 32px;\n      background-color: var(--newtab-card-background-color);\n      border-radius: $container-size / 2;\n      clip-path: inset(-1px -1px $container-size - ($card-height-compact - $card-preview-image-height-compact - 2 * $card-detail-vertical-spacing));\n      height: $container-size;\n      width: $container-size;\n      padding: ($container-size - $icon-size) / 2;\n      top: $card-preview-image-height-compact - $icon-size;\n      inset-inline-end: 12px;\n      inset-inline-start: auto;\n\n      &::after {\n        border: 1px solid var(--newtab-card-hairline-color);\n        border-bottom: 0;\n        border-radius: ($container-size / 2) + 1 ($container-size / 2) + 1 0 0;\n        content: '';\n        position: absolute;\n        height: ($container-size + 2) / 2;\n        width: $container-size + 2;\n        top: -1px;\n        left: -1px;\n      }\n\n      .card-context-icon {\n        margin-inline-end: 0;\n        height: $icon-size;\n        width: $icon-size;\n\n        &.icon-bookmark-added {\n          fill: $bookmark-icon-fill;\n        }\n\n        &.icon-download {\n          fill: $download-icon-fill;\n        }\n\n        &.icon-pocket {\n          fill: $pocket-icon-fill;\n        }\n      }\n\n      .card-context-label {\n        display: none;\n      }\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n}\n",
 		".manual-migration-container {\n  color: var(--newtab-text-conditional-color);\n  font-size: 13px;\n  line-height: 15px;\n  margin-bottom: $section-spacing;\n  text-align: center;\n\n  @media (min-width: $break-point-medium) {\n    display: flex;\n    justify-content: space-between;\n    text-align: left;\n  }\n\n  p {\n    margin: 0;\n    @media (min-width: $break-point-medium) {\n      align-self: center;\n      display: flex;\n      justify-content: space-between;\n    }\n  }\n\n  .icon {\n    display: none;\n    @media (min-width: $break-point-medium) {\n      align-self: center;\n      display: block;\n      fill: var(--newtab-icon-secondary-color);\n      margin-inline-end: 6px;\n    }\n  }\n}\n\n.manual-migration-actions {\n  border: 0;\n  display: block;\n  flex-wrap: nowrap;\n\n  @media (min-width: $break-point-medium) {\n    display: flex;\n    justify-content: space-between;\n    padding: 0;\n  }\n\n  button {\n    align-self: center;\n    height: 26px;\n    margin: 0;\n    margin-inline-start: 20px;\n    padding: 0 12px;\n  }\n}\n",
-		".collapsible-section {\n  padding: $section-vertical-padding $section-horizontal-padding;\n  transition-delay: 100ms;\n  transition-duration: 100ms;\n  transition-property: background-color;\n\n  .section-title {\n    font-size: $section-title-font-size;\n    font-weight: bold;\n    margin: 0;\n    text-transform: uppercase;\n\n    span {\n      color: var(--newtab-section-header-text-color);\n      display: inline-block;\n      fill: var(--newtab-section-header-text-color);\n      vertical-align: middle;\n    }\n\n    .click-target {\n      cursor: pointer;\n      vertical-align: top;\n      white-space: nowrap;\n    }\n\n    .collapsible-arrow {\n      margin-inline-start: 8px;\n      margin-top: -1px;\n    }\n  }\n\n  .section-top-bar {\n    height: 19px;\n    margin-bottom: 13px;\n    position: relative;\n\n    .context-menu-button {\n      background: url('chrome://browser/skin/page-action.svg') no-repeat right center;\n      border: 0;\n      cursor: pointer;\n      fill: var(--newtab-section-header-text-color);\n      height: 100%;\n      inset-inline-end: 0;\n      opacity: 0;\n      position: absolute;\n      top: 0;\n      transition-duration: 200ms;\n      transition-property: opacity;\n      width: $context-menu-button-size;\n\n      &:-moz-any(:active, :focus, :hover) {\n        fill: $grey-90;\n        opacity: 1;\n      }\n    }\n\n    .context-menu {\n      top: 16px;\n    }\n\n    @media (max-width: $break-point-widest + $card-width * 1.5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  &:hover,\n  &.active {\n    .section-top-bar {\n      .context-menu-button {\n        opacity: 1;\n      }\n    }\n  }\n\n  &.active {\n    background: var(--newtab-element-hover-color);\n    border-radius: 4px;\n\n    .section-top-bar {\n      .context-menu-button {\n        fill: var(--newtab-section-active-contextmenu-color);\n      }\n    }\n  }\n\n  .section-disclaimer {\n    $max-button-width: 130px;\n    $min-button-height: 26px;\n\n    color: var(--newtab-text-conditional-color);\n    font-size: 13px;\n    margin-bottom: 26px;\n    position: relative;\n    display: flex;\n\n    .section-disclaimer-text {\n      display: inline-block;\n      width: calc(100% - #{$max-button-width});\n\n      @media (max-width: $break-point-medium) {\n        width: $card-width;\n      }\n    }\n\n    a {\n      color: var(--newtab-link-primary-color);\n      font-weight: bold;\n      padding-left: 3px;\n    }\n\n    button {\n      background: var(--newtab-button-secondary-color);\n      border: 1px solid $grey-40;\n      border-radius: 4px;\n      cursor: pointer;\n      max-width: $max-button-width;\n      min-height: $min-button-height;\n      inset-inline-end: 0;\n      align-self: center;\n\n      &:hover:not(.dismiss) {\n        box-shadow: $shadow-primary;\n        transition: box-shadow 150ms;\n      }\n\n      @media (min-width: $break-point-small) {\n        position: absolute;\n      }\n    }\n  }\n\n  .section-body-fallback {\n    height: $card-height;\n  }\n\n  .section-body {\n    // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n    $horizontal-padding: 7px;\n    margin: 0 (-$horizontal-padding);\n    padding: 0 $horizontal-padding;\n\n    &.animating {\n      overflow: hidden;\n      pointer-events: none;\n    }\n  }\n\n  &.animation-enabled {\n    .section-title {\n      .collapsible-arrow {\n        transition: transform 0.5s $photon-easing;\n      }\n    }\n\n    .section-body {\n      transition: max-height 0.5s $photon-easing;\n    }\n  }\n\n  &.collapsed {\n    .section-body {\n      max-height: 0;\n      overflow: hidden;\n    }\n  }\n}\n",
+		".collapsible-section {\n  padding: $section-vertical-padding $section-horizontal-padding;\n  transition-delay: 100ms;\n  transition-duration: 100ms;\n  transition-property: background-color;\n\n  .section-title {\n    font-size: $section-title-font-size;\n    font-weight: bold;\n    margin: 0;\n\n    span {\n      color: var(--newtab-section-header-text-color);\n      display: inline-block;\n      fill: var(--newtab-section-header-text-color);\n      vertical-align: middle;\n    }\n\n    .click-target {\n      cursor: pointer;\n      vertical-align: top;\n      white-space: nowrap;\n    }\n\n    .collapsible-arrow {\n      margin-inline-start: 8px;\n      margin-top: -1px;\n    }\n  }\n\n  .section-top-bar {\n    height: 19px;\n    margin-bottom: 13px;\n    position: relative;\n\n    .context-menu-button {\n      background: url('chrome://browser/skin/page-action.svg') no-repeat right center;\n      border: 0;\n      cursor: pointer;\n      fill: var(--newtab-section-header-text-color);\n      height: 100%;\n      inset-inline-end: 0;\n      opacity: 0;\n      position: absolute;\n      top: 0;\n      transition-duration: 200ms;\n      transition-property: opacity;\n      width: $context-menu-button-size;\n\n      &:-moz-any(:active, :focus, :hover) {\n        fill: $grey-90;\n        opacity: 1;\n      }\n    }\n\n    .context-menu {\n      top: 16px;\n    }\n\n    @media (max-width: $break-point-widest + $card-width * 1.5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  &:hover,\n  &.active {\n    .section-top-bar {\n      .context-menu-button {\n        opacity: 1;\n      }\n    }\n  }\n\n  &.active {\n    background: var(--newtab-element-hover-color);\n    border-radius: 4px;\n\n    .section-top-bar {\n      .context-menu-button {\n        fill: var(--newtab-section-active-contextmenu-color);\n      }\n    }\n  }\n\n  .section-disclaimer {\n    $max-button-width: 130px;\n    $min-button-height: 26px;\n\n    color: var(--newtab-text-conditional-color);\n    font-size: 13px;\n    margin-bottom: 26px;\n    position: relative;\n    display: flex;\n\n    .section-disclaimer-text {\n      display: inline-block;\n      width: calc(100% - #{$max-button-width});\n\n      @media (max-width: $break-point-medium) {\n        width: $card-width;\n      }\n    }\n\n    a {\n      color: var(--newtab-link-primary-color);\n      font-weight: bold;\n      padding-left: 3px;\n    }\n\n    button {\n      background: var(--newtab-button-secondary-color);\n      border: 1px solid $grey-40;\n      border-radius: 4px;\n      cursor: pointer;\n      max-width: $max-button-width;\n      min-height: $min-button-height;\n      inset-inline-end: 0;\n      align-self: center;\n\n      &:hover:not(.dismiss) {\n        box-shadow: $shadow-primary;\n        transition: box-shadow 150ms;\n      }\n\n      @media (min-width: $break-point-small) {\n        position: absolute;\n      }\n    }\n  }\n\n  .section-body-fallback {\n    height: $card-height;\n  }\n\n  .section-body {\n    // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n    $horizontal-padding: 7px;\n    margin: 0 (-$horizontal-padding);\n    padding: 0 $horizontal-padding;\n\n    &.animating {\n      overflow: hidden;\n      pointer-events: none;\n    }\n  }\n\n  &.animation-enabled {\n    .section-title {\n      .collapsible-arrow {\n        transition: transform 0.5s $photon-easing;\n      }\n    }\n\n    .section-body {\n      transition: max-height 0.5s $photon-easing;\n    }\n  }\n\n  &.collapsed {\n    .section-body {\n      max-height: 0;\n      overflow: hidden;\n    }\n  }\n}\n",
 		"\n.asrouter-admin {\n  $border-color: var(--newtab-border-secondary-color);\n  $monospace: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', 'Droid Sans Mono', 'Source Code Pro', monospace;\n  max-width: 996px;\n  margin: 0 auto;\n  font-size: 14px;\n  // Reset .outer-wrapper styles\n  display: inherit;\n  padding: 0 0 92px;\n\n  h1 {\n    font-weight: 200;\n    font-size: 32px;\n  }\n\n  table {\n    border-collapse: collapse;\n    width: 100%;\n  }\n\n  .message-item {\n    &:first-child td {\n      border-top: 1px solid $border-color;\n    }\n\n    td {\n      vertical-align: top;\n      border-bottom: 1px solid $border-color;\n      padding: 8px;\n\n      &:first-child {\n        border-left: 1px solid $border-color;\n      }\n\n      &:last-child {\n        border-right: 1px solid $border-color;\n      }\n    }\n\n    &.current {\n      .message-id span {\n        background: $yellow-50;\n        padding: 2px 5px;\n\n        [lwt-newtab-brighttext] & {\n          color: $black;\n        }\n      }\n    }\n\n    &.blocked {\n      .message-id,\n      .message-summary {\n        opacity: 0.5;\n      }\n\n      .message-id {\n        opacity: 0.5;\n      }\n    }\n\n    .message-id {\n      font-family: $monospace;\n      font-size: 12px;\n    }\n  }\n\n  pre {\n    background: var(--newtab-textbox-background-color);\n    margin: 0;\n    padding: 8px;\n    font-size: 12px;\n    max-width: 750px;\n    overflow: auto;\n    font-family: $monospace;\n  }\n}\n",
 		".ASRouterButton {\n  white-space: nowrap;\n  border-radius: 4px;\n  border: 1px solid var(--newtab-border-secondary-color);\n  background-color: var(--newtab-button-secondary-color);\n  font-family: inherit;\n  padding: 8px 15px;\n  margin-inline-start: 12px;\n  color: inherit;\n\n  .tall & {\n    margin-inline-start: 20px;\n  }\n}\n",
 		".SnippetBaseContainer {\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  background-color: var(--newtab-snippets-background-color);\n  color: var(--newtab-text-primary-color);\n  font-size: 12px;\n  line-height: 16px;\n  border-top: 1px solid var(--newtab-snippets-hairline-color);\n  box-shadow: $shadow-secondary;\n  display: flex;\n  align-items: center;\n\n  .innerWrapper {\n    margin: 0 auto;\n    display: flex;\n    align-items: center;\n    padding: 12px $section-horizontal-padding;\n\n    // This is to account for the block button on smaller screens\n    padding-inline-end: 36px;\n    @media (min-width: $break-point-large) {\n      padding-inline-end: $section-horizontal-padding;\n    }\n\n    max-width: $wrapper-max-width-large;\n    @media (min-width: $break-point-widest) {\n      max-width: $wrapper-max-width-widest;\n    }\n  }\n\n  .blockButton {\n    display: none;\n    background: none;\n    border: 0;\n    position: absolute;\n    top: 50%;\n    inset-inline-end: 12px;\n    height: 16px;\n    width: 16px;\n    background-image: url('resource://activity-stream/data/content/assets/glyph-dismiss-16.svg');\n    -moz-context-properties: fill;\n    fill: var(--newtab-icon-primary-color);\n    opacity: 0.5;\n    margin-top: -8px;\n    padding: 0;\n    cursor: pointer;\n\n    @media (min-width: 766px) {\n      inset-inline-end: 24px;\n    }\n  }\n\n  &:hover .blockButton {\n    display: block;\n  }\n}\n",
 		".activity-stream {\n  &.modal-open {\n    overflow: hidden;\n  }\n}\n\n.modalOverlayOuter {\n  background: $white;\n  opacity: 0.93;\n  height: 100%;\n  position: fixed;\n  top: 0;\n  width: 100%;\n  display: none;\n  z-index: 1100;\n\n  &.active {\n    display: block;\n  }\n}\n\n.modalOverlayInner {\n  width: 960px;\n  height: 510px;\n  position: fixed;\n  top: calc(50% - 255px); // halfway down minus half the height of the modal\n  left: calc(50% - 480px); // halfway across minus half the width of the modal\n  background: $white;\n  box-shadow: 0 1px 15px 0 $black-30;\n  border-radius: 4px;\n  display: none;\n  z-index: 1101;\n\n\n  // modal takes over entire screen\n  @media(max-width: 960px) {\n    width: 100%;\n    height: 100%;\n    top: 0;\n    left: 0;\n    box-shadow: none;\n    border-radius: 0;\n  }\n\n  // if modal is short enough, add a vertical scroll bar\n  @media(max-width: 850px) and (max-height: 730px) {\n    overflow-y: scroll;\n  }\n\n  // if modal is narrow enough, add a vertical scroll bar\n  @media(max-width: 650px) and (max-height: 600px) {\n    overflow-y: scroll;\n  }\n\n  &.active {\n    display: block;\n  }\n\n  h2 {\n    color: $grey-60;\n    text-align: center;\n    font-weight: 200;\n    margin-top: 30px;\n    font-size: 28px;\n    line-height: 37px;\n    letter-spacing: -0.13px;\n\n    @media(max-width: 960px) {\n      margin-top: 100px;\n    }\n\n    @media(max-width: 850px) {\n      margin-top: 30px;\n    }\n  }\n\n  .footer {\n    border-top: 1px solid $grey-30;\n    height: 70px;\n    width: 100%;\n    position: absolute;\n    bottom: 0;\n    text-align: center;\n    background-color: $white;\n\n    // if modal is short enough, footer becomes sticky\n    @media(max-width: 850px) and (max-height: 730px) {\n      position: sticky;\n    }\n\n    // if modal is narrow enough, footer becomes sticky\n    @media(max-width: 650px) and (max-height: 600px) {\n      position: sticky;\n    }\n\n    .modalButton {\n      margin-top: 20px;\n      width: 150px;\n      height: 30px;\n      padding: 4px 0 6px;\n      font-size: 15px;\n\n      &:focus,\n      &.active {\n        box-shadow: $shadow-primary;\n        transition: box-shadow 150ms;\n      }\n    }\n  }\n}\n",
 		".SimpleSnippet {\n  &.tall {\n    padding: 27px 0;\n  }\n\n  .title {\n    display: inline;\n    font-size: inherit;\n    margin: 0;\n  }\n\n  .titleIcon {\n    background-repeat: no-repeat;\n    background-size: 14px;\n    height: 16px;\n    width: 16px;\n    margin-top: 2px;\n    margin-inline-end: 2px;\n    display: inline-block;\n    vertical-align: top;\n  }\n\n  .body {\n    display: inline;\n    margin: 0;\n  }\n\n  .icon {\n    height: 42px;\n    width: 42px;\n    margin-inline-end: 12px;\n    flex-shrink: 0;\n  }\n\n  &.tall .icon {\n    margin-inline-end: 20px;\n  }\n\n  .ASRouterAnchor {\n    color: inherit;\n    text-decoration: underline;\n  }\n}\n",
 		".onboardingMessageContainer {\n  display: grid;\n  grid-column-gap: 21px;\n  grid-template-columns: auto auto auto;\n  padding-left: 30px;\n  padding-right: 30px;\n\n  // at 850px, the cards go from vertical layout to horizontal layout\n  @media(max-width: 850px) {\n    grid-template-columns: none;\n    grid-template-rows: auto auto auto;\n    padding-left: 110px;\n    padding-right: 110px;\n  }\n}\n\n.onboardingMessage {\n  height: 340px;\n  text-align: center;\n  padding: 13px;\n  font-weight: 200;\n\n  // at 850px, img floats left, content floats right next to it\n  @media(max-width: 850px) {\n    height: 170px;\n    text-align: left;\n    padding: 10px;\n    border-bottom: 1px solid $grey-30;\n    display: flex;\n    margin-bottom: 11px;\n\n    &:last-child {\n      border: 0;\n    }\n\n    .onboardingContent {\n      padding-left: 10px;\n      height: 100%;\n\n      > span > h3 {\n        margin-top: 0;\n        margin-bottom: 4px;\n        font-weight: 400;\n      }\n\n      > span > p {\n        margin-top: 0;\n        line-height: 22px;\n        font-size: 15px;\n      }\n    }\n  }\n\n  @media(max-width: 650px) {\n    height: 250px;\n  }\n\n  .onboardingMessageImage {\n    height: 100px;\n    width: 120px;\n    background-size: 120px;\n    background-position: center center;\n    background-repeat: no-repeat;\n    display: inline-block;\n    vertical-align: middle;\n\n\n    @media(max-width: 850px) {\n      height: 75px;\n      min-width: 80px;\n      background-size: 80px;\n    }\n\n    &.addons {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-addons@2x.png');\n    }\n\n    &.privatebrowsing {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-privatebrowsing@2x.png');\n    }\n\n    &.screenshots {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-screenshots@2x.png');\n    }\n\n    &.gift {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-gift@2x.png');\n    }\n  }\n\n  .onboardingContent {\n    height: 175px;\n\n    > span > h3 {\n      color: $grey-90;\n      margin-bottom: 8px;\n      font-weight: 400;\n    }\n\n    > span > p {\n      color: $grey-60;\n      margin-top: 0;\n      height: 130px;\n      margin-bottom: 12px;\n      font-size: 15px;\n      line-height: 22px;\n\n      @media(max-width: 650px) {\n        margin-bottom: 0;\n      }\n    }\n  }\n\n  .onboardingButton {\n    background-color: $grey-90-10;\n    border: 0;\n    width: 150px;\n    height: 30px;\n    margin-bottom: 23px;\n    padding: 4px 0 6px;\n    font-size: 15px;\n\n    // at 850px, the button shimmies down and to the right\n    @media(max-width: 850px) {\n      float: right;\n      margin-top: -60px;\n      margin-right: -10px;\n    }\n\n    @media(max-width: 650px) {\n      float: none;\n      margin-top: 30px;\n    }\n\n    &:focus,\n    &.active {\n      box-shadow: $shadow-primary;\n      transition: box-shadow 150ms;\n    }\n  }\n\n\n  &::before {\n    content: '';\n    height: 220px;\n    width: 1px;\n    position: absolute;\n    background-color: $grey-30;\n    margin-top: 40px;\n    margin-left: 215px;\n\n    // at 850px, the line goes from vertical to horizontal\n    @media(max-width: 850px) {\n      content: none;\n    }\n  }\n\n  &:last-child::before {\n    content: none;\n  }\n}\n"
 	],
 	"names": [],
-	"mappings": "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"
+	"mappings": "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"
 }
\ No newline at end of file
--- a/browser/components/newtab/css/activity-stream-mac.css
+++ b/browser/components/newtab/css/activity-stream-mac.css
@@ -623,17 +623,16 @@ main {
   margin: 0 auto;
   padding: 32px; }
   .topsite-form .form-input-container .top-site-outer {
     padding: 0;
     margin: 24px 0 0;
     margin-inline-start: 32px;
     pointer-events: none; }
   .topsite-form .form-input-container .section-title {
-    text-transform: none;
     font-size: 16px;
     margin: 0 0 16px; }
 
 .topsite-form .fields-and-preview {
   display: flex; }
 
 .topsite-form label {
   font-size: 13px; }
@@ -1567,18 +1566,17 @@ a.firstrun-link {
 .collapsible-section {
   padding: 10px 25px;
   transition-delay: 100ms;
   transition-duration: 100ms;
   transition-property: background-color; }
   .collapsible-section .section-title {
     font-size: 13px;
     font-weight: bold;
-    margin: 0;
-    text-transform: uppercase; }
+    margin: 0; }
     .collapsible-section .section-title span {
       color: var(--newtab-section-header-text-color);
       display: inline-block;
       fill: var(--newtab-section-header-text-color);
       vertical-align: middle; }
     .collapsible-section .section-title .click-target {
       cursor: pointer;
       vertical-align: top;
--- a/browser/components/newtab/css/activity-stream-mac.css.map
+++ b/browser/components/newtab/css/activity-stream-mac.css.map
@@ -31,28 +31,28 @@
 		"/* This is the mac variant */ // sass-lint:disable-line no-css-comments\n\n$os-infopanel-arrow-height: 10px;\n$os-infopanel-arrow-offset-end: 7px;\n$os-infopanel-arrow-width: 18px;\n\n[lwt-newtab-brighttext] {\n  -moz-osx-font-smoothing: grayscale;\n}\n\n@import './activity-stream';\n",
 		"@import './normalize';\n@import './variables';\n@import './theme';\n@import './icons';\n\nhtml {\n  height: 100%;\n}\n\nbody,\n#root { // sass-lint:disable-line no-ids\n  min-height: 100vh;\n}\n\nbody {\n  background-color: var(--newtab-background-color);\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;\n  font-size: 16px;\n  overflow-y: scroll;\n\n  &.hide-onboarding > #onboarding-overlay-button, // sass-lint:disable-line no-ids\n  &.hide-main > #onboarding-overlay-button { // sass-lint:disable-line no-ids\n    display: none !important; // sass-lint:disable-line no-important\n  }\n\n  &.hide-main > #onboarding-notification-bar { // sass-lint:disable-line no-ids\n    display: none;\n  }\n}\n\nh1,\nh2 {\n  font-weight: normal;\n}\n\na {\n  text-decoration: none;\n}\n\n// For screen readers\n.sr-only {\n  border: 0;\n  clip: rect(0, 0, 0, 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px;\n}\n\n.inner-border {\n  border: $border-secondary;\n  border-radius: $border-radius;\n  height: 100%;\n  left: 0;\n  pointer-events: none;\n  position: absolute;\n  top: 0;\n  width: 100%;\n  z-index: 100;\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n.show-on-init {\n  opacity: 0;\n  transition: opacity 0.2s ease-in;\n\n  &.on {\n    animation: fadeIn 0.2s;\n    opacity: 1;\n  }\n}\n\n.actions {\n  border-top: $border-secondary;\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n  margin: 0;\n  padding: 15px 25px 0;\n}\n\n// Default button (grey)\n.button,\n.actions button {\n  background-color: var(--newtab-button-secondary-color);\n  border: $border-primary;\n  border-radius: 4px;\n  color: inherit;\n  cursor: pointer;\n  margin-bottom: 15px;\n  padding: 10px 30px;\n  white-space: nowrap;\n\n  &:hover:not(.dismiss) {\n    box-shadow: $shadow-primary;\n    transition: box-shadow 150ms;\n  }\n\n  &.dismiss {\n    background-color: transparent;\n    border: 0;\n    padding: 0;\n    text-decoration: underline;\n  }\n\n  // Blue button\n  &.primary,\n  &.done {\n    background-color: var(--newtab-button-primary-color);\n    border: solid 1px var(--newtab-button-primary-color);\n    color: $white;\n    margin-inline-start: auto;\n  }\n}\n\ninput {\n  &[type='text'],\n  &[type='search'] {\n    border-radius: $border-radius;\n  }\n}\n\n// Make sure snippets show up above other UI elements\n#snippets-container { // sass-lint:disable-line no-ids\n  z-index: 1;\n}\n\n// Components\n@import '../components/Base/Base';\n@import '../components/ErrorBoundary/ErrorBoundary';\n@import '../components/TopSites/TopSites';\n@import '../components/Sections/Sections';\n@import '../components/StartupOverlay/StartupOverlay';\n@import '../components/Topics/Topics';\n@import '../components/Search/Search';\n@import '../components/ContextMenu/ContextMenu';\n@import '../components/ConfirmDialog/ConfirmDialog';\n@import '../components/Card/Card';\n@import '../components/ManualMigration/ManualMigration';\n@import '../components/CollapsibleSection/CollapsibleSection';\n@import '../components/ASRouterAdmin/ASRouterAdmin';\n\n// AS Router\n@import '../asrouter/components/Button/Button';\n@import '../asrouter/components/SnippetBase/SnippetBase';\n@import '../asrouter/components/ModalOverlay/ModalOverlay';\n@import '../asrouter/templates/SimpleSnippet/SimpleSnippet';\n@import '../asrouter/templates/OnboardingMessage/OnboardingMessage';\n",
 		"html {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n\n*::-moz-focus-inner {\n  border: 0;\n}\n\nbody {\n  margin: 0;\n}\n\nbutton,\ninput {\n  background-color: inherit;\n  color: inherit;\n  font-family: inherit;\n  font-size: inherit;\n}\n\n[hidden] {\n  display: none !important; // sass-lint:disable-line no-important\n}\n",
 		"// Photon colors from http://design.firefox.com/photon/visuals/color.html\n$blue-40: #45A1FF;\n$blue-50: #0A84FF;\n$blue-60: #0060DF;\n$blue-70: #003EAA;\n$blue-80: #002275;\n$grey-10: #F9F9FA;\n$grey-20: #EDEDF0;\n$grey-30: #D7D7DB;\n$grey-40: #B1B1B3;\n$grey-50: #737373;\n$grey-60: #4A4A4F;\n$grey-70: #38383D;\n$grey-80: #2A2A2E;\n$grey-90: #0C0C0D;\n$teal-70: #008EA4;\n$red-60: #D70022;\n$yellow-50: #FFE900;\n\n// Photon opacity from http://design.firefox.com/photon/visuals/color.html#opacity\n$grey-10-10: rgba($grey-10, 0.1);\n$grey-10-20: rgba($grey-10, 0.2);\n$grey-10-40: rgba($grey-10, 0.4);\n$grey-10-60: rgba($grey-10, 0.6);\n$grey-10-80: rgba($grey-10, 0.8);\n$grey-20-60: rgba($grey-20, 0.6);\n$grey-20-80: rgba($grey-20, 0.8);\n$grey-30-60: rgba($grey-30, 0.6);\n$grey-90-10: rgba($grey-90, 0.1);\n$grey-90-20: rgba($grey-90, 0.2);\n$grey-90-30: rgba($grey-90, 0.3);\n$grey-90-40: rgba($grey-90, 0.4);\n$grey-90-50: rgba($grey-90, 0.5);\n$grey-90-60: rgba($grey-90, 0.6);\n$grey-90-70: rgba($grey-90, 0.7);\n$grey-90-80: rgba($grey-90, 0.8);\n$grey-90-90: rgba($grey-90, 0.9);\n\n$black: #000;\n$black-5: rgba($black, 0.05);\n$black-10: rgba($black, 0.1);\n$black-15: rgba($black, 0.15);\n$black-20: rgba($black, 0.2);\n$black-25: rgba($black, 0.25);\n$black-30: rgba($black, 0.3);\n\n// Other colors\n$white: #FFF;\n$white-10: rgba($white, 0.1);\n$pocket-teal: #50BCB6;\n$bookmark-icon-fill: #0A84FF;\n$download-icon-fill: #12BC00;\n$pocket-icon-fill: #D70022;\n$email-input-focus: rgba($blue-50, 0.3);\n$email-input-invalid: rgba($red-60, 0.3);\n$aw-extra-blue-1: #004EC2;\n$aw-extra-blue-2: #0080FF;\n$aw-extra-blue-3: #00C7FF;\n$about-welcome-gradient: linear-gradient(to bottom, $blue-70 40%, $aw-extra-blue-1 60%, $blue-60 80%, $aw-extra-blue-2 90%, $aw-extra-blue-3 100%);\n$about-welcome-extra-links: #676F7E;\n\n// Photon transitions from http://design.firefox.com/photon/motion/duration-and-easing.html\n$photon-easing: cubic-bezier(0.07, 0.95, 0, 1);\n\n$border-radius: 3px;\n\n// Grid related styles\n$base-gutter: 32px;\n$section-horizontal-padding: 25px;\n$section-vertical-padding: 10px;\n$section-spacing: 40px - $section-vertical-padding * 2;\n$grid-unit: 96px; // 1 top site\n\n$icon-size: 16px;\n$smaller-icon-size: 12px;\n$larger-icon-size: 32px;\n\n$wrapper-default-width: $grid-unit * 2 + $base-gutter * 1 + $section-horizontal-padding * 2; // 2 top sites\n$wrapper-max-width-small: $grid-unit * 3 + $base-gutter * 2 + $section-horizontal-padding * 2; // 3 top sites\n$wrapper-max-width-medium: $grid-unit * 4 + $base-gutter * 3 + $section-horizontal-padding * 2; // 4 top sites\n$wrapper-max-width-large: $grid-unit * 6 + $base-gutter * 5 + $section-horizontal-padding * 2; // 6 top sites\n$wrapper-max-width-widest: $grid-unit * 8 + $base-gutter * 7 + $section-horizontal-padding * 2; // 8 top sites\n// For the breakpoints, we need to add space for the scrollbar to avoid weird\n// layout issues when the scrollbar is visible. 16px is wide enough to cover all\n// OSes and keeps it simpler than a per-OS value.\n$scrollbar-width: 16px;\n$break-point-small: $wrapper-max-width-small + $base-gutter * 2 + $scrollbar-width;\n$break-point-medium: $wrapper-max-width-medium + $base-gutter * 2 + $scrollbar-width;\n$break-point-large: $wrapper-max-width-large + $base-gutter * 2 + $scrollbar-width;\n$break-point-widest: $wrapper-max-width-widest + $base-gutter * 2 + $scrollbar-width;\n\n$section-title-font-size: 13px;\n\n$card-width: $grid-unit * 2 + $base-gutter;\n$card-height: 266px;\n$card-preview-image-height: 122px;\n$card-title-margin: 2px;\n$card-text-line-height: 19px;\n// Larger cards for wider screens:\n$card-width-large: 309px;\n$card-height-large: 370px;\n$card-preview-image-height-large: 155px;\n// Compact cards for Highlights\n$card-height-compact: 160px;\n$card-preview-image-height-compact: 108px;\n\n$topic-margin-top: 12px;\n\n$context-menu-button-size: 27px;\n$context-menu-button-boxshadow: 0 2px $grey-90-10;\n$context-menu-shadow: 0 5px 10px $black-30, 0 0 0 1px $black-20;\n$context-menu-font-size: 14px;\n$context-menu-border-radius: 5px;\n$context-menu-outer-padding: 5px;\n$context-menu-item-padding: 3px 12px;\n\n$error-fallback-font-size: 12px;\n$error-fallback-line-height: 1.5;\n\n$image-path: '../data/content/assets/';\n\n$snippets-container-height: 120px;\n\n$textbox-shadow-size: 4px;\n\n@mixin fade-in {\n  box-shadow: inset $inner-box-shadow, $shadow-primary;\n  transition: box-shadow 150ms;\n}\n\n@mixin fade-in-card {\n  box-shadow: $shadow-primary;\n  transition: box-shadow 150ms;\n}\n\n@mixin context-menu-button {\n  .context-menu-button {\n    background-clip: padding-box;\n    background-color: var(--newtab-contextmenu-button-color);\n    background-image: url('chrome://browser/skin/page-action.svg');\n    background-position: 55%;\n    border: $border-primary;\n    border-radius: 100%;\n    box-shadow: $context-menu-button-boxshadow;\n    cursor: pointer;\n    fill: var(--newtab-icon-primary-color);\n    height: $context-menu-button-size;\n    inset-inline-end: -($context-menu-button-size / 2);\n    opacity: 0;\n    position: absolute;\n    top: -($context-menu-button-size / 2);\n    transform: scale(0.25);\n    transition-duration: 200ms;\n    transition-property: transform, opacity;\n    width: $context-menu-button-size;\n\n    &:-moz-any(:active, :focus) {\n      opacity: 1;\n      transform: scale(1);\n    }\n  }\n}\n\n@mixin context-menu-button-hover {\n  .context-menu-button {\n    opacity: 1;\n    transform: scale(1);\n  }\n}\n\n@mixin context-menu-open-middle {\n  .context-menu {\n    margin-inline-end: auto;\n    margin-inline-start: auto;\n    inset-inline-end: auto;\n    inset-inline-start: -$base-gutter;\n  }\n}\n\n@mixin context-menu-open-left {\n  .context-menu {\n    margin-inline-end: 5px;\n    margin-inline-start: auto;\n    inset-inline-end: 0;\n    inset-inline-start: auto;\n  }\n}\n\n@mixin flip-icon {\n  &:dir(rtl) {\n    transform: scaleX(-1);\n  }\n}\n",
 		"@function textbox-shadow($color) {\n  @return 0 0 0 1px $color, 0 0 0 $textbox-shadow-size rgba($color, 0.3);\n}\n\n@mixin textbox-focus($color) {\n  --newtab-textbox-focus-color: $color;\n  --newtab-textbox-focus-boxshadow: textbox-shadow($color);\n}\n\n// scss variables related to the theme.\n$border-primary: 1px solid var(--newtab-border-primary-color);\n$border-secondary: 1px solid var(--newtab-border-secondary-color);\n$inner-box-shadow: 0 0 0 1px var(--newtab-inner-box-shadow-color);\n$input-border: 1px solid var(--newtab-textbox-border);\n$input-border-active: 1px solid var(--newtab-textbox-focus-color);\n$input-error-border: 1px solid $red-60;\n$input-error-boxshadow: textbox-shadow($red-60);\n$shadow-primary: 0 0 0 5px var(--newtab-card-active-outline-color);\n$shadow-secondary: 0 1px 4px 0 $grey-90-20;\n\n// Default theme\nbody {\n  // General styles\n  --newtab-background-color: $grey-10;\n  --newtab-border-primary-color: $grey-40;\n  --newtab-border-secondary-color: $grey-30;\n  --newtab-button-primary-color: $blue-60;\n  --newtab-button-secondary-color: inherit;\n  --newtab-element-active-color: $grey-30-60;\n  --newtab-element-hover-color: $grey-20;\n  --newtab-icon-primary-color: $grey-90-80;\n  --newtab-icon-secondary-color: $grey-90-60;\n  --newtab-icon-tertiary-color: $grey-30;\n  --newtab-inner-box-shadow-color: $black-10;\n  --newtab-link-primary-color: $blue-60;\n  --newtab-link-secondary-color: $teal-70;\n  --newtab-text-conditional-color: $grey-60;\n  --newtab-text-primary-color: $grey-90;\n  --newtab-text-secondary-color: $grey-50;\n  --newtab-textbox-background-color: $white;\n  --newtab-textbox-border: $grey-90-20;\n  @include textbox-focus($blue-60); // sass-lint:disable-line mixins-before-declarations\n\n  // Context menu\n  --newtab-contextmenu-background-color: $grey-10;\n  --newtab-contextmenu-button-color: $white;\n\n  // Modal + overlay\n  --newtab-modal-color: $white;\n  --newtab-overlay-color: $grey-20-80;\n\n  // Sections\n  --newtab-section-header-text-color: $grey-50;\n  --newtab-section-navigation-text-color: $grey-50;\n  --newtab-section-active-contextmenu-color: $grey-90;\n\n  // Search\n  --newtab-search-border-color: transparent;\n  --newtab-search-dropdown-color: $white;\n  --newtab-search-dropdown-header-color: $grey-10;\n  --newtab-search-icon-color: $grey-90-40;\n\n  // Top Sites\n  --newtab-topsites-background-color: $white;\n  --newtab-topsites-icon-shadow: inset $inner-box-shadow;\n  --newtab-topsites-label-color: inherit;\n\n  // Cards\n  --newtab-card-active-outline-color: $grey-30;\n  --newtab-card-background-color: $white;\n  --newtab-card-hairline-color: $black-10;\n  --newtab-card-shadow: 0 1px 4px 0 $grey-90-10;\n\n  // Snippets\n  --newtab-snippets-background-color: $white;\n  --newtab-snippets-hairline-color: transparent;\n\n  &[lwt-newtab-brighttext] {\n    // General styles\n    --newtab-background-color: $grey-80;\n    --newtab-border-primary-color: $grey-10-80;\n    --newtab-border-secondary-color: $grey-10-10;\n    --newtab-button-primary-color: $blue-60;\n    --newtab-button-secondary-color: $grey-70;\n    --newtab-element-active-color: $grey-10-20;\n    --newtab-element-hover-color: $grey-10-10;\n    --newtab-icon-primary-color: $grey-10-80;\n    --newtab-icon-secondary-color: $grey-10-40;\n    --newtab-icon-tertiary-color: $grey-10-40;\n    --newtab-inner-box-shadow-color: $grey-10-20;\n    --newtab-link-primary-color: $blue-40;\n    --newtab-link-secondary-color: $pocket-teal;\n    --newtab-text-conditional-color: $grey-10;\n    --newtab-text-primary-color: $grey-10;\n    --newtab-text-secondary-color: $grey-10-80;\n    --newtab-textbox-background-color: $grey-70;\n    --newtab-textbox-border: $grey-10-20;\n    @include textbox-focus($blue-40); // sass-lint:disable-line mixins-before-declarations\n\n    // Context menu\n    --newtab-contextmenu-background-color: $grey-60;\n    --newtab-contextmenu-button-color: $grey-80;\n\n    // Modal + overlay\n    --newtab-modal-color: $grey-80;\n    --newtab-overlay-color: $grey-90-80;\n\n    // Sections\n    --newtab-section-header-text-color: $grey-10-80;\n    --newtab-section-navigation-text-color: $grey-10-80;\n    --newtab-section-active-contextmenu-color: $white;\n\n    // Search\n    --newtab-search-border-color: $grey-10-20;\n    --newtab-search-dropdown-color: $grey-70;\n    --newtab-search-dropdown-header-color: $grey-60;\n    --newtab-search-icon-color: $grey-10-60;\n\n    // Top Sites\n    --newtab-topsites-background-color: $grey-70;\n    --newtab-topsites-icon-shadow: none;\n    --newtab-topsites-label-color: $grey-10-80;\n\n    // Cards\n    --newtab-card-active-outline-color: $grey-60;\n    --newtab-card-background-color: $grey-70;\n    --newtab-card-hairline-color: $grey-10-10;\n    --newtab-card-shadow: 0 1px 8px 0 $grey-90-20;\n\n    // Snippets\n    --newtab-snippets-background-color: $grey-70;\n    --newtab-snippets-hairline-color: $white-10;\n  }\n}\n",
 		".icon {\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-size: $icon-size;\n  -moz-context-properties: fill;\n  display: inline-block;\n  fill: var(--newtab-icon-primary-color);\n  height: $icon-size;\n  vertical-align: middle;\n  width: $icon-size;\n\n  &.icon-spacer {\n    margin-inline-end: 8px;\n  }\n\n  &.icon-small-spacer {\n    margin-inline-end: 6px;\n  }\n\n  &.icon-bookmark-added {\n    background-image: url('chrome://browser/skin/bookmark.svg');\n  }\n\n  &.icon-bookmark-hollow {\n    background-image: url('chrome://browser/skin/bookmark-hollow.svg');\n  }\n\n  &.icon-clear-input {\n    fill: var(--newtab-icon-secondary-color);\n    background-image: url('#{$image-path}glyph-cancel-16.svg');\n  }\n\n  &.icon-delete {\n    background-image: url('#{$image-path}glyph-delete-16.svg');\n  }\n\n  &.icon-search {\n    background-image: url('chrome://browser/skin/search-glass.svg');\n  }\n\n  &.icon-modal-delete {\n    flex-shrink: 0;\n    background-image: url('#{$image-path}glyph-modal-delete-32.svg');\n    background-size: $larger-icon-size;\n    height: $larger-icon-size;\n    width: $larger-icon-size;\n  }\n\n  &.icon-dismiss {\n    background-image: url('#{$image-path}glyph-dismiss-16.svg');\n  }\n\n  &.icon-info {\n    background-image: url('#{$image-path}glyph-info-16.svg');\n  }\n\n  &.icon-import {\n    background-image: url('#{$image-path}glyph-import-16.svg');\n  }\n\n  &.icon-new-window {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-newWindow-16.svg');\n  }\n\n  &.icon-new-window-private {\n    background-image: url('chrome://browser/skin/privateBrowsing.svg');\n  }\n\n  &.icon-settings {\n    background-image: url('chrome://browser/skin/settings.svg');\n  }\n\n  &.icon-pin {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-pin-16.svg');\n  }\n\n  &.icon-unpin {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-unpin-16.svg');\n  }\n\n  &.icon-edit {\n    background-image: url('#{$image-path}glyph-edit-16.svg');\n  }\n\n  &.icon-pocket {\n    background-image: url('#{$image-path}glyph-pocket-16.svg');\n  }\n\n  &.icon-history-item {\n    background-image: url('chrome://browser/skin/history.svg');\n  }\n\n  &.icon-trending {\n    background-image: url('#{$image-path}glyph-trending-16.svg');\n    transform: translateY(2px); // trending bolt is visually top heavy\n  }\n\n  &.icon-now {\n    background-image: url('chrome://browser/skin/history.svg');\n  }\n\n  &.icon-topsites {\n    background-image: url('#{$image-path}glyph-topsites-16.svg');\n  }\n\n  &.icon-pin-small {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-pin-12.svg');\n    background-size: $smaller-icon-size;\n    height: $smaller-icon-size;\n    width: $smaller-icon-size;\n  }\n\n  &.icon-check {\n    background-image: url('chrome://browser/skin/check.svg');\n  }\n\n  &.icon-download {\n    background-image: url('chrome://browser/skin/downloads/download-icons.svg#arrow-with-bar');\n  }\n\n  &.icon-copy {\n    background-image: url('chrome://browser/skin/edit-copy.svg');\n  }\n\n  &.icon-open-file {\n    background-image: url('#{$image-path}glyph-open-file-16.svg');\n  }\n\n  &.icon-webextension {\n    background-image: url('#{$image-path}glyph-webextension-16.svg');\n  }\n\n  &.icon-highlights {\n    background-image: url('#{$image-path}glyph-highlights-16.svg');\n  }\n\n  &.icon-arrowhead-down {\n    background-image: url('#{$image-path}glyph-arrowhead-down-16.svg');\n  }\n\n  &.icon-arrowhead-down-small {\n    background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n    background-size: $smaller-icon-size;\n    height: $smaller-icon-size;\n    width: $smaller-icon-size;\n  }\n\n  &.icon-arrowhead-forward-small {\n    background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n    background-size: $smaller-icon-size;\n    height: $smaller-icon-size;\n    transform: rotate(-90deg);\n    width: $smaller-icon-size;\n\n    &:dir(rtl) {\n      transform: rotate(90deg);\n    }\n  }\n\n  &.icon-arrowhead-up {\n    background-image: url('#{$image-path}glyph-arrowhead-down-16.svg');\n    transform: rotate(180deg);\n  }\n\n  &.icon-add {\n    background-image: url('#{$image-path}glyph-add-16.svg');\n  }\n\n  &.icon-minimize {\n    background-image: url('#{$image-path}glyph-minimize-16.svg');\n  }\n\n  &.icon-maximize {\n    background-image: url('#{$image-path}glyph-maximize-16.svg');\n  }\n}\n",
 		".outer-wrapper {\n  color: var(--newtab-text-primary-color);\n  display: flex;\n  flex-grow: 1;\n  min-height: 100vh;\n  padding: ($section-spacing + $section-vertical-padding) $base-gutter $base-gutter;\n\n  &.fixed-to-top {\n    display: block;\n  }\n\n  a {\n    color: var(--newtab-link-primary-color);\n  }\n}\n\nmain {\n  margin: auto;\n  // Offset the snippets container so things at the bottom of the page are still\n  // visible when snippets / onboarding are visible. Adjust for other spacing.\n  padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n  width: $wrapper-default-width;\n\n  @media (min-width: $break-point-small) {\n    width: $wrapper-max-width-small;\n  }\n\n  @media (min-width: $break-point-medium) {\n    width: $wrapper-max-width-medium;\n  }\n\n  @media (min-width: $break-point-large) {\n    width: $wrapper-max-width-large;\n  }\n\n  @media (min-width: $break-point-widest) {\n    width: $wrapper-max-width-widest;\n  }\n\n  section {\n    margin-bottom: $section-spacing;\n    position: relative;\n  }\n\n  .hide-main & {\n    visibility: hidden;\n  }\n\n}\n\n.base-content-fallback {\n  // Make the error message be centered against the viewport\n  height: 100vh;\n}\n\n.body-wrapper {\n  // Hide certain elements so the page structure is fixed, e.g., placeholders,\n  // while avoiding flashes of changing content, e.g., icons and text\n  $selectors-to-hide: '\n    .section-title,\n    .sections-list .section:last-of-type,\n    .topic\n  ';\n\n  #{$selectors-to-hide} {\n    opacity: 0;\n  }\n\n  &.on {\n    #{$selectors-to-hide} {\n      opacity: 1;\n    }\n  }\n}\n\n.non-collapsible-section {\n  padding: 0 $section-horizontal-padding;\n}\n\n.prefs-button {\n  button {\n    background-color: transparent;\n    border: 0;\n    cursor: pointer;\n    fill: var(--newtab-icon-primary-color);\n    inset-inline-end: 15px;\n    padding: 15px;\n    position: fixed;\n    top: 15px;\n    z-index: 1000;\n\n    &:hover,\n    &:focus {\n      background-color: var(--newtab-element-hover-color);\n    }\n\n    &:active {\n      background-color: var(--newtab-element-active-color);\n    }\n  }\n}\n",
 		".as-error-fallback {\n  align-items: center;\n  border-radius: $border-radius;\n  box-shadow: inset $inner-box-shadow;\n  color: var(--newtab-text-conditional-color);\n  display: flex;\n  flex-direction: column;\n  font-size: $error-fallback-font-size;\n  justify-content: center;\n  justify-items: center;\n  line-height: $error-fallback-line-height;\n\n  a {\n    color: var(--newtab-text-conditional-color);\n    text-decoration: underline;\n  }\n}\n",
-		"$top-sites-size: $grid-unit;\n$top-sites-border-radius: 6px;\n$top-sites-title-height: 30px;\n$top-sites-vertical-space: 8px;\n$screenshot-size: cover;\n$rich-icon-size: 96px;\n$default-icon-wrapper-size: 42px;\n$default-icon-size: 32px;\n$default-icon-offset: 6px;\n$half-base-gutter: $base-gutter / 2;\n\n.top-sites {\n  // Take back the margin from the bottom row of vertical spacing as well as the\n  // extra whitespace below the title text as it's vertically centered.\n  margin-bottom: $section-spacing - ($top-sites-vertical-space + $top-sites-title-height / 3);\n}\n\n.top-sites-list {\n  list-style: none;\n  margin: 0 (-$half-base-gutter);\n  padding: 0;\n\n  // Two columns\n  @media (max-width: $break-point-small) {\n    :nth-child(2n+1) {\n      @include context-menu-open-middle;\n    }\n\n    :nth-child(2n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Three columns\n  @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n    :nth-child(3n+2),\n    :nth-child(3n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Four columns\n  @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n    :nth-child(4n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n    :nth-child(4n+3) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Six columns\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n    :nth-child(6n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n    :nth-child(6n+5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Eight columns\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n    :nth-child(8n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n    :nth-child(8n+7) {\n      @include context-menu-open-left;\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n\n  li {\n    margin: 0 0 $top-sites-vertical-space;\n  }\n\n  &:not(.dnd-active) {\n    .top-site-outer:-moz-any(.active, :focus, :hover) {\n      .tile {\n        @include fade-in;\n      }\n\n      @include context-menu-button-hover;\n    }\n  }\n}\n\n// container for drop zone\n.top-site-outer {\n  padding: 0 $half-base-gutter;\n  display: inline-block;\n\n  // container for context menu\n  .top-site-inner {\n    position: relative;\n\n    > a {\n      color: inherit;\n      display: block;\n      outline: none;\n\n      &:-moz-any(.active, :focus) {\n        .tile {\n          @include fade-in;\n        }\n      }\n    }\n  }\n\n  @include context-menu-button;\n\n  .tile { // sass-lint:disable-block property-sort-order\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow, var(--newtab-card-shadow);\n    height: $top-sites-size;\n    position: relative;\n    width: $top-sites-size;\n\n    // For letter fallback\n    align-items: center;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 32px;\n    font-weight: 200;\n    justify-content: center;\n    text-transform: uppercase;\n\n    &::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .screenshot {\n    background-color: $white;\n    background-position: top left;\n    background-size: $screenshot-size;\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow;\n    height: 100%;\n    left: 0;\n    opacity: 0;\n    position: absolute;\n    top: 0;\n    transition: opacity 1s;\n    width: 100%;\n\n    &.active {\n      opacity: 1;\n    }\n  }\n\n  // Some common styles for all icons (rich and default) in top sites\n  .top-site-icon {\n    background-color: var(--newtab-topsites-background-color);\n    background-position: center center;\n    background-repeat: no-repeat;\n    border-radius: $top-sites-border-radius;\n    box-shadow: var(--newtab-topsites-icon-shadow);\n    position: absolute;\n  }\n\n  .rich-icon {\n    background-size: cover;\n    height: 100%;\n    inset-inline-start: 0;\n    top: 0;\n    width: 100%;\n  }\n\n  .default-icon { // sass-lint:disable block property-sort-order\n    background-size: $default-icon-size;\n    bottom: -$default-icon-offset;\n    height: $default-icon-wrapper-size;\n    inset-inline-end: -$default-icon-offset;\n    width: $default-icon-wrapper-size;\n\n    // for corner letter fallback\n    align-items: center;\n    display: flex;\n    font-size: 20px;\n    justify-content: center;\n\n    &[data-fallback]::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .title {\n    color: var(--newtab-topsites-label-color);\n    font: message-box;\n    height: $top-sites-title-height;\n    line-height: $top-sites-title-height;\n    text-align: center;\n    width: $top-sites-size;\n    position: relative;\n\n    .icon {\n      fill: var(--newtab-icon-tertiary-color);\n      inset-inline-start: 0;\n      position: absolute;\n      top: 10px;\n    }\n\n    span {\n      height: $top-sites-title-height;\n      display: block;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    &.pinned {\n      span {\n        padding: 0 13px;\n      }\n    }\n  }\n\n  .edit-button {\n    background-image: url('#{$image-path}glyph-edit-16.svg');\n  }\n\n  &.placeholder {\n    .tile {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .screenshot {\n      display: none;\n    }\n  }\n\n  &.dragged {\n    .tile {\n      background: $grey-20;\n      box-shadow: none;\n\n      *,\n      &::before {\n        display: none;\n      }\n    }\n\n    .title {\n      visibility: hidden;\n    }\n  }\n}\n\n.edit-topsites-wrapper {\n  .modal {\n    box-shadow: $shadow-secondary;\n    left: 0;\n    margin: 0 auto;\n    position: fixed;\n    right: 0;\n    top: 40px;\n    width: $wrapper-default-width;\n\n    @media (min-width: $break-point-small) {\n      width: $wrapper-max-width-small;\n    }\n\n    @media (min-width: $break-point-medium) {\n      width: $wrapper-max-width-medium;\n    }\n\n    @media (min-width: $break-point-large) {\n      width: $wrapper-max-width-large;\n    }\n  }\n}\n\n.topsite-form {\n  $form-width: 300px;\n  $form-spacing: 32px;\n\n  .form-input-container {\n    max-width: $form-width + 3 * $form-spacing + $rich-icon-size;\n    margin: 0 auto;\n    padding: $form-spacing;\n\n    .top-site-outer {\n      padding: 0;\n      margin: 24px 0 0;\n      margin-inline-start: $form-spacing;\n      pointer-events: none;\n    }\n\n    .section-title {\n      text-transform: none;\n      font-size: 16px;\n      margin: 0 0 16px;\n    }\n  }\n\n  .fields-and-preview {\n    display: flex;\n  }\n\n  label {\n    font-size: $section-title-font-size;\n  }\n\n  .form-wrapper {\n    width: 100%;\n\n    .field {\n      position: relative;\n\n      .icon-clear-input {\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n    }\n\n    .url {\n      input:dir(ltr) {\n        padding-right: 32px;\n      }\n\n      input:dir(rtl) {\n        padding-left: 32px;\n\n        &:not(:placeholder-shown) {\n          direction: ltr;\n          text-align: right;\n        }\n      }\n    }\n\n    .enable-custom-image-input {\n      display: inline-block;\n      font-size: 13px;\n      margin-top: 4px;\n      cursor: pointer;\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n\n    .custom-image-input-container {\n      margin-top: 4px;\n\n      .loading-container {\n        width: 16px;\n        height: 16px;\n        overflow: hidden;\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n\n      // This animation is derived from Firefox's tab loading animation\n      // See https://searchfox.org/mozilla-central/rev/b29daa46443b30612415c35be0a3c9c13b9dc5f6/browser/themes/shared/tabs.inc.css#208-216\n      .loading-animation {\n        @keyframes tab-throbber-animation {\n          100% { transform: translateX(-960px); }\n        }\n\n        @keyframes tab-throbber-animation-rtl {\n          100% { transform: translateX(960px); }\n        }\n\n        width: 960px;\n        height: 16px;\n        -moz-context-properties: fill;\n        fill: $blue-50;\n        background-image: url('chrome://browser/skin/tabbrowser/loading.svg');\n        animation: tab-throbber-animation 1.05s steps(60) infinite;\n\n        &:dir(rtl) {\n          animation-name: tab-throbber-animation-rtl;\n        }\n      }\n    }\n\n    input {\n      &[type='text'] {\n        background-color: var(--newtab-textbox-background-color);\n        border: $input-border;\n        margin: 8px 0;\n        padding: 0 8px;\n        height: 32px;\n        width: 100%;\n        font-size: 15px;\n\n        &:focus {\n          border: $input-border-active;\n          box-shadow: var(--newtab-textbox-focus-boxshadow);\n        }\n\n        &[disabled] {\n          border: $input-border;\n          box-shadow: none;\n          opacity: 0.4;\n        }\n      }\n    }\n\n    .invalid {\n      input {\n        &[type='text'] {\n          border: $input-error-border;\n          box-shadow: $input-error-boxshadow;\n        }\n      }\n    }\n\n    .error-tooltip {\n      animation: fade-up-tt 450ms;\n      background: $red-60;\n      border-radius: 2px;\n      color: $white;\n      inset-inline-start: 3px;\n      padding: 5px 12px;\n      position: absolute;\n      top: 44px;\n      z-index: 1;\n\n      // tooltip caret\n      &::before {\n        background: $red-60;\n        bottom: -8px;\n        content: '.';\n        height: 16px;\n        inset-inline-start: 12px;\n        position: absolute;\n        text-indent: -999px;\n        top: -7px;\n        transform: rotate(45deg);\n        white-space: nowrap;\n        width: 16px;\n        z-index: -1;\n      }\n    }\n  }\n\n  .actions {\n    justify-content: flex-end;\n\n    button {\n      margin-inline-start: 10px;\n      margin-inline-end: 0;\n    }\n  }\n\n  @media (max-width: $break-point-small) {\n    .fields-and-preview {\n      flex-direction: column;\n\n      .top-site-outer {\n        margin-inline-start: 0;\n      }\n    }\n  }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n  0% {\n    opacity: 0;\n    transform: translateY(15px);\n  }\n\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n",
+		"$top-sites-size: $grid-unit;\n$top-sites-border-radius: 6px;\n$top-sites-title-height: 30px;\n$top-sites-vertical-space: 8px;\n$screenshot-size: cover;\n$rich-icon-size: 96px;\n$default-icon-wrapper-size: 42px;\n$default-icon-size: 32px;\n$default-icon-offset: 6px;\n$half-base-gutter: $base-gutter / 2;\n\n.top-sites {\n  // Take back the margin from the bottom row of vertical spacing as well as the\n  // extra whitespace below the title text as it's vertically centered.\n  margin-bottom: $section-spacing - ($top-sites-vertical-space + $top-sites-title-height / 3);\n}\n\n.top-sites-list {\n  list-style: none;\n  margin: 0 (-$half-base-gutter);\n  padding: 0;\n\n  // Two columns\n  @media (max-width: $break-point-small) {\n    :nth-child(2n+1) {\n      @include context-menu-open-middle;\n    }\n\n    :nth-child(2n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Three columns\n  @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n    :nth-child(3n+2),\n    :nth-child(3n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Four columns\n  @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n    :nth-child(4n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n    :nth-child(4n+3) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Six columns\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n    :nth-child(6n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n    :nth-child(6n+5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Eight columns\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n    :nth-child(8n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n    :nth-child(8n+7) {\n      @include context-menu-open-left;\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n\n  li {\n    margin: 0 0 $top-sites-vertical-space;\n  }\n\n  &:not(.dnd-active) {\n    .top-site-outer:-moz-any(.active, :focus, :hover) {\n      .tile {\n        @include fade-in;\n      }\n\n      @include context-menu-button-hover;\n    }\n  }\n}\n\n// container for drop zone\n.top-site-outer {\n  padding: 0 $half-base-gutter;\n  display: inline-block;\n\n  // container for context menu\n  .top-site-inner {\n    position: relative;\n\n    > a {\n      color: inherit;\n      display: block;\n      outline: none;\n\n      &:-moz-any(.active, :focus) {\n        .tile {\n          @include fade-in;\n        }\n      }\n    }\n  }\n\n  @include context-menu-button;\n\n  .tile { // sass-lint:disable-block property-sort-order\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow, var(--newtab-card-shadow);\n    height: $top-sites-size;\n    position: relative;\n    width: $top-sites-size;\n\n    // For letter fallback\n    align-items: center;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 32px;\n    font-weight: 200;\n    justify-content: center;\n    text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n\n    &::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .screenshot {\n    background-color: $white;\n    background-position: top left;\n    background-size: $screenshot-size;\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow;\n    height: 100%;\n    left: 0;\n    opacity: 0;\n    position: absolute;\n    top: 0;\n    transition: opacity 1s;\n    width: 100%;\n\n    &.active {\n      opacity: 1;\n    }\n  }\n\n  // Some common styles for all icons (rich and default) in top sites\n  .top-site-icon {\n    background-color: var(--newtab-topsites-background-color);\n    background-position: center center;\n    background-repeat: no-repeat;\n    border-radius: $top-sites-border-radius;\n    box-shadow: var(--newtab-topsites-icon-shadow);\n    position: absolute;\n  }\n\n  .rich-icon {\n    background-size: cover;\n    height: 100%;\n    inset-inline-start: 0;\n    top: 0;\n    width: 100%;\n  }\n\n  .default-icon { // sass-lint:disable block property-sort-order\n    background-size: $default-icon-size;\n    bottom: -$default-icon-offset;\n    height: $default-icon-wrapper-size;\n    inset-inline-end: -$default-icon-offset;\n    width: $default-icon-wrapper-size;\n\n    // for corner letter fallback\n    align-items: center;\n    display: flex;\n    font-size: 20px;\n    justify-content: center;\n\n    &[data-fallback]::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .title {\n    color: var(--newtab-topsites-label-color);\n    font: message-box;\n    height: $top-sites-title-height;\n    line-height: $top-sites-title-height;\n    text-align: center;\n    width: $top-sites-size;\n    position: relative;\n\n    .icon {\n      fill: var(--newtab-icon-tertiary-color);\n      inset-inline-start: 0;\n      position: absolute;\n      top: 10px;\n    }\n\n    span {\n      height: $top-sites-title-height;\n      display: block;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    &.pinned {\n      span {\n        padding: 0 13px;\n      }\n    }\n  }\n\n  .edit-button {\n    background-image: url('#{$image-path}glyph-edit-16.svg');\n  }\n\n  &.placeholder {\n    .tile {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .screenshot {\n      display: none;\n    }\n  }\n\n  &.dragged {\n    .tile {\n      background: $grey-20;\n      box-shadow: none;\n\n      *,\n      &::before {\n        display: none;\n      }\n    }\n\n    .title {\n      visibility: hidden;\n    }\n  }\n}\n\n.edit-topsites-wrapper {\n  .modal {\n    box-shadow: $shadow-secondary;\n    left: 0;\n    margin: 0 auto;\n    position: fixed;\n    right: 0;\n    top: 40px;\n    width: $wrapper-default-width;\n\n    @media (min-width: $break-point-small) {\n      width: $wrapper-max-width-small;\n    }\n\n    @media (min-width: $break-point-medium) {\n      width: $wrapper-max-width-medium;\n    }\n\n    @media (min-width: $break-point-large) {\n      width: $wrapper-max-width-large;\n    }\n  }\n}\n\n.topsite-form {\n  $form-width: 300px;\n  $form-spacing: 32px;\n\n  .form-input-container {\n    max-width: $form-width + 3 * $form-spacing + $rich-icon-size;\n    margin: 0 auto;\n    padding: $form-spacing;\n\n    .top-site-outer {\n      padding: 0;\n      margin: 24px 0 0;\n      margin-inline-start: $form-spacing;\n      pointer-events: none;\n    }\n\n    .section-title {\n      font-size: 16px;\n      margin: 0 0 16px;\n    }\n  }\n\n  .fields-and-preview {\n    display: flex;\n  }\n\n  label {\n    font-size: $section-title-font-size;\n  }\n\n  .form-wrapper {\n    width: 100%;\n\n    .field {\n      position: relative;\n\n      .icon-clear-input {\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n    }\n\n    .url {\n      input:dir(ltr) {\n        padding-right: 32px;\n      }\n\n      input:dir(rtl) {\n        padding-left: 32px;\n\n        &:not(:placeholder-shown) {\n          direction: ltr;\n          text-align: right;\n        }\n      }\n    }\n\n    .enable-custom-image-input {\n      display: inline-block;\n      font-size: 13px;\n      margin-top: 4px;\n      cursor: pointer;\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n\n    .custom-image-input-container {\n      margin-top: 4px;\n\n      .loading-container {\n        width: 16px;\n        height: 16px;\n        overflow: hidden;\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n\n      // This animation is derived from Firefox's tab loading animation\n      // See https://searchfox.org/mozilla-central/rev/b29daa46443b30612415c35be0a3c9c13b9dc5f6/browser/themes/shared/tabs.inc.css#208-216\n      .loading-animation {\n        @keyframes tab-throbber-animation {\n          100% { transform: translateX(-960px); }\n        }\n\n        @keyframes tab-throbber-animation-rtl {\n          100% { transform: translateX(960px); }\n        }\n\n        width: 960px;\n        height: 16px;\n        -moz-context-properties: fill;\n        fill: $blue-50;\n        background-image: url('chrome://browser/skin/tabbrowser/loading.svg');\n        animation: tab-throbber-animation 1.05s steps(60) infinite;\n\n        &:dir(rtl) {\n          animation-name: tab-throbber-animation-rtl;\n        }\n      }\n    }\n\n    input {\n      &[type='text'] {\n        background-color: var(--newtab-textbox-background-color);\n        border: $input-border;\n        margin: 8px 0;\n        padding: 0 8px;\n        height: 32px;\n        width: 100%;\n        font-size: 15px;\n\n        &:focus {\n          border: $input-border-active;\n          box-shadow: var(--newtab-textbox-focus-boxshadow);\n        }\n\n        &[disabled] {\n          border: $input-border;\n          box-shadow: none;\n          opacity: 0.4;\n        }\n      }\n    }\n\n    .invalid {\n      input {\n        &[type='text'] {\n          border: $input-error-border;\n          box-shadow: $input-error-boxshadow;\n        }\n      }\n    }\n\n    .error-tooltip {\n      animation: fade-up-tt 450ms;\n      background: $red-60;\n      border-radius: 2px;\n      color: $white;\n      inset-inline-start: 3px;\n      padding: 5px 12px;\n      position: absolute;\n      top: 44px;\n      z-index: 1;\n\n      // tooltip caret\n      &::before {\n        background: $red-60;\n        bottom: -8px;\n        content: '.';\n        height: 16px;\n        inset-inline-start: 12px;\n        position: absolute;\n        text-indent: -999px;\n        top: -7px;\n        transform: rotate(45deg);\n        white-space: nowrap;\n        width: 16px;\n        z-index: -1;\n      }\n    }\n  }\n\n  .actions {\n    justify-content: flex-end;\n\n    button {\n      margin-inline-start: 10px;\n      margin-inline-end: 0;\n    }\n  }\n\n  @media (max-width: $break-point-small) {\n    .fields-and-preview {\n      flex-direction: column;\n\n      .top-site-outer {\n        margin-inline-start: 0;\n      }\n    }\n  }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n  0% {\n    opacity: 0;\n    transform: translateY(15px);\n  }\n\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n",
 		".sections-list {\n  .section-list {\n    display: grid;\n    grid-gap: $base-gutter;\n    grid-template-columns: repeat(auto-fit, $card-width);\n    margin: 0;\n\n    @media (max-width: $break-point-medium) {\n      @include context-menu-open-left;\n    }\n\n    @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n      :nth-child(2n) {\n        @include context-menu-open-left;\n      }\n    }\n\n    @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n      :nth-child(3n) {\n        @include context-menu-open-left;\n      }\n    }\n\n    @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n      :nth-child(3n) {\n        @include context-menu-open-left;\n      }\n    }\n  }\n\n  .section-empty-state {\n    border: $border-secondary;\n    border-radius: $border-radius;\n    display: flex;\n    height: $card-height;\n    width: 100%;\n\n    .empty-state {\n      margin: auto;\n      max-width: 350px;\n\n      .empty-state-icon {\n        background-position: center;\n        background-repeat: no-repeat;\n        background-size: 50px 50px;\n        -moz-context-properties: fill;\n        display: block;\n        fill: var(--newtab-icon-secondary-color);\n        height: 50px;\n        margin: 0 auto;\n        width: 50px;\n      }\n\n      .empty-state-message {\n        color: var(--newtab-text-primary-color);\n        font-size: 13px;\n        margin-bottom: 0;\n        text-align: center;\n      }\n    }\n\n    @media (min-width: $break-point-widest) {\n      height: $card-height-large;\n    }\n  }\n}\n\n@media (min-width: $break-point-widest) {\n  .sections-list {\n    // Compact cards stay the same size but normal cards get bigger.\n    .normal-cards {\n      .section-list {\n        grid-template-columns: repeat(auto-fit, $card-width-large);\n      }\n    }\n  }\n}\n",
 		".activity-stream {\n  &.welcome {\n    overflow: hidden;\n  }\n\n  &:not(.welcome) {\n    .overlay-wrapper {\n      display: none;\n    }\n  }\n}\n\n.overlay-wrapper {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100vw;\n  height: 100vh;\n  z-index: 21000;\n  transition: opacity 0.4s;\n  opacity: 0;\n  overflow-x: auto;\n\n  &.show {\n    transition: none;\n    opacity: 1;\n\n    .firstrun-sign-in {\n      transition: opacity 1.5s, transform 1.5s;\n      transition-delay: 0.2s;\n      transform: translateY(-50%) scale(1);\n      opacity: 1;\n\n      @media screen and (max-width: 790px) {\n        float: none;\n        margin: auto;\n        top: 190px;\n        margin-bottom: 100px;\n      }\n    }\n\n    .firstrun-firefox-logo {\n      transition: opacity 2.3s;\n      opacity: 1;\n    }\n\n    .firstrun-title,\n    .firstrun-content,\n    .firstrun-link {\n      transition: transform 0.5s, opacity 0.8s;\n      transform: translateY(0);\n      opacity: 1;\n    }\n\n    .firstrun-title {\n      transition-delay: 0.2s;\n    }\n\n    .firstrun-content {\n      transition-delay: 0.4s;\n    }\n\n    .firstrun-link {\n      transition-delay: 0.6s;\n    }\n\n    .fxaccounts-container {\n      transition: none;\n      opacity: 1;\n    }\n  }\n}\n\n.background,\nbody.hide-main { // sass-lint:disable-line no-qualifying-elements\n  width: 100%;\n  height: 100%;\n  display: block;\n  background-image: url('#{$image-path}fox-tail.png'), $about-welcome-gradient;\n  background-position-x: center;\n  background-position-y: -200px, top;\n  background-repeat: no-repeat;\n  background-size: cover;\n  position: fixed;\n}\n\n.firstrun-sign-in {\n  transform: translateY(-50%) scale(0.8);\n  position: relative;\n  top: 50%;\n  width: 358px;\n  opacity: 0;\n  background-color: $white;\n  float: inline-end;\n  color: $grey-90;\n  text-align: center;\n  padding: 10px;\n\n  form {\n    position: relative;\n  }\n\n  .extra-links {\n    font-size: 12px;\n    max-width: 340px;\n    margin: 17px 50px;\n    color: $about-welcome-extra-links;\n    cursor: default;\n\n    a {\n      color: $grey-50;\n      cursor: pointer;\n      text-decoration: underline;\n    }\n\n    a:hover,\n    a:active,\n    a:focus {\n      color: $blue-50;\n    }\n  }\n\n  .email-input {\n    box-shadow: none;\n    margin: auto;\n    width: 244px;\n    display: block;\n    height: 40px;\n    padding-inline-start: 20px;\n    border: 1px solid $grey-50;\n    border-radius: 2px;\n    font-size: 16px;\n    transition: border-color 150ms, box-shadow 150ms;\n\n    &:hover {\n      border-color: $grey-90;\n    }\n\n    &:focus {\n      border-color: $blue-50;\n      box-shadow: 0 0 0 3px $email-input-focus;\n    }\n\n    &.invalid {\n      border-color: $red-60;\n    }\n\n    &.invalid:focus {\n      box-shadow: 0 0 0 3px $email-input-invalid;\n    }\n  }\n\n  .form-header {\n    font-size: 22px;\n    margin: 15px auto;\n  }\n\n  .form-header .sub-header {\n    font-size: 14px;\n    margin-top: 4px;\n    display: block;\n  }\n\n  button {\n    display: block;\n    cursor: pointer;\n    margin: 10px auto 0;\n  }\n\n  .continue-button {\n    font-size: 18px;\n    height: 43px;\n    width: 250px;\n    padding: 8px 0;\n    border: 0;\n    border-radius: 4px;\n    color: $white;\n    background-color: $blue-60;\n    transition: background-color 150ms;\n\n    &:not([disabled]):active,\n    &:not([disabled]):hover {\n      background: $blue-70;\n      border-color: $blue-80;\n    }\n  }\n\n  .skip-button {\n    font-size: 13px;\n    margin-top: 20px;\n    margin-bottom: 20px;\n    background-color: $grey-10;\n    color: $blue-50;\n    border: 1px solid $blue-50;\n    border-radius: 2px;\n    min-height: 24px;\n    padding: 5px 10px;\n    transition: background-color 150ms, color 150ms, border-color 150ms;\n\n    &[disabled] {\n      background-color: $grey-20;\n      border-color: $grey-40;\n      color: $grey-50;\n      cursor: default;\n      opacity: 0.5;\n    }\n\n    &:not([disabled]):hover {\n      background-color: $blue-50;\n      border-color: $blue-60;\n      color: $white;\n    }\n  }\n}\n\n.firstrun-left-divider {\n  position: relative;\n  float: inline-start;\n  clear: both;\n  width: 435px;\n\n  @media screen and (max-width: 825px) {\n    width: 400px;\n  }\n\n  @media screen and (max-width: 790px) {\n    margin: auto;\n    float: none;\n    width: 352px;\n    text-align: center;\n  }\n}\n\n.firstrun-content {\n  line-height: 1.5;\n  margin-bottom: 48px;\n  max-width: 352px;\n  background: url('#{$image-path}sync-devices.svg') bottom center no-repeat;\n  padding-bottom: 210px;\n}\n\na.firstrun-link { // sass-lint:disable-line no-qualifying-elements\n  color: $white;\n  display: block;\n  text-decoration: underline;\n\n  &:hover,\n  &:active,\n  &:focus {\n    color: $white;\n  }\n}\n\n.firstrun-title {\n  background: url('chrome://branding/content/about-logo.png') top left no-repeat;\n  background-size: 90px 90px;\n  margin: 40px 0 10px;\n  padding-top: 110px;\n\n  @media screen and (max-width: 790px) {\n    background: url('chrome://branding/content/about-logo.png') top center no-repeat;\n    background-size: 90px 90px;\n  }\n\n  &:dir(rtl) {\n    background-position: top right;\n  }\n}\n\n.fxaccounts-container {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  top: 0;\n  left: 0;\n  color: $white;\n  height: 515px;\n  margin: auto;\n  width: 819px;\n  z-index: 10;\n  transition: opacity 0.3s;\n  opacity: 0;\n\n  @media screen and (max-width: 825px) {\n    width: 784px;\n  }\n\n  @media screen and (max-width: 790px) {\n    width: auto;\n    height: 100%;\n  }\n}\n\n.firstrun-title,\n.firstrun-content,\n.firstrun-link {\n  opacity: 0;\n  transform: translateY(-5px);\n}\n\n.error {\n  display: none;\n}\n\n.error.active {\n  display: block;\n  padding: 5px 12px;\n  animation: fade-down 450ms;\n  font-size: 12px;\n  font-weight: 500;\n  color: $white;\n  background-color: $red-60;\n  position: absolute;\n  inset-inline-start: 50px;\n  top: -28px;\n  border-radius: 2px;\n\n  &::before {\n    inset-inline-start: 12px;\n    background: $red-60;\n    bottom: -8px;\n    content: '.';\n    height: 16px;\n    position: absolute;\n    text-indent: -999px;\n    transform: rotate(45deg);\n    white-space: nowrap;\n    width: 16px;\n    z-index: -1;\n  }\n}\n\n@keyframes fade-down {\n  0% {\n    opacity: 0;\n    transform: translateY(-15px);\n  }\n\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n",
 		".topic {\n  color: var(--newtab-section-navigation-text-color);\n  font-size: 12px;\n  line-height: 1.6;\n  margin-top: $topic-margin-top;\n\n  @media (min-width: $break-point-large) {\n    line-height: 16px;\n  }\n\n  ul {\n    margin: 0;\n    padding: 0;\n    @media (min-width: $break-point-large) {\n      display: inline;\n      padding-inline-start: 12px;\n    }\n  }\n\n\n  ul li {\n    display: inline-block;\n\n    &::after {\n      content: '•';\n      padding: 8px;\n    }\n\n    &:last-child::after {\n      content: none;\n    }\n  }\n\n  .topic-link {\n    color: var(--newtab-link-secondary-color);\n    font-weight: bold;\n  }\n\n  .topic-read-more {\n    color: var(--newtab-link-secondary-color);\n    font-weight: bold;\n\n    @media (min-width: $break-point-large) {\n      // This is floating to accomodate a very large number of topics and/or\n      // very long topic names due to l10n.\n      float: right;\n\n      &:dir(rtl) {\n        float: left;\n      }\n    }\n\n    &::after {\n      background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n      content: '';\n      -moz-context-properties: fill;\n      display: inline-block;\n      fill: var(--newtab-link-secondary-color);\n      height: 16px;\n      margin-inline-start: 5px;\n      vertical-align: top;\n      width: 12px;\n    }\n\n    &:dir(rtl)::after  {\n      transform: scaleX(-1);\n    }\n  }\n\n  // This is a clearfix to for the topics-read-more link which is floating and causes\n  // some jank when we set overflow:hidden for the animation.\n  &::after {\n    clear: both;\n    content: '';\n    display: table;\n  }\n}\n",
 		".search-wrapper {\n  $search-height: 35px;\n  $search-icon-size: 18px;\n  $search-icon-padding: 8px;\n  $search-icon-width: 2 * $search-icon-padding + $search-icon-size;\n  $search-input-left-label-width: 35px;\n  $search-button-width: 36px;\n  $glyph-forward: url('chrome://browser/skin/forward.svg');\n\n  cursor: default;\n  display: flex;\n  height: $search-height;\n  margin-bottom: $section-spacing;\n  position: relative;\n  width: 100%;\n\n  input {\n    background: var(--newtab-textbox-background-color) var(--newtab-search-icon) $search-icon-padding center / $search-icon-size no-repeat;\n    border: solid 1px var(--newtab-search-border-color);\n    box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n    font-size: 15px;\n    -moz-context-properties: fill;\n    fill: var(--newtab-search-icon-color);\n    padding: 0;\n    padding-inline-end: $search-button-width;\n    padding-inline-start: $search-icon-width;\n    width: 100%;\n\n    &:dir(rtl) {\n      background-position-x: right $search-icon-padding;\n    }\n  }\n\n  &:hover input {\n    box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n  }\n\n  &:active input,\n  input:focus {\n    border: $input-border-active;\n    box-shadow: var(--newtab-textbox-focus-boxshadow);\n  }\n\n  .search-button {\n    background: $glyph-forward no-repeat center center;\n    background-size: 16px 16px;\n    border: 0;\n    border-radius: 0 $border-radius $border-radius 0;\n    -moz-context-properties: fill;\n    fill: var(--newtab-search-icon-color);\n    height: 100%;\n    inset-inline-end: 0;\n    position: absolute;\n    width: $search-button-width;\n\n    &:focus,\n    &:hover {\n      background-color: $grey-90-10;\n      cursor: pointer;\n    }\n\n    &:active {\n      background-color: $grey-90-20;\n    }\n\n    &:dir(rtl) {\n      transform: scaleX(-1);\n    }\n  }\n}\n\n@at-root {\n  // Adjust the style of the contentSearchUI-generated table\n  .contentSearchSuggestionTable {\n    background-color: var(--newtab-search-dropdown-color);\n    border: 0;\n    box-shadow: $context-menu-shadow;\n    transform: translateY($textbox-shadow-size);\n\n    .contentSearchHeader {\n      background-color: var(--newtab-search-dropdown-header-color);\n      color: var(--newtab-text-secondary-color);\n    }\n\n    .contentSearchHeader,\n    .contentSearchSettingsButton {\n      border-color: var(--newtab-border-secondary-color);\n    }\n\n    .contentSearchSuggestionsList {\n      border: 0;\n    }\n\n    .contentSearchOneOffsTable {\n      background-color: var(--newtab-search-dropdown-header-color);\n      border-top: solid 1px var(--newtab-border-secondary-color);\n    }\n\n    .contentSearchSearchWithHeaderSearchText {\n      color: var(--newtab-text-primary-color);\n    }\n\n    .contentSearchSuggestionsContainer {\n      background-color: var(--newtab-search-dropdown-color);\n    }\n\n    .contentSearchSuggestionRow {\n      &.selected {\n        background: var(--newtab-element-hover-color);\n        color: var(--newtab-text-primary-color);\n\n        &:active {\n          background: var(--newtab-element-active-color);\n        }\n\n        .historyIcon {\n          fill: var(--newtab-icon-secondary-color);\n        }\n      }\n    }\n\n    .contentSearchOneOffsTable {\n      .contentSearchSuggestionsContainer {\n        background-color: var(--newtab-search-dropdown-header-color);\n      }\n    }\n\n    .contentSearchOneOffItem {\n      // Make the border slightly shorter by offsetting from the top and bottom\n      $border-offset: 18%;\n\n      background-image: none;\n      border-image: linear-gradient(transparent $border-offset, var(--newtab-border-secondary-color) $border-offset, var(--newtab-border-secondary-color) 100% - $border-offset, transparent 100% - $border-offset) 1;\n      border-inline-end: 1px solid;\n      position: relative;\n\n      &.selected {\n        background: var(--newtab-element-hover-color);\n      }\n\n      &:active {\n        background: var(--newtab-element-active-color);\n      }\n    }\n\n    .contentSearchSettingsButton {\n      &:hover {\n        background: var(--newtab-element-hover-color);\n        color: var(--newtab-text-primary-color);\n      }\n    }\n  }\n}\n",
 		".context-menu {\n  background: var(--newtab-contextmenu-background-color);\n  border-radius: $context-menu-border-radius;\n  box-shadow: $context-menu-shadow;\n  display: block;\n  font-size: $context-menu-font-size;\n  margin-inline-start: 5px;\n  inset-inline-start: 100%;\n  position: absolute;\n  top: ($context-menu-button-size / 4);\n  z-index: 10000;\n\n  > ul {\n    list-style: none;\n    margin: 0;\n    padding: $context-menu-outer-padding 0;\n\n    > li {\n      margin: 0;\n      width: 100%;\n\n      &.separator {\n        border-bottom: $border-secondary;\n        margin: $context-menu-outer-padding 0;\n      }\n\n      > a {\n        align-items: center;\n        color: inherit;\n        cursor: pointer;\n        display: flex;\n        line-height: 16px;\n        outline: none;\n        padding: $context-menu-item-padding;\n        white-space: nowrap;\n\n        &:-moz-any(:focus, :hover) {\n          background: var(--newtab-element-hover-color);\n        }\n\n        &:active {\n          background: var(--newtab-element-active-color);\n        }\n\n        &.disabled {\n          opacity: 0.4;\n          pointer-events: none;\n        }\n      }\n    }\n  }\n}\n",
 		".confirmation-dialog {\n  .modal {\n    box-shadow: 0 2px 2px 0 $black-10;\n    left: 50%;\n    margin-left: -200px;\n    position: fixed;\n    top: 20%;\n    width: 400px;\n  }\n\n  section {\n    margin: 0;\n  }\n\n  .modal-message {\n    display: flex;\n    padding: 16px;\n    padding-bottom: 0;\n\n    p {\n      margin: 0;\n      margin-bottom: 16px;\n    }\n  }\n\n  .actions {\n    border: 0;\n    display: flex;\n    flex-wrap: nowrap;\n    padding: 0 16px;\n\n    button {\n      margin-inline-end: 16px;\n      padding-inline-end: 18px;\n      padding-inline-start: 18px;\n      white-space: normal;\n      width: 50%;\n\n      &.done {\n        margin-inline-end: 0;\n        margin-inline-start: 0;\n      }\n    }\n  }\n\n  .icon {\n    margin-inline-end: 16px;\n  }\n}\n\n.modal-overlay {\n  background: var(--newtab-overlay-color);\n  height: 100%;\n  left: 0;\n  position: fixed;\n  top: 0;\n  width: 100%;\n  z-index: 11001;\n}\n\n.modal {\n  background: var(--newtab-modal-color);\n  border: $border-secondary;\n  border-radius: 5px;\n  font-size: 15px;\n  z-index: 11002;\n}\n",
-		".card-outer {\n  @include context-menu-button;\n  background: var(--newtab-card-background-color);\n  border-radius: $border-radius;\n  display: inline-block;\n  height: $card-height;\n  margin-inline-end: $base-gutter;\n  position: relative;\n  width: 100%;\n\n  &.placeholder {\n    background: transparent;\n\n    .card {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .card-preview-image-outer,\n    .card-context {\n      display: none;\n    }\n  }\n\n  .card {\n    border-radius: $border-radius;\n    box-shadow: var(--newtab-card-shadow);\n    height: 100%;\n  }\n\n  > a {\n    color: inherit;\n    display: block;\n    height: 100%;\n    outline: none;\n    position: absolute;\n    width: 100%;\n\n    &:-moz-any(.active, :focus) {\n      .card {\n        @include fade-in-card;\n      }\n\n      .card-title {\n        color: var(--newtab-link-primary-color);\n      }\n    }\n  }\n\n  &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n    @include fade-in-card;\n    @include context-menu-button-hover;\n    outline: none;\n\n    .card-title {\n      color: var(--newtab-link-primary-color);\n    }\n\n    .alternate ~ .card-host-name {\n      display: none;\n    }\n\n    .card-host-name.alternate {\n      display: block;\n    }\n  }\n\n  .card-preview-image-outer {\n    background-color: $grey-30;\n    border-radius: $border-radius $border-radius 0 0;\n    height: $card-preview-image-height;\n    overflow: hidden;\n    position: relative;\n\n    [lwt-newtab-brighttext] & {\n      background-color: $grey-60;\n    }\n\n    &::after {\n      border-bottom: 1px solid var(--newtab-card-hairline-color);\n      bottom: 0;\n      content: '';\n      position: absolute;\n      width: 100%;\n    }\n\n    .card-preview-image {\n      background-position: center;\n      background-repeat: no-repeat;\n      background-size: cover;\n      height: 100%;\n      opacity: 0;\n      transition: opacity 1s $photon-easing;\n      width: 100%;\n\n      &.loaded {\n        opacity: 1;\n      }\n    }\n  }\n\n  .card-details {\n    padding: 15px 16px 12px;\n  }\n\n  .card-text {\n    max-height: 4 * $card-text-line-height + $card-title-margin;\n    overflow: hidden;\n\n    &.no-host-name,\n    &.no-context {\n      max-height: 5 * $card-text-line-height + $card-title-margin;\n    }\n\n    &.no-host-name.no-context {\n      max-height: 6 * $card-text-line-height + $card-title-margin;\n    }\n\n    &:not(.no-description) .card-title {\n      max-height: 3 * $card-text-line-height;\n      overflow: hidden;\n    }\n  }\n\n  .card-host-name {\n    color: var(--newtab-text-secondary-color);\n    font-size: 10px;\n    overflow: hidden;\n    padding-bottom: 4px;\n    text-overflow: ellipsis;\n    text-transform: uppercase;\n    white-space: nowrap;\n  }\n\n  .card-host-name.alternate { display: none; }\n\n  .card-title {\n    font-size: 14px;\n    font-weight: 600;\n    line-height: $card-text-line-height;\n    margin: 0 0 $card-title-margin;\n    word-wrap: break-word;\n  }\n\n  .card-description {\n    font-size: 12px;\n    line-height: $card-text-line-height;\n    margin: 0;\n    overflow: hidden;\n    word-wrap: break-word;\n  }\n\n  .card-context {\n    bottom: 0;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 11px;\n    inset-inline-start: 0;\n    padding: 9px 16px 9px 14px;\n    position: absolute;\n  }\n\n  .card-context-icon {\n    fill: var(--newtab-text-secondary-color);\n    height: 22px;\n    margin-inline-end: 6px;\n  }\n\n  .card-context-label {\n    flex-grow: 1;\n    line-height: 22px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n\n.normal-cards {\n  .card-outer {\n    // Wide layout styles\n    @media (min-width: $break-point-widest) {\n      $line-height: 23px;\n      height: $card-height-large;\n\n      .card-preview-image-outer {\n        height: $card-preview-image-height-large;\n      }\n\n      .card-details {\n        padding: 13px 16px 12px;\n      }\n\n      .card-text {\n        max-height: 6 * $line-height + $card-title-margin;\n      }\n\n      .card-host-name {\n        font-size: 12px;\n        padding-bottom: 5px;\n      }\n\n      .card-title {\n        font-size: 17px;\n        line-height: $line-height;\n        margin-bottom: 0;\n      }\n\n      .card-text:not(.no-description) {\n        .card-title {\n          max-height: 3 * $line-height;\n        }\n      }\n\n      .card-description {\n        font-size: 15px;\n        line-height: $line-height;\n      }\n\n      .card-context {\n        bottom: 4px;\n        font-size: 14px;\n      }\n    }\n  }\n}\n\n.compact-cards {\n  $card-detail-vertical-spacing: 12px;\n  $card-title-font-size: 12px;\n\n  .card-outer {\n    height: $card-height-compact;\n\n    .card-preview-image-outer {\n      height: $card-preview-image-height-compact;\n    }\n\n    .card-details {\n      padding: $card-detail-vertical-spacing 16px;\n    }\n\n    .card-host-name {\n      line-height: 10px;\n    }\n\n    .card-text {\n      .card-title,\n      &:not(.no-description) .card-title {\n        font-size: $card-title-font-size;\n        line-height: $card-title-font-size + 1;\n        max-height: $card-title-font-size + 5;\n        overflow: hidden;\n        padding: 0 0 4px;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n      }\n    }\n\n    .card-description {\n      display: none;\n    }\n\n    .card-context {\n      $icon-size: 16px;\n      $container-size: 32px;\n      background-color: var(--newtab-card-background-color);\n      border-radius: $container-size / 2;\n      clip-path: inset(-1px -1px $container-size - ($card-height-compact - $card-preview-image-height-compact - 2 * $card-detail-vertical-spacing));\n      height: $container-size;\n      width: $container-size;\n      padding: ($container-size - $icon-size) / 2;\n      top: $card-preview-image-height-compact - $icon-size;\n      inset-inline-end: 12px;\n      inset-inline-start: auto;\n\n      &::after {\n        border: 1px solid var(--newtab-card-hairline-color);\n        border-bottom: 0;\n        border-radius: ($container-size / 2) + 1 ($container-size / 2) + 1 0 0;\n        content: '';\n        position: absolute;\n        height: ($container-size + 2) / 2;\n        width: $container-size + 2;\n        top: -1px;\n        left: -1px;\n      }\n\n      .card-context-icon {\n        margin-inline-end: 0;\n        height: $icon-size;\n        width: $icon-size;\n\n        &.icon-bookmark-added {\n          fill: $bookmark-icon-fill;\n        }\n\n        &.icon-download {\n          fill: $download-icon-fill;\n        }\n\n        &.icon-pocket {\n          fill: $pocket-icon-fill;\n        }\n      }\n\n      .card-context-label {\n        display: none;\n      }\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n}\n",
+		".card-outer {\n  @include context-menu-button;\n  background: var(--newtab-card-background-color);\n  border-radius: $border-radius;\n  display: inline-block;\n  height: $card-height;\n  margin-inline-end: $base-gutter;\n  position: relative;\n  width: 100%;\n\n  &.placeholder {\n    background: transparent;\n\n    .card {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .card-preview-image-outer,\n    .card-context {\n      display: none;\n    }\n  }\n\n  .card {\n    border-radius: $border-radius;\n    box-shadow: var(--newtab-card-shadow);\n    height: 100%;\n  }\n\n  > a {\n    color: inherit;\n    display: block;\n    height: 100%;\n    outline: none;\n    position: absolute;\n    width: 100%;\n\n    &:-moz-any(.active, :focus) {\n      .card {\n        @include fade-in-card;\n      }\n\n      .card-title {\n        color: var(--newtab-link-primary-color);\n      }\n    }\n  }\n\n  &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n    @include fade-in-card;\n    @include context-menu-button-hover;\n    outline: none;\n\n    .card-title {\n      color: var(--newtab-link-primary-color);\n    }\n\n    .alternate ~ .card-host-name {\n      display: none;\n    }\n\n    .card-host-name.alternate {\n      display: block;\n    }\n  }\n\n  .card-preview-image-outer {\n    background-color: $grey-30;\n    border-radius: $border-radius $border-radius 0 0;\n    height: $card-preview-image-height;\n    overflow: hidden;\n    position: relative;\n\n    [lwt-newtab-brighttext] & {\n      background-color: $grey-60;\n    }\n\n    &::after {\n      border-bottom: 1px solid var(--newtab-card-hairline-color);\n      bottom: 0;\n      content: '';\n      position: absolute;\n      width: 100%;\n    }\n\n    .card-preview-image {\n      background-position: center;\n      background-repeat: no-repeat;\n      background-size: cover;\n      height: 100%;\n      opacity: 0;\n      transition: opacity 1s $photon-easing;\n      width: 100%;\n\n      &.loaded {\n        opacity: 1;\n      }\n    }\n  }\n\n  .card-details {\n    padding: 15px 16px 12px;\n  }\n\n  .card-text {\n    max-height: 4 * $card-text-line-height + $card-title-margin;\n    overflow: hidden;\n\n    &.no-host-name,\n    &.no-context {\n      max-height: 5 * $card-text-line-height + $card-title-margin;\n    }\n\n    &.no-host-name.no-context {\n      max-height: 6 * $card-text-line-height + $card-title-margin;\n    }\n\n    &:not(.no-description) .card-title {\n      max-height: 3 * $card-text-line-height;\n      overflow: hidden;\n    }\n  }\n\n  .card-host-name {\n    color: var(--newtab-text-secondary-color);\n    font-size: 10px;\n    overflow: hidden;\n    padding-bottom: 4px;\n    text-overflow: ellipsis;\n    text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n    white-space: nowrap;\n  }\n\n  .card-host-name.alternate { display: none; }\n\n  .card-title {\n    font-size: 14px;\n    font-weight: 600;\n    line-height: $card-text-line-height;\n    margin: 0 0 $card-title-margin;\n    word-wrap: break-word;\n  }\n\n  .card-description {\n    font-size: 12px;\n    line-height: $card-text-line-height;\n    margin: 0;\n    overflow: hidden;\n    word-wrap: break-word;\n  }\n\n  .card-context {\n    bottom: 0;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 11px;\n    inset-inline-start: 0;\n    padding: 9px 16px 9px 14px;\n    position: absolute;\n  }\n\n  .card-context-icon {\n    fill: var(--newtab-text-secondary-color);\n    height: 22px;\n    margin-inline-end: 6px;\n  }\n\n  .card-context-label {\n    flex-grow: 1;\n    line-height: 22px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n\n.normal-cards {\n  .card-outer {\n    // Wide layout styles\n    @media (min-width: $break-point-widest) {\n      $line-height: 23px;\n      height: $card-height-large;\n\n      .card-preview-image-outer {\n        height: $card-preview-image-height-large;\n      }\n\n      .card-details {\n        padding: 13px 16px 12px;\n      }\n\n      .card-text {\n        max-height: 6 * $line-height + $card-title-margin;\n      }\n\n      .card-host-name {\n        font-size: 12px;\n        padding-bottom: 5px;\n      }\n\n      .card-title {\n        font-size: 17px;\n        line-height: $line-height;\n        margin-bottom: 0;\n      }\n\n      .card-text:not(.no-description) {\n        .card-title {\n          max-height: 3 * $line-height;\n        }\n      }\n\n      .card-description {\n        font-size: 15px;\n        line-height: $line-height;\n      }\n\n      .card-context {\n        bottom: 4px;\n        font-size: 14px;\n      }\n    }\n  }\n}\n\n.compact-cards {\n  $card-detail-vertical-spacing: 12px;\n  $card-title-font-size: 12px;\n\n  .card-outer {\n    height: $card-height-compact;\n\n    .card-preview-image-outer {\n      height: $card-preview-image-height-compact;\n    }\n\n    .card-details {\n      padding: $card-detail-vertical-spacing 16px;\n    }\n\n    .card-host-name {\n      line-height: 10px;\n    }\n\n    .card-text {\n      .card-title,\n      &:not(.no-description) .card-title {\n        font-size: $card-title-font-size;\n        line-height: $card-title-font-size + 1;\n        max-height: $card-title-font-size + 5;\n        overflow: hidden;\n        padding: 0 0 4px;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n      }\n    }\n\n    .card-description {\n      display: none;\n    }\n\n    .card-context {\n      $icon-size: 16px;\n      $container-size: 32px;\n      background-color: var(--newtab-card-background-color);\n      border-radius: $container-size / 2;\n      clip-path: inset(-1px -1px $container-size - ($card-height-compact - $card-preview-image-height-compact - 2 * $card-detail-vertical-spacing));\n      height: $container-size;\n      width: $container-size;\n      padding: ($container-size - $icon-size) / 2;\n      top: $card-preview-image-height-compact - $icon-size;\n      inset-inline-end: 12px;\n      inset-inline-start: auto;\n\n      &::after {\n        border: 1px solid var(--newtab-card-hairline-color);\n        border-bottom: 0;\n        border-radius: ($container-size / 2) + 1 ($container-size / 2) + 1 0 0;\n        content: '';\n        position: absolute;\n        height: ($container-size + 2) / 2;\n        width: $container-size + 2;\n        top: -1px;\n        left: -1px;\n      }\n\n      .card-context-icon {\n        margin-inline-end: 0;\n        height: $icon-size;\n        width: $icon-size;\n\n        &.icon-bookmark-added {\n          fill: $bookmark-icon-fill;\n        }\n\n        &.icon-download {\n          fill: $download-icon-fill;\n        }\n\n        &.icon-pocket {\n          fill: $pocket-icon-fill;\n        }\n      }\n\n      .card-context-label {\n        display: none;\n      }\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n}\n",
 		".manual-migration-container {\n  color: var(--newtab-text-conditional-color);\n  font-size: 13px;\n  line-height: 15px;\n  margin-bottom: $section-spacing;\n  text-align: center;\n\n  @media (min-width: $break-point-medium) {\n    display: flex;\n    justify-content: space-between;\n    text-align: left;\n  }\n\n  p {\n    margin: 0;\n    @media (min-width: $break-point-medium) {\n      align-self: center;\n      display: flex;\n      justify-content: space-between;\n    }\n  }\n\n  .icon {\n    display: none;\n    @media (min-width: $break-point-medium) {\n      align-self: center;\n      display: block;\n      fill: var(--newtab-icon-secondary-color);\n      margin-inline-end: 6px;\n    }\n  }\n}\n\n.manual-migration-actions {\n  border: 0;\n  display: block;\n  flex-wrap: nowrap;\n\n  @media (min-width: $break-point-medium) {\n    display: flex;\n    justify-content: space-between;\n    padding: 0;\n  }\n\n  button {\n    align-self: center;\n    height: 26px;\n    margin: 0;\n    margin-inline-start: 20px;\n    padding: 0 12px;\n  }\n}\n",
-		".collapsible-section {\n  padding: $section-vertical-padding $section-horizontal-padding;\n  transition-delay: 100ms;\n  transition-duration: 100ms;\n  transition-property: background-color;\n\n  .section-title {\n    font-size: $section-title-font-size;\n    font-weight: bold;\n    margin: 0;\n    text-transform: uppercase;\n\n    span {\n      color: var(--newtab-section-header-text-color);\n      display: inline-block;\n      fill: var(--newtab-section-header-text-color);\n      vertical-align: middle;\n    }\n\n    .click-target {\n      cursor: pointer;\n      vertical-align: top;\n      white-space: nowrap;\n    }\n\n    .collapsible-arrow {\n      margin-inline-start: 8px;\n      margin-top: -1px;\n    }\n  }\n\n  .section-top-bar {\n    height: 19px;\n    margin-bottom: 13px;\n    position: relative;\n\n    .context-menu-button {\n      background: url('chrome://browser/skin/page-action.svg') no-repeat right center;\n      border: 0;\n      cursor: pointer;\n      fill: var(--newtab-section-header-text-color);\n      height: 100%;\n      inset-inline-end: 0;\n      opacity: 0;\n      position: absolute;\n      top: 0;\n      transition-duration: 200ms;\n      transition-property: opacity;\n      width: $context-menu-button-size;\n\n      &:-moz-any(:active, :focus, :hover) {\n        fill: $grey-90;\n        opacity: 1;\n      }\n    }\n\n    .context-menu {\n      top: 16px;\n    }\n\n    @media (max-width: $break-point-widest + $card-width * 1.5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  &:hover,\n  &.active {\n    .section-top-bar {\n      .context-menu-button {\n        opacity: 1;\n      }\n    }\n  }\n\n  &.active {\n    background: var(--newtab-element-hover-color);\n    border-radius: 4px;\n\n    .section-top-bar {\n      .context-menu-button {\n        fill: var(--newtab-section-active-contextmenu-color);\n      }\n    }\n  }\n\n  .section-disclaimer {\n    $max-button-width: 130px;\n    $min-button-height: 26px;\n\n    color: var(--newtab-text-conditional-color);\n    font-size: 13px;\n    margin-bottom: 26px;\n    position: relative;\n    display: flex;\n\n    .section-disclaimer-text {\n      display: inline-block;\n      width: calc(100% - #{$max-button-width});\n\n      @media (max-width: $break-point-medium) {\n        width: $card-width;\n      }\n    }\n\n    a {\n      color: var(--newtab-link-primary-color);\n      font-weight: bold;\n      padding-left: 3px;\n    }\n\n    button {\n      background: var(--newtab-button-secondary-color);\n      border: 1px solid $grey-40;\n      border-radius: 4px;\n      cursor: pointer;\n      max-width: $max-button-width;\n      min-height: $min-button-height;\n      inset-inline-end: 0;\n      align-self: center;\n\n      &:hover:not(.dismiss) {\n        box-shadow: $shadow-primary;\n        transition: box-shadow 150ms;\n      }\n\n      @media (min-width: $break-point-small) {\n        position: absolute;\n      }\n    }\n  }\n\n  .section-body-fallback {\n    height: $card-height;\n  }\n\n  .section-body {\n    // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n    $horizontal-padding: 7px;\n    margin: 0 (-$horizontal-padding);\n    padding: 0 $horizontal-padding;\n\n    &.animating {\n      overflow: hidden;\n      pointer-events: none;\n    }\n  }\n\n  &.animation-enabled {\n    .section-title {\n      .collapsible-arrow {\n        transition: transform 0.5s $photon-easing;\n      }\n    }\n\n    .section-body {\n      transition: max-height 0.5s $photon-easing;\n    }\n  }\n\n  &.collapsed {\n    .section-body {\n      max-height: 0;\n      overflow: hidden;\n    }\n  }\n}\n",
+		".collapsible-section {\n  padding: $section-vertical-padding $section-horizontal-padding;\n  transition-delay: 100ms;\n  transition-duration: 100ms;\n  transition-property: background-color;\n\n  .section-title {\n    font-size: $section-title-font-size;\n    font-weight: bold;\n    margin: 0;\n\n    span {\n      color: var(--newtab-section-header-text-color);\n      display: inline-block;\n      fill: var(--newtab-section-header-text-color);\n      vertical-align: middle;\n    }\n\n    .click-target {\n      cursor: pointer;\n      vertical-align: top;\n      white-space: nowrap;\n    }\n\n    .collapsible-arrow {\n      margin-inline-start: 8px;\n      margin-top: -1px;\n    }\n  }\n\n  .section-top-bar {\n    height: 19px;\n    margin-bottom: 13px;\n    position: relative;\n\n    .context-menu-button {\n      background: url('chrome://browser/skin/page-action.svg') no-repeat right center;\n      border: 0;\n      cursor: pointer;\n      fill: var(--newtab-section-header-text-color);\n      height: 100%;\n      inset-inline-end: 0;\n      opacity: 0;\n      position: absolute;\n      top: 0;\n      transition-duration: 200ms;\n      transition-property: opacity;\n      width: $context-menu-button-size;\n\n      &:-moz-any(:active, :focus, :hover) {\n        fill: $grey-90;\n        opacity: 1;\n      }\n    }\n\n    .context-menu {\n      top: 16px;\n    }\n\n    @media (max-width: $break-point-widest + $card-width * 1.5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  &:hover,\n  &.active {\n    .section-top-bar {\n      .context-menu-button {\n        opacity: 1;\n      }\n    }\n  }\n\n  &.active {\n    background: var(--newtab-element-hover-color);\n    border-radius: 4px;\n\n    .section-top-bar {\n      .context-menu-button {\n        fill: var(--newtab-section-active-contextmenu-color);\n      }\n    }\n  }\n\n  .section-disclaimer {\n    $max-button-width: 130px;\n    $min-button-height: 26px;\n\n    color: var(--newtab-text-conditional-color);\n    font-size: 13px;\n    margin-bottom: 26px;\n    position: relative;\n    display: flex;\n\n    .section-disclaimer-text {\n      display: inline-block;\n      width: calc(100% - #{$max-button-width});\n\n      @media (max-width: $break-point-medium) {\n        width: $card-width;\n      }\n    }\n\n    a {\n      color: var(--newtab-link-primary-color);\n      font-weight: bold;\n      padding-left: 3px;\n    }\n\n    button {\n      background: var(--newtab-button-secondary-color);\n      border: 1px solid $grey-40;\n      border-radius: 4px;\n      cursor: pointer;\n      max-width: $max-button-width;\n      min-height: $min-button-height;\n      inset-inline-end: 0;\n      align-self: center;\n\n      &:hover:not(.dismiss) {\n        box-shadow: $shadow-primary;\n        transition: box-shadow 150ms;\n      }\n\n      @media (min-width: $break-point-small) {\n        position: absolute;\n      }\n    }\n  }\n\n  .section-body-fallback {\n    height: $card-height;\n  }\n\n  .section-body {\n    // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n    $horizontal-padding: 7px;\n    margin: 0 (-$horizontal-padding);\n    padding: 0 $horizontal-padding;\n\n    &.animating {\n      overflow: hidden;\n      pointer-events: none;\n    }\n  }\n\n  &.animation-enabled {\n    .section-title {\n      .collapsible-arrow {\n        transition: transform 0.5s $photon-easing;\n      }\n    }\n\n    .section-body {\n      transition: max-height 0.5s $photon-easing;\n    }\n  }\n\n  &.collapsed {\n    .section-body {\n      max-height: 0;\n      overflow: hidden;\n    }\n  }\n}\n",
 		"\n.asrouter-admin {\n  $border-color: var(--newtab-border-secondary-color);\n  $monospace: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', 'Droid Sans Mono', 'Source Code Pro', monospace;\n  max-width: 996px;\n  margin: 0 auto;\n  font-size: 14px;\n  // Reset .outer-wrapper styles\n  display: inherit;\n  padding: 0 0 92px;\n\n  h1 {\n    font-weight: 200;\n    font-size: 32px;\n  }\n\n  table {\n    border-collapse: collapse;\n    width: 100%;\n  }\n\n  .message-item {\n    &:first-child td {\n      border-top: 1px solid $border-color;\n    }\n\n    td {\n      vertical-align: top;\n      border-bottom: 1px solid $border-color;\n      padding: 8px;\n\n      &:first-child {\n        border-left: 1px solid $border-color;\n      }\n\n      &:last-child {\n        border-right: 1px solid $border-color;\n      }\n    }\n\n    &.current {\n      .message-id span {\n        background: $yellow-50;\n        padding: 2px 5px;\n\n        [lwt-newtab-brighttext] & {\n          color: $black;\n        }\n      }\n    }\n\n    &.blocked {\n      .message-id,\n      .message-summary {\n        opacity: 0.5;\n      }\n\n      .message-id {\n        opacity: 0.5;\n      }\n    }\n\n    .message-id {\n      font-family: $monospace;\n      font-size: 12px;\n    }\n  }\n\n  pre {\n    background: var(--newtab-textbox-background-color);\n    margin: 0;\n    padding: 8px;\n    font-size: 12px;\n    max-width: 750px;\n    overflow: auto;\n    font-family: $monospace;\n  }\n}\n",
 		".ASRouterButton {\n  white-space: nowrap;\n  border-radius: 4px;\n  border: 1px solid var(--newtab-border-secondary-color);\n  background-color: var(--newtab-button-secondary-color);\n  font-family: inherit;\n  padding: 8px 15px;\n  margin-inline-start: 12px;\n  color: inherit;\n\n  .tall & {\n    margin-inline-start: 20px;\n  }\n}\n",
 		".SnippetBaseContainer {\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  background-color: var(--newtab-snippets-background-color);\n  color: var(--newtab-text-primary-color);\n  font-size: 12px;\n  line-height: 16px;\n  border-top: 1px solid var(--newtab-snippets-hairline-color);\n  box-shadow: $shadow-secondary;\n  display: flex;\n  align-items: center;\n\n  .innerWrapper {\n    margin: 0 auto;\n    display: flex;\n    align-items: center;\n    padding: 12px $section-horizontal-padding;\n\n    // This is to account for the block button on smaller screens\n    padding-inline-end: 36px;\n    @media (min-width: $break-point-large) {\n      padding-inline-end: $section-horizontal-padding;\n    }\n\n    max-width: $wrapper-max-width-large;\n    @media (min-width: $break-point-widest) {\n      max-width: $wrapper-max-width-widest;\n    }\n  }\n\n  .blockButton {\n    display: none;\n    background: none;\n    border: 0;\n    position: absolute;\n    top: 50%;\n    inset-inline-end: 12px;\n    height: 16px;\n    width: 16px;\n    background-image: url('resource://activity-stream/data/content/assets/glyph-dismiss-16.svg');\n    -moz-context-properties: fill;\n    fill: var(--newtab-icon-primary-color);\n    opacity: 0.5;\n    margin-top: -8px;\n    padding: 0;\n    cursor: pointer;\n\n    @media (min-width: 766px) {\n      inset-inline-end: 24px;\n    }\n  }\n\n  &:hover .blockButton {\n    display: block;\n  }\n}\n",
 		".activity-stream {\n  &.modal-open {\n    overflow: hidden;\n  }\n}\n\n.modalOverlayOuter {\n  background: $white;\n  opacity: 0.93;\n  height: 100%;\n  position: fixed;\n  top: 0;\n  width: 100%;\n  display: none;\n  z-index: 1100;\n\n  &.active {\n    display: block;\n  }\n}\n\n.modalOverlayInner {\n  width: 960px;\n  height: 510px;\n  position: fixed;\n  top: calc(50% - 255px); // halfway down minus half the height of the modal\n  left: calc(50% - 480px); // halfway across minus half the width of the modal\n  background: $white;\n  box-shadow: 0 1px 15px 0 $black-30;\n  border-radius: 4px;\n  display: none;\n  z-index: 1101;\n\n\n  // modal takes over entire screen\n  @media(max-width: 960px) {\n    width: 100%;\n    height: 100%;\n    top: 0;\n    left: 0;\n    box-shadow: none;\n    border-radius: 0;\n  }\n\n  // if modal is short enough, add a vertical scroll bar\n  @media(max-width: 850px) and (max-height: 730px) {\n    overflow-y: scroll;\n  }\n\n  // if modal is narrow enough, add a vertical scroll bar\n  @media(max-width: 650px) and (max-height: 600px) {\n    overflow-y: scroll;\n  }\n\n  &.active {\n    display: block;\n  }\n\n  h2 {\n    color: $grey-60;\n    text-align: center;\n    font-weight: 200;\n    margin-top: 30px;\n    font-size: 28px;\n    line-height: 37px;\n    letter-spacing: -0.13px;\n\n    @media(max-width: 960px) {\n      margin-top: 100px;\n    }\n\n    @media(max-width: 850px) {\n      margin-top: 30px;\n    }\n  }\n\n  .footer {\n    border-top: 1px solid $grey-30;\n    height: 70px;\n    width: 100%;\n    position: absolute;\n    bottom: 0;\n    text-align: center;\n    background-color: $white;\n\n    // if modal is short enough, footer becomes sticky\n    @media(max-width: 850px) and (max-height: 730px) {\n      position: sticky;\n    }\n\n    // if modal is narrow enough, footer becomes sticky\n    @media(max-width: 650px) and (max-height: 600px) {\n      position: sticky;\n    }\n\n    .modalButton {\n      margin-top: 20px;\n      width: 150px;\n      height: 30px;\n      padding: 4px 0 6px;\n      font-size: 15px;\n\n      &:focus,\n      &.active {\n        box-shadow: $shadow-primary;\n        transition: box-shadow 150ms;\n      }\n    }\n  }\n}\n",
 		".SimpleSnippet {\n  &.tall {\n    padding: 27px 0;\n  }\n\n  .title {\n    display: inline;\n    font-size: inherit;\n    margin: 0;\n  }\n\n  .titleIcon {\n    background-repeat: no-repeat;\n    background-size: 14px;\n    height: 16px;\n    width: 16px;\n    margin-top: 2px;\n    margin-inline-end: 2px;\n    display: inline-block;\n    vertical-align: top;\n  }\n\n  .body {\n    display: inline;\n    margin: 0;\n  }\n\n  .icon {\n    height: 42px;\n    width: 42px;\n    margin-inline-end: 12px;\n    flex-shrink: 0;\n  }\n\n  &.tall .icon {\n    margin-inline-end: 20px;\n  }\n\n  .ASRouterAnchor {\n    color: inherit;\n    text-decoration: underline;\n  }\n}\n",
 		".onboardingMessageContainer {\n  display: grid;\n  grid-column-gap: 21px;\n  grid-template-columns: auto auto auto;\n  padding-left: 30px;\n  padding-right: 30px;\n\n  // at 850px, the cards go from vertical layout to horizontal layout\n  @media(max-width: 850px) {\n    grid-template-columns: none;\n    grid-template-rows: auto auto auto;\n    padding-left: 110px;\n    padding-right: 110px;\n  }\n}\n\n.onboardingMessage {\n  height: 340px;\n  text-align: center;\n  padding: 13px;\n  font-weight: 200;\n\n  // at 850px, img floats left, content floats right next to it\n  @media(max-width: 850px) {\n    height: 170px;\n    text-align: left;\n    padding: 10px;\n    border-bottom: 1px solid $grey-30;\n    display: flex;\n    margin-bottom: 11px;\n\n    &:last-child {\n      border: 0;\n    }\n\n    .onboardingContent {\n      padding-left: 10px;\n      height: 100%;\n\n      > span > h3 {\n        margin-top: 0;\n        margin-bottom: 4px;\n        font-weight: 400;\n      }\n\n      > span > p {\n        margin-top: 0;\n        line-height: 22px;\n        font-size: 15px;\n      }\n    }\n  }\n\n  @media(max-width: 650px) {\n    height: 250px;\n  }\n\n  .onboardingMessageImage {\n    height: 100px;\n    width: 120px;\n    background-size: 120px;\n    background-position: center center;\n    background-repeat: no-repeat;\n    display: inline-block;\n    vertical-align: middle;\n\n\n    @media(max-width: 850px) {\n      height: 75px;\n      min-width: 80px;\n      background-size: 80px;\n    }\n\n    &.addons {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-addons@2x.png');\n    }\n\n    &.privatebrowsing {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-privatebrowsing@2x.png');\n    }\n\n    &.screenshots {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-screenshots@2x.png');\n    }\n\n    &.gift {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-gift@2x.png');\n    }\n  }\n\n  .onboardingContent {\n    height: 175px;\n\n    > span > h3 {\n      color: $grey-90;\n      margin-bottom: 8px;\n      font-weight: 400;\n    }\n\n    > span > p {\n      color: $grey-60;\n      margin-top: 0;\n      height: 130px;\n      margin-bottom: 12px;\n      font-size: 15px;\n      line-height: 22px;\n\n      @media(max-width: 650px) {\n        margin-bottom: 0;\n      }\n    }\n  }\n\n  .onboardingButton {\n    background-color: $grey-90-10;\n    border: 0;\n    width: 150px;\n    height: 30px;\n    margin-bottom: 23px;\n    padding: 4px 0 6px;\n    font-size: 15px;\n\n    // at 850px, the button shimmies down and to the right\n    @media(max-width: 850px) {\n      float: right;\n      margin-top: -60px;\n      margin-right: -10px;\n    }\n\n    @media(max-width: 650px) {\n      float: none;\n      margin-top: 30px;\n    }\n\n    &:focus,\n    &.active {\n      box-shadow: $shadow-primary;\n      transition: box-shadow 150ms;\n    }\n  }\n\n\n  &::before {\n    content: '';\n    height: 220px;\n    width: 1px;\n    position: absolute;\n    background-color: $grey-30;\n    margin-top: 40px;\n    margin-left: 215px;\n\n    // at 850px, the line goes from vertical to horizontal\n    @media(max-width: 850px) {\n      content: none;\n    }\n  }\n\n  &:last-child::before {\n    content: none;\n  }\n}\n"
 	],
 	"names": [],
-	"mappings": ";AAAA,6BAA6B;CAM7B,AAAA,AAAA,qBAAC,AAAA,EAAuB;EACtB,uBAAuB,EAAE,SAAS,GACnC;;AERD,AAAA,IAAI,CAAC;EACH,UAAU,EAAE,UAAU,GACvB;;AAED,AAAA,CAAC;AACD,AAAA,CAAC,AAAA,QAAQ;AACT,AAAA,CAAC,AAAA,OAAO,CAAC;EACP,UAAU,EAAE,OAAO,GACpB;;AAED,AAAA,CAAC,AAAA,kBAAkB,CAAC;EAClB,MAAM,EAAE,CAAC,GACV;;AAED,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,CAAC,GACV;;AAED,AAAA,MAAM;AACN,AAAA,KAAK,CAAC;EACJ,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,OAAO,GACnB;;CAED,AAAA,AAAA,MAAC,AAAA,EAAQ;EACP,OAAO,EAAE,eAAe,GACzB;;AEPD,AAAA,IAAI,CAAC;EAEH,yBAAyB,EDjBjB,OAAO;ECkBf,6BAA6B,EDfrB,OAAO;ECgBf,+BAA+B,EDjBvB,OAAO;ECkBf,6BAA6B,EDvBrB,OAAO;ECwBf,+BAA+B,EAAE,OAAO;EACxC,6BAA6B,EDpBrB,wBAAO;ECqBf,4BAA4B,EDtBpB,OAAO;ECuBf,2BAA2B,EDhBnB,qBAAO;ECiBf,6BAA6B,EDjBrB,qBAAO;ECkBf,4BAA4B,EDxBpB,OAAO;ECyBf,+BAA+B,EDKzB,kBAAI;ECJV,2BAA2B,ED/BnB,OAAO;ECgCf,6BAA6B,EDpBrB,OAAO;ECqBf,+BAA+B,EDzBvB,OAAO;EC0Bf,2BAA2B,EDvBnB,OAAO;ECwBf,6BAA6B,ED5BrB,OAAO;EC6Bf,iCAAiC,EDQ3B,IAAI;ECPV,uBAAuB,ED1Bf,qBAAO;ECTf,4BAA4B,EDFpB,OAAO;ECGf,gCAAgC,EALxB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CDET,OAAO,ECFW,CAAC,CAAC,CAAC,CAAC,CAAC,CD0HX,GAAG,CAxHf,qBAAO;ECyCf,qCAAqC,EDtC7B,OAAO;ECuCf,iCAAiC,EDE3B,IAAI;ECCV,oBAAoB,EDDd,IAAI;ECEV,sBAAsB,ED1Cd,wBAAO;EC6Cf,kCAAkC,ED1C1B,OAAO;EC2Cf,sCAAsC,ED3C9B,OAAO;EC4Cf,yCAAyC,EDxCjC,OAAO;EC2Cf,4BAA4B,EAAE,WAAW;EACzC,8BAA8B,EDXxB,IAAI;ECYV,qCAAqC,EDrD7B,OAAO;ECsDf,0BAA0B,ED9ClB,qBAAO;ECiDf,kCAAkC,EDhB5B,IAAI;ECiBV,6BAA6B,EAAE,KAAK,CApDnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC;EAqD/D,6BAA6B,EAAE,OAAO;EAGtC,kCAAkC,ED5D1B,OAAO;EC6Df,8BAA8B,EDtBxB,IAAI;ECuBV,4BAA4B,EDhCtB,kBAAI;ECiCV,oBAAoB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDzDzB,qBAAO;EC4Df,kCAAkC,ED3B5B,IAAI;EC4BV,gCAAgC,EAAE,WAAW,GA0D9C;EAhHD,AAwDE,IAxDE,CAwDF,AAAA,qBAAE,AAAA,EAAuB;IAEvB,yBAAyB,EDlEnB,OAAO;ICmEb,6BAA6B,ED1EvB,wBAAO;IC2Eb,+BAA+B,ED3EzB,wBAAO;IC4Eb,6BAA6B,ED/EvB,OAAO;ICgFb,+BAA+B,EDvEzB,OAAO;ICwEb,6BAA6B,ED9EvB,wBAAO;IC+Eb,4BAA4B,ED/EtB,wBAAO;ICgFb,2BAA2B,EDhFrB,wBAAO;ICiFb,6BAA6B,EDjFvB,wBAAO;ICkFb,4BAA4B,EDlFtB,wBAAO;ICmFb,+BAA+B,EDnFzB,wBAAO;ICoFb,2BAA2B,EDzFrB,OAAO;IC0Fb,6BAA6B,ED1CnB,OAAO;IC2CjB,+BAA+B,EDtFzB,OAAO;ICuFb,2BAA2B,EDvFrB,OAAO;ICwFb,6BAA6B,EDxFvB,wBAAO;ICyFb,iCAAiC,EDnF3B,OAAO;ICoFb,uBAAuB,ED1FjB,wBAAO;ICDf,4BAA4B,EDJpB,OAAO;ICKf,gCAAgC,EALxB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CDAT,OAAO,ECAW,CAAC,CAAC,CAAC,CAAC,CAAC,CD0HX,GAAG,CA1Hf,uBAAO;ICmGb,qCAAqC,EDzF/B,OAAO;IC0Fb,iCAAiC,EDxF3B,OAAO;IC2Fb,oBAAoB,ED3Fd,OAAO;IC4Fb,sBAAsB,ED3FhB,qBAAO;IC8Fb,kCAAkC,EDtG5B,wBAAO;ICuGb,sCAAsC,EDvGhC,wBAAO;ICwGb,yCAAyC,ED/DrC,IAAI;ICkER,4BAA4B,ED3GtB,wBAAO;IC4Gb,8BAA8B,EDtGxB,OAAO;ICuGb,qCAAqC,EDxG/B,OAAO;ICyGb,0BAA0B,ED9GpB,wBAAO;ICiHb,kCAAkC,ED3G5B,OAAO;IC4Gb,6BAA6B,EAAE,IAAI;IACnC,6BAA6B,EDnHvB,wBAAO;ICsHb,kCAAkC,EDjH5B,OAAO;ICkHb,8BAA8B,EDjHxB,OAAO;ICkHb,4BAA4B,EDxHtB,wBAAO;ICyHb,oBAAoB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDjH3B,qBAAO;ICoHb,kCAAkC,EDtH5B,OAAO;ICuHb,gCAAgC,EDpF5B,wBAAI,GCqFT;;ACpIH,AAAA,KAAK,CAAC;EACJ,mBAAmB,EAAE,aAAa;EAClC,iBAAiB,EAAE,SAAS;EAC5B,eAAe,EFsEL,IAAI;EErEd,uBAAuB,EAAE,IAAI;EAC7B,OAAO,EAAE,YAAY;EACrB,IAAI,EAAE,gCAAgC;EACtC,MAAM,EFkEI,IAAI;EEjEd,cAAc,EAAE,MAAM;EACtB,KAAK,EFgEK,IAAI,GE0Gf;EAnLD,AAWE,KAXG,AAWH,YAAa,CAAC;IACZ,iBAAiB,EAAE,GAAG,GACvB;EAbH,AAeE,KAfG,AAeH,kBAAmB,CAAC;IAClB,iBAAiB,EAAE,GAAG,GACvB;EAjBH,AAmBE,KAnBG,AAmBH,oBAAqB,CAAC;IACpB,gBAAgB,EAAE,yCAAyC,GAC5D;EArBH,AAuBE,KAvBG,AAuBH,qBAAsB,CAAC;IACrB,gBAAgB,EAAE,gDAAgD,GACnE;EAzBH,AA2BE,KA3BG,AA2BH,iBAAkB,CAAC;IACjB,IAAI,EAAE,kCAAkC;IACxC,gBAAgB,EAAE,iDAAwC,GAC3D;EA9BH,AAgCE,KAhCG,AAgCH,YAAa,CAAC;IACZ,gBAAgB,EAAE,iDAAwC,GAC3D;EAlCH,AAoCE,KApCG,AAoCH,YAAa,CAAC;IACZ,gBAAgB,EAAE,6CAA6C,GAChE;EAtCH,AAwCE,KAxCG,AAwCH,kBAAmB,CAAC;IAClB,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,uDAA8C;IAChE,eAAe,EFgCA,IAAI;IE/BnB,MAAM,EF+BS,IAAI;IE9BnB,KAAK,EF8BU,IAAI,GE7BpB;EA9CH,AAgDE,KAhDG,AAgDH,aAAc,CAAC;IACb,gBAAgB,EAAE,kDAAyC,GAC5D;EAlDH,AAoDE,KApDG,AAoDH,UAAW,CAAC;IACV,gBAAgB,EAAE,+CAAsC,GACzD;EAtDH,AAwDE,KAxDG,AAwDH,YAAa,CAAC;IACZ,gBAAgB,EAAE,iDAAwC,GAC3D;EA1DH,AA4DE,KA5DG,AA4DH,gBAAiB,CAAC;IAEhB,gBAAgB,EAAE,oDAA2C,GAC9D;IA/DH,AF6LE,KE7LG,AA4DH,gBAAiB,AFiIpB,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;EE/LH,AAiEE,KAjEG,AAiEH,wBAAyB,CAAC;IACxB,gBAAgB,EAAE,gDAAgD,GACnE;EAnEH,AAqEE,KArEG,AAqEH,cAAe,CAAC;IACd,gBAAgB,EAAE,yCAAyC,GAC5D;EAvEH,AAyEE,KAzEG,AAyEH,SAAU,CAAC;IAET,gBAAgB,EAAE,8CAAqC,GACxD;IA5EH,AF6LE,KE7LG,AAyEH,SAAU,AFoHb,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;EE/LH,AA8EE,KA9EG,AA8EH,WAAY,CAAC;IAEX,gBAAgB,EAAE,gDAAuC,GAC1D;IAjFH,AF6LE,KE7LG,AA8EH,WAAY,AF+Gf,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;EE/LH,AAmFE,KAnFG,AAmFH,UAAW,CAAC;IACV,gBAAgB,EAAE,+CAAsC,GACzD;EArFH,AAuFE,KAvFG,AAuFH,YAAa,CAAC;IACZ,gBAAgB,EAAE,iDAAwC,GAC3D;EAzFH,AA2FE,KA3FG,AA2FH,kBAAmB,CAAC;IAClB,gBAAgB,EAAE,wCAAwC,GAC3D;EA7FH,AA+FE,KA/FG,AA+FH,cAAe,CAAC;IACd,gBAAgB,EAAE,mDAA0C;IAC5D,SAAS,EAAE,eAAe,GAC3B;EAlGH,AAoGE,KApGG,AAoGH,SAAU,CAAC;IACT,gBAAgB,EAAE,wCAAwC,GAC3D;EAtGH,AAwGE,KAxGG,AAwGH,cAAe,CAAC;IACd,gBAAgB,EAAE,mDAA0C,GAC7D;EA1GH,AA4GE,KA5GG,AA4GH,eAAgB,CAAC;IAEf,gBAAgB,EAAE,8CAAqC;IACvD,eAAe,EFrCC,IAAI;IEsCpB,MAAM,EFtCU,IAAI;IEuCpB,KAAK,EFvCW,IAAI,GEwCrB;IAlHH,AF6LE,KE7LG,AA4GH,eAAgB,AFiFnB,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;EE/LH,AAoHE,KApHG,AAoHH,WAAY,CAAC;IACX,gBAAgB,EAAE,sCAAsC,GACzD;EAtHH,AAwHE,KAxHG,AAwHH,cAAe,CAAC;IACd,gBAAgB,EAAE,wEAAwE,GAC3F;EA1HH,AA4HE,KA5HG,AA4HH,UAAW,CAAC;IACV,gBAAgB,EAAE,0CAA0C,GAC7D;EA9HH,AAgIE,KAhIG,AAgIH,eAAgB,CAAC;IACf,gBAAgB,EAAE,oDAA2C,GAC9D;EAlIH,AAoIE,KApIG,AAoIH,kBAAmB,CAAC;IAClB,gBAAgB,EAAE,uDAA8C,GACjE;EAtIH,AAwIE,KAxIG,AAwIH,gBAAiB,CAAC;IAChB,gBAAgB,EAAE,qDAA4C,GAC/D;EA1IH,AA4IE,KA5IG,AA4IH,oBAAqB,CAAC;IACpB,gBAAgB,EAAE,yDAAgD,GACnE;EA9IH,AAgJE,KAhJG,AAgJH,0BAA2B,CAAC;IAC1B,gBAAgB,EAAE,yDAAgD;IAClE,eAAe,EFxEC,IAAI;IEyEpB,MAAM,EFzEU,IAAI;IE0EpB,KAAK,EF1EW,IAAI,GE2ErB;EArJH,AAuJE,KAvJG,AAuJH,6BAA8B,CAAC;IAC7B,gBAAgB,EAAE,yDAAgD;IAClE,eAAe,EF/EC,IAAI;IEgFpB,MAAM,EFhFU,IAAI;IEiFpB,SAAS,EAAE,cAAc;IACzB,KAAK,EFlFW,IAAI,GEuFrB;IAjKH,AA8JI,KA9JC,AAuJH,6BAA8B,AAO5B,IAAM,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,aAAa,GACzB;EAhKL,AAmKE,KAnKG,AAmKH,kBAAmB,CAAC;IAClB,gBAAgB,EAAE,yDAAgD;IAClE,SAAS,EAAE,cAAc,GAC1B;EAtKH,AAwKE,KAxKG,AAwKH,SAAU,CAAC;IACT,gBAAgB,EAAE,8CAAqC,GACxD;EA1KH,AA4KE,KA5KG,AA4KH,cAAe,CAAC;IACd,gBAAgB,EAAE,mDAA0C,GAC7D;EA9KH,AAgLE,KAhLG,AAgLH,cAAe,CAAC;IACd,gBAAgB,EAAE,mDAA0C,GAC7D;;AJ7KH,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,IAAI,GACb;;AAED,AAAA,IAAI;AACJ,AAAA,KAAK,CAAC;EACJ,UAAU,EAAE,KAAK,GAClB;;AAED,AAAA,IAAI,CAAC;EACH,gBAAgB,EAAE,8BAA8B;EAChD,WAAW,EAAE,qFAAqF;EAClG,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM,GAUnB;EAdD,AAMsB,IANlB,AAMF,gBAAiB,GAAG,0BAA0B;EANhD,AAOgB,IAPZ,AAOF,UAAW,GAAG,0BAA0B,CAAC;IACvC,OAAO,EAAE,eAAe,GACzB;EATH,AAWgB,IAXZ,AAWF,UAAW,GAAG,4BAA4B,CAAC;IACzC,OAAO,EAAE,IAAI,GACd;;AAGH,AAAA,EAAE;AACF,AAAA,EAAE,CAAC;EACD,WAAW,EAAE,MAAM,GACpB;;AAED,AAAA,CAAC,CAAC;EACA,eAAe,EAAE,IAAI,GACtB;;AAGD,AAAA,QAAQ,CAAC;EACP,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,gBAAgB;EACtB,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,MAAM;EAChB,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,GAAG,GACX;;AAED,AAAA,aAAa,CAAC;EACZ,MAAM,EGzCW,GAAG,CAAC,KAAK,CAAC,oCAAoC;EH0C/D,aAAa,EEWC,GAAG;EFVjB,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,CAAC;EACP,cAAc,EAAE,IAAI;EACpB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG,GACb;;AAED,UAAU,CAAV,MAAU;EACR,AAAA,IAAI;IACF,OAAO,EAAE,CAAC;EAGZ,AAAA,EAAE;IACA,OAAO,EAAE,CAAC;;AAId,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,oBAAoB,GAMjC;EARD,AAIE,aAJW,AAIX,GAAI,CAAC;IACH,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,CAAC,GACX;;AAGH,AAAA,QAAQ,CAAC;EACP,UAAU,EGzEO,GAAG,CAAC,KAAK,CAAC,oCAAoC;EH0E/D,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,GAAG;EACnB,SAAS,EAAE,IAAI;EACf,eAAe,EAAE,UAAU;EAC3B,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,WAAW,GACrB;;AAGD,AAAA,OAAO;AACP,AAAS,QAAD,CAAC,MAAM,CAAC;EACd,gBAAgB,EAAE,oCAAoC;EACtD,MAAM,EGvFS,GAAG,CAAC,KAAK,CAAC,kCAAkC;EHwF3D,aAAa,EAAE,GAAG;EAClB,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,OAAO;EACf,aAAa,EAAE,IAAI;EACnB,OAAO,EAAE,SAAS;EAClB,WAAW,EAAE,MAAM,GAsBpB;EA/BD,AAWE,OAXK,AAWN,MAAQ,AAAA,IAAK,CAAA,AAAA,QAAQ;EAVtB,AAAS,QAAD,CAAC,MAAM,AAUd,MAAQ,AAAA,IAAK,CAAA,AAAA,QAAQ,EAAE;IACpB,UAAU,EGzFG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;IH0F9D,UAAU,EAAE,gBAAgB,GAC7B;EAdH,AAgBE,OAhBK,AAgBN,QAAU;EAfX,AAAS,QAAD,CAAC,MAAM,AAed,QAAU,CAAC;IACR,gBAAgB,EAAE,WAAW;IAC7B,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,SAAS,GAC3B;EArBH,AAwBE,OAxBK,AAwBN,QAAU,EAxBX,AAyBE,OAzBK,AAyBN,KAAO;EAxBR,AAAS,QAAD,CAAC,MAAM,AAuBd,QAAU;EAvBX,AAAS,QAAD,CAAC,MAAM,AAwBd,KAAO,CAAC;IACL,gBAAgB,EAAE,kCAAkC;IACpD,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,kCAAkC;IACpD,KAAK,EE3ED,IAAI;IF4ER,mBAAmB,EAAE,IAAI,GAC1B;;AAGH,AACE,KADG,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,GADJ,AAEE,KAFG,CAEH,AAAA,IAAE,CAAK,QAAQ,AAAb,EAAe;EACf,aAAa,EElED,GAAG,GFmEhB;;AAIH,AAAA,mBAAmB,CAAC;EAClB,OAAO,EAAE,CAAC,GACX;;AKzID,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,gCAAgC;EACvC,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,CAAC;EACZ,UAAU,EAAE,KAAK;EACjB,OAAO,EAAE,IAA8C,CH8D3C,IAAI,CAAJ,IAAI,GGrDjB;EAdD,AAOE,cAPY,AAOZ,aAAc,CAAC;IACb,OAAO,EAAE,KAAK,GACf;EATH,AAWE,cAXY,CAWZ,CAAC,CAAC;IACA,KAAK,EAAE,gCAAgC,GACxC;;AAGH,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,IAAI;EAGZ,cAAc,EAAE,IAA4D;EAC5E,KAAK,EHwDiB,KAAmE,GG7B1F;EAzBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAP1B,AAAA,IAAI,CAAC;MAQD,KAAK,EHsDiB,KAAmE,GG9B5F;EArBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAX1B,AAAA,IAAI,CAAC;MAYD,KAAK,EHmDkB,KAAmE,GG/B7F;EAjBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAf1B,AAAA,IAAI,CAAC;MAgBD,KAAK,EHgDiB,KAAmE,GGhC5F;EAbC,MAAM,EAAE,SAAS,EAAE,MAAM;IAnB3B,AAAA,IAAI,CAAC;MAoBD,KAAK,EH6CkB,MAAmE,GGjC7F;EAhCD,AAuBE,IAvBE,CAuBF,OAAO,CAAC;IACN,aAAa,EH8BC,IAAoC;IG7BlD,QAAQ,EAAE,QAAQ,GACnB;EAED,AAAW,UAAD,CA5BZ,IAAI,CA4BW;IACX,UAAU,EAAE,MAAM,GACnB;;AAIH,AAAA,sBAAsB,CAAC;EAErB,MAAM,EAAE,KAAK,GACd;;;AAED,AAUI,aAVS,CAUT,cAAc;AAVlB,AAWmB,aAXN,CAWT,cAAc,CAAC,QAAQ,AAAA,aAAa;AAXxC,AAYI,aAZS,CAYT,MAAM,CAHc;EACpB,OAAO,EAAE,CAAC,GACX;;;AAXH,AAeI,aAfS,AAaX,GAAI,CAEF,cAAc;AAflB,AAgBmB,aAhBN,AAaX,GAAI,CAGF,cAAc,CAAC,QAAQ,AAAA,aAAa;AAhBxC,AAiBI,aAjBS,AAaX,GAAI,CAIF,MAAM,CAHgB;EACpB,OAAO,EAAE,CAAC,GACX;;AAIL,AAAA,wBAAwB,CAAC;EACvB,OAAO,EAAE,CAAC,CHRiB,IAAI,GGShC;;AAED,AACE,aADW,CACX,MAAM,CAAC;EACL,gBAAgB,EAAE,WAAW;EAC7B,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,OAAO;EACf,IAAI,EAAE,gCAAgC;EACtC,gBAAgB,EAAE,IAAI;EACtB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,IAAI;EACT,OAAO,EAAE,IAAI,GAUd;EApBH,AACE,aADW,CACX,MAAM,AAWJ,MAAO,EAZX,AACE,aADW,CACX,MAAM,AAYJ,MAAO,CAAC;IACN,gBAAgB,EAAE,iCAAiC,GACpD;EAfL,AACE,aADW,CACX,MAAM,AAgBJ,OAAQ,CAAC;IACP,gBAAgB,EAAE,kCAAkC,GACrD;;AClGL,AAAA,kBAAkB,CAAC;EACjB,WAAW,EAAE,MAAM;EACnB,aAAa,EJ8DC,GAAG;EI7DjB,UAAU,EAAE,KAAK,CHSA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC;EGR/D,KAAK,EAAE,oCAAoC;EAC3C,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,SAAS,EJ6GgB,IAAI;EI5G7B,eAAe,EAAE,MAAM;EACvB,aAAa,EAAE,MAAM;EACrB,WAAW,EJ2GgB,GAAG,GIrG/B;EAhBD,AAYE,kBAZgB,CAYhB,CAAC,CAAC;IACA,KAAK,EAAE,oCAAoC;IAC3C,eAAe,EAAE,SAAS,GAC3B;;ACJH,AAAA,UAAU,CAAC;EAGT,aAAa,EAAE,GAA4E,GAC5F;;AAED,AAAA,eAAe,CAAC;EACd,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,CAAC,CAVQ,KAAgB;EAWjC,OAAO,EAAE,CAAC,GA4EX;EAzEC,MAAM,EAAE,SAAS,EAAE,KAAK;IAN1B,AL0JE,eK1Ja,CAOX,UAAW,CAAA,IAAI,ELmJjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,IAAI;MACvB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,IAAI;MACtB,kBAAkB,EA5GR,KAAI,GA6Gf;IK/JH,ALmKE,eKnKa,CAWX,UAAW,CAAA,EAAE,ELwJf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EKvJD,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IAjBjD,ALmKE,eKnKa,CAkBX,UAAW,CAAA,IAAI,ELiJjB,aAAa;IKnKf,ALmKE,eKnKa,CAmBX,UAAW,CAAA,EAAE,ELgJf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EK/ID,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IAzBjD,ALmKE,eKnKa,CA0BX,UAAW,CAAA,EAAE,ELyIf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EK1ID,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IA9BjD,ALmKE,eKnKa,CA+BX,UAAW,CAAA,IAAI,ELoIjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EKnID,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;IArClD,ALmKE,eKnKa,CAsCX,UAAW,CAAA,EAAE,EL6Hf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EK9HD,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;IA1ClD,ALmKE,eKnKa,CA2CX,UAAW,CAAA,IAAI,ELwHjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EKvHD,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE,MAAM;IAjDnD,ALmKE,eKnKa,CAkDX,UAAW,CAAA,EAAE,ELiHf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EKlHD,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE,MAAM;IAtDnD,ALmKE,eKnKa,CAuDX,UAAW,CAAA,IAAI,EL4GjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EK5GD,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,MAAM;IA5DvC,AA6DI,eA7DW,CA6DX,gBAAgB,CAAC;MACf,OAAO,EAAE,IAAI,GACd;EA/DL,AAkEE,eAlEa,CAkEb,EAAE,CAAC;IACD,MAAM,EAAE,CAAC,CAAC,CAAC,CAjFY,GAAG,GAkF3B;EApEH,AAwEM,eAxES,AAsEb,IAAM,CAAA,AAAA,WAAW,EACf,eAAe,AAAA,SAAU,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE,AAAA,MAAM,EAC9C,KAAK,CAAC;ILqCV,UAAU,EAAE,KAAK,CClHA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,EAKhD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;ID8GhE,UAAU,EAAE,gBAAgB,GKpCvB;EA1EP,ALmJE,eKnJa,AAsEb,IAAM,CAAA,AAAA,WAAW,EACf,eAAe,AAAA,SAAU,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE,AAAA,MAAM,EL4ElD,oBAAoB,CAAC;IACnB,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,QAAQ,GACpB;;AKpEH,AAAA,eAAe,CAAC;EACd,OAAO,EAAE,CAAC,CA3FO,IAAgB;EA4FjC,OAAO,EAAE,YAAY,GA6JtB;EA/JD,AAKE,eALa,CAKb,eAAe,CAAC;IACd,QAAQ,EAAE,QAAQ,GAanB;IAnBH,AAQM,eARS,CAKb,eAAe,GAGX,CAAC,CAAC;MACF,KAAK,EAAE,OAAO;MACd,OAAO,EAAE,KAAK;MACd,OAAO,EAAE,IAAI,GAOd;MAlBL,AAcQ,eAdO,CAKb,eAAe,GAGX,CAAC,AAKD,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EACxB,KAAK,CAAC;QLaZ,UAAU,EAAE,KAAK,CClHA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,EAKhD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;QD8GhE,UAAU,EAAE,gBAAgB,GKZrB;EAhBT,ALqCE,eKrCa,CLqCb,oBAAoB,CAAC;IACnB,eAAe,EAAE,WAAW;IAC5B,gBAAgB,EAAE,sCAAsC;IACxD,gBAAgB,EAAE,4CAA4C;IAC9D,mBAAmB,EAAE,GAAG;IACxB,MAAM,ECnIO,GAAG,CAAC,KAAK,CAAC,kCAAkC;IDoIzD,aAAa,EAAE,IAAI;IACnB,UAAU,EAlCkB,CAAC,CAAC,GAAG,CA/F3B,qBAAO;IAkIb,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,gCAAgC;IACtC,MAAM,EAtCiB,IAAI;IAuC3B,gBAAgB,EAAI,OAA6B;IACjD,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAI,OAA6B;IACpC,SAAS,EAAE,WAAW;IACtB,mBAAmB,EAAE,KAAK;IAC1B,mBAAmB,EAAE,kBAAkB;IACvC,KAAK,EA9CkB,IAAI,GAoD5B;IK7DH,ALqCE,eKrCa,CLqCb,oBAAoB,AAoBnB,SAAY,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE;MAC1B,OAAO,EAAE,CAAC;MACV,SAAS,EAAE,QAAQ,GACpB;EK5DL,AAuBE,eAvBa,CAuBb,KAAK,CAAC;IACJ,aAAa,EA1HS,GAAG;IA2HzB,UAAU,EAAE,KAAK,CJhHF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,EIgHxB,yBAAyB;IAC9D,MAAM,ELtDE,IAAI;IKuDZ,QAAQ,EAAE,QAAQ;IAClB,KAAK,ELxDG,IAAI;IK2DZ,WAAW,EAAE,MAAM;IACnB,KAAK,EAAE,kCAAkC;IACzC,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;IAChB,eAAe,EAAE,MAAM;IACvB,cAAc,EAAE,SAAS,GAK1B;IA1CH,AAuBE,eAvBa,CAuBb,KAAK,AAgBH,QAAS,CAAC;MACR,OAAO,EAAE,mBAAmB,GAC7B;EAzCL,AA4CE,eA5Ca,CA4Cb,WAAW,CAAC;IACV,gBAAgB,ELjGZ,IAAI;IKkGR,mBAAmB,EAAE,QAAQ;IAC7B,eAAe,EA9ID,KAAK;IA+InB,aAAa,EAlJS,GAAG;IAmJzB,UAAU,EAAE,KAAK,CJxIF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC;IIyI7D,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,UAAU,EAAE,UAAU;IACtB,KAAK,EAAE,IAAI,GAKZ;IA7DH,AA4CE,eA5Ca,CA4Cb,WAAW,AAcT,OAAQ,CAAC;MACP,OAAO,EAAE,CAAC,GACX;EA5DL,AAgEE,eAhEa,CAgEb,cAAc,CAAC;IACb,gBAAgB,EAAE,uCAAuC;IACzD,mBAAmB,EAAE,aAAa;IAClC,iBAAiB,EAAE,SAAS;IAC5B,aAAa,EAtKS,GAAG;IAuKzB,UAAU,EAAE,kCAAkC;IAC9C,QAAQ,EAAE,QAAQ,GACnB;EAvEH,AAyEE,eAzEa,CAyEb,UAAU,CAAC;IACT,eAAe,EAAE,KAAK;IACtB,MAAM,EAAE,IAAI;IACZ,kBAAkB,EAAE,CAAC;IACrB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,IAAI,GACZ;EA/EH,AAiFE,eAjFa,CAiFb,aAAa,CAAC;IACZ,eAAe,EA9KC,IAAI;IA+KpB,MAAM,EA9KY,IAAG;IA+KrB,MAAM,EAjLkB,IAAI;IAkL5B,gBAAgB,EAhLE,IAAG;IAiLrB,KAAK,EAnLmB,IAAI;IAsL5B,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,MAAM,GAKxB;IAjGH,AAiFE,eAjFa,CAiFb,aAAa,CAaX,AAAA,aAAE,AAAA,CAAc,QAAQ,CAAC;MACvB,OAAO,EAAE,mBAAmB,GAC7B;EAhGL,AAmGE,eAnGa,CAmGb,MAAM,CAAC;IACL,KAAK,EAAE,kCAAkC;IACzC,IAAI,EAAE,WAAW;IACjB,MAAM,EAvMe,IAAI;IAwMzB,WAAW,EAxMU,IAAI;IAyMzB,UAAU,EAAE,MAAM;IAClB,KAAK,ELrIG,IAAI;IKsIZ,QAAQ,EAAE,QAAQ,GAsBnB;IAhIH,AA4GI,eA5GW,CAmGb,MAAM,CASJ,KAAK,CAAC;MACJ,IAAI,EAAE,iCAAiC;MACvC,kBAAkB,EAAE,CAAC;MACrB,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,IAAI,GACV;IAjHL,AAmHI,eAnHW,CAmGb,MAAM,CAgBJ,IAAI,CAAC;MACH,MAAM,EArNa,IAAI;MAsNvB,OAAO,EAAE,KAAK;MACd,QAAQ,EAAE,MAAM;MAChB,aAAa,EAAE,QAAQ;MACvB,WAAW,EAAE,MAAM,GACpB;IAzHL,AA4HM,eA5HS,CAmGb,MAAM,AAwBJ,OAAQ,CACN,IAAI,CAAC;MACH,OAAO,EAAE,MAAM,GAChB;EA9HP,AAkIE,eAlIa,CAkIb,YAAY,CAAC;IACX,gBAAgB,EAAE,+CAAsC,GACzD;EApIH,AAuII,eAvIW,AAsIb,YAAa,CACX,KAAK,CAAC;IACJ,UAAU,EAAE,KAAK,CJ/NJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,GIgO5D;EAzIL,AA2II,eA3IW,AAsIb,YAAa,CAKX,WAAW,CAAC;IACV,OAAO,EAAE,IAAI,GACd;EA7IL,AAiJI,eAjJW,AAgJb,QAAS,CACP,KAAK,CAAC;IACJ,UAAU,EL9ON,OAAO;IK+OX,UAAU,EAAE,IAAI,GAMjB;IAzJL,AAqJM,eArJS,AAgJb,QAAS,CACP,KAAK,CAIH,CAAC,EArJP,AAiJI,eAjJW,AAgJb,QAAS,CACP,KAAK,AAKH,QAAS,CAAC;MACR,OAAO,EAAE,IAAI,GACd;EAxJP,AA2JI,eA3JW,AAgJb,QAAS,CAWP,MAAM,CAAC;IACL,UAAU,EAAE,MAAM,GACnB;;AAIL,AACE,sBADoB,CACpB,MAAM,CAAC;EACL,UAAU,EJpPK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDJpB,qBAAO;EKyPb,IAAI,EAAE,CAAC;EACP,MAAM,EAAE,MAAM;EACd,QAAQ,EAAE,KAAK;EACf,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,IAAI;EACT,KAAK,EL/Le,KAAmE,GK4MxF;EAXC,MAAM,EAAE,SAAS,EAAE,KAAK;IAV5B,AACE,sBADoB,CACpB,MAAM,CAAC;MAUH,KAAK,ELjMe,KAAmE,GK2M1F;EAPC,MAAM,EAAE,SAAS,EAAE,KAAK;IAd5B,AACE,sBADoB,CACpB,MAAM,CAAC;MAcH,KAAK,ELpMgB,KAAmE,GK0M3F;EAHC,MAAM,EAAE,SAAS,EAAE,KAAK;IAlB5B,AACE,sBADoB,CACpB,MAAM,CAAC;MAkBH,KAAK,ELvMe,KAAmE,GKyM1F;;AAGH,AAIE,aAJW,CAIX,qBAAqB,CAAC;EACpB,SAAS,EAAE,KAAiD;EAC5D,MAAM,EAAE,MAAM;EACd,OAAO,EALM,IAAI,GAmBlB;EArBH,AASI,aATS,CAIX,qBAAqB,CAKnB,eAAe,CAAC;IACd,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,QAAQ;IAChB,mBAAmB,EAVR,IAAI;IAWf,cAAc,EAAE,IAAI,GACrB;EAdL,AAgBI,aAhBS,CAIX,qBAAqB,CAYnB,cAAc,CAAC;IACb,cAAc,EAAE,IAAI;IACpB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,QAAQ,GACjB;;AApBL,AAuBE,aAvBW,CAuBX,mBAAmB,CAAC;EAClB,OAAO,EAAE,IAAI,GACd;;AAzBH,AA2BE,aA3BW,CA2BX,KAAK,CAAC;EACJ,SAAS,EL7Na,IAAI,GK8N3B;;AA7BH,AA+BE,aA/BW,CA+BX,aAAa,CAAC;EACZ,KAAK,EAAE,IAAI,GAuIZ;EAvKH,AAkCI,aAlCS,CA+BX,aAAa,CAGX,MAAM,CAAC;IACL,QAAQ,EAAE,QAAQ,GAQnB;IA3CL,AAqCM,aArCO,CA+BX,aAAa,CAGX,MAAM,CAGJ,iBAAiB,CAAC;MAChB,QAAQ,EAAE,QAAQ;MAClB,SAAS,EAAE,gBAAgB;MAC3B,GAAG,EAAE,GAAG;MACR,gBAAgB,EAAE,GAAG,GACtB;EA1CP,AA8CM,aA9CO,CA+BX,aAAa,CAcX,IAAI,CACF,KAAK,AAAA,IAAK,CAAA,AAAA,GAAG,EAAE;IACb,aAAa,EAAE,IAAI,GACpB;EAhDP,AAkDM,aAlDO,CA+BX,aAAa,CAcX,IAAI,CAKF,KAAK,AAAA,IAAK,CAAA,AAAA,GAAG,EAAE;IACb,YAAY,EAAE,IAAI,GAMnB;IAzDP,AAkDM,aAlDO,CA+BX,aAAa,CAcX,IAAI,CAKF,KAAK,AAAA,IAAK,CAAA,AAAA,GAAG,CAGX,IAAM,CAAA,AAAA,kBAAkB,EAAE;MACxB,SAAS,EAAE,GAAG;MACd,UAAU,EAAE,KAAK,GAClB;EAxDT,AA4DI,aA5DS,CA+BX,aAAa,CA6BX,0BAA0B,CAAC;IACzB,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,OAAO,GAKhB;IArEL,AA4DI,aA5DS,CA+BX,aAAa,CA6BX,0BAA0B,AAMxB,MAAO,CAAC;MACN,eAAe,EAAE,SAAS,GAC3B;EApEP,AAuEI,aAvES,CA+BX,aAAa,CAwCX,6BAA6B,CAAC;IAC5B,UAAU,EAAE,GAAG,GAkChB;IA1GL,AA0EM,aA1EO,CA+BX,aAAa,CAwCX,6BAA6B,CAG3B,kBAAkB,CAAC;MACjB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,QAAQ,EAAE,MAAM;MAChB,QAAQ,EAAE,QAAQ;MAClB,SAAS,EAAE,gBAAgB;MAC3B,GAAG,EAAE,GAAG;MACR,gBAAgB,EAAE,GAAG,GACtB;IAlFP,AAsFM,aAtFO,CA+BX,aAAa,CAwCX,6BAA6B,CAe3B,kBAAkB,CAAC;MASjB,KAAK,EAAE,KAAK;MACZ,MAAM,EAAE,IAAI;MACZ,uBAAuB,EAAE,IAAI;MAC7B,IAAI,EL5XF,OAAO;MK6XT,gBAAgB,EAAE,mDAAmD;MACrE,SAAS,EAAE,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,GAK3D;;AAlBC,UAAU,CAAV,sBAAU;EACR,AAAA,IAAI;IAAG,SAAS,EAAE,kBAAkB;;AAGtC,UAAU,CAAV,0BAAU;EACR,AAAA,IAAI;IAAG,SAAS,EAAE,iBAAiB;MA5F7C,AAsFM,aAtFO,CA+BX,aAAa,CAwCX,6BAA6B,CAe3B,kBAAkB,AAgBhB,IAAM,CAAA,AAAA,GAAG,EAAE;QACT,cAAc,EAAE,0BAA0B,GAC3C;EAxGT,AA4GI,aA5GS,CA+BX,aAAa,CA6EX,KAAK,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,EAAa;IACb,gBAAgB,EAAE,sCAAsC;IACxD,MAAM,EJ9XC,GAAG,CAAC,KAAK,CAAC,4BAA4B;II+X7C,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI,GAYhB;IAhIP,AA4GI,aA5GS,CA+BX,aAAa,CA6EX,KAAK,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,CASA,MAAO,CAAC;MACN,MAAM,EJrYM,GAAG,CAAC,KAAK,CAAC,iCAAiC;MIsYvD,UAAU,EAAE,qCAAqC,GAClD;IAzHT,AA4GI,aA5GS,CA+BX,aAAa,CA6EX,KAAK,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,EAcA,AAAA,QAAE,AAAA,EAAU;MACV,MAAM,EJ3YD,GAAG,CAAC,KAAK,CAAC,4BAA4B;MI4Y3C,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,GAAG,GACb;EA/HT,AAoIM,aApIO,CA+BX,aAAa,CAoGX,QAAQ,CACN,KAAK,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,EAAa;IACb,MAAM,EJnZK,GAAG,CAAC,KAAK,CDCrB,OAAO;IKmZN,UAAU,EJlaV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CDeV,OAAO,ECfY,CAAC,CAAC,CAAC,CAAC,CAAC,CD0HX,GAAG,CA3GhB,qBAAO,GKoZP;EAxIT,AA4II,aA5IS,CA+BX,aAAa,CA6GX,cAAc,CAAC;IACb,SAAS,EAAE,gBAAgB;IAC3B,UAAU,EL1ZP,OAAO;IK2ZV,aAAa,EAAE,GAAG;IAClB,KAAK,EL7XH,IAAI;IK8XN,kBAAkB,EAAE,GAAG;IACvB,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,CAAC,GAiBX;IAtKL,AA4II,aA5IS,CA+BX,aAAa,CA6GX,cAAc,AAYZ,QAAS,CAAC;MACR,UAAU,ELraT,OAAO;MKsaR,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,GAAG;MACZ,MAAM,EAAE,IAAI;MACZ,kBAAkB,EAAE,IAAI;MACxB,QAAQ,EAAE,QAAQ;MAClB,WAAW,EAAE,MAAM;MACnB,GAAG,EAAE,IAAI;MACT,SAAS,EAAE,aAAa;MACxB,WAAW,EAAE,MAAM;MACnB,KAAK,EAAE,IAAI;MACX,OAAO,EAAE,EAAE,GACZ;;AArKP,AAyKE,aAzKW,CAyKX,QAAQ,CAAC;EACP,eAAe,EAAE,QAAQ,GAM1B;EAhLH,AA4KI,aA5KS,CAyKX,QAAQ,CAGN,MAAM,CAAC;IACL,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,CAAC,GACrB;;AAGH,MAAM,EAAE,SAAS,EAAE,KAAK;EAlL1B,AAmLI,aAnLS,CAmLT,mBAAmB,CAAC;IAClB,cAAc,EAAE,MAAM,GAKvB;IAzLL,AAsLM,aAtLO,CAmLT,mBAAmB,CAGjB,eAAe,CAAC;MACd,mBAAmB,EAAE,CAAC,GACvB;;AAMP,UAAU,CAAV,UAAU;EACR,AAAA,EAAE;IACA,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,gBAAgB;EAG7B,AAAA,IAAI;IACF,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,aAAa;;ACle5B,AACE,cADY,CACZ,aAAa,CAAC;EACZ,OAAO,EAAE,IAAI;EACb,QAAQ,ENgEE,IAAI;EM/Dd,qBAAqB,EAAE,uBAA6B;EACpD,MAAM,EAAE,CAAC,GAuBV;EArBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAP5B,ANoLE,cMpLY,CACZ,aAAa,CNmLb,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EM9KC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IAXnD,ANoLE,cMpLY,CACZ,aAAa,CAWT,UAAW,CAAA,EAAE,ENwKjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EMxKC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;IAjBpD,ANoLE,cMpLY,CACZ,aAAa,CAiBT,UAAW,CAAA,EAAE,ENkKjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EMlKC,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE,MAAM;IAvBrD,ANoLE,cMpLY,CACZ,aAAa,CAuBT,UAAW,CAAA,EAAE,EN4JjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;;AMzLH,AA8BE,cA9BY,CA8BZ,oBAAoB,CAAC;EACnB,MAAM,ELpBS,GAAG,CAAC,KAAK,CAAC,oCAAoC;EKqB7D,aAAa,ENgCD,GAAG;EM/Bf,OAAO,EAAE,IAAI;EACb,MAAM,EN4DI,KAAK;EM3Df,KAAK,EAAE,IAAI,GA6BZ;EAhEH,AAqCI,cArCU,CA8BZ,oBAAoB,CAOlB,YAAY,CAAC;IACX,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,KAAK,GAoBjB;IA3DL,AAyCM,cAzCQ,CA8BZ,oBAAoB,CAOlB,YAAY,CAIV,iBAAiB,CAAC;MAChB,mBAAmB,EAAE,MAAM;MAC3B,iBAAiB,EAAE,SAAS;MAC5B,eAAe,EAAE,SAAS;MAC1B,uBAAuB,EAAE,IAAI;MAC7B,OAAO,EAAE,KAAK;MACd,IAAI,EAAE,kCAAkC;MACxC,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,MAAM;MACd,KAAK,EAAE,IAAI,GACZ;IAnDP,AAqDM,cArDQ,CA8BZ,oBAAoB,CAOlB,YAAY,CAgBV,oBAAoB,CAAC;MACnB,KAAK,EAAE,gCAAgC;MACvC,SAAS,EAAE,IAAI;MACf,aAAa,EAAE,CAAC;MAChB,UAAU,EAAE,MAAM,GACnB;EAGH,MAAM,EAAE,SAAS,EAAE,MAAM;IA7D7B,AA8BE,cA9BY,CA8BZ,oBAAoB,CAAC;MAgCjB,MAAM,ENsCQ,KAAK,GMpCtB;;AAGH,MAAM,EAAE,SAAS,EAAE,MAAM;EACvB,AAGI,cAHU,CAEZ,aAAa,CACX,aAAa,CAAC;IACZ,qBAAqB,EAAE,uBAAmC,GAC3D;;ACzEP,AACE,gBADc,AACd,QAAS,CAAC;EACR,QAAQ,EAAE,MAAM,GACjB;;AAHH,AAMI,gBANY,AAKd,IAAM,CAAA,AAAA,QAAQ,EACZ,gBAAgB,CAAC;EACf,OAAO,EAAE,IAAI,GACd;;AAIL,AAAA,gBAAgB,CAAC;EACf,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,YAAY;EACxB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,IAAI,GAkDjB;EA3DD,AAWE,gBAXc,AAWd,KAAM,CAAC;IACL,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,CAAC,GA6CX;IA1DH,AAeI,gBAfY,AAWd,KAAM,CAIJ,iBAAiB,CAAC;MAChB,UAAU,EAAE,4BAA4B;MACxC,gBAAgB,EAAE,IAAI;MACtB,SAAS,EAAE,gBAAgB,CAAC,QAAQ;MACpC,OAAO,EAAE,CAAC,GAQX;MANC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;QArBzC,AAeI,gBAfY,AAWd,KAAM,CAIJ,iBAAiB,CAAC;UAOd,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,GAAG,EAAE,KAAK;UACV,aAAa,EAAE,KAAK,GAEvB;IA3BL,AA6BI,gBA7BY,AAWd,KAAM,CAkBJ,sBAAsB,CAAC;MACrB,UAAU,EAAE,YAAY;MACxB,OAAO,EAAE,CAAC,GACX;IAhCL,AAkCI,gBAlCY,AAWd,KAAM,CAuBJ,eAAe;IAlCnB,AAmCI,gBAnCY,AAWd,KAAM,CAwBJ,iBAAiB;IAnCrB,AAoCI,gBApCY,AAWd,KAAM,CAyBJ,cAAc,CAAC;MACb,UAAU,EAAE,4BAA4B;MACxC,SAAS,EAAE,aAAa;MACxB,OAAO,EAAE,CAAC,GACX;IAxCL,AA0CI,gBA1CY,AAWd,KAAM,CA+BJ,eAAe,CAAC;MACd,gBAAgB,EAAE,IAAI,GACvB;IA5CL,AA8CI,gBA9CY,AAWd,KAAM,CAmCJ,iBAAiB,CAAC;MAChB,gBAAgB,EAAE,IAAI,GACvB;IAhDL,AAkDI,gBAlDY,AAWd,KAAM,CAuCJ,cAAc,CAAC;MACb,gBAAgB,EAAE,IAAI,GACvB;IApDL,AAsDI,gBAtDY,AAWd,KAAM,CA2CJ,qBAAqB,CAAC;MACpB,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,CAAC,GACX;;AAIL,AAAA,WAAW;AACX,AAAA,IAAI,AAAA,UAAU,CAAC;EACb,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,KAAK;EACd,gBAAgB,EAAE,0CAAiC,EPpB5B,4FAAyH;EOqBhJ,qBAAqB,EAAE,MAAM;EAC7B,qBAAqB,EAAE,WAAW;EAClC,iBAAiB,EAAE,SAAS;EAC5B,eAAe,EAAE,KAAK;EACtB,QAAQ,EAAE,KAAK,GAChB;;AAED,AAAA,iBAAiB,CAAC;EAChB,SAAS,EAAE,gBAAgB,CAAC,UAAU;EACtC,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,KAAK;EACZ,OAAO,EAAE,CAAC;EACV,gBAAgB,EP7CV,IAAI;EO8CV,KAAK,EAAE,UAAU;EACjB,KAAK,EPhFG,OAAO;EOiFf,UAAU,EAAE,MAAM;EAClB,OAAO,EAAE,IAAI,GAqHd;EA/HD,AAYE,iBAZe,CAYf,IAAI,CAAC;IACH,QAAQ,EAAE,QAAQ,GACnB;EAdH,AAgBE,iBAhBe,CAgBf,YAAY,CAAC;IACX,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,SAAS;IACjB,KAAK,EP/CmB,OAAO;IOgD/B,MAAM,EAAE,OAAO,GAahB;IAlCH,AAuBI,iBAvBa,CAgBf,YAAY,CAOV,CAAC,CAAC;MACA,KAAK,EPpGD,OAAO;MOqGX,MAAM,EAAE,OAAO;MACf,eAAe,EAAE,SAAS,GAC3B;IA3BL,AA6BI,iBA7Ba,CAgBf,YAAY,CAaV,CAAC,AAAA,MAAM;IA7BX,AA8BI,iBA9Ba,CAgBf,YAAY,CAcV,CAAC,AAAA,OAAO;IA9BZ,AA+BI,iBA/Ba,CAgBf,YAAY,CAeV,CAAC,AAAA,MAAM,CAAC;MACN,KAAK,EPpHD,OAAO,GOqHZ;EAjCL,AAoCE,iBApCe,CAoCf,YAAY,CAAC;IACX,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,oBAAoB,EAAE,IAAI;IAC1B,MAAM,EAAE,GAAG,CAAC,KAAK,CPvHX,OAAO;IOwHb,aAAa,EAAE,GAAG;IAClB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,oCAAoC,GAkBjD;IAhEH,AAoCE,iBApCe,CAoCf,YAAY,AAYV,MAAO,CAAC;MACN,YAAY,EPzHR,OAAO,GO0HZ;IAlDL,AAoCE,iBApCe,CAoCf,YAAY,AAgBV,MAAO,CAAC;MACN,YAAY,EPzIR,OAAO;MO0IX,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CP1IjB,uBAAO,GO2IZ;IAvDL,AAoCE,iBApCe,CAoCf,YAAY,AAqBV,QAAS,CAAC;MACR,YAAY,EPhIT,OAAO,GOiIX;IA3DL,AAoCE,iBApCe,CAoCf,YAAY,AAyBV,QAAS,AAAA,MAAM,CAAC;MACd,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CPpIlB,qBAAO,GOqIX;EA/DL,AAkEE,iBAlEe,CAkEf,YAAY,CAAC;IACX,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,SAAS,GAClB;EArEH,AAuEe,iBAvEE,CAuEf,YAAY,CAAC,WAAW,CAAC;IACvB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,GAAG;IACf,OAAO,EAAE,KAAK,GACf;EA3EH,AA6EE,iBA7Ee,CA6Ef,MAAM,CAAC;IACL,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,WAAW,GACpB;EAjFH,AAmFE,iBAnFe,CAmFf,gBAAgB,CAAC;IACf,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,GAAG;IAClB,KAAK,EPjID,IAAI;IOkIR,gBAAgB,EP9KV,OAAO;IO+Kb,UAAU,EAAE,sBAAsB,GAOnC;IAnGH,AAmFE,iBAnFe,CAmFf,gBAAgB,AAWd,IAAM,EAAA,AAAA,AAAA,QAAC,AAAA,EAAU,OAAO,EA9F5B,AAmFE,iBAnFe,CAmFf,gBAAgB,AAYd,IAAM,EAAA,AAAA,AAAA,QAAC,AAAA,EAAU,MAAM,CAAC;MACtB,UAAU,EPlLN,OAAO;MOmLX,YAAY,EPlLR,OAAO,GOmLZ;EAlGL,AAqGE,iBArGe,CAqGf,YAAY,CAAC;IACX,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,gBAAgB,EPzLV,OAAO;IO0Lb,KAAK,EP9LC,OAAO;IO+Lb,MAAM,EAAE,GAAG,CAAC,KAAK,CP/LX,OAAO;IOgMb,aAAa,EAAE,GAAG;IAClB,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,uDAAuD,GAepE;IA9HH,AAqGE,iBArGe,CAqGf,YAAY,CAYV,AAAA,QAAE,AAAA,EAAU;MACV,gBAAgB,EPjMZ,OAAO;MOkMX,YAAY,EPhMR,OAAO;MOiMX,KAAK,EPhMD,OAAO;MOiMX,MAAM,EAAE,OAAO;MACf,OAAO,EAAE,GAAG,GACb;IAvHL,AAqGE,iBArGe,CAqGf,YAAY,AAoBV,IAAM,EAAA,AAAA,AAAA,QAAC,AAAA,EAAU,MAAM,CAAC;MACtB,gBAAgB,EP9MZ,OAAO;MO+MX,YAAY,EP9MR,OAAO;MO+MX,KAAK,EPnKH,IAAI,GOoKP;;AAIL,AAAA,sBAAsB,CAAC;EACrB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,YAAY;EACnB,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,KAAK,GAYb;EAVC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;IANrC,AAAA,sBAAsB,CAAC;MAOnB,KAAK,EAAE,KAAK,GASf;EANC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;IAVrC,AAAA,sBAAsB,CAAC;MAWnB,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,KAAK,EAAE,KAAK;MACZ,UAAU,EAAE,MAAM,GAErB;;AAED,AAAA,iBAAiB,CAAC;EAChB,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,8CAAqC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS;EACzE,cAAc,EAAE,KAAK,GACtB;;AAED,AAAA,CAAC,AAAA,cAAc,CAAC;EACd,KAAK,EPnMC,IAAI;EOoMV,OAAO,EAAE,KAAK;EACd,eAAe,EAAE,SAAS,GAO3B;EAVD,AAKE,CALD,AAAA,cAAc,AAKb,MAAO,EALT,AAME,CAND,AAAA,cAAc,AAMb,OAAQ,EANV,AAOE,CAPD,AAAA,cAAc,AAOb,MAAO,CAAC;IACN,KAAK,EP1MD,IAAI,GO2MT;;AAGH,AAAA,eAAe,CAAC;EACd,UAAU,EAAE,+CAA+C,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS;EAC9E,eAAe,EAAE,SAAS;EAC1B,MAAM,EAAE,WAAW;EACnB,WAAW,EAAE,KAAK,GAUnB;EARC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;IANrC,AAAA,eAAe,CAAC;MAOZ,UAAU,EAAE,+CAA+C,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS;MAChF,eAAe,EAAE,SAAS,GAM7B;EAdD,AAWE,eAXa,AAWb,IAAM,CAAA,AAAA,GAAG,EAAE;IACT,mBAAmB,EAAE,SAAS,GAC/B;;AAGH,AAAA,qBAAqB,CAAC;EACpB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,KAAK,EPpOC,IAAI;EOqOV,MAAM,EAAE,KAAK;EACb,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,KAAK;EACZ,OAAO,EAAE,EAAE;EACX,UAAU,EAAE,YAAY;EACxB,OAAO,EAAE,CAAC,GAUX;EARC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;IAdrC,AAAA,qBAAqB,CAAC;MAelB,KAAK,EAAE,KAAK,GAOf;EAJC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;IAlBrC,AAAA,qBAAqB,CAAC;MAmBlB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI,GAEf;;AAED,AAAA,eAAe;AACf,AAAA,iBAAiB;AACjB,AAAA,cAAc,CAAC;EACb,OAAO,EAAE,CAAC;EACV,SAAS,EAAE,gBAAgB,GAC5B;;AAED,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,IAAI,GACd;;AAED,AAAA,MAAM,AAAA,OAAO,CAAC;EACZ,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,eAAe;EAC1B,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,KAAK,EPvQC,IAAI;EOwQV,gBAAgB,EPvST,OAAO;EOwSd,QAAQ,EAAE,QAAQ;EAClB,kBAAkB,EAAE,IAAI;EACxB,GAAG,EAAE,KAAK;EACV,aAAa,EAAE,GAAG,GAenB;EA1BD,AAaE,MAbI,AAAA,OAAO,AAaX,QAAS,CAAC;IACR,kBAAkB,EAAE,IAAI;IACxB,UAAU,EP/SL,OAAO;IOgTZ,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,aAAa;IACxB,WAAW,EAAE,MAAM;IACnB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE,GACZ;;AAGH,UAAU,CAAV,SAAU;EACR,AAAA,EAAE;IACA,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,iBAAiB;EAG9B,AAAA,IAAI;IACF,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,aAAa;;ACpV5B,AAAA,MAAM,CAAC;EACL,KAAK,EAAE,2CAA2C;EAClD,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,UAAU,ERsGO,IAAI,GQ9BtB;EAtEC,MAAM,EAAE,SAAS,EAAE,KAAK;IAN1B,AAAA,MAAM,CAAC;MAOH,WAAW,EAAE,IAAI,GAqEpB;EA5ED,AAUE,MAVI,CAUJ,EAAE,CAAC;IACD,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC,GAKX;IAJC,MAAM,EAAE,SAAS,EAAE,KAAK;MAb5B,AAUE,MAVI,CAUJ,EAAE,CAAC;QAIC,OAAO,EAAE,MAAM;QACf,oBAAoB,EAAE,IAAI,GAE7B;EAjBH,AAoBK,MApBC,CAoBJ,EAAE,CAAC,EAAE,CAAC;IACJ,OAAO,EAAE,YAAY,GAUtB;IA/BH,AAoBK,MApBC,CAoBJ,EAAE,CAAC,EAAE,AAGH,OAAQ,CAAC;MACP,OAAO,EAAE,KAAK;MACd,OAAO,EAAE,GAAG,GACb;IA1BL,AAoBK,MApBC,CAoBJ,EAAE,CAAC,EAAE,AAQH,WAAY,AAAA,OAAO,CAAC;MAClB,OAAO,EAAE,IAAI,GACd;EA9BL,AAiCE,MAjCI,CAiCJ,WAAW,CAAC;IACV,KAAK,EAAE,kCAAkC;IACzC,WAAW,EAAE,IAAI,GAClB;EApCH,AAsCE,MAtCI,CAsCJ,gBAAgB,CAAC;IACf,KAAK,EAAE,kCAAkC;IACzC,WAAW,EAAE,IAAI,GA2BlB;IAzBC,MAAM,EAAE,SAAS,EAAE,KAAK;MA1C5B,AAsCE,MAtCI,CAsCJ,gBAAgB,CAAC;QAOb,KAAK,EAAE,KAAK,GAsBf;QAnEH,AAsCE,MAtCI,CAsCJ,gBAAgB,AASZ,IAAM,CAAA,AAAA,GAAG,EAAE;UACT,KAAK,EAAE,IAAI,GACZ;IAjDP,AAsCE,MAtCI,CAsCJ,gBAAgB,AAcd,OAAQ,CAAC;MACP,UAAU,EAAE,oDAA2C,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM;MAC/E,OAAO,EAAE,EAAE;MACX,uBAAuB,EAAE,IAAI;MAC7B,OAAO,EAAE,YAAY;MACrB,IAAI,EAAE,kCAAkC;MACxC,MAAM,EAAE,IAAI;MACZ,mBAAmB,EAAE,GAAG;MACxB,cAAc,EAAE,GAAG;MACnB,KAAK,EAAE,IAAI,GACZ;IA9DL,AAsCE,MAtCI,CAsCJ,gBAAgB,AA0Bd,IAAM,CAAA,AAAA,GAAG,CAAC,OAAO,CAAE;MACjB,SAAS,EAAE,UAAU,GACtB;EAlEL,AAuEE,MAvEI,AAuEJ,OAAQ,CAAC;IACP,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK,GACf;;AC3EH,AAAA,eAAe,CAAC;EASd,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,IAAI;EACb,MAAM,EAVU,IAAI;EAWpB,aAAa,ET0DG,IAAoC;ESzDpD,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI,GAuDZ;EArED,AAgBE,eAhBa,CAgBb,KAAK,CAAC;IACJ,UAAU,EAAE,sCAAsC,CAAC,yBAAyB,CAdxD,GAAG,CAc2E,WAA0B,CAAC,SAAS;IACtI,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,iCAAiC;IACnD,UAAU,ERDK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDJpB,qBAAO,ESKkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CTmBpC,mBAAI;ISlBR,SAAS,EAAE,IAAI;IACf,uBAAuB,EAAE,IAAI;IAC7B,IAAI,EAAE,+BAA+B;IACrC,OAAO,EAAE,CAAC;IACV,kBAAkB,EAlBE,IAAI;IAmBxB,oBAAoB,EArBF,IAA4C;IAsB9D,KAAK,EAAE,IAAI,GAKZ;IA/BH,AAgBE,eAhBa,CAgBb,KAAK,AAYH,IAAM,CAAA,AAAA,GAAG,EAAE;MACT,qBAAqB,EAAE,KAAK,CA1BV,GAAG,GA2BtB;EA9BL,AAiCU,eAjCK,AAiCb,MAAO,CAAC,KAAK,CAAC;IACZ,UAAU,ERhBK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDJpB,qBAAO,ESoBkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CTIpC,mBAAI,GSHT;EAnCH,AAqCW,eArCI,AAqCb,OAAQ,CAAC,KAAK;EArChB,AAsCE,eAtCa,CAsCb,KAAK,AAAA,MAAM,CAAC;IACV,MAAM,ERzBY,GAAG,CAAC,KAAK,CAAC,iCAAiC;IQ0B7D,UAAU,EAAE,qCAAqC,GAClD;EAzCH,AA2CE,eA3Ca,CA2Cb,cAAc,CAAC;IACb,UAAU,EArCI,wCAAwC,CAqC3B,SAAS,CAAC,MAAM,CAAC,MAAM;IAClD,eAAe,EAAE,SAAS;IAC1B,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,CAAC,CTiBJ,GAAG,CAAH,GAAG,CSjBgC,CAAC;IAChD,uBAAuB,EAAE,IAAI;IAC7B,IAAI,EAAE,+BAA+B;IACrC,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,CAAC;IACnB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EA/Ce,IAAI,GA8DzB;IApEH,AA2CE,eA3Ca,CA2Cb,cAAc,AAYZ,MAAO,EAvDX,AA2CE,eA3Ca,CA2Cb,cAAc,AAaZ,MAAO,CAAC;MACN,gBAAgB,ET3CZ,qBAAO;MS4CX,MAAM,EAAE,OAAO,GAChB;IA3DL,AA2CE,eA3Ca,CA2Cb,cAAc,AAkBZ,OAAQ,CAAC;MACP,gBAAgB,EThDZ,qBAAO,GSiDZ;IA/DL,AA2CE,eA3Ca,CA2Cb,cAAc,AAsBZ,IAAM,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;;AAMH,AAAA,6BAA6B,CAAC;EAC5B,gBAAgB,EAAE,mCAAmC;EACrD,MAAM,EAAE,CAAC;EACT,UAAU,ETkCQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAxExB,kBAAI,EAwEgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAxE7C,kBAAI;ESuCR,SAAS,EAAE,eAAgC,GA0E5C;EA9ED,AAME,6BAN2B,CAM3B,oBAAoB,CAAC;IACnB,gBAAgB,EAAE,0CAA0C;IAC5D,KAAK,EAAE,kCAAkC,GAC1C;EATH,AAWE,6BAX2B,CAW3B,oBAAoB,EAXtB,AAYE,6BAZ2B,CAY3B,4BAA4B,CAAC;IAC3B,YAAY,EAAE,oCAAoC,GACnD;EAdH,AAgBE,6BAhB2B,CAgB3B,6BAA6B,CAAC;IAC5B,MAAM,EAAE,CAAC,GACV;EAlBH,AAoBE,6BApB2B,CAoB3B,0BAA0B,CAAC;IACzB,gBAAgB,EAAE,0CAA0C;IAC5D,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,oCAAoC,GAC3D;EAvBH,AAyBE,6BAzB2B,CAyB3B,wCAAwC,CAAC;IACvC,KAAK,EAAE,gCAAgC,GACxC;EA3BH,AA6BE,6BA7B2B,CA6B3B,kCAAkC,CAAC;IACjC,gBAAgB,EAAE,mCAAmC,GACtD;EA/BH,AAiCE,6BAjC2B,CAiC3B,2BAA2B,AACzB,SAAU,CAAC;IACT,UAAU,EAAE,iCAAiC;IAC7C,KAAK,EAAE,gCAAgC,GASxC;IA7CL,AAiCE,6BAjC2B,CAiC3B,2BAA2B,AACzB,SAAU,AAIR,OAAQ,CAAC;MACP,UAAU,EAAE,kCAAkC,GAC/C;IAxCP,AA0CM,6BA1CuB,CAiC3B,2BAA2B,AACzB,SAAU,CAQR,YAAY,CAAC;MACX,IAAI,EAAE,kCAAkC,GACzC;EA5CP,AAiDI,6BAjDyB,CAgD3B,0BAA0B,CACxB,kCAAkC,CAAC;IACjC,gBAAgB,EAAE,0CAA0C,GAC7D;EAnDL,AAsDE,6BAtD2B,CAsD3B,wBAAwB,CAAC;IAIvB,gBAAgB,EAAE,IAAI;IACtB,YAAY,EAAE,qIAA+L,CAAC,CAAC;IAC/M,iBAAiB,EAAE,SAAS;IAC5B,QAAQ,EAAE,QAAQ,GASnB;IAtEH,AAsDE,6BAtD2B,CAsD3B,wBAAwB,AAStB,SAAU,CAAC;MACT,UAAU,EAAE,iCAAiC,GAC9C;IAjEL,AAsDE,6BAtD2B,CAsD3B,wBAAwB,AAatB,OAAQ,CAAC;MACP,UAAU,EAAE,kCAAkC,GAC/C;EArEL,AAwEE,6BAxE2B,CAwE3B,4BAA4B,AAC1B,MAAO,CAAC;IACN,UAAU,EAAE,iCAAiC;IAC7C,KAAK,EAAE,gCAAgC,GACxC;;ACrJP,AAAA,aAAa,CAAC;EACZ,UAAU,EAAE,0CAA0C;EACtD,aAAa,EV8Gc,GAAG;EU7G9B,UAAU,EV2GU,CAAC,CAAC,GAAG,CAAC,IAAI,CAxExB,kBAAI,EAwEgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAxE7C,kBAAI;EUlCV,OAAO,EAAE,KAAK;EACd,SAAS,EV0Gc,IAAI;EUzG3B,mBAAmB,EAAE,GAAG;EACxB,kBAAkB,EAAE,IAAI;EACxB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,MAA+B;EACpC,OAAO,EAAE,KAAK,GAyCf;EAnDD,AAYI,aAZS,GAYT,EAAE,CAAC;IACH,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,CAAC;IACT,OAAO,EVkGkB,GAAG,CUlGS,CAAC,GAmCvC;IAlDH,AAiBM,aAjBO,GAYT,EAAE,GAKA,EAAE,CAAC;MACH,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,IAAI,GA8BZ;MAjDL,AAiBM,aAjBO,GAYT,EAAE,GAKA,EAAE,AAIF,UAAW,CAAC;QACV,aAAa,ETXF,GAAG,CAAC,KAAK,CAAC,oCAAoC;QSYzD,MAAM,EV0Fe,GAAG,CU1FY,CAAC,GACtC;MAxBP,AA0BQ,aA1BK,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,CAAC;QACF,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,IAAI;QACb,OAAO,EViFa,GAAG,CAAC,IAAI;QUhF5B,WAAW,EAAE,MAAM,GAcpB;QAhDP,AA0BQ,aA1BK,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,AAUD,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE;UACzB,UAAU,EAAE,iCAAiC,GAC9C;QAtCT,AA0BQ,aA1BK,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,AAcD,OAAQ,CAAC;UACP,UAAU,EAAE,kCAAkC,GAC/C;QA1CT,AA0BQ,aA1BK,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,AAkBD,SAAU,CAAC;UACT,OAAO,EAAE,GAAG;UACZ,cAAc,EAAE,IAAI,GACrB;;AC/CT,AACE,oBADkB,CAClB,MAAM,CAAC;EACL,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CXoCnB,kBAAI;EWnCR,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,MAAM;EACnB,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,KAAK,GACb;;AARH,AAUE,oBAVkB,CAUlB,OAAO,CAAC;EACN,MAAM,EAAE,CAAC,GACV;;AAZH,AAcE,oBAdkB,CAclB,cAAc,CAAC;EACb,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,CAAC,GAMlB;EAvBH,AAmBI,oBAnBgB,CAclB,cAAc,CAKZ,CAAC,CAAC;IACA,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,IAAI,GACpB;;AAtBL,AAyBE,oBAzBkB,CAyBlB,QAAQ,CAAC;EACP,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,MAAM;EACjB,OAAO,EAAE,MAAM,GAchB;EA3CH,AA+BI,oBA/BgB,CAyBlB,QAAQ,CAMN,MAAM,CAAC;IACL,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,IAAI;IACxB,oBAAoB,EAAE,IAAI;IAC1B,WAAW,EAAE,MAAM;IACnB,KAAK,EAAE,GAAG,GAMX;IA1CL,AA+BI,oBA/BgB,CAyBlB,QAAQ,CAMN,MAAM,AAOJ,KAAM,CAAC;MACL,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,CAAC,GACvB;;AAzCP,AA6CE,oBA7CkB,CA6ClB,KAAK,CAAC;EACJ,iBAAiB,EAAE,IAAI,GACxB;;AAGH,AAAA,cAAc,CAAC;EACb,UAAU,EAAE,2BAA2B;EACvC,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK,GACf;;AAED,AAAA,MAAM,CAAC;EACL,UAAU,EAAE,yBAAyB;EACrC,MAAM,EVnDW,GAAG,CAAC,KAAK,CAAC,oCAAoC;EUoD/D,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,KAAK,GACf;;AClED,AAAA,WAAW,CAAC;EAEV,UAAU,EAAE,mCAAmC;EAC/C,aAAa,EZ6DC,GAAG;EY5DjB,OAAO,EAAE,YAAY;EACrB,MAAM,EZyFM,KAAK;EYxFjB,iBAAiB,EZ6DL,IAAI;EY5DhB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI,GAsKZ;EA9KD,AZwIE,WYxIS,CZwIT,oBAAoB,CAAC;IACnB,eAAe,EAAE,WAAW;IAC5B,gBAAgB,EAAE,sCAAsC;IACxD,gBAAgB,EAAE,4CAA4C;IAC9D,mBAAmB,EAAE,GAAG;IACxB,MAAM,ECnIO,GAAG,CAAC,KAAK,CAAC,kCAAkC;IDoIzD,aAAa,EAAE,IAAI;IACnB,UAAU,EAlCkB,CAAC,CAAC,GAAG,CA/F3B,qBAAO;IAkIb,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,gCAAgC;IACtC,MAAM,EAtCiB,IAAI;IAuC3B,gBAAgB,EAAI,OAA6B;IACjD,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAI,OAA6B;IACpC,SAAS,EAAE,WAAW;IACtB,mBAAmB,EAAE,KAAK;IAC1B,mBAAmB,EAAE,kBAAkB;IACvC,KAAK,EA9CkB,IAAI,GAoD5B;IYhKH,AZwIE,WYxIS,CZwIT,oBAAoB,AAoBnB,SAAY,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE;MAC1B,OAAO,EAAE,CAAC;MACV,SAAS,EAAE,QAAQ,GACpB;EY/JL,AAUE,WAVS,AAUT,YAAa,CAAC;IACZ,UAAU,EAAE,WAAW,GAUxB;IArBH,AAaI,WAbO,AAUT,YAAa,CAGX,KAAK,CAAC;MACJ,UAAU,EAAE,KAAK,CXFJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,GWG5D;IAfL,AAiBI,WAjBO,AAUT,YAAa,CAOX,yBAAyB;IAjB7B,AAkBI,WAlBO,AAUT,YAAa,CAQX,aAAa,CAAC;MACZ,OAAO,EAAE,IAAI,GACd;EApBL,AAuBE,WAvBS,CAuBT,KAAK,CAAC;IACJ,aAAa,EZwCD,GAAG;IYvCf,UAAU,EAAE,yBAAyB;IACrC,MAAM,EAAE,IAAI,GACb;EA3BH,AA6BI,WA7BO,GA6BP,CAAC,CAAC;IACF,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,IAAI,GAWZ;IA9CH,AAsCM,WAtCK,GA6BP,CAAC,AAQD,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EACxB,KAAK,CAAC;MZ6FV,UAAU,EClHK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;MDmHhE,UAAU,EAAE,gBAAgB,GY5FvB;IAxCP,AA0CM,WA1CK,GA6BP,CAAC,AAQD,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAKxB,WAAW,CAAC;MACV,KAAK,EAAE,gCAAgC,GACxC;EA5CP,AAgDE,WAhDS,AAgDT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EAAE;IZmFtD,UAAU,EClHK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;IDmHhE,UAAU,EAAE,gBAAgB;IYjF1B,OAAO,EAAE,IAAI,GAad;IAhEH,AZoKE,WYpKS,AAgDT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EZoHpD,oBAAoB,CAAC;MACnB,OAAO,EAAE,CAAC;MACV,SAAS,EAAE,QAAQ,GACpB;IYvKH,AAqDI,WArDO,AAgDT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EAKlD,WAAW,CAAC;MACV,KAAK,EAAE,gCAAgC,GACxC;IAvDL,AAyDiB,WAzDN,AAgDT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EASlD,UAAU,GAAG,eAAe,CAAC;MAC3B,OAAO,EAAE,IAAI,GACd;IA3DL,AA6DI,WA7DO,AAgDT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EAalD,eAAe,AAAA,UAAU,CAAC;MACxB,OAAO,EAAE,KAAK,GACf;EA/DL,AAkEE,WAlES,CAkET,yBAAyB,CAAC;IACxB,gBAAgB,EZ3DV,OAAO;IY4Db,aAAa,EZJD,GAAG,CAAH,GAAG,CYI8B,CAAC,CAAC,CAAC;IAChD,MAAM,EZ0BkB,KAAK;IYzB7B,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,QAAQ,GA2BnB;KAzBC,AAAA,AAPF,qBAOG,AAAA,EAzEL,WAAW,CAkET,yBAAyB,CAOG;MACxB,gBAAgB,EZ/DZ,OAAO,GYgEZ;IA3EL,AAkEE,WAlES,CAkET,yBAAyB,AAWvB,OAAQ,CAAC;MACP,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,iCAAiC;MAC1D,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,EAAE;MACX,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,IAAI,GACZ;IAnFL,AAqFI,WArFO,CAkET,yBAAyB,CAmBvB,mBAAmB,CAAC;MAClB,mBAAmB,EAAE,MAAM;MAC3B,iBAAiB,EAAE,SAAS;MAC5B,eAAe,EAAE,KAAK;MACtB,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,OAAO,CAAC,EAAE,CZ7BZ,8BAA8B;MY8BxC,KAAK,EAAE,IAAI,GAKZ;MAjGL,AAqFI,WArFO,CAkET,yBAAyB,CAmBvB,mBAAmB,AASjB,OAAQ,CAAC;QACP,OAAO,EAAE,CAAC,GACX;EAhGP,AAoGE,WApGS,CAoGT,aAAa,CAAC;IACZ,OAAO,EAAE,cAAc,GACxB;EAtGH,AAwGE,WAxGS,CAwGT,UAAU,CAAC;IACT,UAAU,EAAE,IAA+C;IAC3D,QAAQ,EAAE,MAAM,GAejB;IAzHH,AAwGE,WAxGS,CAwGT,UAAU,AAIR,aAAc,EA5GlB,AAwGE,WAxGS,CAwGT,UAAU,AAKR,WAAY,CAAC;MACX,UAAU,EAAE,IAA+C,GAC5D;IA/GL,AAwGE,WAxGS,CAwGT,UAAU,AASR,aAAc,AAAA,WAAW,CAAC;MACxB,UAAU,EAAE,KAA+C,GAC5D;IAnHL,AAqH2B,WArHhB,CAwGT,UAAU,AAaR,IAAM,CAAA,AAAA,eAAe,EAAE,WAAW,CAAC;MACjC,UAAU,EAAE,IAA0B;MACtC,QAAQ,EAAE,MAAM,GACjB;EAxHL,AA2HE,WA3HS,CA2HT,eAAe,CAAC;IACd,KAAK,EAAE,kCAAkC;IACzC,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,MAAM;IAChB,cAAc,EAAE,GAAG;IACnB,aAAa,EAAE,QAAQ;IACvB,cAAc,EAAE,SAAS;IACzB,WAAW,EAAE,MAAM,GACpB;EAnIH,AAqIE,WArIS,CAqIT,eAAe,AAAA,UAAU,CAAC;IAAE,OAAO,EAAE,IAAI,GAAK;EArIhD,AAuIE,WAvIS,CAuIT,WAAW,CAAC;IACV,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;IAChB,WAAW,EZzCS,IAAI;IY0CxB,MAAM,EAAE,CAAC,CAAC,CAAC,CZ3CK,GAAG;IY4CnB,SAAS,EAAE,UAAU,GACtB;EA7IH,AA+IE,WA/IS,CA+IT,iBAAiB,CAAC;IAChB,SAAS,EAAE,IAAI;IACf,WAAW,EZhDS,IAAI;IYiDxB,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,UAAU,GACtB;EArJH,AAuJE,WAvJS,CAuJT,aAAa,CAAC;IACZ,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,kCAAkC;IACzC,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,kBAAkB,EAAE,CAAC;IACrB,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EAAE,QAAQ,GACnB;EA/JH,AAiKE,WAjKS,CAiKT,kBAAkB,CAAC;IACjB,IAAI,EAAE,kCAAkC;IACxC,MAAM,EAAE,IAAI;IACZ,iBAAiB,EAAE,GAAG,GACvB;EArKH,AAuKE,WAvKS,CAuKT,mBAAmB,CAAC;IAClB,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,MAAM;IAChB,aAAa,EAAE,QAAQ;IACvB,WAAW,EAAE,MAAM,GACpB;;AAMC,MAAM,EAAE,SAAS,EAAE,MAAM;EAH7B,AACE,aADW,CACX,WAAW,CAAC;IAIR,MAAM,EZjFQ,KAAK,GY0HtB;IA9CH,AAOM,aAPO,CACX,WAAW,CAMP,yBAAyB,CAAC;MACxB,MAAM,EZnFoB,KAAK,GYoFhC;IATP,AAWM,aAXO,CACX,WAAW,CAUP,aAAa,CAAC;MACZ,OAAO,EAAE,cAAc,GACxB;IAbP,AAeM,aAfO,CACX,WAAW,CAcP,UAAU,CAAC;MACT,UAAU,EAAE,KAAqC,GAClD;IAjBP,AAmBM,aAnBO,CACX,WAAW,CAkBP,eAAe,CAAC;MACd,SAAS,EAAE,IAAI;MACf,cAAc,EAAE,GAAG,GACpB;IAtBP,AAwBM,aAxBO,CACX,WAAW,CAuBP,WAAW,CAAC;MACV,SAAS,EAAE,IAAI;MACf,WAAW,EAtBC,IAAI;MAuBhB,aAAa,EAAE,CAAC,GACjB;IA5BP,AA+BQ,aA/BK,CACX,WAAW,CA6BP,UAAU,AAAA,IAAK,CAAA,AAAA,eAAe,EAC5B,WAAW,CAAC;MACV,UAAU,EAAE,IAAgB,GAC7B;IAjCT,AAoCM,aApCO,CACX,WAAW,CAmCP,iBAAiB,CAAC;MAChB,SAAS,EAAE,IAAI;MACf,WAAW,EAlCC,IAAI,GAmCjB;IAvCP,AAyCM,aAzCO,CACX,WAAW,CAwCP,aAAa,CAAC;MACZ,MAAM,EAAE,GAAG;MACX,SAAS,EAAE,IAAI,GAChB;;AAKP,AAIE,cAJY,CAIZ,WAAW,CAAC;EACV,MAAM,EZ/HY,KAAK,GY6MxB;EAnFH,AAOI,cAPU,CAIZ,WAAW,CAGT,yBAAyB,CAAC;IACxB,MAAM,EZjIwB,KAAK,GYkIpC;EATL,AAWI,cAXU,CAIZ,WAAW,CAOT,aAAa,CAAC;IACZ,OAAO,EAXoB,IAAI,CAWQ,IAAI,GAC5C;EAbL,AAeI,cAfU,CAIZ,WAAW,CAWT,eAAe,CAAC;IACd,WAAW,EAAE,IAAI,GAClB;EAjBL,AAoBM,cApBQ,CAIZ,WAAW,CAeT,UAAU,CACR,WAAW;EApBjB,AAqB6B,cArBf,CAIZ,WAAW,CAeT,UAAU,AAER,IAAM,CAAA,AAAA,eAAe,EAAE,WAAW,CAAC;IACjC,SAAS,EApBQ,IAAI;IAqBrB,WAAW,EAAE,IAAyB;IACtC,UAAU,EAAE,IAAyB;IACrC,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,OAAO;IAChB,aAAa,EAAE,QAAQ;IACvB,WAAW,EAAE,MAAM,GACpB;EA7BP,AAgCI,cAhCU,CAIZ,WAAW,CA4BT,iBAAiB,CAAC;IAChB,OAAO,EAAE,IAAI,GACd;EAlCL,AAoCI,cApCU,CAIZ,WAAW,CAgCT,aAAa,CAAC;IAGZ,gBAAgB,EAAE,mCAAmC;IACrD,aAAa,EAAE,IAAmB;IAClC,SAAS,EAAE,oBAAkI;IAC7I,MAAM,EAJW,IAAI;IAKrB,KAAK,EALY,IAAI;IAMrB,OAAO,EAAE,GAAkC;IAC3C,GAAG,EAAE,IAA+C;IACpD,gBAAgB,EAAE,IAAI;IACtB,kBAAkB,EAAE,IAAI,GAmCzB;IAlFL,AAoCI,cApCU,CAIZ,WAAW,CAgCT,aAAa,AAaX,OAAQ,CAAC;MACP,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,iCAAiC;MACnD,aAAa,EAAE,CAAC;MAChB,aAAa,EAAE,IAAyB,CAAC,IAAyB,CAAC,CAAC,CAAC,CAAC;MACtE,OAAO,EAAE,EAAE;MACX,QAAQ,EAAE,QAAQ;MAClB,MAAM,EAAE,IAAyB;MACjC,KAAK,EAAE,IAAmB;MAC1B,GAAG,EAAE,IAAI;MACT,IAAI,EAAE,IAAI,GACX;IA3DP,AA6DM,cA7DQ,CAIZ,WAAW,CAgCT,aAAa,CAyBX,kBAAkB,CAAC;MACjB,iBAAiB,EAAE,CAAC;MACpB,MAAM,EA1BI,IAAI;MA2Bd,KAAK,EA3BK,IAAI,GAwCf;MA7EP,AA6DM,cA7DQ,CAIZ,WAAW,CAgCT,aAAa,CAyBX,kBAAkB,AAKhB,oBAAqB,CAAC;QACpB,IAAI,EZlPO,OAAO,GYmPnB;MApET,AA6DM,cA7DQ,CAIZ,WAAW,CAgCT,aAAa,CAyBX,kBAAkB,AAShB,cAAe,CAAC;QACd,IAAI,EZrPO,OAAO,GYsPnB;MAxET,AA6DM,cA7DQ,CAIZ,WAAW,CAgCT,aAAa,CAyBX,kBAAkB,AAahB,YAAa,CAAC;QACZ,IAAI,EZxPK,OAAO,GYyPjB;IA5ET,AA+EM,cA/EQ,CAIZ,WAAW,CAgCT,aAAa,CA2CX,mBAAmB,CAAC;MAClB,OAAO,EAAE,IAAI,GACd;;AAIL,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,MAAM;EArFvC,AAsFI,cAtFU,CAsFV,gBAAgB,CAAC;IACf,OAAO,EAAE,IAAI,GACd;;ACzTL,AAAA,2BAA2B,CAAC;EAC1B,KAAK,EAAE,oCAAoC;EAC3C,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,aAAa,EbkEG,IAAoC;EajEpD,UAAU,EAAE,MAAM,GA0BnB;EAxBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAP1B,AAAA,2BAA2B,CAAC;MAQxB,OAAO,EAAE,IAAI;MACb,eAAe,EAAE,aAAa;MAC9B,UAAU,EAAE,IAAI,GAqBnB;EA/BD,AAaE,2BAbyB,CAazB,CAAC,CAAC;IACA,MAAM,EAAE,CAAC,GAMV;IALC,MAAM,EAAE,SAAS,EAAE,KAAK;MAf5B,AAaE,2BAbyB,CAazB,CAAC,CAAC;QAGE,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,aAAa,GAEjC;EApBH,AAsBE,2BAtByB,CAsBzB,KAAK,CAAC;IACJ,OAAO,EAAE,IAAI,GAOd;IANC,MAAM,EAAE,SAAS,EAAE,KAAK;MAxB5B,AAsBE,2BAtByB,CAsBzB,KAAK,CAAC;QAGF,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,kCAAkC;QACxC,iBAAiB,EAAE,GAAG,GAEzB;;AAGH,AAAA,yBAAyB,CAAC;EACxB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,SAAS,EAAE,MAAM,GAelB;EAbC,MAAM,EAAE,SAAS,EAAE,KAAK;IAL1B,AAAA,yBAAyB,CAAC;MAMtB,OAAO,EAAE,IAAI;MACb,eAAe,EAAE,aAAa;MAC9B,OAAO,EAAE,CAAC,GAUb;EAlBD,AAWE,yBAXuB,CAWvB,MAAM,CAAC;IACL,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC;IACT,mBAAmB,EAAE,IAAI;IACzB,OAAO,EAAE,MAAM,GAChB;;AClDH,AAAA,oBAAoB,CAAC;EACnB,OAAO,EdoEkB,IAAI,CADF,IAAI;EclE/B,gBAAgB,EAAE,KAAK;EACvB,mBAAmB,EAAE,KAAK;EAC1B,mBAAmB,EAAE,gBAAgB,GAiKtC;EArKD,AAME,oBANkB,CAMlB,cAAc,CAAC;IACb,SAAS,EdoFa,IAAI;IcnF1B,WAAW,EAAE,IAAI;IACjB,MAAM,EAAE,CAAC;IACT,cAAc,EAAE,SAAS,GAmB1B;IA7BH,AAYI,oBAZgB,CAMlB,cAAc,CAMZ,IAAI,CAAC;MACH,KAAK,EAAE,uCAAuC;MAC9C,OAAO,EAAE,YAAY;MACrB,IAAI,EAAE,uCAAuC;MAC7C,cAAc,EAAE,MAAM,GACvB;IAjBL,AAmBI,oBAnBgB,CAMlB,cAAc,CAaZ,aAAa,CAAC;MACZ,MAAM,EAAE,OAAO;MACf,cAAc,EAAE,GAAG;MACnB,WAAW,EAAE,MAAM,GACpB;IAvBL,AAyBI,oBAzBgB,CAMlB,cAAc,CAmBZ,kBAAkB,CAAC;MACjB,mBAAmB,EAAE,GAAG;MACxB,UAAU,EAAE,IAAI,GACjB;EA5BL,AA+BE,oBA/BkB,CA+BlB,gBAAgB,CAAC;IACf,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,QAAQ,GA6BnB;IA/DH,AAoCI,oBApCgB,CA+BlB,gBAAgB,CAKd,oBAAoB,CAAC;MACnB,UAAU,EAAE,4CAA4C,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM;MAC/E,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,OAAO;MACf,IAAI,EAAE,uCAAuC;MAC7C,MAAM,EAAE,IAAI;MACZ,gBAAgB,EAAE,CAAC;MACnB,OAAO,EAAE,CAAC;MACV,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,mBAAmB,EAAE,KAAK;MAC1B,mBAAmB,EAAE,OAAO;MAC5B,KAAK,Ed4DgB,IAAI,GctD1B;MAtDL,AAoCI,oBApCgB,CA+BlB,gBAAgB,CAKd,oBAAoB,AAclB,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE;QAClC,IAAI,EdrCF,OAAO;QcsCT,OAAO,EAAE,CAAC,GACX;IArDP,AAwDI,oBAxDgB,CA+BlB,gBAAgB,CAyBd,aAAa,CAAC;MACZ,GAAG,EAAE,IAAI,GACV;IAED,MAAM,EAAE,SAAS,EAAE,MAAM;MA5D7B,AdoLE,oBcpLkB,CA+BlB,gBAAgB,CdqJhB,aAAa,CAAC;QACZ,iBAAiB,EAAE,GAAG;QACtB,mBAAmB,EAAE,IAAI;QACzB,gBAAgB,EAAE,CAAC;QACnB,kBAAkB,EAAE,IAAI,GACzB;EczLH,AAoEM,oBApEc,AAiElB,MAAO,CAEL,gBAAgB,CACd,oBAAoB,EApE1B,AAoEM,oBApEc,AAkElB,OAAQ,CACN,gBAAgB,CACd,oBAAoB,CAAC;IACnB,OAAO,EAAE,CAAC,GACX;EAtEP,AA0EE,oBA1EkB,AA0ElB,OAAQ,CAAC;IACP,UAAU,EAAE,iCAAiC;IAC7C,aAAa,EAAE,GAAG,GAOnB;IAnFH,AA+EM,oBA/Ec,AA0ElB,OAAQ,CAIN,gBAAgB,CACd,oBAAoB,CAAC;MACnB,IAAI,EAAE,8CAA8C,GACrD;EAjFP,AAqFE,oBArFkB,CAqFlB,mBAAmB,CAAC;IAIlB,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,IAAI;IACf,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,IAAI,GAoCd;IAjIH,AA+FI,oBA/FgB,CAqFlB,mBAAmB,CAUjB,wBAAwB,CAAC;MACvB,OAAO,EAAE,YAAY;MACrB,KAAK,EAAE,kBAAiC,GAKzC;MAHC,MAAM,EAAE,SAAS,EAAE,KAAK;QAnG9B,AA+FI,oBA/FgB,CAqFlB,mBAAmB,CAUjB,wBAAwB,CAAC;UAKrB,KAAK,EdPA,KAA6B,GcSrC;IAtGL,AAwGI,oBAxGgB,CAqFlB,mBAAmB,CAmBjB,CAAC,CAAC;MACA,KAAK,EAAE,gCAAgC;MACvC,WAAW,EAAE,IAAI;MACjB,YAAY,EAAE,GAAG,GAClB;IA5GL,AA8GI,oBA9GgB,CAqFlB,mBAAmB,CAyBjB,MAAM,CAAC;MACL,UAAU,EAAE,oCAAoC;MAChD,MAAM,EAAE,GAAG,CAAC,KAAK,CdvGb,OAAO;McwGX,aAAa,EAAE,GAAG;MAClB,MAAM,EAAE,OAAO;MACf,SAAS,EA7BQ,KAAK;MA8BtB,UAAU,EA7BQ,IAAI;MA8BtB,gBAAgB,EAAE,CAAC;MACnB,UAAU,EAAE,MAAM,GAUnB;MAhIL,AA8GI,oBA9GgB,CAqFlB,mBAAmB,CAyBjB,MAAM,AAUJ,MAAO,AAAA,IAAK,CAAA,AAAA,QAAQ,EAAE;QACpB,UAAU,EbxGD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;QayG1D,UAAU,EAAE,gBAAgB,GAC7B;MAED,MAAM,EAAE,SAAS,EAAE,KAAK;QA7H9B,AA8GI,oBA9GgB,CAqFlB,mBAAmB,CAyBjB,MAAM,CAAC;UAgBH,QAAQ,EAAE,QAAQ,GAErB;EAhIL,AAmIE,oBAnIkB,CAmIlB,sBAAsB,CAAC;IACrB,MAAM,EdtCI,KAAK,GcuChB;EArIH,AAuIE,oBAvIkB,CAuIlB,aAAa,CAAC;IAGZ,MAAM,EAAE,CAAC,CADY,IAAG;IAExB,OAAO,EAAE,CAAC,CAFW,GAAG,GAQzB;IAjJH,AAuIE,oBAvIkB,CAuIlB,aAAa,AAMX,UAAW,CAAC;MACV,QAAQ,EAAE,MAAM;MAChB,cAAc,EAAE,IAAI,GACrB;EAhJL,AAqJM,oBArJc,AAmJlB,kBAAmB,CACjB,cAAc,CACZ,kBAAkB,CAAC;IACjB,UAAU,EAAE,SAAS,CAAC,IAAI,CdxFlB,8BAA8B,GcyFvC;EAvJP,AA0JI,oBA1JgB,AAmJlB,kBAAmB,CAOjB,aAAa,CAAC;IACZ,UAAU,EAAE,UAAU,CAAC,IAAI,Cd7FjB,8BAA8B,Gc8FzC;EA5JL,AAgKI,oBAhKgB,AA+JlB,UAAW,CACT,aAAa,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,MAAM,GACjB;;AClKL,AAAA,eAAe,CAAC;EAGd,SAAS,EAAE,KAAK;EAChB,MAAM,EAAE,MAAM;EACd,SAAS,EAAE,IAAI;EAEf,OAAO,EAAE,OAAO;EAChB,OAAO,EAAE,QAAQ,GAoElB;EA5ED,AAUE,eAVa,CAUb,EAAE,CAAC;IACD,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,IAAI,GAChB;EAbH,AAeE,eAfa,CAeb,KAAK,CAAC;IACJ,eAAe,EAAE,QAAQ;IACzB,KAAK,EAAE,IAAI,GACZ;EAlBH,AAqBkB,eArBH,CAoBb,aAAa,AACX,YAAa,CAAC,EAAE,CAAC;IACf,UAAU,EAAE,GAAG,CAAC,KAAK,CArBV,oCAAoC,GAsBhD;EAvBL,AAyBI,eAzBW,CAoBb,aAAa,CAKX,EAAE,CAAC;IACD,cAAc,EAAE,GAAG;IACnB,aAAa,EAAE,GAAG,CAAC,KAAK,CA1Bb,oCAAoC;IA2B/C,OAAO,EAAE,GAAG,GASb;IArCL,AAyBI,eAzBW,CAoBb,aAAa,CAKX,EAAE,AAKA,YAAa,CAAC;MACZ,WAAW,EAAE,GAAG,CAAC,KAAK,CA9Bb,oCAAoC,GA+B9C;IAhCP,AAyBI,eAzBW,CAoBb,aAAa,CAKX,EAAE,AASA,WAAY,CAAC;MACX,YAAY,EAAE,GAAG,CAAC,KAAK,CAlCd,oCAAoC,GAmC9C;EApCP,AAwCkB,eAxCH,CAoBb,aAAa,AAmBX,QAAS,CACP,WAAW,CAAC,IAAI,CAAC;IACf,UAAU,EfzBN,OAAO;Ie0BX,OAAO,EAAE,OAAO,GAKjB;KAHC,AAAA,AAJU,qBAIT,AAAA,EA5CT,eAAe,CAoBb,aAAa,AAmBX,QAAS,CACP,WAAW,CAAC,IAAI,CAIY;MACxB,KAAK,EfRP,IAAI,GeSH;EA9CT,AAmDM,eAnDS,CAoBb,aAAa,AA8BX,QAAS,CACP,WAAW;EAnDjB,AAoDM,eApDS,CAoBb,aAAa,AA8BX,QAAS,CAEP,gBAAgB,CAAC;IACf,OAAO,EAAE,GAAG,GACb;EAtDP,AAwDM,eAxDS,CAoBb,aAAa,AA8BX,QAAS,CAMP,WAAW,CAAC;IACV,OAAO,EAAE,GAAG,GACb;EA1DP,AA6DI,eA7DW,CAoBb,aAAa,CAyCX,WAAW,CAAC;IACV,WAAW,EA5DH,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,SAAS;IA6DxG,SAAS,EAAE,IAAI,GAChB;EAhEL,AAmEE,eAnEa,CAmEb,GAAG,CAAC;IACF,UAAU,EAAE,sCAAsC;IAClD,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,IAAI;IACd,WAAW,EAxED,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,SAAS,GAyE3G;;AC5EH,AAAA,eAAe,CAAC;EACd,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,oCAAoC;EACtD,gBAAgB,EAAE,oCAAoC;EACtD,WAAW,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ;EACjB,mBAAmB,EAAE,IAAI;EACzB,KAAK,EAAE,OAAO,GAKf;EAHC,AAAM,KAAD,CAVP,eAAe,CAUL;IACN,mBAAmB,EAAE,IAAI,GAC1B;;ACZH,AAAA,qBAAqB,CAAC;EACpB,QAAQ,EAAE,KAAK;EACf,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,CAAC;EACR,gBAAgB,EAAE,uCAAuC;EACzD,KAAK,EAAE,gCAAgC;EACvC,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,qCAAqC;EAC3D,UAAU,EhBQO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDJpB,qBAAO;EiBHf,OAAO,EAAE,IAAI;EACb,WAAW,EAAE,MAAM,GA6CpB;EAzDD,AAcE,qBAdmB,CAcnB,aAAa,CAAC;IACZ,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,IAAI,CjBkDY,IAAI;IiB/C7B,kBAAkB,EAAE,IAAI;IAKxB,SAAS,EjBsDa,KAAmE,GiBlD1F;IARC,MAAM,EAAE,SAAS,EAAE,KAAK;MAtB5B,AAcE,qBAdmB,CAcnB,aAAa,CAAC;QASV,kBAAkB,EjB6CK,IAAI,GiBtC9B;IAHC,MAAM,EAAE,SAAS,EAAE,MAAM;MA3B7B,AAcE,qBAdmB,CAcnB,aAAa,CAAC;QAcV,SAAS,EjBqDY,MAAmE,GiBnD3F;EA9BH,AAgCE,qBAhCmB,CAgCnB,YAAY,CAAC;IACX,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,0EAA0E;IAC5F,uBAAuB,EAAE,IAAI;IAC7B,IAAI,EAAE,gCAAgC;IACtC,OAAO,EAAE,GAAG;IACZ,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,OAAO,GAKhB;IAHC,MAAM,EAAE,SAAS,EAAE,KAAK;MAjD5B,AAgCE,qBAhCmB,CAgCnB,YAAY,CAAC;QAkBT,gBAAgB,EAAE,IAAI,GAEzB;EApDH,AAsDU,qBAtDW,AAsDnB,MAAO,CAAC,YAAY,CAAC;IACnB,OAAO,EAAE,KAAK,GACf;;ACxDH,AACE,gBADc,AACd,WAAY,CAAC;EACX,QAAQ,EAAE,MAAM,GACjB;;AAGH,AAAA,kBAAkB,CAAC;EACjB,UAAU,ElBwCJ,IAAI;EkBvCV,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,IAAI,GAKd;EAbD,AAUE,kBAVgB,AAUhB,OAAQ,CAAC;IACP,OAAO,EAAE,KAAK,GACf;;AAGH,AAAA,kBAAkB,CAAC;EACjB,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;EACb,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,iBAAiB;EACtB,IAAI,EAAE,iBAAiB;EACvB,UAAU,ElBoBJ,IAAI;EkBnBV,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,ClBUlB,kBAAI;EkBTV,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,IAAI,GA8Ed;EA1EC,MAAM,EAAC,SAAS,EAAE,KAAK;IAdzB,AAAA,kBAAkB,CAAC;MAef,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,GAAG,EAAE,CAAC;MACN,IAAI,EAAE,CAAC;MACP,UAAU,EAAE,IAAI;MAChB,aAAa,EAAE,CAAC,GAoEnB;EAhEC,MAAM,EAAC,SAAS,EAAE,KAAK,OAAO,UAAU,EAAE,KAAK;IAxBjD,AAAA,kBAAkB,CAAC;MAyBf,UAAU,EAAE,MAAM,GA+DrB;EA3DC,MAAM,EAAC,SAAS,EAAE,KAAK,OAAO,UAAU,EAAE,KAAK;IA7BjD,AAAA,kBAAkB,CAAC;MA8Bf,UAAU,EAAE,MAAM,GA0DrB;EAxFD,AAiCE,kBAjCgB,AAiChB,OAAQ,CAAC;IACP,OAAO,EAAE,KAAK,GACf;EAnCH,AAqCE,kBArCgB,CAqChB,EAAE,CAAC;IACD,KAAK,ElBhDC,OAAO;IkBiDb,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,OAAO,GASxB;IAPC,MAAM,EAAC,SAAS,EAAE,KAAK;MA9C3B,AAqCE,kBArCgB,CAqChB,EAAE,CAAC;QAUC,UAAU,EAAE,KAAK,GAMpB;IAHC,MAAM,EAAC,SAAS,EAAE,KAAK;MAlD3B,AAqCE,kBArCgB,CAqChB,EAAE,CAAC;QAcC,UAAU,EAAE,IAAI,GAEnB;EArDH,AAuDE,kBAvDgB,CAuDhB,OAAO,CAAC;IACN,UAAU,EAAE,GAAG,CAAC,KAAK,ClBrEf,OAAO;IkBsEb,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,MAAM;IAClB,gBAAgB,ElBpCZ,IAAI,GkB6DT;IAtBC,MAAM,EAAC,SAAS,EAAE,KAAK,OAAO,UAAU,EAAE,KAAK;MAjEnD,AAuDE,kBAvDgB,CAuDhB,OAAO,CAAC;QAWJ,QAAQ,EAAE,MAAM,GAqBnB;IAjBC,MAAM,EAAC,SAAS,EAAE,KAAK,OAAO,UAAU,EAAE,KAAK;MAtEnD,AAuDE,kBAvDgB,CAuDhB,OAAO,CAAC;QAgBJ,QAAQ,EAAE,MAAM,GAgBnB;IAvFH,AA0EI,kBA1Ec,CAuDhB,OAAO,CAmBL,YAAY,CAAC;MACX,UAAU,EAAE,IAAI;MAChB,KAAK,EAAE,KAAK;MACZ,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,SAAS;MAClB,SAAS,EAAE,IAAI,GAOhB;MAtFL,AA0EI,kBA1Ec,CAuDhB,OAAO,CAmBL,YAAY,AAOV,MAAO,EAjFb,AA0EI,kBA1Ec,CAuDhB,OAAO,CAmBL,YAAY,AAQV,OAAQ,CAAC;QACP,UAAU,EjBvFD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;QiBwF1D,UAAU,EAAE,gBAAgB,GAC7B;;AC1GP,AACE,cADY,AACZ,KAAM,CAAC;EACL,OAAO,EAAE,MAAM,GAChB;;AAHH,AAKE,cALY,CAKZ,MAAM,CAAC;EACL,OAAO,EAAE,MAAM;EACf,SAAS,EAAE,OAAO;EAClB,MAAM,EAAE,CAAC,GACV;;AATH,AAWE,cAXY,CAWZ,UAAU,CAAC;EACT,iBAAiB,EAAE,SAAS;EAC5B,eAAe,EAAE,IAAI;EACrB,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,GAAG;EACf,iBAAiB,EAAE,GAAG;EACtB,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,GAAG,GACpB;;AApBH,AAsBE,cAtBY,CAsBZ,KAAK,CAAC;EACJ,OAAO,EAAE,MAAM;EACf,MAAM,EAAE,CAAC,GACV;;AAzBH,AA2BE,cA3BY,CA2BZ,KAAK,CAAC;EACJ,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,iBAAiB,EAAE,IAAI;EACvB,WAAW,EAAE,CAAC,GACf;;AAhCH,AAkCS,cAlCK,AAkCZ,KAAM,CAAC,KAAK,CAAC;EACX,iBAAiB,EAAE,IAAI,GACxB;;AApCH,AAsCE,cAtCY,CAsCZ,eAAe,CAAC;EACd,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,SAAS,GAC3B;;ACzCH,AAAA,2BAA2B,CAAC;EAC1B,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,IAAI;EACrB,qBAAqB,EAAE,cAAc;EACrC,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI,GASpB;EANC,MAAM,EAAC,SAAS,EAAE,KAAK;IARzB,AAAA,2BAA2B,CAAC;MASxB,qBAAqB,EAAE,IAAI;MAC3B,kBAAkB,EAAE,cAAc;MAClC,YAAY,EAAE,KAAK;MACnB,aAAa,EAAE,KAAK,GAEvB;;AAED,AAAA,kBAAkB,CAAC;EACjB,MAAM,EAAE,KAAK;EACb,UAAU,EAAE,MAAM;EAClB,OAAO,EAAE,IAAI;EACb,WAAW,EAAE,GAAG,GA4IjB;EAzIC,MAAM,EAAC,SAAS,EAAE,KAAK;IAPzB,AAAA,kBAAkB,CAAC;MAQf,MAAM,EAAE,KAAK;MACb,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,IAAI;MACb,aAAa,EAAE,GAAG,CAAC,KAAK,CpBnBlB,OAAO;MoBoBb,OAAO,EAAE,IAAI;MACb,aAAa,EAAE,IAAI,GAmItB;MAhJD,AAeI,kBAfc,AAed,WAAY,CAAC;QACX,MAAM,EAAE,CAAC,GACV;MAjBL,AAmBI,kBAnBc,CAmBd,kBAAkB,CAAC;QACjB,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,IAAI,GAab;QAlCL,AAuBe,kBAvBG,CAmBd,kBAAkB,GAId,IAAI,GAAG,EAAE,CAAC;UACV,UAAU,EAAE,CAAC;UACb,aAAa,EAAE,GAAG;UAClB,WAAW,EAAE,GAAG,GACjB;QA3BP,AA6Be,kBA7BG,CAmBd,kBAAkB,GAUd,IAAI,GAAG,CAAC,CAAC;UACT,UAAU,EAAE,CAAC;UACb,WAAW,EAAE,IAAI;UACjB,SAAS,EAAE,IAAI,GAChB;EAIL,MAAM,EAAC,SAAS,EAAE,KAAK;IArCzB,AAAA,kBAAkB,CAAC;MAsCf,MAAM,EAAE,KAAK,GA0GhB;EAhJD,AAyCE,kBAzCgB,CAyChB,uBAAuB,CAAC;IACtB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,eAAe,EAAE,KAAK;IACtB,mBAAmB,EAAE,aAAa;IAClC,iBAAiB,EAAE,SAAS;IAC5B,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,MAAM,GAwBvB;IArBC,MAAM,EAAC,SAAS,EAAE,KAAK;MAnD3B,AAyCE,kBAzCgB,CAyChB,uBAAuB,CAAC;QAWpB,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI;QACf,eAAe,EAAE,IAAI,GAkBxB;IAxEH,AAyCE,kBAzCgB,CAyChB,uBAAuB,AAgBrB,OAAQ,CAAC;MACP,gBAAgB,EAAE,gFAAgF,GACnG;IA3DL,AAyCE,kBAzCgB,CAyChB,uBAAuB,AAoBrB,gBAAiB,CAAC;MAChB,gBAAgB,EAAE,yFAAyF,GAC5G;IA/DL,AAyCE,kBAzCgB,CAyChB,uBAAuB,AAwBrB,YAAa,CAAC;MACZ,gBAAgB,EAAE,qFAAqF,GACxG;IAnEL,AAyCE,kBAzCgB,CAyChB,uBAAuB,AA4BrB,KAAM,CAAC;MACL,gBAAgB,EAAE,8EAA8E,GACjG;EAvEL,AA0EE,kBA1EgB,CA0EhB,kBAAkB,CAAC;IACjB,MAAM,EAAE,KAAK,GAoBd;IA/FH,AA6Ea,kBA7EK,CA0EhB,kBAAkB,GAGd,IAAI,GAAG,EAAE,CAAC;MACV,KAAK,EpBhFD,OAAO;MoBiFX,aAAa,EAAE,GAAG;MAClB,WAAW,EAAE,GAAG,GACjB;IAjFL,AAmFa,kBAnFK,CA0EhB,kBAAkB,GASd,IAAI,GAAG,CAAC,CAAC;MACT,KAAK,EpBzFD,OAAO;MoB0FX,UAAU,EAAE,CAAC;MACb,MAAM,EAAE,KAAK;MACb,aAAa,EAAE,IAAI;MACnB,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI,GAKlB;MAHC,MAAM,EAAC,SAAS,EAAE,KAAK;QA3F7B,AAmFa,kBAnFK,CA0EhB,kBAAkB,GASd,IAAI,GAAG,CAAC,CAAC;UASP,aAAa,EAAE,CAAC,GAEnB;EA9FL,AAiGE,kBAjGgB,CAiGhB,iBAAiB,CAAC;IAChB,gBAAgB,EpBpGV,qBAAO;IoBqGb,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,IAAI,GAmBhB;IAhBC,MAAM,EAAC,SAAS,EAAE,KAAK;MA3G3B,AAiGE,kBAjGgB,CAiGhB,iBAAiB,CAAC;QAWd,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK,GAatB;IAVC,MAAM,EAAC,SAAS,EAAE,KAAK;MAjH3B,AAiGE,kBAjGgB,CAiGhB,iBAAiB,CAAC;QAiBd,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI,GAQnB;IA3HH,AAiGE,kBAjGgB,CAiGhB,iBAAiB,AAqBf,MAAO,EAtHX,AAiGE,kBAjGgB,CAiGhB,iBAAiB,AAsBf,OAAQ,CAAC;MACP,UAAU,EnBvHC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;MmBwH5D,UAAU,EAAE,gBAAgB,GAC7B;EA1HL,AA8HE,kBA9HgB,AA8HhB,QAAS,CAAC;IACR,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,QAAQ;IAClB,gBAAgB,EpB3IV,OAAO;IoB4Ib,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,KAAK,GAMnB;IAHC,MAAM,EAAC,SAAS,EAAE,KAAK;MAxI3B,AA8HE,kBA9HgB,AA8HhB,QAAS,CAAC;QAWN,OAAO,EAAE,IAAI,GAEhB;EA3IH,AA6IE,kBA7IgB,AA6IhB,WAAY,AAAA,QAAQ,CAAC;IACnB,OAAO,EAAE,IAAI,GACd"
+	"mappings": ";AAAA,6BAA6B;CAM7B,AAAA,AAAA,qBAAC,AAAA,EAAuB;EACtB,uBAAuB,EAAE,SAAS,GACnC;;AERD,AAAA,IAAI,CAAC;EACH,UAAU,EAAE,UAAU,GACvB;;AAED,AAAA,CAAC;AACD,AAAA,CAAC,AAAA,QAAQ;AACT,AAAA,CAAC,AAAA,OAAO,CAAC;EACP,UAAU,EAAE,OAAO,GACpB;;AAED,AAAA,CAAC,AAAA,kBAAkB,CAAC;EAClB,MAAM,EAAE,CAAC,GACV;;AAED,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,CAAC,GACV;;AAED,AAAA,MAAM;AACN,AAAA,KAAK,CAAC;EACJ,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,OAAO;EACpB,SAAS,EAAE,OAAO,GACnB;;CAED,AAAA,AAAA,MAAC,AAAA,EAAQ;EACP,OAAO,EAAE,eAAe,GACzB;;AEPD,AAAA,IAAI,CAAC;EAEH,yBAAyB,EDjBjB,OAAO;ECkBf,6BAA6B,EDfrB,OAAO;ECgBf,+BAA+B,EDjBvB,OAAO;ECkBf,6BAA6B,EDvBrB,OAAO;ECwBf,+BAA+B,EAAE,OAAO;EACxC,6BAA6B,EDpBrB,wBAAO;ECqBf,4BAA4B,EDtBpB,OAAO;ECuBf,2BAA2B,EDhBnB,qBAAO;ECiBf,6BAA6B,EDjBrB,qBAAO;ECkBf,4BAA4B,EDxBpB,OAAO;ECyBf,+BAA+B,EDKzB,kBAAI;ECJV,2BAA2B,ED/BnB,OAAO;ECgCf,6BAA6B,EDpBrB,OAAO;ECqBf,+BAA+B,EDzBvB,OAAO;EC0Bf,2BAA2B,EDvBnB,OAAO;ECwBf,6BAA6B,ED5BrB,OAAO;EC6Bf,iCAAiC,EDQ3B,IAAI;ECPV,uBAAuB,ED1Bf,qBAAO;ECTf,4BAA4B,EDFpB,OAAO;ECGf,gCAAgC,EALxB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CDET,OAAO,ECFW,CAAC,CAAC,CAAC,CAAC,CAAC,CD0HX,GAAG,CAxHf,qBAAO;ECyCf,qCAAqC,EDtC7B,OAAO;ECuCf,iCAAiC,EDE3B,IAAI;ECCV,oBAAoB,EDDd,IAAI;ECEV,sBAAsB,ED1Cd,wBAAO;EC6Cf,kCAAkC,ED1C1B,OAAO;EC2Cf,sCAAsC,ED3C9B,OAAO;EC4Cf,yCAAyC,EDxCjC,OAAO;EC2Cf,4BAA4B,EAAE,WAAW;EACzC,8BAA8B,EDXxB,IAAI;ECYV,qCAAqC,EDrD7B,OAAO;ECsDf,0BAA0B,ED9ClB,qBAAO;ECiDf,kCAAkC,EDhB5B,IAAI;ECiBV,6BAA6B,EAAE,KAAK,CApDnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC;EAqD/D,6BAA6B,EAAE,OAAO;EAGtC,kCAAkC,ED5D1B,OAAO;EC6Df,8BAA8B,EDtBxB,IAAI;ECuBV,4BAA4B,EDhCtB,kBAAI;ECiCV,oBAAoB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDzDzB,qBAAO;EC4Df,kCAAkC,ED3B5B,IAAI;EC4BV,gCAAgC,EAAE,WAAW,GA0D9C;EAhHD,AAwDE,IAxDE,CAwDF,AAAA,qBAAE,AAAA,EAAuB;IAEvB,yBAAyB,EDlEnB,OAAO;ICmEb,6BAA6B,ED1EvB,wBAAO;IC2Eb,+BAA+B,ED3EzB,wBAAO;IC4Eb,6BAA6B,ED/EvB,OAAO;ICgFb,+BAA+B,EDvEzB,OAAO;ICwEb,6BAA6B,ED9EvB,wBAAO;IC+Eb,4BAA4B,ED/EtB,wBAAO;ICgFb,2BAA2B,EDhFrB,wBAAO;ICiFb,6BAA6B,EDjFvB,wBAAO;ICkFb,4BAA4B,EDlFtB,wBAAO;ICmFb,+BAA+B,EDnFzB,wBAAO;ICoFb,2BAA2B,EDzFrB,OAAO;IC0Fb,6BAA6B,ED1CnB,OAAO;IC2CjB,+BAA+B,EDtFzB,OAAO;ICuFb,2BAA2B,EDvFrB,OAAO;ICwFb,6BAA6B,EDxFvB,wBAAO;ICyFb,iCAAiC,EDnF3B,OAAO;ICoFb,uBAAuB,ED1FjB,wBAAO;ICDf,4BAA4B,EDJpB,OAAO;ICKf,gCAAgC,EALxB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CDAT,OAAO,ECAW,CAAC,CAAC,CAAC,CAAC,CAAC,CD0HX,GAAG,CA1Hf,uBAAO;ICmGb,qCAAqC,EDzF/B,OAAO;IC0Fb,iCAAiC,EDxF3B,OAAO;IC2Fb,oBAAoB,ED3Fd,OAAO;IC4Fb,sBAAsB,ED3FhB,qBAAO;IC8Fb,kCAAkC,EDtG5B,wBAAO;ICuGb,sCAAsC,EDvGhC,wBAAO;ICwGb,yCAAyC,ED/DrC,IAAI;ICkER,4BAA4B,ED3GtB,wBAAO;IC4Gb,8BAA8B,EDtGxB,OAAO;ICuGb,qCAAqC,EDxG/B,OAAO;ICyGb,0BAA0B,ED9GpB,wBAAO;ICiHb,kCAAkC,ED3G5B,OAAO;IC4Gb,6BAA6B,EAAE,IAAI;IACnC,6BAA6B,EDnHvB,wBAAO;ICsHb,kCAAkC,EDjH5B,OAAO;ICkHb,8BAA8B,EDjHxB,OAAO;ICkHb,4BAA4B,EDxHtB,wBAAO;ICyHb,oBAAoB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDjH3B,qBAAO;ICoHb,kCAAkC,EDtH5B,OAAO;ICuHb,gCAAgC,EDpF5B,wBAAI,GCqFT;;ACpIH,AAAA,KAAK,CAAC;EACJ,mBAAmB,EAAE,aAAa;EAClC,iBAAiB,EAAE,SAAS;EAC5B,eAAe,EFsEL,IAAI;EErEd,uBAAuB,EAAE,IAAI;EAC7B,OAAO,EAAE,YAAY;EACrB,IAAI,EAAE,gCAAgC;EACtC,MAAM,EFkEI,IAAI;EEjEd,cAAc,EAAE,MAAM;EACtB,KAAK,EFgEK,IAAI,GE0Gf;EAnLD,AAWE,KAXG,AAWH,YAAa,CAAC;IACZ,iBAAiB,EAAE,GAAG,GACvB;EAbH,AAeE,KAfG,AAeH,kBAAmB,CAAC;IAClB,iBAAiB,EAAE,GAAG,GACvB;EAjBH,AAmBE,KAnBG,AAmBH,oBAAqB,CAAC;IACpB,gBAAgB,EAAE,yCAAyC,GAC5D;EArBH,AAuBE,KAvBG,AAuBH,qBAAsB,CAAC;IACrB,gBAAgB,EAAE,gDAAgD,GACnE;EAzBH,AA2BE,KA3BG,AA2BH,iBAAkB,CAAC;IACjB,IAAI,EAAE,kCAAkC;IACxC,gBAAgB,EAAE,iDAAwC,GAC3D;EA9BH,AAgCE,KAhCG,AAgCH,YAAa,CAAC;IACZ,gBAAgB,EAAE,iDAAwC,GAC3D;EAlCH,AAoCE,KApCG,AAoCH,YAAa,CAAC;IACZ,gBAAgB,EAAE,6CAA6C,GAChE;EAtCH,AAwCE,KAxCG,AAwCH,kBAAmB,CAAC;IAClB,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,uDAA8C;IAChE,eAAe,EFgCA,IAAI;IE/BnB,MAAM,EF+BS,IAAI;IE9BnB,KAAK,EF8BU,IAAI,GE7BpB;EA9CH,AAgDE,KAhDG,AAgDH,aAAc,CAAC;IACb,gBAAgB,EAAE,kDAAyC,GAC5D;EAlDH,AAoDE,KApDG,AAoDH,UAAW,CAAC;IACV,gBAAgB,EAAE,+CAAsC,GACzD;EAtDH,AAwDE,KAxDG,AAwDH,YAAa,CAAC;IACZ,gBAAgB,EAAE,iDAAwC,GAC3D;EA1DH,AA4DE,KA5DG,AA4DH,gBAAiB,CAAC;IAEhB,gBAAgB,EAAE,oDAA2C,GAC9D;IA/DH,AF6LE,KE7LG,AA4DH,gBAAiB,AFiIpB,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;EE/LH,AAiEE,KAjEG,AAiEH,wBAAyB,CAAC;IACxB,gBAAgB,EAAE,gDAAgD,GACnE;EAnEH,AAqEE,KArEG,AAqEH,cAAe,CAAC;IACd,gBAAgB,EAAE,yCAAyC,GAC5D;EAvEH,AAyEE,KAzEG,AAyEH,SAAU,CAAC;IAET,gBAAgB,EAAE,8CAAqC,GACxD;IA5EH,AF6LE,KE7LG,AAyEH,SAAU,AFoHb,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;EE/LH,AA8EE,KA9EG,AA8EH,WAAY,CAAC;IAEX,gBAAgB,EAAE,gDAAuC,GAC1D;IAjFH,AF6LE,KE7LG,AA8EH,WAAY,AF+Gf,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;EE/LH,AAmFE,KAnFG,AAmFH,UAAW,CAAC;IACV,gBAAgB,EAAE,+CAAsC,GACzD;EArFH,AAuFE,KAvFG,AAuFH,YAAa,CAAC;IACZ,gBAAgB,EAAE,iDAAwC,GAC3D;EAzFH,AA2FE,KA3FG,AA2FH,kBAAmB,CAAC;IAClB,gBAAgB,EAAE,wCAAwC,GAC3D;EA7FH,AA+FE,KA/FG,AA+FH,cAAe,CAAC;IACd,gBAAgB,EAAE,mDAA0C;IAC5D,SAAS,EAAE,eAAe,GAC3B;EAlGH,AAoGE,KApGG,AAoGH,SAAU,CAAC;IACT,gBAAgB,EAAE,wCAAwC,GAC3D;EAtGH,AAwGE,KAxGG,AAwGH,cAAe,CAAC;IACd,gBAAgB,EAAE,mDAA0C,GAC7D;EA1GH,AA4GE,KA5GG,AA4GH,eAAgB,CAAC;IAEf,gBAAgB,EAAE,8CAAqC;IACvD,eAAe,EFrCC,IAAI;IEsCpB,MAAM,EFtCU,IAAI;IEuCpB,KAAK,EFvCW,IAAI,GEwCrB;IAlHH,AF6LE,KE7LG,AA4GH,eAAgB,AFiFnB,IAAS,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;EE/LH,AAoHE,KApHG,AAoHH,WAAY,CAAC;IACX,gBAAgB,EAAE,sCAAsC,GACzD;EAtHH,AAwHE,KAxHG,AAwHH,cAAe,CAAC;IACd,gBAAgB,EAAE,wEAAwE,GAC3F;EA1HH,AA4HE,KA5HG,AA4HH,UAAW,CAAC;IACV,gBAAgB,EAAE,0CAA0C,GAC7D;EA9HH,AAgIE,KAhIG,AAgIH,eAAgB,CAAC;IACf,gBAAgB,EAAE,oDAA2C,GAC9D;EAlIH,AAoIE,KApIG,AAoIH,kBAAmB,CAAC;IAClB,gBAAgB,EAAE,uDAA8C,GACjE;EAtIH,AAwIE,KAxIG,AAwIH,gBAAiB,CAAC;IAChB,gBAAgB,EAAE,qDAA4C,GAC/D;EA1IH,AA4IE,KA5IG,AA4IH,oBAAqB,CAAC;IACpB,gBAAgB,EAAE,yDAAgD,GACnE;EA9IH,AAgJE,KAhJG,AAgJH,0BAA2B,CAAC;IAC1B,gBAAgB,EAAE,yDAAgD;IAClE,eAAe,EFxEC,IAAI;IEyEpB,MAAM,EFzEU,IAAI;IE0EpB,KAAK,EF1EW,IAAI,GE2ErB;EArJH,AAuJE,KAvJG,AAuJH,6BAA8B,CAAC;IAC7B,gBAAgB,EAAE,yDAAgD;IAClE,eAAe,EF/EC,IAAI;IEgFpB,MAAM,EFhFU,IAAI;IEiFpB,SAAS,EAAE,cAAc;IACzB,KAAK,EFlFW,IAAI,GEuFrB;IAjKH,AA8JI,KA9JC,AAuJH,6BAA8B,AAO5B,IAAM,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,aAAa,GACzB;EAhKL,AAmKE,KAnKG,AAmKH,kBAAmB,CAAC;IAClB,gBAAgB,EAAE,yDAAgD;IAClE,SAAS,EAAE,cAAc,GAC1B;EAtKH,AAwKE,KAxKG,AAwKH,SAAU,CAAC;IACT,gBAAgB,EAAE,8CAAqC,GACxD;EA1KH,AA4KE,KA5KG,AA4KH,cAAe,CAAC;IACd,gBAAgB,EAAE,mDAA0C,GAC7D;EA9KH,AAgLE,KAhLG,AAgLH,cAAe,CAAC;IACd,gBAAgB,EAAE,mDAA0C,GAC7D;;AJ7KH,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,IAAI,GACb;;AAED,AAAA,IAAI;AACJ,AAAA,KAAK,CAAC;EACJ,UAAU,EAAE,KAAK,GAClB;;AAED,AAAA,IAAI,CAAC;EACH,gBAAgB,EAAE,8BAA8B;EAChD,WAAW,EAAE,qFAAqF;EAClG,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,MAAM,GAUnB;EAdD,AAMsB,IANlB,AAMF,gBAAiB,GAAG,0BAA0B;EANhD,AAOgB,IAPZ,AAOF,UAAW,GAAG,0BAA0B,CAAC;IACvC,OAAO,EAAE,eAAe,GACzB;EATH,AAWgB,IAXZ,AAWF,UAAW,GAAG,4BAA4B,CAAC;IACzC,OAAO,EAAE,IAAI,GACd;;AAGH,AAAA,EAAE;AACF,AAAA,EAAE,CAAC;EACD,WAAW,EAAE,MAAM,GACpB;;AAED,AAAA,CAAC,CAAC;EACA,eAAe,EAAE,IAAI,GACtB;;AAGD,AAAA,QAAQ,CAAC;EACP,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,gBAAgB;EACtB,MAAM,EAAE,GAAG;EACX,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,MAAM;EAChB,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,GAAG,GACX;;AAED,AAAA,aAAa,CAAC;EACZ,MAAM,EGzCW,GAAG,CAAC,KAAK,CAAC,oCAAoC;EH0C/D,aAAa,EEWC,GAAG;EFVjB,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,CAAC;EACP,cAAc,EAAE,IAAI;EACpB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,GAAG,GACb;;AAED,UAAU,CAAV,MAAU;EACR,AAAA,IAAI;IACF,OAAO,EAAE,CAAC;EAGZ,AAAA,EAAE;IACA,OAAO,EAAE,CAAC;;AAId,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,oBAAoB,GAMjC;EARD,AAIE,aAJW,AAIX,GAAI,CAAC;IACH,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,CAAC,GACX;;AAGH,AAAA,QAAQ,CAAC;EACP,UAAU,EGzEO,GAAG,CAAC,KAAK,CAAC,oCAAoC;EH0E/D,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,GAAG;EACnB,SAAS,EAAE,IAAI;EACf,eAAe,EAAE,UAAU;EAC3B,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,WAAW,GACrB;;AAGD,AAAA,OAAO;AACP,AAAS,QAAD,CAAC,MAAM,CAAC;EACd,gBAAgB,EAAE,oCAAoC;EACtD,MAAM,EGvFS,GAAG,CAAC,KAAK,CAAC,kCAAkC;EHwF3D,aAAa,EAAE,GAAG;EAClB,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,OAAO;EACf,aAAa,EAAE,IAAI;EACnB,OAAO,EAAE,SAAS;EAClB,WAAW,EAAE,MAAM,GAsBpB;EA/BD,AAWE,OAXK,AAWN,MAAQ,AAAA,IAAK,CAAA,AAAA,QAAQ;EAVtB,AAAS,QAAD,CAAC,MAAM,AAUd,MAAQ,AAAA,IAAK,CAAA,AAAA,QAAQ,EAAE;IACpB,UAAU,EGzFG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;IH0F9D,UAAU,EAAE,gBAAgB,GAC7B;EAdH,AAgBE,OAhBK,AAgBN,QAAU;EAfX,AAAS,QAAD,CAAC,MAAM,AAed,QAAU,CAAC;IACR,gBAAgB,EAAE,WAAW;IAC7B,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,SAAS,GAC3B;EArBH,AAwBE,OAxBK,AAwBN,QAAU,EAxBX,AAyBE,OAzBK,AAyBN,KAAO;EAxBR,AAAS,QAAD,CAAC,MAAM,AAuBd,QAAU;EAvBX,AAAS,QAAD,CAAC,MAAM,AAwBd,KAAO,CAAC;IACL,gBAAgB,EAAE,kCAAkC;IACpD,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,kCAAkC;IACpD,KAAK,EE3ED,IAAI;IF4ER,mBAAmB,EAAE,IAAI,GAC1B;;AAGH,AACE,KADG,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,GADJ,AAEE,KAFG,CAEH,AAAA,IAAE,CAAK,QAAQ,AAAb,EAAe;EACf,aAAa,EElED,GAAG,GFmEhB;;AAIH,AAAA,mBAAmB,CAAC;EAClB,OAAO,EAAE,CAAC,GACX;;AKzID,AAAA,cAAc,CAAC;EACb,KAAK,EAAE,gCAAgC;EACvC,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,CAAC;EACZ,UAAU,EAAE,KAAK;EACjB,OAAO,EAAE,IAA8C,CH8D3C,IAAI,CAAJ,IAAI,GGrDjB;EAdD,AAOE,cAPY,AAOZ,aAAc,CAAC;IACb,OAAO,EAAE,KAAK,GACf;EATH,AAWE,cAXY,CAWZ,CAAC,CAAC;IACA,KAAK,EAAE,gCAAgC,GACxC;;AAGH,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,IAAI;EAGZ,cAAc,EAAE,IAA4D;EAC5E,KAAK,EHwDiB,KAAmE,GG7B1F;EAzBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAP1B,AAAA,IAAI,CAAC;MAQD,KAAK,EHsDiB,KAAmE,GG9B5F;EArBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAX1B,AAAA,IAAI,CAAC;MAYD,KAAK,EHmDkB,KAAmE,GG/B7F;EAjBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAf1B,AAAA,IAAI,CAAC;MAgBD,KAAK,EHgDiB,KAAmE,GGhC5F;EAbC,MAAM,EAAE,SAAS,EAAE,MAAM;IAnB3B,AAAA,IAAI,CAAC;MAoBD,KAAK,EH6CkB,MAAmE,GGjC7F;EAhCD,AAuBE,IAvBE,CAuBF,OAAO,CAAC;IACN,aAAa,EH8BC,IAAoC;IG7BlD,QAAQ,EAAE,QAAQ,GACnB;EAED,AAAW,UAAD,CA5BZ,IAAI,CA4BW;IACX,UAAU,EAAE,MAAM,GACnB;;AAIH,AAAA,sBAAsB,CAAC;EAErB,MAAM,EAAE,KAAK,GACd;;;AAED,AAUI,aAVS,CAUT,cAAc;AAVlB,AAWmB,aAXN,CAWT,cAAc,CAAC,QAAQ,AAAA,aAAa;AAXxC,AAYI,aAZS,CAYT,MAAM,CAHc;EACpB,OAAO,EAAE,CAAC,GACX;;;AAXH,AAeI,aAfS,AAaX,GAAI,CAEF,cAAc;AAflB,AAgBmB,aAhBN,AAaX,GAAI,CAGF,cAAc,CAAC,QAAQ,AAAA,aAAa;AAhBxC,AAiBI,aAjBS,AAaX,GAAI,CAIF,MAAM,CAHgB;EACpB,OAAO,EAAE,CAAC,GACX;;AAIL,AAAA,wBAAwB,CAAC;EACvB,OAAO,EAAE,CAAC,CHRiB,IAAI,GGShC;;AAED,AACE,aADW,CACX,MAAM,CAAC;EACL,gBAAgB,EAAE,WAAW;EAC7B,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,OAAO;EACf,IAAI,EAAE,gCAAgC;EACtC,gBAAgB,EAAE,IAAI;EACtB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,IAAI;EACT,OAAO,EAAE,IAAI,GAUd;EApBH,AACE,aADW,CACX,MAAM,AAWJ,MAAO,EAZX,AACE,aADW,CACX,MAAM,AAYJ,MAAO,CAAC;IACN,gBAAgB,EAAE,iCAAiC,GACpD;EAfL,AACE,aADW,CACX,MAAM,AAgBJ,OAAQ,CAAC;IACP,gBAAgB,EAAE,kCAAkC,GACrD;;AClGL,AAAA,kBAAkB,CAAC;EACjB,WAAW,EAAE,MAAM;EACnB,aAAa,EJ8DC,GAAG;EI7DjB,UAAU,EAAE,KAAK,CHSA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC;EGR/D,KAAK,EAAE,oCAAoC;EAC3C,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,SAAS,EJ6GgB,IAAI;EI5G7B,eAAe,EAAE,MAAM;EACvB,aAAa,EAAE,MAAM;EACrB,WAAW,EJ2GgB,GAAG,GIrG/B;EAhBD,AAYE,kBAZgB,CAYhB,CAAC,CAAC;IACA,KAAK,EAAE,oCAAoC;IAC3C,eAAe,EAAE,SAAS,GAC3B;;ACJH,AAAA,UAAU,CAAC;EAGT,aAAa,EAAE,GAA4E,GAC5F;;AAED,AAAA,eAAe,CAAC;EACd,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,CAAC,CAVQ,KAAgB;EAWjC,OAAO,EAAE,CAAC,GA4EX;EAzEC,MAAM,EAAE,SAAS,EAAE,KAAK;IAN1B,AL0JE,eK1Ja,CAOX,UAAW,CAAA,IAAI,ELmJjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,IAAI;MACvB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,IAAI;MACtB,kBAAkB,EA5GR,KAAI,GA6Gf;IK/JH,ALmKE,eKnKa,CAWX,UAAW,CAAA,EAAE,ELwJf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EKvJD,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IAjBjD,ALmKE,eKnKa,CAkBX,UAAW,CAAA,IAAI,ELiJjB,aAAa;IKnKf,ALmKE,eKnKa,CAmBX,UAAW,CAAA,EAAE,ELgJf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EK/ID,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IAzBjD,ALmKE,eKnKa,CA0BX,UAAW,CAAA,EAAE,ELyIf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EK1ID,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IA9BjD,ALmKE,eKnKa,CA+BX,UAAW,CAAA,IAAI,ELoIjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EKnID,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;IArClD,ALmKE,eKnKa,CAsCX,UAAW,CAAA,EAAE,EL6Hf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EK9HD,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;IA1ClD,ALmKE,eKnKa,CA2CX,UAAW,CAAA,IAAI,ELwHjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EKvHD,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE,MAAM;IAjDnD,ALmKE,eKnKa,CAkDX,UAAW,CAAA,EAAE,ELiHf,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EKlHD,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE,MAAM;IAtDnD,ALmKE,eKnKa,CAuDX,UAAW,CAAA,IAAI,EL4GjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EK5GD,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,MAAM;IA5DvC,AA6DI,eA7DW,CA6DX,gBAAgB,CAAC;MACf,OAAO,EAAE,IAAI,GACd;EA/DL,AAkEE,eAlEa,CAkEb,EAAE,CAAC;IACD,MAAM,EAAE,CAAC,CAAC,CAAC,CAjFY,GAAG,GAkF3B;EApEH,AAwEM,eAxES,AAsEb,IAAM,CAAA,AAAA,WAAW,EACf,eAAe,AAAA,SAAU,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE,AAAA,MAAM,EAC9C,KAAK,CAAC;ILqCV,UAAU,EAAE,KAAK,CClHA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,EAKhD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;ID8GhE,UAAU,EAAE,gBAAgB,GKpCvB;EA1EP,ALmJE,eKnJa,AAsEb,IAAM,CAAA,AAAA,WAAW,EACf,eAAe,AAAA,SAAU,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE,AAAA,MAAM,EL4ElD,oBAAoB,CAAC;IACnB,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,QAAQ,GACpB;;AKpEH,AAAA,eAAe,CAAC;EACd,OAAO,EAAE,CAAC,CA3FO,IAAgB;EA4FjC,OAAO,EAAE,YAAY,GA6JtB;EA/JD,AAKE,eALa,CAKb,eAAe,CAAC;IACd,QAAQ,EAAE,QAAQ,GAanB;IAnBH,AAQM,eARS,CAKb,eAAe,GAGX,CAAC,CAAC;MACF,KAAK,EAAE,OAAO;MACd,OAAO,EAAE,KAAK;MACd,OAAO,EAAE,IAAI,GAOd;MAlBL,AAcQ,eAdO,CAKb,eAAe,GAGX,CAAC,AAKD,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EACxB,KAAK,CAAC;QLaZ,UAAU,EAAE,KAAK,CClHA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,EAKhD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;QD8GhE,UAAU,EAAE,gBAAgB,GKZrB;EAhBT,ALqCE,eKrCa,CLqCb,oBAAoB,CAAC;IACnB,eAAe,EAAE,WAAW;IAC5B,gBAAgB,EAAE,sCAAsC;IACxD,gBAAgB,EAAE,4CAA4C;IAC9D,mBAAmB,EAAE,GAAG;IACxB,MAAM,ECnIO,GAAG,CAAC,KAAK,CAAC,kCAAkC;IDoIzD,aAAa,EAAE,IAAI;IACnB,UAAU,EAlCkB,CAAC,CAAC,GAAG,CA/F3B,qBAAO;IAkIb,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,gCAAgC;IACtC,MAAM,EAtCiB,IAAI;IAuC3B,gBAAgB,EAAI,OAA6B;IACjD,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAI,OAA6B;IACpC,SAAS,EAAE,WAAW;IACtB,mBAAmB,EAAE,KAAK;IAC1B,mBAAmB,EAAE,kBAAkB;IACvC,KAAK,EA9CkB,IAAI,GAoD5B;IK7DH,ALqCE,eKrCa,CLqCb,oBAAoB,AAoBnB,SAAY,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE;MAC1B,OAAO,EAAE,CAAC;MACV,SAAS,EAAE,QAAQ,GACpB;EK5DL,AAuBE,eAvBa,CAuBb,KAAK,CAAC;IACJ,aAAa,EA1HS,GAAG;IA2HzB,UAAU,EAAE,KAAK,CJhHF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,EIgHxB,yBAAyB;IAC9D,MAAM,ELtDE,IAAI;IKuDZ,QAAQ,EAAE,QAAQ;IAClB,KAAK,ELxDG,IAAI;IK2DZ,WAAW,EAAE,MAAM;IACnB,KAAK,EAAE,kCAAkC;IACzC,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;IAChB,eAAe,EAAE,MAAM;IACvB,cAAc,EAAE,SAAS,GAK1B;IA1CH,AAuBE,eAvBa,CAuBb,KAAK,AAgBH,QAAS,CAAC;MACR,OAAO,EAAE,mBAAmB,GAC7B;EAzCL,AA4CE,eA5Ca,CA4Cb,WAAW,CAAC;IACV,gBAAgB,ELjGZ,IAAI;IKkGR,mBAAmB,EAAE,QAAQ;IAC7B,eAAe,EA9ID,KAAK;IA+InB,aAAa,EAlJS,GAAG;IAmJzB,UAAU,EAAE,KAAK,CJxIF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC;IIyI7D,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,CAAC;IACN,UAAU,EAAE,UAAU;IACtB,KAAK,EAAE,IAAI,GAKZ;IA7DH,AA4CE,eA5Ca,CA4Cb,WAAW,AAcT,OAAQ,CAAC;MACP,OAAO,EAAE,CAAC,GACX;EA5DL,AAgEE,eAhEa,CAgEb,cAAc,CAAC;IACb,gBAAgB,EAAE,uCAAuC;IACzD,mBAAmB,EAAE,aAAa;IAClC,iBAAiB,EAAE,SAAS;IAC5B,aAAa,EAtKS,GAAG;IAuKzB,UAAU,EAAE,kCAAkC;IAC9C,QAAQ,EAAE,QAAQ,GACnB;EAvEH,AAyEE,eAzEa,CAyEb,UAAU,CAAC;IACT,eAAe,EAAE,KAAK;IACtB,MAAM,EAAE,IAAI;IACZ,kBAAkB,EAAE,CAAC;IACrB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,IAAI,GACZ;EA/EH,AAiFE,eAjFa,CAiFb,aAAa,CAAC;IACZ,eAAe,EA9KC,IAAI;IA+KpB,MAAM,EA9KY,IAAG;IA+KrB,MAAM,EAjLkB,IAAI;IAkL5B,gBAAgB,EAhLE,IAAG;IAiLrB,KAAK,EAnLmB,IAAI;IAsL5B,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,MAAM,GAKxB;IAjGH,AAiFE,eAjFa,CAiFb,aAAa,CAaX,AAAA,aAAE,AAAA,CAAc,QAAQ,CAAC;MACvB,OAAO,EAAE,mBAAmB,GAC7B;EAhGL,AAmGE,eAnGa,CAmGb,MAAM,CAAC;IACL,KAAK,EAAE,kCAAkC;IACzC,IAAI,EAAE,WAAW;IACjB,MAAM,EAvMe,IAAI;IAwMzB,WAAW,EAxMU,IAAI;IAyMzB,UAAU,EAAE,MAAM;IAClB,KAAK,ELrIG,IAAI;IKsIZ,QAAQ,EAAE,QAAQ,GAsBnB;IAhIH,AA4GI,eA5GW,CAmGb,MAAM,CASJ,KAAK,CAAC;MACJ,IAAI,EAAE,iCAAiC;MACvC,kBAAkB,EAAE,CAAC;MACrB,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,IAAI,GACV;IAjHL,AAmHI,eAnHW,CAmGb,MAAM,CAgBJ,IAAI,CAAC;MACH,MAAM,EArNa,IAAI;MAsNvB,OAAO,EAAE,KAAK;MACd,QAAQ,EAAE,MAAM;MAChB,aAAa,EAAE,QAAQ;MACvB,WAAW,EAAE,MAAM,GACpB;IAzHL,AA4HM,eA5HS,CAmGb,MAAM,AAwBJ,OAAQ,CACN,IAAI,CAAC;MACH,OAAO,EAAE,MAAM,GAChB;EA9HP,AAkIE,eAlIa,CAkIb,YAAY,CAAC;IACX,gBAAgB,EAAE,+CAAsC,GACzD;EApIH,AAuII,eAvIW,AAsIb,YAAa,CACX,KAAK,CAAC;IACJ,UAAU,EAAE,KAAK,CJ/NJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,GIgO5D;EAzIL,AA2II,eA3IW,AAsIb,YAAa,CAKX,WAAW,CAAC;IACV,OAAO,EAAE,IAAI,GACd;EA7IL,AAiJI,eAjJW,AAgJb,QAAS,CACP,KAAK,CAAC;IACJ,UAAU,EL9ON,OAAO;IK+OX,UAAU,EAAE,IAAI,GAMjB;IAzJL,AAqJM,eArJS,AAgJb,QAAS,CACP,KAAK,CAIH,CAAC,EArJP,AAiJI,eAjJW,AAgJb,QAAS,CACP,KAAK,AAKH,QAAS,CAAC;MACR,OAAO,EAAE,IAAI,GACd;EAxJP,AA2JI,eA3JW,AAgJb,QAAS,CAWP,MAAM,CAAC;IACL,UAAU,EAAE,MAAM,GACnB;;AAIL,AACE,sBADoB,CACpB,MAAM,CAAC;EACL,UAAU,EJpPK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDJpB,qBAAO;EKyPb,IAAI,EAAE,CAAC;EACP,MAAM,EAAE,MAAM;EACd,QAAQ,EAAE,KAAK;EACf,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,IAAI;EACT,KAAK,EL/Le,KAAmE,GK4MxF;EAXC,MAAM,EAAE,SAAS,EAAE,KAAK;IAV5B,AACE,sBADoB,CACpB,MAAM,CAAC;MAUH,KAAK,ELjMe,KAAmE,GK2M1F;EAPC,MAAM,EAAE,SAAS,EAAE,KAAK;IAd5B,AACE,sBADoB,CACpB,MAAM,CAAC;MAcH,KAAK,ELpMgB,KAAmE,GK0M3F;EAHC,MAAM,EAAE,SAAS,EAAE,KAAK;IAlB5B,AACE,sBADoB,CACpB,MAAM,CAAC;MAkBH,KAAK,ELvMe,KAAmE,GKyM1F;;AAGH,AAIE,aAJW,CAIX,qBAAqB,CAAC;EACpB,SAAS,EAAE,KAAiD;EAC5D,MAAM,EAAE,MAAM;EACd,OAAO,EALM,IAAI,GAkBlB;EApBH,AASI,aATS,CAIX,qBAAqB,CAKnB,eAAe,CAAC;IACd,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,QAAQ;IAChB,mBAAmB,EAVR,IAAI;IAWf,cAAc,EAAE,IAAI,GACrB;EAdL,AAgBI,aAhBS,CAIX,qBAAqB,CAYnB,cAAc,CAAC;IACb,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,QAAQ,GACjB;;AAnBL,AAsBE,aAtBW,CAsBX,mBAAmB,CAAC;EAClB,OAAO,EAAE,IAAI,GACd;;AAxBH,AA0BE,aA1BW,CA0BX,KAAK,CAAC;EACJ,SAAS,EL5Na,IAAI,GK6N3B;;AA5BH,AA8BE,aA9BW,CA8BX,aAAa,CAAC;EACZ,KAAK,EAAE,IAAI,GAuIZ;EAtKH,AAiCI,aAjCS,CA8BX,aAAa,CAGX,MAAM,CAAC;IACL,QAAQ,EAAE,QAAQ,GAQnB;IA1CL,AAoCM,aApCO,CA8BX,aAAa,CAGX,MAAM,CAGJ,iBAAiB,CAAC;MAChB,QAAQ,EAAE,QAAQ;MAClB,SAAS,EAAE,gBAAgB;MAC3B,GAAG,EAAE,GAAG;MACR,gBAAgB,EAAE,GAAG,GACtB;EAzCP,AA6CM,aA7CO,CA8BX,aAAa,CAcX,IAAI,CACF,KAAK,AAAA,IAAK,CAAA,AAAA,GAAG,EAAE;IACb,aAAa,EAAE,IAAI,GACpB;EA/CP,AAiDM,aAjDO,CA8BX,aAAa,CAcX,IAAI,CAKF,KAAK,AAAA,IAAK,CAAA,AAAA,GAAG,EAAE;IACb,YAAY,EAAE,IAAI,GAMnB;IAxDP,AAiDM,aAjDO,CA8BX,aAAa,CAcX,IAAI,CAKF,KAAK,AAAA,IAAK,CAAA,AAAA,GAAG,CAGX,IAAM,CAAA,AAAA,kBAAkB,EAAE;MACxB,SAAS,EAAE,GAAG;MACd,UAAU,EAAE,KAAK,GAClB;EAvDT,AA2DI,aA3DS,CA8BX,aAAa,CA6BX,0BAA0B,CAAC;IACzB,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,GAAG;IACf,MAAM,EAAE,OAAO,GAKhB;IApEL,AA2DI,aA3DS,CA8BX,aAAa,CA6BX,0BAA0B,AAMxB,MAAO,CAAC;MACN,eAAe,EAAE,SAAS,GAC3B;EAnEP,AAsEI,aAtES,CA8BX,aAAa,CAwCX,6BAA6B,CAAC;IAC5B,UAAU,EAAE,GAAG,GAkChB;IAzGL,AAyEM,aAzEO,CA8BX,aAAa,CAwCX,6BAA6B,CAG3B,kBAAkB,CAAC;MACjB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,QAAQ,EAAE,MAAM;MAChB,QAAQ,EAAE,QAAQ;MAClB,SAAS,EAAE,gBAAgB;MAC3B,GAAG,EAAE,GAAG;MACR,gBAAgB,EAAE,GAAG,GACtB;IAjFP,AAqFM,aArFO,CA8BX,aAAa,CAwCX,6BAA6B,CAe3B,kBAAkB,CAAC;MASjB,KAAK,EAAE,KAAK;MACZ,MAAM,EAAE,IAAI;MACZ,uBAAuB,EAAE,IAAI;MAC7B,IAAI,EL3XF,OAAO;MK4XT,gBAAgB,EAAE,mDAAmD;MACrE,SAAS,EAAE,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,GAK3D;;AAlBC,UAAU,CAAV,sBAAU;EACR,AAAA,IAAI;IAAG,SAAS,EAAE,kBAAkB;;AAGtC,UAAU,CAAV,0BAAU;EACR,AAAA,IAAI;IAAG,SAAS,EAAE,iBAAiB;MA3F7C,AAqFM,aArFO,CA8BX,aAAa,CAwCX,6BAA6B,CAe3B,kBAAkB,AAgBhB,IAAM,CAAA,AAAA,GAAG,EAAE;QACT,cAAc,EAAE,0BAA0B,GAC3C;EAvGT,AA2GI,aA3GS,CA8BX,aAAa,CA6EX,KAAK,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,EAAa;IACb,gBAAgB,EAAE,sCAAsC;IACxD,MAAM,EJ7XC,GAAG,CAAC,KAAK,CAAC,4BAA4B;II8X7C,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI,GAYhB;IA/HP,AA2GI,aA3GS,CA8BX,aAAa,CA6EX,KAAK,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,CASA,MAAO,CAAC;MACN,MAAM,EJpYM,GAAG,CAAC,KAAK,CAAC,iCAAiC;MIqYvD,UAAU,EAAE,qCAAqC,GAClD;IAxHT,AA2GI,aA3GS,CA8BX,aAAa,CA6EX,KAAK,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,EAcA,AAAA,QAAE,AAAA,EAAU;MACV,MAAM,EJ1YD,GAAG,CAAC,KAAK,CAAC,4BAA4B;MI2Y3C,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,GAAG,GACb;EA9HT,AAmIM,aAnIO,CA8BX,aAAa,CAoGX,QAAQ,CACN,KAAK,CACH,AAAA,IAAE,CAAK,MAAM,AAAX,EAAa;IACb,MAAM,EJlZK,GAAG,CAAC,KAAK,CDCrB,OAAO;IKkZN,UAAU,EJjaV,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CDeV,OAAO,ECfY,CAAC,CAAC,CAAC,CAAC,CAAC,CD0HX,GAAG,CA3GhB,qBAAO,GKmZP;EAvIT,AA2II,aA3IS,CA8BX,aAAa,CA6GX,cAAc,CAAC;IACb,SAAS,EAAE,gBAAgB;IAC3B,UAAU,ELzZP,OAAO;IK0ZV,aAAa,EAAE,GAAG;IAClB,KAAK,EL5XH,IAAI;IK6XN,kBAAkB,EAAE,GAAG;IACvB,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,CAAC,GAiBX;IArKL,AA2II,aA3IS,CA8BX,aAAa,CA6GX,cAAc,AAYZ,QAAS,CAAC;MACR,UAAU,ELpaT,OAAO;MKqaR,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,GAAG;MACZ,MAAM,EAAE,IAAI;MACZ,kBAAkB,EAAE,IAAI;MACxB,QAAQ,EAAE,QAAQ;MAClB,WAAW,EAAE,MAAM;MACnB,GAAG,EAAE,IAAI;MACT,SAAS,EAAE,aAAa;MACxB,WAAW,EAAE,MAAM;MACnB,KAAK,EAAE,IAAI;MACX,OAAO,EAAE,EAAE,GACZ;;AApKP,AAwKE,aAxKW,CAwKX,QAAQ,CAAC;EACP,eAAe,EAAE,QAAQ,GAM1B;EA/KH,AA2KI,aA3KS,CAwKX,QAAQ,CAGN,MAAM,CAAC;IACL,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,CAAC,GACrB;;AAGH,MAAM,EAAE,SAAS,EAAE,KAAK;EAjL1B,AAkLI,aAlLS,CAkLT,mBAAmB,CAAC;IAClB,cAAc,EAAE,MAAM,GAKvB;IAxLL,AAqLM,aArLO,CAkLT,mBAAmB,CAGjB,eAAe,CAAC;MACd,mBAAmB,EAAE,CAAC,GACvB;;AAMP,UAAU,CAAV,UAAU;EACR,AAAA,EAAE;IACA,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,gBAAgB;EAG7B,AAAA,IAAI;IACF,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,aAAa;;ACje5B,AACE,cADY,CACZ,aAAa,CAAC;EACZ,OAAO,EAAE,IAAI;EACb,QAAQ,ENgEE,IAAI;EM/Dd,qBAAqB,EAAE,uBAA6B;EACpD,MAAM,EAAE,CAAC,GAuBV;EArBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAP5B,ANoLE,cMpLY,CACZ,aAAa,CNmLb,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EM9KC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,KAAK;IAXnD,ANoLE,cMpLY,CACZ,aAAa,CAWT,UAAW,CAAA,EAAE,ENwKjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EMxKC,MAAM,EAAE,SAAS,EAAE,KAAK,OAAO,SAAS,EAAE,MAAM;IAjBpD,ANoLE,cMpLY,CACZ,aAAa,CAiBT,UAAW,CAAA,EAAE,ENkKjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;EMlKC,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,SAAS,EAAE,MAAM;IAvBrD,ANoLE,cMpLY,CACZ,aAAa,CAuBT,UAAW,CAAA,EAAE,EN4JjB,aAAa,CAAC;MACZ,iBAAiB,EAAE,GAAG;MACtB,mBAAmB,EAAE,IAAI;MACzB,gBAAgB,EAAE,CAAC;MACnB,kBAAkB,EAAE,IAAI,GACzB;;AMzLH,AA8BE,cA9BY,CA8BZ,oBAAoB,CAAC;EACnB,MAAM,ELpBS,GAAG,CAAC,KAAK,CAAC,oCAAoC;EKqB7D,aAAa,ENgCD,GAAG;EM/Bf,OAAO,EAAE,IAAI;EACb,MAAM,EN4DI,KAAK;EM3Df,KAAK,EAAE,IAAI,GA6BZ;EAhEH,AAqCI,cArCU,CA8BZ,oBAAoB,CAOlB,YAAY,CAAC;IACX,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,KAAK,GAoBjB;IA3DL,AAyCM,cAzCQ,CA8BZ,oBAAoB,CAOlB,YAAY,CAIV,iBAAiB,CAAC;MAChB,mBAAmB,EAAE,MAAM;MAC3B,iBAAiB,EAAE,SAAS;MAC5B,eAAe,EAAE,SAAS;MAC1B,uBAAuB,EAAE,IAAI;MAC7B,OAAO,EAAE,KAAK;MACd,IAAI,EAAE,kCAAkC;MACxC,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,MAAM;MACd,KAAK,EAAE,IAAI,GACZ;IAnDP,AAqDM,cArDQ,CA8BZ,oBAAoB,CAOlB,YAAY,CAgBV,oBAAoB,CAAC;MACnB,KAAK,EAAE,gCAAgC;MACvC,SAAS,EAAE,IAAI;MACf,aAAa,EAAE,CAAC;MAChB,UAAU,EAAE,MAAM,GACnB;EAGH,MAAM,EAAE,SAAS,EAAE,MAAM;IA7D7B,AA8BE,cA9BY,CA8BZ,oBAAoB,CAAC;MAgCjB,MAAM,ENsCQ,KAAK,GMpCtB;;AAGH,MAAM,EAAE,SAAS,EAAE,MAAM;EACvB,AAGI,cAHU,CAEZ,aAAa,CACX,aAAa,CAAC;IACZ,qBAAqB,EAAE,uBAAmC,GAC3D;;ACzEP,AACE,gBADc,AACd,QAAS,CAAC;EACR,QAAQ,EAAE,MAAM,GACjB;;AAHH,AAMI,gBANY,AAKd,IAAM,CAAA,AAAA,QAAQ,EACZ,gBAAgB,CAAC;EACf,OAAO,EAAE,IAAI,GACd;;AAIL,AAAA,gBAAgB,CAAC;EACf,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,KAAK;EACd,UAAU,EAAE,YAAY;EACxB,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,IAAI,GAkDjB;EA3DD,AAWE,gBAXc,AAWd,KAAM,CAAC;IACL,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,CAAC,GA6CX;IA1DH,AAeI,gBAfY,AAWd,KAAM,CAIJ,iBAAiB,CAAC;MAChB,UAAU,EAAE,4BAA4B;MACxC,gBAAgB,EAAE,IAAI;MACtB,SAAS,EAAE,gBAAgB,CAAC,QAAQ;MACpC,OAAO,EAAE,CAAC,GAQX;MANC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;QArBzC,AAeI,gBAfY,AAWd,KAAM,CAIJ,iBAAiB,CAAC;UAOd,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,GAAG,EAAE,KAAK;UACV,aAAa,EAAE,KAAK,GAEvB;IA3BL,AA6BI,gBA7BY,AAWd,KAAM,CAkBJ,sBAAsB,CAAC;MACrB,UAAU,EAAE,YAAY;MACxB,OAAO,EAAE,CAAC,GACX;IAhCL,AAkCI,gBAlCY,AAWd,KAAM,CAuBJ,eAAe;IAlCnB,AAmCI,gBAnCY,AAWd,KAAM,CAwBJ,iBAAiB;IAnCrB,AAoCI,gBApCY,AAWd,KAAM,CAyBJ,cAAc,CAAC;MACb,UAAU,EAAE,4BAA4B;MACxC,SAAS,EAAE,aAAa;MACxB,OAAO,EAAE,CAAC,GACX;IAxCL,AA0CI,gBA1CY,AAWd,KAAM,CA+BJ,eAAe,CAAC;MACd,gBAAgB,EAAE,IAAI,GACvB;IA5CL,AA8CI,gBA9CY,AAWd,KAAM,CAmCJ,iBAAiB,CAAC;MAChB,gBAAgB,EAAE,IAAI,GACvB;IAhDL,AAkDI,gBAlDY,AAWd,KAAM,CAuCJ,cAAc,CAAC;MACb,gBAAgB,EAAE,IAAI,GACvB;IApDL,AAsDI,gBAtDY,AAWd,KAAM,CA2CJ,qBAAqB,CAAC;MACpB,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,CAAC,GACX;;AAIL,AAAA,WAAW;AACX,AAAA,IAAI,AAAA,UAAU,CAAC;EACb,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,KAAK;EACd,gBAAgB,EAAE,0CAAiC,EPpB5B,4FAAyH;EOqBhJ,qBAAqB,EAAE,MAAM;EAC7B,qBAAqB,EAAE,WAAW;EAClC,iBAAiB,EAAE,SAAS;EAC5B,eAAe,EAAE,KAAK;EACtB,QAAQ,EAAE,KAAK,GAChB;;AAED,AAAA,iBAAiB,CAAC;EAChB,SAAS,EAAE,gBAAgB,CAAC,UAAU;EACtC,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,KAAK;EACZ,OAAO,EAAE,CAAC;EACV,gBAAgB,EP7CV,IAAI;EO8CV,KAAK,EAAE,UAAU;EACjB,KAAK,EPhFG,OAAO;EOiFf,UAAU,EAAE,MAAM;EAClB,OAAO,EAAE,IAAI,GAqHd;EA/HD,AAYE,iBAZe,CAYf,IAAI,CAAC;IACH,QAAQ,EAAE,QAAQ,GACnB;EAdH,AAgBE,iBAhBe,CAgBf,YAAY,CAAC;IACX,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,SAAS;IACjB,KAAK,EP/CmB,OAAO;IOgD/B,MAAM,EAAE,OAAO,GAahB;IAlCH,AAuBI,iBAvBa,CAgBf,YAAY,CAOV,CAAC,CAAC;MACA,KAAK,EPpGD,OAAO;MOqGX,MAAM,EAAE,OAAO;MACf,eAAe,EAAE,SAAS,GAC3B;IA3BL,AA6BI,iBA7Ba,CAgBf,YAAY,CAaV,CAAC,AAAA,MAAM;IA7BX,AA8BI,iBA9Ba,CAgBf,YAAY,CAcV,CAAC,AAAA,OAAO;IA9BZ,AA+BI,iBA/Ba,CAgBf,YAAY,CAeV,CAAC,AAAA,MAAM,CAAC;MACN,KAAK,EPpHD,OAAO,GOqHZ;EAjCL,AAoCE,iBApCe,CAoCf,YAAY,CAAC;IACX,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,oBAAoB,EAAE,IAAI;IAC1B,MAAM,EAAE,GAAG,CAAC,KAAK,CPvHX,OAAO;IOwHb,aAAa,EAAE,GAAG;IAClB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,oCAAoC,GAkBjD;IAhEH,AAoCE,iBApCe,CAoCf,YAAY,AAYV,MAAO,CAAC;MACN,YAAY,EPzHR,OAAO,GO0HZ;IAlDL,AAoCE,iBApCe,CAoCf,YAAY,AAgBV,MAAO,CAAC;MACN,YAAY,EPzIR,OAAO;MO0IX,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CP1IjB,uBAAO,GO2IZ;IAvDL,AAoCE,iBApCe,CAoCf,YAAY,AAqBV,QAAS,CAAC;MACR,YAAY,EPhIT,OAAO,GOiIX;IA3DL,AAoCE,iBApCe,CAoCf,YAAY,AAyBV,QAAS,AAAA,MAAM,CAAC;MACd,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CPpIlB,qBAAO,GOqIX;EA/DL,AAkEE,iBAlEe,CAkEf,YAAY,CAAC;IACX,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,SAAS,GAClB;EArEH,AAuEe,iBAvEE,CAuEf,YAAY,CAAC,WAAW,CAAC;IACvB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,GAAG;IACf,OAAO,EAAE,KAAK,GACf;EA3EH,AA6EE,iBA7Ee,CA6Ef,MAAM,CAAC;IACL,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,WAAW,GACpB;EAjFH,AAmFE,iBAnFe,CAmFf,gBAAgB,CAAC;IACf,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,GAAG;IAClB,KAAK,EPjID,IAAI;IOkIR,gBAAgB,EP9KV,OAAO;IO+Kb,UAAU,EAAE,sBAAsB,GAOnC;IAnGH,AAmFE,iBAnFe,CAmFf,gBAAgB,AAWd,IAAM,EAAA,AAAA,AAAA,QAAC,AAAA,EAAU,OAAO,EA9F5B,AAmFE,iBAnFe,CAmFf,gBAAgB,AAYd,IAAM,EAAA,AAAA,AAAA,QAAC,AAAA,EAAU,MAAM,CAAC;MACtB,UAAU,EPlLN,OAAO;MOmLX,YAAY,EPlLR,OAAO,GOmLZ;EAlGL,AAqGE,iBArGe,CAqGf,YAAY,CAAC;IACX,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,gBAAgB,EPzLV,OAAO;IO0Lb,KAAK,EP9LC,OAAO;IO+Lb,MAAM,EAAE,GAAG,CAAC,KAAK,CP/LX,OAAO;IOgMb,aAAa,EAAE,GAAG;IAClB,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,uDAAuD,GAepE;IA9HH,AAqGE,iBArGe,CAqGf,YAAY,CAYV,AAAA,QAAE,AAAA,EAAU;MACV,gBAAgB,EPjMZ,OAAO;MOkMX,YAAY,EPhMR,OAAO;MOiMX,KAAK,EPhMD,OAAO;MOiMX,MAAM,EAAE,OAAO;MACf,OAAO,EAAE,GAAG,GACb;IAvHL,AAqGE,iBArGe,CAqGf,YAAY,AAoBV,IAAM,EAAA,AAAA,AAAA,QAAC,AAAA,EAAU,MAAM,CAAC;MACtB,gBAAgB,EP9MZ,OAAO;MO+MX,YAAY,EP9MR,OAAO;MO+MX,KAAK,EPnKH,IAAI,GOoKP;;AAIL,AAAA,sBAAsB,CAAC;EACrB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,YAAY;EACnB,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,KAAK,GAYb;EAVC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;IANrC,AAAA,sBAAsB,CAAC;MAOnB,KAAK,EAAE,KAAK,GASf;EANC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;IAVrC,AAAA,sBAAsB,CAAC;MAWnB,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,KAAK,EAAE,KAAK;MACZ,UAAU,EAAE,MAAM,GAErB;;AAED,AAAA,iBAAiB,CAAC;EAChB,WAAW,EAAE,GAAG;EAChB,aAAa,EAAE,IAAI;EACnB,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,8CAAqC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS;EACzE,cAAc,EAAE,KAAK,GACtB;;AAED,AAAA,CAAC,AAAA,cAAc,CAAC;EACd,KAAK,EPnMC,IAAI;EOoMV,OAAO,EAAE,KAAK;EACd,eAAe,EAAE,SAAS,GAO3B;EAVD,AAKE,CALD,AAAA,cAAc,AAKb,MAAO,EALT,AAME,CAND,AAAA,cAAc,AAMb,OAAQ,EANV,AAOE,CAPD,AAAA,cAAc,AAOb,MAAO,CAAC;IACN,KAAK,EP1MD,IAAI,GO2MT;;AAGH,AAAA,eAAe,CAAC;EACd,UAAU,EAAE,+CAA+C,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS;EAC9E,eAAe,EAAE,SAAS;EAC1B,MAAM,EAAE,WAAW;EACnB,WAAW,EAAE,KAAK,GAUnB;EARC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;IANrC,AAAA,eAAe,CAAC;MAOZ,UAAU,EAAE,+CAA+C,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS;MAChF,eAAe,EAAE,SAAS,GAM7B;EAdD,AAWE,eAXa,AAWb,IAAM,CAAA,AAAA,GAAG,EAAE;IACT,mBAAmB,EAAE,SAAS,GAC/B;;AAGH,AAAA,qBAAqB,CAAC;EACpB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,CAAC;EACR,GAAG,EAAE,CAAC;EACN,IAAI,EAAE,CAAC;EACP,KAAK,EPpOC,IAAI;EOqOV,MAAM,EAAE,KAAK;EACb,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,KAAK;EACZ,OAAO,EAAE,EAAE;EACX,UAAU,EAAE,YAAY;EACxB,OAAO,EAAE,CAAC,GAUX;EARC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;IAdrC,AAAA,qBAAqB,CAAC;MAelB,KAAK,EAAE,KAAK,GAOf;EAJC,MAAM,CAAC,MAAM,MAAM,SAAS,EAAE,KAAK;IAlBrC,AAAA,qBAAqB,CAAC;MAmBlB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI,GAEf;;AAED,AAAA,eAAe;AACf,AAAA,iBAAiB;AACjB,AAAA,cAAc,CAAC;EACb,OAAO,EAAE,CAAC;EACV,SAAS,EAAE,gBAAgB,GAC5B;;AAED,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,IAAI,GACd;;AAED,AAAA,MAAM,AAAA,OAAO,CAAC;EACZ,OAAO,EAAE,KAAK;EACd,OAAO,EAAE,QAAQ;EACjB,SAAS,EAAE,eAAe;EAC1B,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,KAAK,EPvQC,IAAI;EOwQV,gBAAgB,EPvST,OAAO;EOwSd,QAAQ,EAAE,QAAQ;EAClB,kBAAkB,EAAE,IAAI;EACxB,GAAG,EAAE,KAAK;EACV,aAAa,EAAE,GAAG,GAenB;EA1BD,AAaE,MAbI,AAAA,OAAO,AAaX,QAAS,CAAC;IACR,kBAAkB,EAAE,IAAI;IACxB,UAAU,EP/SL,OAAO;IOgTZ,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,aAAa;IACxB,WAAW,EAAE,MAAM;IACnB,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE,GACZ;;AAGH,UAAU,CAAV,SAAU;EACR,AAAA,EAAE;IACA,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,iBAAiB;EAG9B,AAAA,IAAI;IACF,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,aAAa;;ACpV5B,AAAA,MAAM,CAAC;EACL,KAAK,EAAE,2CAA2C;EAClD,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,UAAU,ERsGO,IAAI,GQ9BtB;EAtEC,MAAM,EAAE,SAAS,EAAE,KAAK;IAN1B,AAAA,MAAM,CAAC;MAOH,WAAW,EAAE,IAAI,GAqEpB;EA5ED,AAUE,MAVI,CAUJ,EAAE,CAAC;IACD,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC,GAKX;IAJC,MAAM,EAAE,SAAS,EAAE,KAAK;MAb5B,AAUE,MAVI,CAUJ,EAAE,CAAC;QAIC,OAAO,EAAE,MAAM;QACf,oBAAoB,EAAE,IAAI,GAE7B;EAjBH,AAoBK,MApBC,CAoBJ,EAAE,CAAC,EAAE,CAAC;IACJ,OAAO,EAAE,YAAY,GAUtB;IA/BH,AAoBK,MApBC,CAoBJ,EAAE,CAAC,EAAE,AAGH,OAAQ,CAAC;MACP,OAAO,EAAE,KAAK;MACd,OAAO,EAAE,GAAG,GACb;IA1BL,AAoBK,MApBC,CAoBJ,EAAE,CAAC,EAAE,AAQH,WAAY,AAAA,OAAO,CAAC;MAClB,OAAO,EAAE,IAAI,GACd;EA9BL,AAiCE,MAjCI,CAiCJ,WAAW,CAAC;IACV,KAAK,EAAE,kCAAkC;IACzC,WAAW,EAAE,IAAI,GAClB;EApCH,AAsCE,MAtCI,CAsCJ,gBAAgB,CAAC;IACf,KAAK,EAAE,kCAAkC;IACzC,WAAW,EAAE,IAAI,GA2BlB;IAzBC,MAAM,EAAE,SAAS,EAAE,KAAK;MA1C5B,AAsCE,MAtCI,CAsCJ,gBAAgB,CAAC;QAOb,KAAK,EAAE,KAAK,GAsBf;QAnEH,AAsCE,MAtCI,CAsCJ,gBAAgB,AASZ,IAAM,CAAA,AAAA,GAAG,EAAE;UACT,KAAK,EAAE,IAAI,GACZ;IAjDP,AAsCE,MAtCI,CAsCJ,gBAAgB,AAcd,OAAQ,CAAC;MACP,UAAU,EAAE,oDAA2C,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM;MAC/E,OAAO,EAAE,EAAE;MACX,uBAAuB,EAAE,IAAI;MAC7B,OAAO,EAAE,YAAY;MACrB,IAAI,EAAE,kCAAkC;MACxC,MAAM,EAAE,IAAI;MACZ,mBAAmB,EAAE,GAAG;MACxB,cAAc,EAAE,GAAG;MACnB,KAAK,EAAE,IAAI,GACZ;IA9DL,AAsCE,MAtCI,CAsCJ,gBAAgB,AA0Bd,IAAM,CAAA,AAAA,GAAG,CAAC,OAAO,CAAE;MACjB,SAAS,EAAE,UAAU,GACtB;EAlEL,AAuEE,MAvEI,AAuEJ,OAAQ,CAAC;IACP,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK,GACf;;AC3EH,AAAA,eAAe,CAAC;EASd,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,IAAI;EACb,MAAM,EAVU,IAAI;EAWpB,aAAa,ET0DG,IAAoC;ESzDpD,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI,GAuDZ;EArED,AAgBE,eAhBa,CAgBb,KAAK,CAAC;IACJ,UAAU,EAAE,sCAAsC,CAAC,yBAAyB,CAdxD,GAAG,CAc2E,WAA0B,CAAC,SAAS;IACtI,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,iCAAiC;IACnD,UAAU,ERDK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDJpB,qBAAO,ESKkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CTmBpC,mBAAI;ISlBR,SAAS,EAAE,IAAI;IACf,uBAAuB,EAAE,IAAI;IAC7B,IAAI,EAAE,+BAA+B;IACrC,OAAO,EAAE,CAAC;IACV,kBAAkB,EAlBE,IAAI;IAmBxB,oBAAoB,EArBF,IAA4C;IAsB9D,KAAK,EAAE,IAAI,GAKZ;IA/BH,AAgBE,eAhBa,CAgBb,KAAK,AAYH,IAAM,CAAA,AAAA,GAAG,EAAE;MACT,qBAAqB,EAAE,KAAK,CA1BV,GAAG,GA2BtB;EA9BL,AAiCU,eAjCK,AAiCb,MAAO,CAAC,KAAK,CAAC;IACZ,UAAU,ERhBK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDJpB,qBAAO,ESoBkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CTIpC,mBAAI,GSHT;EAnCH,AAqCW,eArCI,AAqCb,OAAQ,CAAC,KAAK;EArChB,AAsCE,eAtCa,CAsCb,KAAK,AAAA,MAAM,CAAC;IACV,MAAM,ERzBY,GAAG,CAAC,KAAK,CAAC,iCAAiC;IQ0B7D,UAAU,EAAE,qCAAqC,GAClD;EAzCH,AA2CE,eA3Ca,CA2Cb,cAAc,CAAC;IACb,UAAU,EArCI,wCAAwC,CAqC3B,SAAS,CAAC,MAAM,CAAC,MAAM;IAClD,eAAe,EAAE,SAAS;IAC1B,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,CAAC,CTiBJ,GAAG,CAAH,GAAG,CSjBgC,CAAC;IAChD,uBAAuB,EAAE,IAAI;IAC7B,IAAI,EAAE,+BAA+B;IACrC,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,CAAC;IACnB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EA/Ce,IAAI,GA8DzB;IApEH,AA2CE,eA3Ca,CA2Cb,cAAc,AAYZ,MAAO,EAvDX,AA2CE,eA3Ca,CA2Cb,cAAc,AAaZ,MAAO,CAAC;MACN,gBAAgB,ET3CZ,qBAAO;MS4CX,MAAM,EAAE,OAAO,GAChB;IA3DL,AA2CE,eA3Ca,CA2Cb,cAAc,AAkBZ,OAAQ,CAAC;MACP,gBAAgB,EThDZ,qBAAO,GSiDZ;IA/DL,AA2CE,eA3Ca,CA2Cb,cAAc,AAsBZ,IAAM,CAAA,AAAA,GAAG,EAAE;MACT,SAAS,EAAE,UAAU,GACtB;;AAMH,AAAA,6BAA6B,CAAC;EAC5B,gBAAgB,EAAE,mCAAmC;EACrD,MAAM,EAAE,CAAC;EACT,UAAU,ETkCQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAxExB,kBAAI,EAwEgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAxE7C,kBAAI;ESuCR,SAAS,EAAE,eAAgC,GA0E5C;EA9ED,AAME,6BAN2B,CAM3B,oBAAoB,CAAC;IACnB,gBAAgB,EAAE,0CAA0C;IAC5D,KAAK,EAAE,kCAAkC,GAC1C;EATH,AAWE,6BAX2B,CAW3B,oBAAoB,EAXtB,AAYE,6BAZ2B,CAY3B,4BAA4B,CAAC;IAC3B,YAAY,EAAE,oCAAoC,GACnD;EAdH,AAgBE,6BAhB2B,CAgB3B,6BAA6B,CAAC;IAC5B,MAAM,EAAE,CAAC,GACV;EAlBH,AAoBE,6BApB2B,CAoB3B,0BAA0B,CAAC;IACzB,gBAAgB,EAAE,0CAA0C;IAC5D,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,oCAAoC,GAC3D;EAvBH,AAyBE,6BAzB2B,CAyB3B,wCAAwC,CAAC;IACvC,KAAK,EAAE,gCAAgC,GACxC;EA3BH,AA6BE,6BA7B2B,CA6B3B,kCAAkC,CAAC;IACjC,gBAAgB,EAAE,mCAAmC,GACtD;EA/BH,AAiCE,6BAjC2B,CAiC3B,2BAA2B,AACzB,SAAU,CAAC;IACT,UAAU,EAAE,iCAAiC;IAC7C,KAAK,EAAE,gCAAgC,GASxC;IA7CL,AAiCE,6BAjC2B,CAiC3B,2BAA2B,AACzB,SAAU,AAIR,OAAQ,CAAC;MACP,UAAU,EAAE,kCAAkC,GAC/C;IAxCP,AA0CM,6BA1CuB,CAiC3B,2BAA2B,AACzB,SAAU,CAQR,YAAY,CAAC;MACX,IAAI,EAAE,kCAAkC,GACzC;EA5CP,AAiDI,6BAjDyB,CAgD3B,0BAA0B,CACxB,kCAAkC,CAAC;IACjC,gBAAgB,EAAE,0CAA0C,GAC7D;EAnDL,AAsDE,6BAtD2B,CAsD3B,wBAAwB,CAAC;IAIvB,gBAAgB,EAAE,IAAI;IACtB,YAAY,EAAE,qIAA+L,CAAC,CAAC;IAC/M,iBAAiB,EAAE,SAAS;IAC5B,QAAQ,EAAE,QAAQ,GASnB;IAtEH,AAsDE,6BAtD2B,CAsD3B,wBAAwB,AAStB,SAAU,CAAC;MACT,UAAU,EAAE,iCAAiC,GAC9C;IAjEL,AAsDE,6BAtD2B,CAsD3B,wBAAwB,AAatB,OAAQ,CAAC;MACP,UAAU,EAAE,kCAAkC,GAC/C;EArEL,AAwEE,6BAxE2B,CAwE3B,4BAA4B,AAC1B,MAAO,CAAC;IACN,UAAU,EAAE,iCAAiC;IAC7C,KAAK,EAAE,gCAAgC,GACxC;;ACrJP,AAAA,aAAa,CAAC;EACZ,UAAU,EAAE,0CAA0C;EACtD,aAAa,EV8Gc,GAAG;EU7G9B,UAAU,EV2GU,CAAC,CAAC,GAAG,CAAC,IAAI,CAxExB,kBAAI,EAwEgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAxE7C,kBAAI;EUlCV,OAAO,EAAE,KAAK;EACd,SAAS,EV0Gc,IAAI;EUzG3B,mBAAmB,EAAE,GAAG;EACxB,kBAAkB,EAAE,IAAI;EACxB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,MAA+B;EACpC,OAAO,EAAE,KAAK,GAyCf;EAnDD,AAYI,aAZS,GAYT,EAAE,CAAC;IACH,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,CAAC;IACT,OAAO,EVkGkB,GAAG,CUlGS,CAAC,GAmCvC;IAlDH,AAiBM,aAjBO,GAYT,EAAE,GAKA,EAAE,CAAC;MACH,MAAM,EAAE,CAAC;MACT,KAAK,EAAE,IAAI,GA8BZ;MAjDL,AAiBM,aAjBO,GAYT,EAAE,GAKA,EAAE,AAIF,UAAW,CAAC;QACV,aAAa,ETXF,GAAG,CAAC,KAAK,CAAC,oCAAoC;QSYzD,MAAM,EV0Fe,GAAG,CU1FY,CAAC,GACtC;MAxBP,AA0BQ,aA1BK,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,CAAC;QACF,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,IAAI;QACb,OAAO,EViFa,GAAG,CAAC,IAAI;QUhF5B,WAAW,EAAE,MAAM,GAcpB;QAhDP,AA0BQ,aA1BK,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,AAUD,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE;UACzB,UAAU,EAAE,iCAAiC,GAC9C;QAtCT,AA0BQ,aA1BK,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,AAcD,OAAQ,CAAC;UACP,UAAU,EAAE,kCAAkC,GAC/C;QA1CT,AA0BQ,aA1BK,GAYT,EAAE,GAKA,EAAE,GASA,CAAC,AAkBD,SAAU,CAAC;UACT,OAAO,EAAE,GAAG;UACZ,cAAc,EAAE,IAAI,GACrB;;AC/CT,AACE,oBADkB,CAClB,MAAM,CAAC;EACL,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CXoCnB,kBAAI;EWnCR,IAAI,EAAE,GAAG;EACT,WAAW,EAAE,MAAM;EACnB,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,GAAG;EACR,KAAK,EAAE,KAAK,GACb;;AARH,AAUE,oBAVkB,CAUlB,OAAO,CAAC;EACN,MAAM,EAAE,CAAC,GACV;;AAZH,AAcE,oBAdkB,CAclB,cAAc,CAAC;EACb,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,CAAC,GAMlB;EAvBH,AAmBI,oBAnBgB,CAclB,cAAc,CAKZ,CAAC,CAAC;IACA,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,IAAI,GACpB;;AAtBL,AAyBE,oBAzBkB,CAyBlB,QAAQ,CAAC;EACP,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,IAAI;EACb,SAAS,EAAE,MAAM;EACjB,OAAO,EAAE,MAAM,GAchB;EA3CH,AA+BI,oBA/BgB,CAyBlB,QAAQ,CAMN,MAAM,CAAC;IACL,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,IAAI;IACxB,oBAAoB,EAAE,IAAI;IAC1B,WAAW,EAAE,MAAM;IACnB,KAAK,EAAE,GAAG,GAMX;IA1CL,AA+BI,oBA/BgB,CAyBlB,QAAQ,CAMN,MAAM,AAOJ,KAAM,CAAC;MACL,iBAAiB,EAAE,CAAC;MACpB,mBAAmB,EAAE,CAAC,GACvB;;AAzCP,AA6CE,oBA7CkB,CA6ClB,KAAK,CAAC;EACJ,iBAAiB,EAAE,IAAI,GACxB;;AAGH,AAAA,cAAc,CAAC;EACb,UAAU,EAAE,2BAA2B;EACvC,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,CAAC;EACP,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK,GACf;;AAED,AAAA,MAAM,CAAC;EACL,UAAU,EAAE,yBAAyB;EACrC,MAAM,EVnDW,GAAG,CAAC,KAAK,CAAC,oCAAoC;EUoD/D,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,KAAK,GACf;;AClED,AAAA,WAAW,CAAC;EAEV,UAAU,EAAE,mCAAmC;EAC/C,aAAa,EZ6DC,GAAG;EY5DjB,OAAO,EAAE,YAAY;EACrB,MAAM,EZyFM,KAAK;EYxFjB,iBAAiB,EZ6DL,IAAI;EY5DhB,QAAQ,EAAE,QAAQ;EAClB,KAAK,EAAE,IAAI,GAsKZ;EA9KD,AZwIE,WYxIS,CZwIT,oBAAoB,CAAC;IACnB,eAAe,EAAE,WAAW;IAC5B,gBAAgB,EAAE,sCAAsC;IACxD,gBAAgB,EAAE,4CAA4C;IAC9D,mBAAmB,EAAE,GAAG;IACxB,MAAM,ECnIO,GAAG,CAAC,KAAK,CAAC,kCAAkC;IDoIzD,aAAa,EAAE,IAAI;IACnB,UAAU,EAlCkB,CAAC,CAAC,GAAG,CA/F3B,qBAAO;IAkIb,MAAM,EAAE,OAAO;IACf,IAAI,EAAE,gCAAgC;IACtC,MAAM,EAtCiB,IAAI;IAuC3B,gBAAgB,EAAI,OAA6B;IACjD,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAI,OAA6B;IACpC,SAAS,EAAE,WAAW;IACtB,mBAAmB,EAAE,KAAK;IAC1B,mBAAmB,EAAE,kBAAkB;IACvC,KAAK,EA9CkB,IAAI,GAoD5B;IYhKH,AZwIE,WYxIS,CZwIT,oBAAoB,AAoBnB,SAAY,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE;MAC1B,OAAO,EAAE,CAAC;MACV,SAAS,EAAE,QAAQ,GACpB;EY/JL,AAUE,WAVS,AAUT,YAAa,CAAC;IACZ,UAAU,EAAE,WAAW,GAUxB;IArBH,AAaI,WAbO,AAUT,YAAa,CAGX,KAAK,CAAC;MACJ,UAAU,EAAE,KAAK,CXFJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,oCAAoC,GWG5D;IAfL,AAiBI,WAjBO,AAUT,YAAa,CAOX,yBAAyB;IAjB7B,AAkBI,WAlBO,AAUT,YAAa,CAQX,aAAa,CAAC;MACZ,OAAO,EAAE,IAAI,GACd;EApBL,AAuBE,WAvBS,CAuBT,KAAK,CAAC;IACJ,aAAa,EZwCD,GAAG;IYvCf,UAAU,EAAE,yBAAyB;IACrC,MAAM,EAAE,IAAI,GACb;EA3BH,AA6BI,WA7BO,GA6BP,CAAC,CAAC;IACF,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,IAAI,GAWZ;IA9CH,AAsCM,WAtCK,GA6BP,CAAC,AAQD,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EACxB,KAAK,CAAC;MZ6FV,UAAU,EClHK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;MDmHhE,UAAU,EAAE,gBAAgB,GY5FvB;IAxCP,AA0CM,WA1CK,GA6BP,CAAC,AAQD,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAKxB,WAAW,CAAC;MACV,KAAK,EAAE,gCAAgC,GACxC;EA5CP,AAgDE,WAhDS,AAgDT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EAAE;IZmFtD,UAAU,EClHK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;IDmHhE,UAAU,EAAE,gBAAgB;IYjF1B,OAAO,EAAE,IAAI,GAad;IAhEH,AZoKE,WYpKS,AAgDT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EZoHpD,oBAAoB,CAAC;MACnB,OAAO,EAAE,CAAC;MACV,SAAS,EAAE,QAAQ,GACpB;IYvKH,AAqDI,WArDO,AAgDT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EAKlD,WAAW,CAAC;MACV,KAAK,EAAE,gCAAgC,GACxC;IAvDL,AAyDiB,WAzDN,AAgDT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EASlD,UAAU,GAAG,eAAe,CAAC;MAC3B,OAAO,EAAE,IAAI,GACd;IA3DL,AA6DI,WA7DO,AAgDT,SAAW,CAAA,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE,AAAA,OAAO,CAAC,IAAK,CAAA,AAAA,YAAY,EAalD,eAAe,AAAA,UAAU,CAAC;MACxB,OAAO,EAAE,KAAK,GACf;EA/DL,AAkEE,WAlES,CAkET,yBAAyB,CAAC;IACxB,gBAAgB,EZ3DV,OAAO;IY4Db,aAAa,EZJD,GAAG,CAAH,GAAG,CYI8B,CAAC,CAAC,CAAC;IAChD,MAAM,EZ0BkB,KAAK;IYzB7B,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,QAAQ,GA2BnB;KAzBC,AAAA,AAPF,qBAOG,AAAA,EAzEL,WAAW,CAkET,yBAAyB,CAOG;MACxB,gBAAgB,EZ/DZ,OAAO,GYgEZ;IA3EL,AAkEE,WAlES,CAkET,yBAAyB,AAWvB,OAAQ,CAAC;MACP,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,iCAAiC;MAC1D,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,EAAE;MACX,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,IAAI,GACZ;IAnFL,AAqFI,WArFO,CAkET,yBAAyB,CAmBvB,mBAAmB,CAAC;MAClB,mBAAmB,EAAE,MAAM;MAC3B,iBAAiB,EAAE,SAAS;MAC5B,eAAe,EAAE,KAAK;MACtB,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,OAAO,CAAC,EAAE,CZ7BZ,8BAA8B;MY8BxC,KAAK,EAAE,IAAI,GAKZ;MAjGL,AAqFI,WArFO,CAkET,yBAAyB,CAmBvB,mBAAmB,AASjB,OAAQ,CAAC;QACP,OAAO,EAAE,CAAC,GACX;EAhGP,AAoGE,WApGS,CAoGT,aAAa,CAAC;IACZ,OAAO,EAAE,cAAc,GACxB;EAtGH,AAwGE,WAxGS,CAwGT,UAAU,CAAC;IACT,UAAU,EAAE,IAA+C;IAC3D,QAAQ,EAAE,MAAM,GAejB;IAzHH,AAwGE,WAxGS,CAwGT,UAAU,AAIR,aAAc,EA5GlB,AAwGE,WAxGS,CAwGT,UAAU,AAKR,WAAY,CAAC;MACX,UAAU,EAAE,IAA+C,GAC5D;IA/GL,AAwGE,WAxGS,CAwGT,UAAU,AASR,aAAc,AAAA,WAAW,CAAC;MACxB,UAAU,EAAE,KAA+C,GAC5D;IAnHL,AAqH2B,WArHhB,CAwGT,UAAU,AAaR,IAAM,CAAA,AAAA,eAAe,EAAE,WAAW,CAAC;MACjC,UAAU,EAAE,IAA0B;MACtC,QAAQ,EAAE,MAAM,GACjB;EAxHL,AA2HE,WA3HS,CA2HT,eAAe,CAAC;IACd,KAAK,EAAE,kCAAkC;IACzC,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,MAAM;IAChB,cAAc,EAAE,GAAG;IACnB,aAAa,EAAE,QAAQ;IACvB,cAAc,EAAE,SAAS;IACzB,WAAW,EAAE,MAAM,GACpB;EAnIH,AAqIE,WArIS,CAqIT,eAAe,AAAA,UAAU,CAAC;IAAE,OAAO,EAAE,IAAI,GAAK;EArIhD,AAuIE,WAvIS,CAuIT,WAAW,CAAC;IACV,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,GAAG;IAChB,WAAW,EZzCS,IAAI;IY0CxB,MAAM,EAAE,CAAC,CAAC,CAAC,CZ3CK,GAAG;IY4CnB,SAAS,EAAE,UAAU,GACtB;EA7IH,AA+IE,WA/IS,CA+IT,iBAAiB,CAAC;IAChB,SAAS,EAAE,IAAI;IACf,WAAW,EZhDS,IAAI;IYiDxB,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,UAAU,GACtB;EArJH,AAuJE,WAvJS,CAuJT,aAAa,CAAC;IACZ,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,kCAAkC;IACzC,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,IAAI;IACf,kBAAkB,EAAE,CAAC;IACrB,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EAAE,QAAQ,GACnB;EA/JH,AAiKE,WAjKS,CAiKT,kBAAkB,CAAC;IACjB,IAAI,EAAE,kCAAkC;IACxC,MAAM,EAAE,IAAI;IACZ,iBAAiB,EAAE,GAAG,GACvB;EArKH,AAuKE,WAvKS,CAuKT,mBAAmB,CAAC;IAClB,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,MAAM;IAChB,aAAa,EAAE,QAAQ;IACvB,WAAW,EAAE,MAAM,GACpB;;AAMC,MAAM,EAAE,SAAS,EAAE,MAAM;EAH7B,AACE,aADW,CACX,WAAW,CAAC;IAIR,MAAM,EZjFQ,KAAK,GY0HtB;IA9CH,AAOM,aAPO,CACX,WAAW,CAMP,yBAAyB,CAAC;MACxB,MAAM,EZnFoB,KAAK,GYoFhC;IATP,AAWM,aAXO,CACX,WAAW,CAUP,aAAa,CAAC;MACZ,OAAO,EAAE,cAAc,GACxB;IAbP,AAeM,aAfO,CACX,WAAW,CAcP,UAAU,CAAC;MACT,UAAU,EAAE,KAAqC,GAClD;IAjBP,AAmBM,aAnBO,CACX,WAAW,CAkBP,eAAe,CAAC;MACd,SAAS,EAAE,IAAI;MACf,cAAc,EAAE,GAAG,GACpB;IAtBP,AAwBM,aAxBO,CACX,WAAW,CAuBP,WAAW,CAAC;MACV,SAAS,EAAE,IAAI;MACf,WAAW,EAtBC,IAAI;MAuBhB,aAAa,EAAE,CAAC,GACjB;IA5BP,AA+BQ,aA/BK,CACX,WAAW,CA6BP,UAAU,AAAA,IAAK,CAAA,AAAA,eAAe,EAC5B,WAAW,CAAC;MACV,UAAU,EAAE,IAAgB,GAC7B;IAjCT,AAoCM,aApCO,CACX,WAAW,CAmCP,iBAAiB,CAAC;MAChB,SAAS,EAAE,IAAI;MACf,WAAW,EAlCC,IAAI,GAmCjB;IAvCP,AAyCM,aAzCO,CACX,WAAW,CAwCP,aAAa,CAAC;MACZ,MAAM,EAAE,GAAG;MACX,SAAS,EAAE,IAAI,GAChB;;AAKP,AAIE,cAJY,CAIZ,WAAW,CAAC;EACV,MAAM,EZ/HY,KAAK,GY6MxB;EAnFH,AAOI,cAPU,CAIZ,WAAW,CAGT,yBAAyB,CAAC;IACxB,MAAM,EZjIwB,KAAK,GYkIpC;EATL,AAWI,cAXU,CAIZ,WAAW,CAOT,aAAa,CAAC;IACZ,OAAO,EAXoB,IAAI,CAWQ,IAAI,GAC5C;EAbL,AAeI,cAfU,CAIZ,WAAW,CAWT,eAAe,CAAC;IACd,WAAW,EAAE,IAAI,GAClB;EAjBL,AAoBM,cApBQ,CAIZ,WAAW,CAeT,UAAU,CACR,WAAW;EApBjB,AAqB6B,cArBf,CAIZ,WAAW,CAeT,UAAU,AAER,IAAM,CAAA,AAAA,eAAe,EAAE,WAAW,CAAC;IACjC,SAAS,EApBQ,IAAI;IAqBrB,WAAW,EAAE,IAAyB;IACtC,UAAU,EAAE,IAAyB;IACrC,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,OAAO;IAChB,aAAa,EAAE,QAAQ;IACvB,WAAW,EAAE,MAAM,GACpB;EA7BP,AAgCI,cAhCU,CAIZ,WAAW,CA4BT,iBAAiB,CAAC;IAChB,OAAO,EAAE,IAAI,GACd;EAlCL,AAoCI,cApCU,CAIZ,WAAW,CAgCT,aAAa,CAAC;IAGZ,gBAAgB,EAAE,mCAAmC;IACrD,aAAa,EAAE,IAAmB;IAClC,SAAS,EAAE,oBAAkI;IAC7I,MAAM,EAJW,IAAI;IAKrB,KAAK,EALY,IAAI;IAMrB,OAAO,EAAE,GAAkC;IAC3C,GAAG,EAAE,IAA+C;IACpD,gBAAgB,EAAE,IAAI;IACtB,kBAAkB,EAAE,IAAI,GAmCzB;IAlFL,AAoCI,cApCU,CAIZ,WAAW,CAgCT,aAAa,AAaX,OAAQ,CAAC;MACP,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,iCAAiC;MACnD,aAAa,EAAE,CAAC;MAChB,aAAa,EAAE,IAAyB,CAAC,IAAyB,CAAC,CAAC,CAAC,CAAC;MACtE,OAAO,EAAE,EAAE;MACX,QAAQ,EAAE,QAAQ;MAClB,MAAM,EAAE,IAAyB;MACjC,KAAK,EAAE,IAAmB;MAC1B,GAAG,EAAE,IAAI;MACT,IAAI,EAAE,IAAI,GACX;IA3DP,AA6DM,cA7DQ,CAIZ,WAAW,CAgCT,aAAa,CAyBX,kBAAkB,CAAC;MACjB,iBAAiB,EAAE,CAAC;MACpB,MAAM,EA1BI,IAAI;MA2Bd,KAAK,EA3BK,IAAI,GAwCf;MA7EP,AA6DM,cA7DQ,CAIZ,WAAW,CAgCT,aAAa,CAyBX,kBAAkB,AAKhB,oBAAqB,CAAC;QACpB,IAAI,EZlPO,OAAO,GYmPnB;MApET,AA6DM,cA7DQ,CAIZ,WAAW,CAgCT,aAAa,CAyBX,kBAAkB,AAShB,cAAe,CAAC;QACd,IAAI,EZrPO,OAAO,GYsPnB;MAxET,AA6DM,cA7DQ,CAIZ,WAAW,CAgCT,aAAa,CAyBX,kBAAkB,AAahB,YAAa,CAAC;QACZ,IAAI,EZxPK,OAAO,GYyPjB;IA5ET,AA+EM,cA/EQ,CAIZ,WAAW,CAgCT,aAAa,CA2CX,mBAAmB,CAAC;MAClB,OAAO,EAAE,IAAI,GACd;;AAIL,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,MAAM;EArFvC,AAsFI,cAtFU,CAsFV,gBAAgB,CAAC;IACf,OAAO,EAAE,IAAI,GACd;;ACzTL,AAAA,2BAA2B,CAAC;EAC1B,KAAK,EAAE,oCAAoC;EAC3C,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,aAAa,EbkEG,IAAoC;EajEpD,UAAU,EAAE,MAAM,GA0BnB;EAxBC,MAAM,EAAE,SAAS,EAAE,KAAK;IAP1B,AAAA,2BAA2B,CAAC;MAQxB,OAAO,EAAE,IAAI;MACb,eAAe,EAAE,aAAa;MAC9B,UAAU,EAAE,IAAI,GAqBnB;EA/BD,AAaE,2BAbyB,CAazB,CAAC,CAAC;IACA,MAAM,EAAE,CAAC,GAMV;IALC,MAAM,EAAE,SAAS,EAAE,KAAK;MAf5B,AAaE,2BAbyB,CAazB,CAAC,CAAC;QAGE,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,aAAa,GAEjC;EApBH,AAsBE,2BAtByB,CAsBzB,KAAK,CAAC;IACJ,OAAO,EAAE,IAAI,GAOd;IANC,MAAM,EAAE,SAAS,EAAE,KAAK;MAxB5B,AAsBE,2BAtByB,CAsBzB,KAAK,CAAC;QAGF,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,kCAAkC;QACxC,iBAAiB,EAAE,GAAG,GAEzB;;AAGH,AAAA,yBAAyB,CAAC;EACxB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;EACd,SAAS,EAAE,MAAM,GAelB;EAbC,MAAM,EAAE,SAAS,EAAE,KAAK;IAL1B,AAAA,yBAAyB,CAAC;MAMtB,OAAO,EAAE,IAAI;MACb,eAAe,EAAE,aAAa;MAC9B,OAAO,EAAE,CAAC,GAUb;EAlBD,AAWE,yBAXuB,CAWvB,MAAM,CAAC;IACL,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,CAAC;IACT,mBAAmB,EAAE,IAAI;IACzB,OAAO,EAAE,MAAM,GAChB;;AClDH,AAAA,oBAAoB,CAAC;EACnB,OAAO,EdoEkB,IAAI,CADF,IAAI;EclE/B,gBAAgB,EAAE,KAAK;EACvB,mBAAmB,EAAE,KAAK;EAC1B,mBAAmB,EAAE,gBAAgB,GAgKtC;EApKD,AAME,oBANkB,CAMlB,cAAc,CAAC;IACb,SAAS,EdoFa,IAAI;IcnF1B,WAAW,EAAE,IAAI;IACjB,MAAM,EAAE,CAAC,GAmBV;IA5BH,AAWI,oBAXgB,CAMlB,cAAc,CAKZ,IAAI,CAAC;MACH,KAAK,EAAE,uCAAuC;MAC9C,OAAO,EAAE,YAAY;MACrB,IAAI,EAAE,uCAAuC;MAC7C,cAAc,EAAE,MAAM,GACvB;IAhBL,AAkBI,oBAlBgB,CAMlB,cAAc,CAYZ,aAAa,CAAC;MACZ,MAAM,EAAE,OAAO;MACf,cAAc,EAAE,GAAG;MACnB,WAAW,EAAE,MAAM,GACpB;IAtBL,AAwBI,oBAxBgB,CAMlB,cAAc,CAkBZ,kBAAkB,CAAC;MACjB,mBAAmB,EAAE,GAAG;MACxB,UAAU,EAAE,IAAI,GACjB;EA3BL,AA8BE,oBA9BkB,CA8BlB,gBAAgB,CAAC;IACf,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,QAAQ,GA6BnB;IA9DH,AAmCI,oBAnCgB,CA8BlB,gBAAgB,CAKd,oBAAoB,CAAC;MACnB,UAAU,EAAE,4CAA4C,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM;MAC/E,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,OAAO;MACf,IAAI,EAAE,uCAAuC;MAC7C,MAAM,EAAE,IAAI;MACZ,gBAAgB,EAAE,CAAC;MACnB,OAAO,EAAE,CAAC;MACV,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,mBAAmB,EAAE,KAAK;MAC1B,mBAAmB,EAAE,OAAO;MAC5B,KAAK,Ed6DgB,IAAI,GcvD1B;MArDL,AAmCI,oBAnCgB,CA8BlB,gBAAgB,CAKd,oBAAoB,AAclB,SAAW,CAAA,AAAA,OAAO,EAAE,AAAA,MAAM,EAAE,AAAA,MAAM,EAAE;QAClC,IAAI,EdpCF,OAAO;QcqCT,OAAO,EAAE,CAAC,GACX;IApDP,AAuDI,oBAvDgB,CA8BlB,gBAAgB,CAyBd,aAAa,CAAC;MACZ,GAAG,EAAE,IAAI,GACV;IAED,MAAM,EAAE,SAAS,EAAE,MAAM;MA3D7B,AdoLE,oBcpLkB,CA8BlB,gBAAgB,CdsJhB,aAAa,CAAC;QACZ,iBAAiB,EAAE,GAAG;QACtB,mBAAmB,EAAE,IAAI;QACzB,gBAAgB,EAAE,CAAC;QACnB,kBAAkB,EAAE,IAAI,GACzB;EczLH,AAmEM,oBAnEc,AAgElB,MAAO,CAEL,gBAAgB,CACd,oBAAoB,EAnE1B,AAmEM,oBAnEc,AAiElB,OAAQ,CACN,gBAAgB,CACd,oBAAoB,CAAC;IACnB,OAAO,EAAE,CAAC,GACX;EArEP,AAyEE,oBAzEkB,AAyElB,OAAQ,CAAC;IACP,UAAU,EAAE,iCAAiC;IAC7C,aAAa,EAAE,GAAG,GAOnB;IAlFH,AA8EM,oBA9Ec,AAyElB,OAAQ,CAIN,gBAAgB,CACd,oBAAoB,CAAC;MACnB,IAAI,EAAE,8CAA8C,GACrD;EAhFP,AAoFE,oBApFkB,CAoFlB,mBAAmB,CAAC;IAIlB,KAAK,EAAE,oCAAoC;IAC3C,SAAS,EAAE,IAAI;IACf,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,IAAI,GAoCd;IAhIH,AA8FI,oBA9FgB,CAoFlB,mBAAmB,CAUjB,wBAAwB,CAAC;MACvB,OAAO,EAAE,YAAY;MACrB,KAAK,EAAE,kBAAiC,GAKzC;MAHC,MAAM,EAAE,SAAS,EAAE,KAAK;QAlG9B,AA8FI,oBA9FgB,CAoFlB,mBAAmB,CAUjB,wBAAwB,CAAC;UAKrB,KAAK,EdNA,KAA6B,GcQrC;IArGL,AAuGI,oBAvGgB,CAoFlB,mBAAmB,CAmBjB,CAAC,CAAC;MACA,KAAK,EAAE,gCAAgC;MACvC,WAAW,EAAE,IAAI;MACjB,YAAY,EAAE,GAAG,GAClB;IA3GL,AA6GI,oBA7GgB,CAoFlB,mBAAmB,CAyBjB,MAAM,CAAC;MACL,UAAU,EAAE,oCAAoC;MAChD,MAAM,EAAE,GAAG,CAAC,KAAK,CdtGb,OAAO;McuGX,aAAa,EAAE,GAAG;MAClB,MAAM,EAAE,OAAO;MACf,SAAS,EA7BQ,KAAK;MA8BtB,UAAU,EA7BQ,IAAI;MA8BtB,gBAAgB,EAAE,CAAC;MACnB,UAAU,EAAE,MAAM,GAUnB;MA/HL,AA6GI,oBA7GgB,CAoFlB,mBAAmB,CAyBjB,MAAM,AAUJ,MAAO,AAAA,IAAK,CAAA,AAAA,QAAQ,EAAE;QACpB,UAAU,EbvGD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;QawG1D,UAAU,EAAE,gBAAgB,GAC7B;MAED,MAAM,EAAE,SAAS,EAAE,KAAK;QA5H9B,AA6GI,oBA7GgB,CAoFlB,mBAAmB,CAyBjB,MAAM,CAAC;UAgBH,QAAQ,EAAE,QAAQ,GAErB;EA/HL,AAkIE,oBAlIkB,CAkIlB,sBAAsB,CAAC;IACrB,MAAM,EdrCI,KAAK,GcsChB;EApIH,AAsIE,oBAtIkB,CAsIlB,aAAa,CAAC;IAGZ,MAAM,EAAE,CAAC,CADY,IAAG;IAExB,OAAO,EAAE,CAAC,CAFW,GAAG,GAQzB;IAhJH,AAsIE,oBAtIkB,CAsIlB,aAAa,AAMX,UAAW,CAAC;MACV,QAAQ,EAAE,MAAM;MAChB,cAAc,EAAE,IAAI,GACrB;EA/IL,AAoJM,oBApJc,AAkJlB,kBAAmB,CACjB,cAAc,CACZ,kBAAkB,CAAC;IACjB,UAAU,EAAE,SAAS,CAAC,IAAI,CdvFlB,8BAA8B,GcwFvC;EAtJP,AAyJI,oBAzJgB,AAkJlB,kBAAmB,CAOjB,aAAa,CAAC;IACZ,UAAU,EAAE,UAAU,CAAC,IAAI,Cd5FjB,8BAA8B,Gc6FzC;EA3JL,AA+JI,oBA/JgB,AA8JlB,UAAW,CACT,aAAa,CAAC;IACZ,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,MAAM,GACjB;;ACjKL,AAAA,eAAe,CAAC;EAGd,SAAS,EAAE,KAAK;EAChB,MAAM,EAAE,MAAM;EACd,SAAS,EAAE,IAAI;EAEf,OAAO,EAAE,OAAO;EAChB,OAAO,EAAE,QAAQ,GAoElB;EA5ED,AAUE,eAVa,CAUb,EAAE,CAAC;IACD,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,IAAI,GAChB;EAbH,AAeE,eAfa,CAeb,KAAK,CAAC;IACJ,eAAe,EAAE,QAAQ;IACzB,KAAK,EAAE,IAAI,GACZ;EAlBH,AAqBkB,eArBH,CAoBb,aAAa,AACX,YAAa,CAAC,EAAE,CAAC;IACf,UAAU,EAAE,GAAG,CAAC,KAAK,CArBV,oCAAoC,GAsBhD;EAvBL,AAyBI,eAzBW,CAoBb,aAAa,CAKX,EAAE,CAAC;IACD,cAAc,EAAE,GAAG;IACnB,aAAa,EAAE,GAAG,CAAC,KAAK,CA1Bb,oCAAoC;IA2B/C,OAAO,EAAE,GAAG,GASb;IArCL,AAyBI,eAzBW,CAoBb,aAAa,CAKX,EAAE,AAKA,YAAa,CAAC;MACZ,WAAW,EAAE,GAAG,CAAC,KAAK,CA9Bb,oCAAoC,GA+B9C;IAhCP,AAyBI,eAzBW,CAoBb,aAAa,CAKX,EAAE,AASA,WAAY,CAAC;MACX,YAAY,EAAE,GAAG,CAAC,KAAK,CAlCd,oCAAoC,GAmC9C;EApCP,AAwCkB,eAxCH,CAoBb,aAAa,AAmBX,QAAS,CACP,WAAW,CAAC,IAAI,CAAC;IACf,UAAU,EfzBN,OAAO;Ie0BX,OAAO,EAAE,OAAO,GAKjB;KAHC,AAAA,AAJU,qBAIT,AAAA,EA5CT,eAAe,CAoBb,aAAa,AAmBX,QAAS,CACP,WAAW,CAAC,IAAI,CAIY;MACxB,KAAK,EfRP,IAAI,GeSH;EA9CT,AAmDM,eAnDS,CAoBb,aAAa,AA8BX,QAAS,CACP,WAAW;EAnDjB,AAoDM,eApDS,CAoBb,aAAa,AA8BX,QAAS,CAEP,gBAAgB,CAAC;IACf,OAAO,EAAE,GAAG,GACb;EAtDP,AAwDM,eAxDS,CAoBb,aAAa,AA8BX,QAAS,CAMP,WAAW,CAAC;IACV,OAAO,EAAE,GAAG,GACb;EA1DP,AA6DI,eA7DW,CAoBb,aAAa,CAyCX,WAAW,CAAC;IACV,WAAW,EA5DH,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,SAAS;IA6DxG,SAAS,EAAE,IAAI,GAChB;EAhEL,AAmEE,eAnEa,CAmEb,GAAG,CAAC;IACF,UAAU,EAAE,sCAAsC;IAClD,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,GAAG;IACZ,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,IAAI;IACd,WAAW,EAxED,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,SAAS,GAyE3G;;AC5EH,AAAA,eAAe,CAAC;EACd,WAAW,EAAE,MAAM;EACnB,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,oCAAoC;EACtD,gBAAgB,EAAE,oCAAoC;EACtD,WAAW,EAAE,OAAO;EACpB,OAAO,EAAE,QAAQ;EACjB,mBAAmB,EAAE,IAAI;EACzB,KAAK,EAAE,OAAO,GAKf;EAHC,AAAM,KAAD,CAVP,eAAe,CAUL;IACN,mBAAmB,EAAE,IAAI,GAC1B;;ACZH,AAAA,qBAAqB,CAAC;EACpB,QAAQ,EAAE,KAAK;EACf,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,CAAC;EACR,gBAAgB,EAAE,uCAAuC;EACzD,KAAK,EAAE,gCAAgC;EACvC,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,qCAAqC;EAC3D,UAAU,EhBQO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CDJpB,qBAAO;EiBHf,OAAO,EAAE,IAAI;EACb,WAAW,EAAE,MAAM,GA6CpB;EAzDD,AAcE,qBAdmB,CAcnB,aAAa,CAAC;IACZ,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,IAAI,CjBkDY,IAAI;IiB/C7B,kBAAkB,EAAE,IAAI;IAKxB,SAAS,EjBsDa,KAAmE,GiBlD1F;IARC,MAAM,EAAE,SAAS,EAAE,KAAK;MAtB5B,AAcE,qBAdmB,CAcnB,aAAa,CAAC;QASV,kBAAkB,EjB6CK,IAAI,GiBtC9B;IAHC,MAAM,EAAE,SAAS,EAAE,MAAM;MA3B7B,AAcE,qBAdmB,CAcnB,aAAa,CAAC;QAcV,SAAS,EjBqDY,MAAmE,GiBnD3F;EA9BH,AAgCE,qBAhCmB,CAgCnB,YAAY,CAAC;IACX,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,gBAAgB,EAAE,0EAA0E;IAC5F,uBAAuB,EAAE,IAAI;IAC7B,IAAI,EAAE,gCAAgC;IACtC,OAAO,EAAE,GAAG;IACZ,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,OAAO,GAKhB;IAHC,MAAM,EAAE,SAAS,EAAE,KAAK;MAjD5B,AAgCE,qBAhCmB,CAgCnB,YAAY,CAAC;QAkBT,gBAAgB,EAAE,IAAI,GAEzB;EApDH,AAsDU,qBAtDW,AAsDnB,MAAO,CAAC,YAAY,CAAC;IACnB,OAAO,EAAE,KAAK,GACf;;ACxDH,AACE,gBADc,AACd,WAAY,CAAC;EACX,QAAQ,EAAE,MAAM,GACjB;;AAGH,AAAA,kBAAkB,CAAC;EACjB,UAAU,ElBwCJ,IAAI;EkBvCV,OAAO,EAAE,IAAI;EACb,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,CAAC;EACN,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,IAAI,GAKd;EAbD,AAUE,kBAVgB,AAUhB,OAAQ,CAAC;IACP,OAAO,EAAE,KAAK,GACf;;AAGH,AAAA,kBAAkB,CAAC;EACjB,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,KAAK;EACb,QAAQ,EAAE,KAAK;EACf,GAAG,EAAE,iBAAiB;EACtB,IAAI,EAAE,iBAAiB;EACvB,UAAU,ElBoBJ,IAAI;EkBnBV,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,ClBUlB,kBAAI;EkBTV,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,IAAI;EACb,OAAO,EAAE,IAAI,GA8Ed;EA1EC,MAAM,EAAC,SAAS,EAAE,KAAK;IAdzB,AAAA,kBAAkB,CAAC;MAef,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;MACZ,GAAG,EAAE,CAAC;MACN,IAAI,EAAE,CAAC;MACP,UAAU,EAAE,IAAI;MAChB,aAAa,EAAE,CAAC,GAoEnB;EAhEC,MAAM,EAAC,SAAS,EAAE,KAAK,OAAO,UAAU,EAAE,KAAK;IAxBjD,AAAA,kBAAkB,CAAC;MAyBf,UAAU,EAAE,MAAM,GA+DrB;EA3DC,MAAM,EAAC,SAAS,EAAE,KAAK,OAAO,UAAU,EAAE,KAAK;IA7BjD,AAAA,kBAAkB,CAAC;MA8Bf,UAAU,EAAE,MAAM,GA0DrB;EAxFD,AAiCE,kBAjCgB,AAiChB,OAAQ,CAAC;IACP,OAAO,EAAE,KAAK,GACf;EAnCH,AAqCE,kBArCgB,CAqChB,EAAE,CAAC;IACD,KAAK,ElBhDC,OAAO;IkBiDb,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,OAAO,GASxB;IAPC,MAAM,EAAC,SAAS,EAAE,KAAK;MA9C3B,AAqCE,kBArCgB,CAqChB,EAAE,CAAC;QAUC,UAAU,EAAE,KAAK,GAMpB;IAHC,MAAM,EAAC,SAAS,EAAE,KAAK;MAlD3B,AAqCE,kBArCgB,CAqChB,EAAE,CAAC;QAcC,UAAU,EAAE,IAAI,GAEnB;EArDH,AAuDE,kBAvDgB,CAuDhB,OAAO,CAAC;IACN,UAAU,EAAE,GAAG,CAAC,KAAK,ClBrEf,OAAO;IkBsEb,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,MAAM;IAClB,gBAAgB,ElBpCZ,IAAI,GkB6DT;IAtBC,MAAM,EAAC,SAAS,EAAE,KAAK,OAAO,UAAU,EAAE,KAAK;MAjEnD,AAuDE,kBAvDgB,CAuDhB,OAAO,CAAC;QAWJ,QAAQ,EAAE,MAAM,GAqBnB;IAjBC,MAAM,EAAC,SAAS,EAAE,KAAK,OAAO,UAAU,EAAE,KAAK;MAtEnD,AAuDE,kBAvDgB,CAuDhB,OAAO,CAAC;QAgBJ,QAAQ,EAAE,MAAM,GAgBnB;IAvFH,AA0EI,kBA1Ec,CAuDhB,OAAO,CAmBL,YAAY,CAAC;MACX,UAAU,EAAE,IAAI;MAChB,KAAK,EAAE,KAAK;MACZ,MAAM,EAAE,IAAI;MACZ,OAAO,EAAE,SAAS;MAClB,SAAS,EAAE,IAAI,GAOhB;MAtFL,AA0EI,kBA1Ec,CAuDhB,OAAO,CAmBL,YAAY,AAOV,MAAO,EAjFb,AA0EI,kBA1Ec,CAuDhB,OAAO,CAmBL,YAAY,AAQV,OAAQ,CAAC;QACP,UAAU,EjBvFD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;QiBwF1D,UAAU,EAAE,gBAAgB,GAC7B;;AC1GP,AACE,cADY,AACZ,KAAM,CAAC;EACL,OAAO,EAAE,MAAM,GAChB;;AAHH,AAKE,cALY,CAKZ,MAAM,CAAC;EACL,OAAO,EAAE,MAAM;EACf,SAAS,EAAE,OAAO;EAClB,MAAM,EAAE,CAAC,GACV;;AATH,AAWE,cAXY,CAWZ,UAAU,CAAC;EACT,iBAAiB,EAAE,SAAS;EAC5B,eAAe,EAAE,IAAI;EACrB,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,GAAG;EACf,iBAAiB,EAAE,GAAG;EACtB,OAAO,EAAE,YAAY;EACrB,cAAc,EAAE,GAAG,GACpB;;AApBH,AAsBE,cAtBY,CAsBZ,KAAK,CAAC;EACJ,OAAO,EAAE,MAAM;EACf,MAAM,EAAE,CAAC,GACV;;AAzBH,AA2BE,cA3BY,CA2BZ,KAAK,CAAC;EACJ,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,IAAI;EACX,iBAAiB,EAAE,IAAI;EACvB,WAAW,EAAE,CAAC,GACf;;AAhCH,AAkCS,cAlCK,AAkCZ,KAAM,CAAC,KAAK,CAAC;EACX,iBAAiB,EAAE,IAAI,GACxB;;AApCH,AAsCE,cAtCY,CAsCZ,eAAe,CAAC;EACd,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,SAAS,GAC3B;;ACzCH,AAAA,2BAA2B,CAAC;EAC1B,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,IAAI;EACrB,qBAAqB,EAAE,cAAc;EACrC,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,IAAI,GASpB;EANC,MAAM,EAAC,SAAS,EAAE,KAAK;IARzB,AAAA,2BAA2B,CAAC;MASxB,qBAAqB,EAAE,IAAI;MAC3B,kBAAkB,EAAE,cAAc;MAClC,YAAY,EAAE,KAAK;MACnB,aAAa,EAAE,KAAK,GAEvB;;AAED,AAAA,kBAAkB,CAAC;EACjB,MAAM,EAAE,KAAK;EACb,UAAU,EAAE,MAAM;EAClB,OAAO,EAAE,IAAI;EACb,WAAW,EAAE,GAAG,GA4IjB;EAzIC,MAAM,EAAC,SAAS,EAAE,KAAK;IAPzB,AAAA,kBAAkB,CAAC;MAQf,MAAM,EAAE,KAAK;MACb,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,IAAI;MACb,aAAa,EAAE,GAAG,CAAC,KAAK,CpBnBlB,OAAO;MoBoBb,OAAO,EAAE,IAAI;MACb,aAAa,EAAE,IAAI,GAmItB;MAhJD,AAeI,kBAfc,AAed,WAAY,CAAC;QACX,MAAM,EAAE,CAAC,GACV;MAjBL,AAmBI,kBAnBc,CAmBd,kBAAkB,CAAC;QACjB,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,IAAI,GAab;QAlCL,AAuBe,kBAvBG,CAmBd,kBAAkB,GAId,IAAI,GAAG,EAAE,CAAC;UACV,UAAU,EAAE,CAAC;UACb,aAAa,EAAE,GAAG;UAClB,WAAW,EAAE,GAAG,GACjB;QA3BP,AA6Be,kBA7BG,CAmBd,kBAAkB,GAUd,IAAI,GAAG,CAAC,CAAC;UACT,UAAU,EAAE,CAAC;UACb,WAAW,EAAE,IAAI;UACjB,SAAS,EAAE,IAAI,GAChB;EAIL,MAAM,EAAC,SAAS,EAAE,KAAK;IArCzB,AAAA,kBAAkB,CAAC;MAsCf,MAAM,EAAE,KAAK,GA0GhB;EAhJD,AAyCE,kBAzCgB,CAyChB,uBAAuB,CAAC;IACtB,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,eAAe,EAAE,KAAK;IACtB,mBAAmB,EAAE,aAAa;IAClC,iBAAiB,EAAE,SAAS;IAC5B,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,MAAM,GAwBvB;IArBC,MAAM,EAAC,SAAS,EAAE,KAAK;MAnD3B,AAyCE,kBAzCgB,CAyChB,uBAAuB,CAAC;QAWpB,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI;QACf,eAAe,EAAE,IAAI,GAkBxB;IAxEH,AAyCE,kBAzCgB,CAyChB,uBAAuB,AAgBrB,OAAQ,CAAC;MACP,gBAAgB,EAAE,gFAAgF,GACnG;IA3DL,AAyCE,kBAzCgB,CAyChB,uBAAuB,AAoBrB,gBAAiB,CAAC;MAChB,gBAAgB,EAAE,yFAAyF,GAC5G;IA/DL,AAyCE,kBAzCgB,CAyChB,uBAAuB,AAwBrB,YAAa,CAAC;MACZ,gBAAgB,EAAE,qFAAqF,GACxG;IAnEL,AAyCE,kBAzCgB,CAyChB,uBAAuB,AA4BrB,KAAM,CAAC;MACL,gBAAgB,EAAE,8EAA8E,GACjG;EAvEL,AA0EE,kBA1EgB,CA0EhB,kBAAkB,CAAC;IACjB,MAAM,EAAE,KAAK,GAoBd;IA/FH,AA6Ea,kBA7EK,CA0EhB,kBAAkB,GAGd,IAAI,GAAG,EAAE,CAAC;MACV,KAAK,EpBhFD,OAAO;MoBiFX,aAAa,EAAE,GAAG;MAClB,WAAW,EAAE,GAAG,GACjB;IAjFL,AAmFa,kBAnFK,CA0EhB,kBAAkB,GASd,IAAI,GAAG,CAAC,CAAC;MACT,KAAK,EpBzFD,OAAO;MoB0FX,UAAU,EAAE,CAAC;MACb,MAAM,EAAE,KAAK;MACb,aAAa,EAAE,IAAI;MACnB,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI,GAKlB;MAHC,MAAM,EAAC,SAAS,EAAE,KAAK;QA3F7B,AAmFa,kBAnFK,CA0EhB,kBAAkB,GASd,IAAI,GAAG,CAAC,CAAC;UASP,aAAa,EAAE,CAAC,GAEnB;EA9FL,AAiGE,kBAjGgB,CAiGhB,iBAAiB,CAAC;IAChB,gBAAgB,EpBpGV,qBAAO;IoBqGb,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,IAAI,GAmBhB;IAhBC,MAAM,EAAC,SAAS,EAAE,KAAK;MA3G3B,AAiGE,kBAjGgB,CAiGhB,iBAAiB,CAAC;QAWd,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK,GAatB;IAVC,MAAM,EAAC,SAAS,EAAE,KAAK;MAjH3B,AAiGE,kBAjGgB,CAiGhB,iBAAiB,CAAC;QAiBd,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI,GAQnB;IA3HH,AAiGE,kBAjGgB,CAiGhB,iBAAiB,AAqBf,MAAO,EAtHX,AAiGE,kBAjGgB,CAiGhB,iBAAiB,AAsBf,OAAQ,CAAC;MACP,UAAU,EnBvHC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uCAAuC;MmBwH5D,UAAU,EAAE,gBAAgB,GAC7B;EA1HL,AA8HE,kBA9HgB,AA8HhB,QAAS,CAAC;IACR,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,QAAQ;IAClB,gBAAgB,EpB3IV,OAAO;IoB4Ib,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,KAAK,GAMnB;IAHC,MAAM,EAAC,SAAS,EAAE,KAAK;MAxI3B,AA8HE,kBA9HgB,AA8HhB,QAAS,CAAC;QAWN,OAAO,EAAE,IAAI,GAEhB;EA3IH,AA6IE,kBA7IgB,AA6IhB,WAAY,AAAA,QAAQ,CAAC;IACnB,OAAO,EAAE,IAAI,GACd"
 }
\ No newline at end of file
--- a/browser/components/newtab/css/activity-stream-windows.css
+++ b/browser/components/newtab/css/activity-stream-windows.css
@@ -620,17 +620,16 @@ main {
   margin: 0 auto;
   padding: 32px; }
   .topsite-form .form-input-container .top-site-outer {
     padding: 0;
     margin: 24px 0 0;
     margin-inline-start: 32px;
     pointer-events: none; }
   .topsite-form .form-input-container .section-title {
-    text-transform: none;
     font-size: 16px;
     margin: 0 0 16px; }
 
 .topsite-form .fields-and-preview {
   display: flex; }
 
 .topsite-form label {
   font-size: 13px; }
@@ -1564,18 +1563,17 @@ a.firstrun-link {
 .collapsible-section {
   padding: 10px 25px;
   transition-delay: 100ms;
   transition-duration: 100ms;
   transition-property: background-color; }
   .collapsible-section .section-title {
     font-size: 13px;
     font-weight: bold;
-    margin: 0;
-    text-transform: uppercase; }
+    margin: 0; }
     .collapsible-section .section-title span {
       color: var(--newtab-section-header-text-color);
       display: inline-block;
       fill: var(--newtab-section-header-text-color);
       vertical-align: middle; }
     .collapsible-section .section-title .click-target {
       cursor: pointer;
       vertical-align: top;
--- a/browser/components/newtab/css/activity-stream-windows.css.map
+++ b/browser/components/newtab/css/activity-stream-windows.css.map
@@ -31,28 +31,28 @@
 		"/* This is the windows variant */ // sass-lint:disable-line no-css-comments\n\n$os-infopanel-arrow-height: 10px;\n$os-infopanel-arrow-offset-end: 6px;\n$os-infopanel-arrow-width: 20px;\n\n@import './activity-stream';\n",
 		"@import './normalize';\n@import './variables';\n@import './theme';\n@import './icons';\n\nhtml {\n  height: 100%;\n}\n\nbody,\n#root { // sass-lint:disable-line no-ids\n  min-height: 100vh;\n}\n\nbody {\n  background-color: var(--newtab-background-color);\n  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Ubuntu', 'Helvetica Neue', sans-serif;\n  font-size: 16px;\n  overflow-y: scroll;\n\n  &.hide-onboarding > #onboarding-overlay-button, // sass-lint:disable-line no-ids\n  &.hide-main > #onboarding-overlay-button { // sass-lint:disable-line no-ids\n    display: none !important; // sass-lint:disable-line no-important\n  }\n\n  &.hide-main > #onboarding-notification-bar { // sass-lint:disable-line no-ids\n    display: none;\n  }\n}\n\nh1,\nh2 {\n  font-weight: normal;\n}\n\na {\n  text-decoration: none;\n}\n\n// For screen readers\n.sr-only {\n  border: 0;\n  clip: rect(0, 0, 0, 0);\n  height: 1px;\n  margin: -1px;\n  overflow: hidden;\n  padding: 0;\n  position: absolute;\n  width: 1px;\n}\n\n.inner-border {\n  border: $border-secondary;\n  border-radius: $border-radius;\n  height: 100%;\n  left: 0;\n  pointer-events: none;\n  position: absolute;\n  top: 0;\n  width: 100%;\n  z-index: 100;\n}\n\n@keyframes fadeIn {\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n.show-on-init {\n  opacity: 0;\n  transition: opacity 0.2s ease-in;\n\n  &.on {\n    animation: fadeIn 0.2s;\n    opacity: 1;\n  }\n}\n\n.actions {\n  border-top: $border-secondary;\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n  margin: 0;\n  padding: 15px 25px 0;\n}\n\n// Default button (grey)\n.button,\n.actions button {\n  background-color: var(--newtab-button-secondary-color);\n  border: $border-primary;\n  border-radius: 4px;\n  color: inherit;\n  cursor: pointer;\n  margin-bottom: 15px;\n  padding: 10px 30px;\n  white-space: nowrap;\n\n  &:hover:not(.dismiss) {\n    box-shadow: $shadow-primary;\n    transition: box-shadow 150ms;\n  }\n\n  &.dismiss {\n    background-color: transparent;\n    border: 0;\n    padding: 0;\n    text-decoration: underline;\n  }\n\n  // Blue button\n  &.primary,\n  &.done {\n    background-color: var(--newtab-button-primary-color);\n    border: solid 1px var(--newtab-button-primary-color);\n    color: $white;\n    margin-inline-start: auto;\n  }\n}\n\ninput {\n  &[type='text'],\n  &[type='search'] {\n    border-radius: $border-radius;\n  }\n}\n\n// Make sure snippets show up above other UI elements\n#snippets-container { // sass-lint:disable-line no-ids\n  z-index: 1;\n}\n\n// Components\n@import '../components/Base/Base';\n@import '../components/ErrorBoundary/ErrorBoundary';\n@import '../components/TopSites/TopSites';\n@import '../components/Sections/Sections';\n@import '../components/StartupOverlay/StartupOverlay';\n@import '../components/Topics/Topics';\n@import '../components/Search/Search';\n@import '../components/ContextMenu/ContextMenu';\n@import '../components/ConfirmDialog/ConfirmDialog';\n@import '../components/Card/Card';\n@import '../components/ManualMigration/ManualMigration';\n@import '../components/CollapsibleSection/CollapsibleSection';\n@import '../components/ASRouterAdmin/ASRouterAdmin';\n\n// AS Router\n@import '../asrouter/components/Button/Button';\n@import '../asrouter/components/SnippetBase/SnippetBase';\n@import '../asrouter/components/ModalOverlay/ModalOverlay';\n@import '../asrouter/templates/SimpleSnippet/SimpleSnippet';\n@import '../asrouter/templates/OnboardingMessage/OnboardingMessage';\n",
 		"html {\n  box-sizing: border-box;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: inherit;\n}\n\n*::-moz-focus-inner {\n  border: 0;\n}\n\nbody {\n  margin: 0;\n}\n\nbutton,\ninput {\n  background-color: inherit;\n  color: inherit;\n  font-family: inherit;\n  font-size: inherit;\n}\n\n[hidden] {\n  display: none !important; // sass-lint:disable-line no-important\n}\n",
 		"// Photon colors from http://design.firefox.com/photon/visuals/color.html\n$blue-40: #45A1FF;\n$blue-50: #0A84FF;\n$blue-60: #0060DF;\n$blue-70: #003EAA;\n$blue-80: #002275;\n$grey-10: #F9F9FA;\n$grey-20: #EDEDF0;\n$grey-30: #D7D7DB;\n$grey-40: #B1B1B3;\n$grey-50: #737373;\n$grey-60: #4A4A4F;\n$grey-70: #38383D;\n$grey-80: #2A2A2E;\n$grey-90: #0C0C0D;\n$teal-70: #008EA4;\n$red-60: #D70022;\n$yellow-50: #FFE900;\n\n// Photon opacity from http://design.firefox.com/photon/visuals/color.html#opacity\n$grey-10-10: rgba($grey-10, 0.1);\n$grey-10-20: rgba($grey-10, 0.2);\n$grey-10-40: rgba($grey-10, 0.4);\n$grey-10-60: rgba($grey-10, 0.6);\n$grey-10-80: rgba($grey-10, 0.8);\n$grey-20-60: rgba($grey-20, 0.6);\n$grey-20-80: rgba($grey-20, 0.8);\n$grey-30-60: rgba($grey-30, 0.6);\n$grey-90-10: rgba($grey-90, 0.1);\n$grey-90-20: rgba($grey-90, 0.2);\n$grey-90-30: rgba($grey-90, 0.3);\n$grey-90-40: rgba($grey-90, 0.4);\n$grey-90-50: rgba($grey-90, 0.5);\n$grey-90-60: rgba($grey-90, 0.6);\n$grey-90-70: rgba($grey-90, 0.7);\n$grey-90-80: rgba($grey-90, 0.8);\n$grey-90-90: rgba($grey-90, 0.9);\n\n$black: #000;\n$black-5: rgba($black, 0.05);\n$black-10: rgba($black, 0.1);\n$black-15: rgba($black, 0.15);\n$black-20: rgba($black, 0.2);\n$black-25: rgba($black, 0.25);\n$black-30: rgba($black, 0.3);\n\n// Other colors\n$white: #FFF;\n$white-10: rgba($white, 0.1);\n$pocket-teal: #50BCB6;\n$bookmark-icon-fill: #0A84FF;\n$download-icon-fill: #12BC00;\n$pocket-icon-fill: #D70022;\n$email-input-focus: rgba($blue-50, 0.3);\n$email-input-invalid: rgba($red-60, 0.3);\n$aw-extra-blue-1: #004EC2;\n$aw-extra-blue-2: #0080FF;\n$aw-extra-blue-3: #00C7FF;\n$about-welcome-gradient: linear-gradient(to bottom, $blue-70 40%, $aw-extra-blue-1 60%, $blue-60 80%, $aw-extra-blue-2 90%, $aw-extra-blue-3 100%);\n$about-welcome-extra-links: #676F7E;\n\n// Photon transitions from http://design.firefox.com/photon/motion/duration-and-easing.html\n$photon-easing: cubic-bezier(0.07, 0.95, 0, 1);\n\n$border-radius: 3px;\n\n// Grid related styles\n$base-gutter: 32px;\n$section-horizontal-padding: 25px;\n$section-vertical-padding: 10px;\n$section-spacing: 40px - $section-vertical-padding * 2;\n$grid-unit: 96px; // 1 top site\n\n$icon-size: 16px;\n$smaller-icon-size: 12px;\n$larger-icon-size: 32px;\n\n$wrapper-default-width: $grid-unit * 2 + $base-gutter * 1 + $section-horizontal-padding * 2; // 2 top sites\n$wrapper-max-width-small: $grid-unit * 3 + $base-gutter * 2 + $section-horizontal-padding * 2; // 3 top sites\n$wrapper-max-width-medium: $grid-unit * 4 + $base-gutter * 3 + $section-horizontal-padding * 2; // 4 top sites\n$wrapper-max-width-large: $grid-unit * 6 + $base-gutter * 5 + $section-horizontal-padding * 2; // 6 top sites\n$wrapper-max-width-widest: $grid-unit * 8 + $base-gutter * 7 + $section-horizontal-padding * 2; // 8 top sites\n// For the breakpoints, we need to add space for the scrollbar to avoid weird\n// layout issues when the scrollbar is visible. 16px is wide enough to cover all\n// OSes and keeps it simpler than a per-OS value.\n$scrollbar-width: 16px;\n$break-point-small: $wrapper-max-width-small + $base-gutter * 2 + $scrollbar-width;\n$break-point-medium: $wrapper-max-width-medium + $base-gutter * 2 + $scrollbar-width;\n$break-point-large: $wrapper-max-width-large + $base-gutter * 2 + $scrollbar-width;\n$break-point-widest: $wrapper-max-width-widest + $base-gutter * 2 + $scrollbar-width;\n\n$section-title-font-size: 13px;\n\n$card-width: $grid-unit * 2 + $base-gutter;\n$card-height: 266px;\n$card-preview-image-height: 122px;\n$card-title-margin: 2px;\n$card-text-line-height: 19px;\n// Larger cards for wider screens:\n$card-width-large: 309px;\n$card-height-large: 370px;\n$card-preview-image-height-large: 155px;\n// Compact cards for Highlights\n$card-height-compact: 160px;\n$card-preview-image-height-compact: 108px;\n\n$topic-margin-top: 12px;\n\n$context-menu-button-size: 27px;\n$context-menu-button-boxshadow: 0 2px $grey-90-10;\n$context-menu-shadow: 0 5px 10px $black-30, 0 0 0 1px $black-20;\n$context-menu-font-size: 14px;\n$context-menu-border-radius: 5px;\n$context-menu-outer-padding: 5px;\n$context-menu-item-padding: 3px 12px;\n\n$error-fallback-font-size: 12px;\n$error-fallback-line-height: 1.5;\n\n$image-path: '../data/content/assets/';\n\n$snippets-container-height: 120px;\n\n$textbox-shadow-size: 4px;\n\n@mixin fade-in {\n  box-shadow: inset $inner-box-shadow, $shadow-primary;\n  transition: box-shadow 150ms;\n}\n\n@mixin fade-in-card {\n  box-shadow: $shadow-primary;\n  transition: box-shadow 150ms;\n}\n\n@mixin context-menu-button {\n  .context-menu-button {\n    background-clip: padding-box;\n    background-color: var(--newtab-contextmenu-button-color);\n    background-image: url('chrome://browser/skin/page-action.svg');\n    background-position: 55%;\n    border: $border-primary;\n    border-radius: 100%;\n    box-shadow: $context-menu-button-boxshadow;\n    cursor: pointer;\n    fill: var(--newtab-icon-primary-color);\n    height: $context-menu-button-size;\n    inset-inline-end: -($context-menu-button-size / 2);\n    opacity: 0;\n    position: absolute;\n    top: -($context-menu-button-size / 2);\n    transform: scale(0.25);\n    transition-duration: 200ms;\n    transition-property: transform, opacity;\n    width: $context-menu-button-size;\n\n    &:-moz-any(:active, :focus) {\n      opacity: 1;\n      transform: scale(1);\n    }\n  }\n}\n\n@mixin context-menu-button-hover {\n  .context-menu-button {\n    opacity: 1;\n    transform: scale(1);\n  }\n}\n\n@mixin context-menu-open-middle {\n  .context-menu {\n    margin-inline-end: auto;\n    margin-inline-start: auto;\n    inset-inline-end: auto;\n    inset-inline-start: -$base-gutter;\n  }\n}\n\n@mixin context-menu-open-left {\n  .context-menu {\n    margin-inline-end: 5px;\n    margin-inline-start: auto;\n    inset-inline-end: 0;\n    inset-inline-start: auto;\n  }\n}\n\n@mixin flip-icon {\n  &:dir(rtl) {\n    transform: scaleX(-1);\n  }\n}\n",
 		"@function textbox-shadow($color) {\n  @return 0 0 0 1px $color, 0 0 0 $textbox-shadow-size rgba($color, 0.3);\n}\n\n@mixin textbox-focus($color) {\n  --newtab-textbox-focus-color: $color;\n  --newtab-textbox-focus-boxshadow: textbox-shadow($color);\n}\n\n// scss variables related to the theme.\n$border-primary: 1px solid var(--newtab-border-primary-color);\n$border-secondary: 1px solid var(--newtab-border-secondary-color);\n$inner-box-shadow: 0 0 0 1px var(--newtab-inner-box-shadow-color);\n$input-border: 1px solid var(--newtab-textbox-border);\n$input-border-active: 1px solid var(--newtab-textbox-focus-color);\n$input-error-border: 1px solid $red-60;\n$input-error-boxshadow: textbox-shadow($red-60);\n$shadow-primary: 0 0 0 5px var(--newtab-card-active-outline-color);\n$shadow-secondary: 0 1px 4px 0 $grey-90-20;\n\n// Default theme\nbody {\n  // General styles\n  --newtab-background-color: $grey-10;\n  --newtab-border-primary-color: $grey-40;\n  --newtab-border-secondary-color: $grey-30;\n  --newtab-button-primary-color: $blue-60;\n  --newtab-button-secondary-color: inherit;\n  --newtab-element-active-color: $grey-30-60;\n  --newtab-element-hover-color: $grey-20;\n  --newtab-icon-primary-color: $grey-90-80;\n  --newtab-icon-secondary-color: $grey-90-60;\n  --newtab-icon-tertiary-color: $grey-30;\n  --newtab-inner-box-shadow-color: $black-10;\n  --newtab-link-primary-color: $blue-60;\n  --newtab-link-secondary-color: $teal-70;\n  --newtab-text-conditional-color: $grey-60;\n  --newtab-text-primary-color: $grey-90;\n  --newtab-text-secondary-color: $grey-50;\n  --newtab-textbox-background-color: $white;\n  --newtab-textbox-border: $grey-90-20;\n  @include textbox-focus($blue-60); // sass-lint:disable-line mixins-before-declarations\n\n  // Context menu\n  --newtab-contextmenu-background-color: $grey-10;\n  --newtab-contextmenu-button-color: $white;\n\n  // Modal + overlay\n  --newtab-modal-color: $white;\n  --newtab-overlay-color: $grey-20-80;\n\n  // Sections\n  --newtab-section-header-text-color: $grey-50;\n  --newtab-section-navigation-text-color: $grey-50;\n  --newtab-section-active-contextmenu-color: $grey-90;\n\n  // Search\n  --newtab-search-border-color: transparent;\n  --newtab-search-dropdown-color: $white;\n  --newtab-search-dropdown-header-color: $grey-10;\n  --newtab-search-icon-color: $grey-90-40;\n\n  // Top Sites\n  --newtab-topsites-background-color: $white;\n  --newtab-topsites-icon-shadow: inset $inner-box-shadow;\n  --newtab-topsites-label-color: inherit;\n\n  // Cards\n  --newtab-card-active-outline-color: $grey-30;\n  --newtab-card-background-color: $white;\n  --newtab-card-hairline-color: $black-10;\n  --newtab-card-shadow: 0 1px 4px 0 $grey-90-10;\n\n  // Snippets\n  --newtab-snippets-background-color: $white;\n  --newtab-snippets-hairline-color: transparent;\n\n  &[lwt-newtab-brighttext] {\n    // General styles\n    --newtab-background-color: $grey-80;\n    --newtab-border-primary-color: $grey-10-80;\n    --newtab-border-secondary-color: $grey-10-10;\n    --newtab-button-primary-color: $blue-60;\n    --newtab-button-secondary-color: $grey-70;\n    --newtab-element-active-color: $grey-10-20;\n    --newtab-element-hover-color: $grey-10-10;\n    --newtab-icon-primary-color: $grey-10-80;\n    --newtab-icon-secondary-color: $grey-10-40;\n    --newtab-icon-tertiary-color: $grey-10-40;\n    --newtab-inner-box-shadow-color: $grey-10-20;\n    --newtab-link-primary-color: $blue-40;\n    --newtab-link-secondary-color: $pocket-teal;\n    --newtab-text-conditional-color: $grey-10;\n    --newtab-text-primary-color: $grey-10;\n    --newtab-text-secondary-color: $grey-10-80;\n    --newtab-textbox-background-color: $grey-70;\n    --newtab-textbox-border: $grey-10-20;\n    @include textbox-focus($blue-40); // sass-lint:disable-line mixins-before-declarations\n\n    // Context menu\n    --newtab-contextmenu-background-color: $grey-60;\n    --newtab-contextmenu-button-color: $grey-80;\n\n    // Modal + overlay\n    --newtab-modal-color: $grey-80;\n    --newtab-overlay-color: $grey-90-80;\n\n    // Sections\n    --newtab-section-header-text-color: $grey-10-80;\n    --newtab-section-navigation-text-color: $grey-10-80;\n    --newtab-section-active-contextmenu-color: $white;\n\n    // Search\n    --newtab-search-border-color: $grey-10-20;\n    --newtab-search-dropdown-color: $grey-70;\n    --newtab-search-dropdown-header-color: $grey-60;\n    --newtab-search-icon-color: $grey-10-60;\n\n    // Top Sites\n    --newtab-topsites-background-color: $grey-70;\n    --newtab-topsites-icon-shadow: none;\n    --newtab-topsites-label-color: $grey-10-80;\n\n    // Cards\n    --newtab-card-active-outline-color: $grey-60;\n    --newtab-card-background-color: $grey-70;\n    --newtab-card-hairline-color: $grey-10-10;\n    --newtab-card-shadow: 0 1px 8px 0 $grey-90-20;\n\n    // Snippets\n    --newtab-snippets-background-color: $grey-70;\n    --newtab-snippets-hairline-color: $white-10;\n  }\n}\n",
 		".icon {\n  background-position: center center;\n  background-repeat: no-repeat;\n  background-size: $icon-size;\n  -moz-context-properties: fill;\n  display: inline-block;\n  fill: var(--newtab-icon-primary-color);\n  height: $icon-size;\n  vertical-align: middle;\n  width: $icon-size;\n\n  &.icon-spacer {\n    margin-inline-end: 8px;\n  }\n\n  &.icon-small-spacer {\n    margin-inline-end: 6px;\n  }\n\n  &.icon-bookmark-added {\n    background-image: url('chrome://browser/skin/bookmark.svg');\n  }\n\n  &.icon-bookmark-hollow {\n    background-image: url('chrome://browser/skin/bookmark-hollow.svg');\n  }\n\n  &.icon-clear-input {\n    fill: var(--newtab-icon-secondary-color);\n    background-image: url('#{$image-path}glyph-cancel-16.svg');\n  }\n\n  &.icon-delete {\n    background-image: url('#{$image-path}glyph-delete-16.svg');\n  }\n\n  &.icon-search {\n    background-image: url('chrome://browser/skin/search-glass.svg');\n  }\n\n  &.icon-modal-delete {\n    flex-shrink: 0;\n    background-image: url('#{$image-path}glyph-modal-delete-32.svg');\n    background-size: $larger-icon-size;\n    height: $larger-icon-size;\n    width: $larger-icon-size;\n  }\n\n  &.icon-dismiss {\n    background-image: url('#{$image-path}glyph-dismiss-16.svg');\n  }\n\n  &.icon-info {\n    background-image: url('#{$image-path}glyph-info-16.svg');\n  }\n\n  &.icon-import {\n    background-image: url('#{$image-path}glyph-import-16.svg');\n  }\n\n  &.icon-new-window {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-newWindow-16.svg');\n  }\n\n  &.icon-new-window-private {\n    background-image: url('chrome://browser/skin/privateBrowsing.svg');\n  }\n\n  &.icon-settings {\n    background-image: url('chrome://browser/skin/settings.svg');\n  }\n\n  &.icon-pin {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-pin-16.svg');\n  }\n\n  &.icon-unpin {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-unpin-16.svg');\n  }\n\n  &.icon-edit {\n    background-image: url('#{$image-path}glyph-edit-16.svg');\n  }\n\n  &.icon-pocket {\n    background-image: url('#{$image-path}glyph-pocket-16.svg');\n  }\n\n  &.icon-history-item {\n    background-image: url('chrome://browser/skin/history.svg');\n  }\n\n  &.icon-trending {\n    background-image: url('#{$image-path}glyph-trending-16.svg');\n    transform: translateY(2px); // trending bolt is visually top heavy\n  }\n\n  &.icon-now {\n    background-image: url('chrome://browser/skin/history.svg');\n  }\n\n  &.icon-topsites {\n    background-image: url('#{$image-path}glyph-topsites-16.svg');\n  }\n\n  &.icon-pin-small {\n    @include flip-icon;\n    background-image: url('#{$image-path}glyph-pin-12.svg');\n    background-size: $smaller-icon-size;\n    height: $smaller-icon-size;\n    width: $smaller-icon-size;\n  }\n\n  &.icon-check {\n    background-image: url('chrome://browser/skin/check.svg');\n  }\n\n  &.icon-download {\n    background-image: url('chrome://browser/skin/downloads/download-icons.svg#arrow-with-bar');\n  }\n\n  &.icon-copy {\n    background-image: url('chrome://browser/skin/edit-copy.svg');\n  }\n\n  &.icon-open-file {\n    background-image: url('#{$image-path}glyph-open-file-16.svg');\n  }\n\n  &.icon-webextension {\n    background-image: url('#{$image-path}glyph-webextension-16.svg');\n  }\n\n  &.icon-highlights {\n    background-image: url('#{$image-path}glyph-highlights-16.svg');\n  }\n\n  &.icon-arrowhead-down {\n    background-image: url('#{$image-path}glyph-arrowhead-down-16.svg');\n  }\n\n  &.icon-arrowhead-down-small {\n    background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n    background-size: $smaller-icon-size;\n    height: $smaller-icon-size;\n    width: $smaller-icon-size;\n  }\n\n  &.icon-arrowhead-forward-small {\n    background-image: url('#{$image-path}glyph-arrowhead-down-12.svg');\n    background-size: $smaller-icon-size;\n    height: $smaller-icon-size;\n    transform: rotate(-90deg);\n    width: $smaller-icon-size;\n\n    &:dir(rtl) {\n      transform: rotate(90deg);\n    }\n  }\n\n  &.icon-arrowhead-up {\n    background-image: url('#{$image-path}glyph-arrowhead-down-16.svg');\n    transform: rotate(180deg);\n  }\n\n  &.icon-add {\n    background-image: url('#{$image-path}glyph-add-16.svg');\n  }\n\n  &.icon-minimize {\n    background-image: url('#{$image-path}glyph-minimize-16.svg');\n  }\n\n  &.icon-maximize {\n    background-image: url('#{$image-path}glyph-maximize-16.svg');\n  }\n}\n",
 		".outer-wrapper {\n  color: var(--newtab-text-primary-color);\n  display: flex;\n  flex-grow: 1;\n  min-height: 100vh;\n  padding: ($section-spacing + $section-vertical-padding) $base-gutter $base-gutter;\n\n  &.fixed-to-top {\n    display: block;\n  }\n\n  a {\n    color: var(--newtab-link-primary-color);\n  }\n}\n\nmain {\n  margin: auto;\n  // Offset the snippets container so things at the bottom of the page are still\n  // visible when snippets / onboarding are visible. Adjust for other spacing.\n  padding-bottom: $snippets-container-height - $section-spacing - $base-gutter;\n  width: $wrapper-default-width;\n\n  @media (min-width: $break-point-small) {\n    width: $wrapper-max-width-small;\n  }\n\n  @media (min-width: $break-point-medium) {\n    width: $wrapper-max-width-medium;\n  }\n\n  @media (min-width: $break-point-large) {\n    width: $wrapper-max-width-large;\n  }\n\n  @media (min-width: $break-point-widest) {\n    width: $wrapper-max-width-widest;\n  }\n\n  section {\n    margin-bottom: $section-spacing;\n    position: relative;\n  }\n\n  .hide-main & {\n    visibility: hidden;\n  }\n\n}\n\n.base-content-fallback {\n  // Make the error message be centered against the viewport\n  height: 100vh;\n}\n\n.body-wrapper {\n  // Hide certain elements so the page structure is fixed, e.g., placeholders,\n  // while avoiding flashes of changing content, e.g., icons and text\n  $selectors-to-hide: '\n    .section-title,\n    .sections-list .section:last-of-type,\n    .topic\n  ';\n\n  #{$selectors-to-hide} {\n    opacity: 0;\n  }\n\n  &.on {\n    #{$selectors-to-hide} {\n      opacity: 1;\n    }\n  }\n}\n\n.non-collapsible-section {\n  padding: 0 $section-horizontal-padding;\n}\n\n.prefs-button {\n  button {\n    background-color: transparent;\n    border: 0;\n    cursor: pointer;\n    fill: var(--newtab-icon-primary-color);\n    inset-inline-end: 15px;\n    padding: 15px;\n    position: fixed;\n    top: 15px;\n    z-index: 1000;\n\n    &:hover,\n    &:focus {\n      background-color: var(--newtab-element-hover-color);\n    }\n\n    &:active {\n      background-color: var(--newtab-element-active-color);\n    }\n  }\n}\n",
 		".as-error-fallback {\n  align-items: center;\n  border-radius: $border-radius;\n  box-shadow: inset $inner-box-shadow;\n  color: var(--newtab-text-conditional-color);\n  display: flex;\n  flex-direction: column;\n  font-size: $error-fallback-font-size;\n  justify-content: center;\n  justify-items: center;\n  line-height: $error-fallback-line-height;\n\n  a {\n    color: var(--newtab-text-conditional-color);\n    text-decoration: underline;\n  }\n}\n",
-		"$top-sites-size: $grid-unit;\n$top-sites-border-radius: 6px;\n$top-sites-title-height: 30px;\n$top-sites-vertical-space: 8px;\n$screenshot-size: cover;\n$rich-icon-size: 96px;\n$default-icon-wrapper-size: 42px;\n$default-icon-size: 32px;\n$default-icon-offset: 6px;\n$half-base-gutter: $base-gutter / 2;\n\n.top-sites {\n  // Take back the margin from the bottom row of vertical spacing as well as the\n  // extra whitespace below the title text as it's vertically centered.\n  margin-bottom: $section-spacing - ($top-sites-vertical-space + $top-sites-title-height / 3);\n}\n\n.top-sites-list {\n  list-style: none;\n  margin: 0 (-$half-base-gutter);\n  padding: 0;\n\n  // Two columns\n  @media (max-width: $break-point-small) {\n    :nth-child(2n+1) {\n      @include context-menu-open-middle;\n    }\n\n    :nth-child(2n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Three columns\n  @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n    :nth-child(3n+2),\n    :nth-child(3n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Four columns\n  @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n    :nth-child(4n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n    :nth-child(4n+3) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Six columns\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n    :nth-child(6n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n    :nth-child(6n+5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Eight columns\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n    :nth-child(8n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n    :nth-child(8n+7) {\n      @include context-menu-open-left;\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n\n  li {\n    margin: 0 0 $top-sites-vertical-space;\n  }\n\n  &:not(.dnd-active) {\n    .top-site-outer:-moz-any(.active, :focus, :hover) {\n      .tile {\n        @include fade-in;\n      }\n\n      @include context-menu-button-hover;\n    }\n  }\n}\n\n// container for drop zone\n.top-site-outer {\n  padding: 0 $half-base-gutter;\n  display: inline-block;\n\n  // container for context menu\n  .top-site-inner {\n    position: relative;\n\n    > a {\n      color: inherit;\n      display: block;\n      outline: none;\n\n      &:-moz-any(.active, :focus) {\n        .tile {\n          @include fade-in;\n        }\n      }\n    }\n  }\n\n  @include context-menu-button;\n\n  .tile { // sass-lint:disable-block property-sort-order\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow, var(--newtab-card-shadow);\n    height: $top-sites-size;\n    position: relative;\n    width: $top-sites-size;\n\n    // For letter fallback\n    align-items: center;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 32px;\n    font-weight: 200;\n    justify-content: center;\n    text-transform: uppercase;\n\n    &::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .screenshot {\n    background-color: $white;\n    background-position: top left;\n    background-size: $screenshot-size;\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow;\n    height: 100%;\n    left: 0;\n    opacity: 0;\n    position: absolute;\n    top: 0;\n    transition: opacity 1s;\n    width: 100%;\n\n    &.active {\n      opacity: 1;\n    }\n  }\n\n  // Some common styles for all icons (rich and default) in top sites\n  .top-site-icon {\n    background-color: var(--newtab-topsites-background-color);\n    background-position: center center;\n    background-repeat: no-repeat;\n    border-radius: $top-sites-border-radius;\n    box-shadow: var(--newtab-topsites-icon-shadow);\n    position: absolute;\n  }\n\n  .rich-icon {\n    background-size: cover;\n    height: 100%;\n    inset-inline-start: 0;\n    top: 0;\n    width: 100%;\n  }\n\n  .default-icon { // sass-lint:disable block property-sort-order\n    background-size: $default-icon-size;\n    bottom: -$default-icon-offset;\n    height: $default-icon-wrapper-size;\n    inset-inline-end: -$default-icon-offset;\n    width: $default-icon-wrapper-size;\n\n    // for corner letter fallback\n    align-items: center;\n    display: flex;\n    font-size: 20px;\n    justify-content: center;\n\n    &[data-fallback]::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .title {\n    color: var(--newtab-topsites-label-color);\n    font: message-box;\n    height: $top-sites-title-height;\n    line-height: $top-sites-title-height;\n    text-align: center;\n    width: $top-sites-size;\n    position: relative;\n\n    .icon {\n      fill: var(--newtab-icon-tertiary-color);\n      inset-inline-start: 0;\n      position: absolute;\n      top: 10px;\n    }\n\n    span {\n      height: $top-sites-title-height;\n      display: block;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    &.pinned {\n      span {\n        padding: 0 13px;\n      }\n    }\n  }\n\n  .edit-button {\n    background-image: url('#{$image-path}glyph-edit-16.svg');\n  }\n\n  &.placeholder {\n    .tile {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .screenshot {\n      display: none;\n    }\n  }\n\n  &.dragged {\n    .tile {\n      background: $grey-20;\n      box-shadow: none;\n\n      *,\n      &::before {\n        display: none;\n      }\n    }\n\n    .title {\n      visibility: hidden;\n    }\n  }\n}\n\n.edit-topsites-wrapper {\n  .modal {\n    box-shadow: $shadow-secondary;\n    left: 0;\n    margin: 0 auto;\n    position: fixed;\n    right: 0;\n    top: 40px;\n    width: $wrapper-default-width;\n\n    @media (min-width: $break-point-small) {\n      width: $wrapper-max-width-small;\n    }\n\n    @media (min-width: $break-point-medium) {\n      width: $wrapper-max-width-medium;\n    }\n\n    @media (min-width: $break-point-large) {\n      width: $wrapper-max-width-large;\n    }\n  }\n}\n\n.topsite-form {\n  $form-width: 300px;\n  $form-spacing: 32px;\n\n  .form-input-container {\n    max-width: $form-width + 3 * $form-spacing + $rich-icon-size;\n    margin: 0 auto;\n    padding: $form-spacing;\n\n    .top-site-outer {\n      padding: 0;\n      margin: 24px 0 0;\n      margin-inline-start: $form-spacing;\n      pointer-events: none;\n    }\n\n    .section-title {\n      text-transform: none;\n      font-size: 16px;\n      margin: 0 0 16px;\n    }\n  }\n\n  .fields-and-preview {\n    display: flex;\n  }\n\n  label {\n    font-size: $section-title-font-size;\n  }\n\n  .form-wrapper {\n    width: 100%;\n\n    .field {\n      position: relative;\n\n      .icon-clear-input {\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n    }\n\n    .url {\n      input:dir(ltr) {\n        padding-right: 32px;\n      }\n\n      input:dir(rtl) {\n        padding-left: 32px;\n\n        &:not(:placeholder-shown) {\n          direction: ltr;\n          text-align: right;\n        }\n      }\n    }\n\n    .enable-custom-image-input {\n      display: inline-block;\n      font-size: 13px;\n      margin-top: 4px;\n      cursor: pointer;\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n\n    .custom-image-input-container {\n      margin-top: 4px;\n\n      .loading-container {\n        width: 16px;\n        height: 16px;\n        overflow: hidden;\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n\n      // This animation is derived from Firefox's tab loading animation\n      // See https://searchfox.org/mozilla-central/rev/b29daa46443b30612415c35be0a3c9c13b9dc5f6/browser/themes/shared/tabs.inc.css#208-216\n      .loading-animation {\n        @keyframes tab-throbber-animation {\n          100% { transform: translateX(-960px); }\n        }\n\n        @keyframes tab-throbber-animation-rtl {\n          100% { transform: translateX(960px); }\n        }\n\n        width: 960px;\n        height: 16px;\n        -moz-context-properties: fill;\n        fill: $blue-50;\n        background-image: url('chrome://browser/skin/tabbrowser/loading.svg');\n        animation: tab-throbber-animation 1.05s steps(60) infinite;\n\n        &:dir(rtl) {\n          animation-name: tab-throbber-animation-rtl;\n        }\n      }\n    }\n\n    input {\n      &[type='text'] {\n        background-color: var(--newtab-textbox-background-color);\n        border: $input-border;\n        margin: 8px 0;\n        padding: 0 8px;\n        height: 32px;\n        width: 100%;\n        font-size: 15px;\n\n        &:focus {\n          border: $input-border-active;\n          box-shadow: var(--newtab-textbox-focus-boxshadow);\n        }\n\n        &[disabled] {\n          border: $input-border;\n          box-shadow: none;\n          opacity: 0.4;\n        }\n      }\n    }\n\n    .invalid {\n      input {\n        &[type='text'] {\n          border: $input-error-border;\n          box-shadow: $input-error-boxshadow;\n        }\n      }\n    }\n\n    .error-tooltip {\n      animation: fade-up-tt 450ms;\n      background: $red-60;\n      border-radius: 2px;\n      color: $white;\n      inset-inline-start: 3px;\n      padding: 5px 12px;\n      position: absolute;\n      top: 44px;\n      z-index: 1;\n\n      // tooltip caret\n      &::before {\n        background: $red-60;\n        bottom: -8px;\n        content: '.';\n        height: 16px;\n        inset-inline-start: 12px;\n        position: absolute;\n        text-indent: -999px;\n        top: -7px;\n        transform: rotate(45deg);\n        white-space: nowrap;\n        width: 16px;\n        z-index: -1;\n      }\n    }\n  }\n\n  .actions {\n    justify-content: flex-end;\n\n    button {\n      margin-inline-start: 10px;\n      margin-inline-end: 0;\n    }\n  }\n\n  @media (max-width: $break-point-small) {\n    .fields-and-preview {\n      flex-direction: column;\n\n      .top-site-outer {\n        margin-inline-start: 0;\n      }\n    }\n  }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n  0% {\n    opacity: 0;\n    transform: translateY(15px);\n  }\n\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n",
+		"$top-sites-size: $grid-unit;\n$top-sites-border-radius: 6px;\n$top-sites-title-height: 30px;\n$top-sites-vertical-space: 8px;\n$screenshot-size: cover;\n$rich-icon-size: 96px;\n$default-icon-wrapper-size: 42px;\n$default-icon-size: 32px;\n$default-icon-offset: 6px;\n$half-base-gutter: $base-gutter / 2;\n\n.top-sites {\n  // Take back the margin from the bottom row of vertical spacing as well as the\n  // extra whitespace below the title text as it's vertically centered.\n  margin-bottom: $section-spacing - ($top-sites-vertical-space + $top-sites-title-height / 3);\n}\n\n.top-sites-list {\n  list-style: none;\n  margin: 0 (-$half-base-gutter);\n  padding: 0;\n\n  // Two columns\n  @media (max-width: $break-point-small) {\n    :nth-child(2n+1) {\n      @include context-menu-open-middle;\n    }\n\n    :nth-child(2n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Three columns\n  @media (min-width: $break-point-small) and (max-width: $break-point-medium) {\n    :nth-child(3n+2),\n    :nth-child(3n) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Four columns\n  @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n    :nth-child(4n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-medium) and (max-width: $break-point-medium + $card-width) {\n    :nth-child(4n+3) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Six columns\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n    :nth-child(6n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-large) and (max-width: $break-point-large + $card-width) {\n    :nth-child(6n+5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  // Eight columns\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n    :nth-child(8n) {\n      @include context-menu-open-left;\n    }\n  }\n  @media (min-width: $break-point-widest) and (max-width: $break-point-widest + $card-width) {\n    :nth-child(8n+7) {\n      @include context-menu-open-left;\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n\n  li {\n    margin: 0 0 $top-sites-vertical-space;\n  }\n\n  &:not(.dnd-active) {\n    .top-site-outer:-moz-any(.active, :focus, :hover) {\n      .tile {\n        @include fade-in;\n      }\n\n      @include context-menu-button-hover;\n    }\n  }\n}\n\n// container for drop zone\n.top-site-outer {\n  padding: 0 $half-base-gutter;\n  display: inline-block;\n\n  // container for context menu\n  .top-site-inner {\n    position: relative;\n\n    > a {\n      color: inherit;\n      display: block;\n      outline: none;\n\n      &:-moz-any(.active, :focus) {\n        .tile {\n          @include fade-in;\n        }\n      }\n    }\n  }\n\n  @include context-menu-button;\n\n  .tile { // sass-lint:disable-block property-sort-order\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow, var(--newtab-card-shadow);\n    height: $top-sites-size;\n    position: relative;\n    width: $top-sites-size;\n\n    // For letter fallback\n    align-items: center;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 32px;\n    font-weight: 200;\n    justify-content: center;\n    text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n\n    &::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .screenshot {\n    background-color: $white;\n    background-position: top left;\n    background-size: $screenshot-size;\n    border-radius: $top-sites-border-radius;\n    box-shadow: inset $inner-box-shadow;\n    height: 100%;\n    left: 0;\n    opacity: 0;\n    position: absolute;\n    top: 0;\n    transition: opacity 1s;\n    width: 100%;\n\n    &.active {\n      opacity: 1;\n    }\n  }\n\n  // Some common styles for all icons (rich and default) in top sites\n  .top-site-icon {\n    background-color: var(--newtab-topsites-background-color);\n    background-position: center center;\n    background-repeat: no-repeat;\n    border-radius: $top-sites-border-radius;\n    box-shadow: var(--newtab-topsites-icon-shadow);\n    position: absolute;\n  }\n\n  .rich-icon {\n    background-size: cover;\n    height: 100%;\n    inset-inline-start: 0;\n    top: 0;\n    width: 100%;\n  }\n\n  .default-icon { // sass-lint:disable block property-sort-order\n    background-size: $default-icon-size;\n    bottom: -$default-icon-offset;\n    height: $default-icon-wrapper-size;\n    inset-inline-end: -$default-icon-offset;\n    width: $default-icon-wrapper-size;\n\n    // for corner letter fallback\n    align-items: center;\n    display: flex;\n    font-size: 20px;\n    justify-content: center;\n\n    &[data-fallback]::before {\n      content: attr(data-fallback);\n    }\n  }\n\n  .title {\n    color: var(--newtab-topsites-label-color);\n    font: message-box;\n    height: $top-sites-title-height;\n    line-height: $top-sites-title-height;\n    text-align: center;\n    width: $top-sites-size;\n    position: relative;\n\n    .icon {\n      fill: var(--newtab-icon-tertiary-color);\n      inset-inline-start: 0;\n      position: absolute;\n      top: 10px;\n    }\n\n    span {\n      height: $top-sites-title-height;\n      display: block;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    &.pinned {\n      span {\n        padding: 0 13px;\n      }\n    }\n  }\n\n  .edit-button {\n    background-image: url('#{$image-path}glyph-edit-16.svg');\n  }\n\n  &.placeholder {\n    .tile {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .screenshot {\n      display: none;\n    }\n  }\n\n  &.dragged {\n    .tile {\n      background: $grey-20;\n      box-shadow: none;\n\n      *,\n      &::before {\n        display: none;\n      }\n    }\n\n    .title {\n      visibility: hidden;\n    }\n  }\n}\n\n.edit-topsites-wrapper {\n  .modal {\n    box-shadow: $shadow-secondary;\n    left: 0;\n    margin: 0 auto;\n    position: fixed;\n    right: 0;\n    top: 40px;\n    width: $wrapper-default-width;\n\n    @media (min-width: $break-point-small) {\n      width: $wrapper-max-width-small;\n    }\n\n    @media (min-width: $break-point-medium) {\n      width: $wrapper-max-width-medium;\n    }\n\n    @media (min-width: $break-point-large) {\n      width: $wrapper-max-width-large;\n    }\n  }\n}\n\n.topsite-form {\n  $form-width: 300px;\n  $form-spacing: 32px;\n\n  .form-input-container {\n    max-width: $form-width + 3 * $form-spacing + $rich-icon-size;\n    margin: 0 auto;\n    padding: $form-spacing;\n\n    .top-site-outer {\n      padding: 0;\n      margin: 24px 0 0;\n      margin-inline-start: $form-spacing;\n      pointer-events: none;\n    }\n\n    .section-title {\n      font-size: 16px;\n      margin: 0 0 16px;\n    }\n  }\n\n  .fields-and-preview {\n    display: flex;\n  }\n\n  label {\n    font-size: $section-title-font-size;\n  }\n\n  .form-wrapper {\n    width: 100%;\n\n    .field {\n      position: relative;\n\n      .icon-clear-input {\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n    }\n\n    .url {\n      input:dir(ltr) {\n        padding-right: 32px;\n      }\n\n      input:dir(rtl) {\n        padding-left: 32px;\n\n        &:not(:placeholder-shown) {\n          direction: ltr;\n          text-align: right;\n        }\n      }\n    }\n\n    .enable-custom-image-input {\n      display: inline-block;\n      font-size: 13px;\n      margin-top: 4px;\n      cursor: pointer;\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n\n    .custom-image-input-container {\n      margin-top: 4px;\n\n      .loading-container {\n        width: 16px;\n        height: 16px;\n        overflow: hidden;\n        position: absolute;\n        transform: translateY(-50%);\n        top: 50%;\n        inset-inline-end: 8px;\n      }\n\n      // This animation is derived from Firefox's tab loading animation\n      // See https://searchfox.org/mozilla-central/rev/b29daa46443b30612415c35be0a3c9c13b9dc5f6/browser/themes/shared/tabs.inc.css#208-216\n      .loading-animation {\n        @keyframes tab-throbber-animation {\n          100% { transform: translateX(-960px); }\n        }\n\n        @keyframes tab-throbber-animation-rtl {\n          100% { transform: translateX(960px); }\n        }\n\n        width: 960px;\n        height: 16px;\n        -moz-context-properties: fill;\n        fill: $blue-50;\n        background-image: url('chrome://browser/skin/tabbrowser/loading.svg');\n        animation: tab-throbber-animation 1.05s steps(60) infinite;\n\n        &:dir(rtl) {\n          animation-name: tab-throbber-animation-rtl;\n        }\n      }\n    }\n\n    input {\n      &[type='text'] {\n        background-color: var(--newtab-textbox-background-color);\n        border: $input-border;\n        margin: 8px 0;\n        padding: 0 8px;\n        height: 32px;\n        width: 100%;\n        font-size: 15px;\n\n        &:focus {\n          border: $input-border-active;\n          box-shadow: var(--newtab-textbox-focus-boxshadow);\n        }\n\n        &[disabled] {\n          border: $input-border;\n          box-shadow: none;\n          opacity: 0.4;\n        }\n      }\n    }\n\n    .invalid {\n      input {\n        &[type='text'] {\n          border: $input-error-border;\n          box-shadow: $input-error-boxshadow;\n        }\n      }\n    }\n\n    .error-tooltip {\n      animation: fade-up-tt 450ms;\n      background: $red-60;\n      border-radius: 2px;\n      color: $white;\n      inset-inline-start: 3px;\n      padding: 5px 12px;\n      position: absolute;\n      top: 44px;\n      z-index: 1;\n\n      // tooltip caret\n      &::before {\n        background: $red-60;\n        bottom: -8px;\n        content: '.';\n        height: 16px;\n        inset-inline-start: 12px;\n        position: absolute;\n        text-indent: -999px;\n        top: -7px;\n        transform: rotate(45deg);\n        white-space: nowrap;\n        width: 16px;\n        z-index: -1;\n      }\n    }\n  }\n\n  .actions {\n    justify-content: flex-end;\n\n    button {\n      margin-inline-start: 10px;\n      margin-inline-end: 0;\n    }\n  }\n\n  @media (max-width: $break-point-small) {\n    .fields-and-preview {\n      flex-direction: column;\n\n      .top-site-outer {\n        margin-inline-start: 0;\n      }\n    }\n  }\n}\n\n//used for tooltips below form element\n@keyframes fade-up-tt {\n  0% {\n    opacity: 0;\n    transform: translateY(15px);\n  }\n\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n",
 		".sections-list {\n  .section-list {\n    display: grid;\n    grid-gap: $base-gutter;\n    grid-template-columns: repeat(auto-fit, $card-width);\n    margin: 0;\n\n    @media (max-width: $break-point-medium) {\n      @include context-menu-open-left;\n    }\n\n    @media (min-width: $break-point-medium) and (max-width: $break-point-large) {\n      :nth-child(2n) {\n        @include context-menu-open-left;\n      }\n    }\n\n    @media (min-width: $break-point-large) and (max-width: $break-point-large + 2 * $card-width) {\n      :nth-child(3n) {\n        @include context-menu-open-left;\n      }\n    }\n\n    @media (min-width: $break-point-widest) and (max-width: $break-point-widest + 2 * $card-width) {\n      :nth-child(3n) {\n        @include context-menu-open-left;\n      }\n    }\n  }\n\n  .section-empty-state {\n    border: $border-secondary;\n    border-radius: $border-radius;\n    display: flex;\n    height: $card-height;\n    width: 100%;\n\n    .empty-state {\n      margin: auto;\n      max-width: 350px;\n\n      .empty-state-icon {\n        background-position: center;\n        background-repeat: no-repeat;\n        background-size: 50px 50px;\n        -moz-context-properties: fill;\n        display: block;\n        fill: var(--newtab-icon-secondary-color);\n        height: 50px;\n        margin: 0 auto;\n        width: 50px;\n      }\n\n      .empty-state-message {\n        color: var(--newtab-text-primary-color);\n        font-size: 13px;\n        margin-bottom: 0;\n        text-align: center;\n      }\n    }\n\n    @media (min-width: $break-point-widest) {\n      height: $card-height-large;\n    }\n  }\n}\n\n@media (min-width: $break-point-widest) {\n  .sections-list {\n    // Compact cards stay the same size but normal cards get bigger.\n    .normal-cards {\n      .section-list {\n        grid-template-columns: repeat(auto-fit, $card-width-large);\n      }\n    }\n  }\n}\n",
 		".activity-stream {\n  &.welcome {\n    overflow: hidden;\n  }\n\n  &:not(.welcome) {\n    .overlay-wrapper {\n      display: none;\n    }\n  }\n}\n\n.overlay-wrapper {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100vw;\n  height: 100vh;\n  z-index: 21000;\n  transition: opacity 0.4s;\n  opacity: 0;\n  overflow-x: auto;\n\n  &.show {\n    transition: none;\n    opacity: 1;\n\n    .firstrun-sign-in {\n      transition: opacity 1.5s, transform 1.5s;\n      transition-delay: 0.2s;\n      transform: translateY(-50%) scale(1);\n      opacity: 1;\n\n      @media screen and (max-width: 790px) {\n        float: none;\n        margin: auto;\n        top: 190px;\n        margin-bottom: 100px;\n      }\n    }\n\n    .firstrun-firefox-logo {\n      transition: opacity 2.3s;\n      opacity: 1;\n    }\n\n    .firstrun-title,\n    .firstrun-content,\n    .firstrun-link {\n      transition: transform 0.5s, opacity 0.8s;\n      transform: translateY(0);\n      opacity: 1;\n    }\n\n    .firstrun-title {\n      transition-delay: 0.2s;\n    }\n\n    .firstrun-content {\n      transition-delay: 0.4s;\n    }\n\n    .firstrun-link {\n      transition-delay: 0.6s;\n    }\n\n    .fxaccounts-container {\n      transition: none;\n      opacity: 1;\n    }\n  }\n}\n\n.background,\nbody.hide-main { // sass-lint:disable-line no-qualifying-elements\n  width: 100%;\n  height: 100%;\n  display: block;\n  background-image: url('#{$image-path}fox-tail.png'), $about-welcome-gradient;\n  background-position-x: center;\n  background-position-y: -200px, top;\n  background-repeat: no-repeat;\n  background-size: cover;\n  position: fixed;\n}\n\n.firstrun-sign-in {\n  transform: translateY(-50%) scale(0.8);\n  position: relative;\n  top: 50%;\n  width: 358px;\n  opacity: 0;\n  background-color: $white;\n  float: inline-end;\n  color: $grey-90;\n  text-align: center;\n  padding: 10px;\n\n  form {\n    position: relative;\n  }\n\n  .extra-links {\n    font-size: 12px;\n    max-width: 340px;\n    margin: 17px 50px;\n    color: $about-welcome-extra-links;\n    cursor: default;\n\n    a {\n      color: $grey-50;\n      cursor: pointer;\n      text-decoration: underline;\n    }\n\n    a:hover,\n    a:active,\n    a:focus {\n      color: $blue-50;\n    }\n  }\n\n  .email-input {\n    box-shadow: none;\n    margin: auto;\n    width: 244px;\n    display: block;\n    height: 40px;\n    padding-inline-start: 20px;\n    border: 1px solid $grey-50;\n    border-radius: 2px;\n    font-size: 16px;\n    transition: border-color 150ms, box-shadow 150ms;\n\n    &:hover {\n      border-color: $grey-90;\n    }\n\n    &:focus {\n      border-color: $blue-50;\n      box-shadow: 0 0 0 3px $email-input-focus;\n    }\n\n    &.invalid {\n      border-color: $red-60;\n    }\n\n    &.invalid:focus {\n      box-shadow: 0 0 0 3px $email-input-invalid;\n    }\n  }\n\n  .form-header {\n    font-size: 22px;\n    margin: 15px auto;\n  }\n\n  .form-header .sub-header {\n    font-size: 14px;\n    margin-top: 4px;\n    display: block;\n  }\n\n  button {\n    display: block;\n    cursor: pointer;\n    margin: 10px auto 0;\n  }\n\n  .continue-button {\n    font-size: 18px;\n    height: 43px;\n    width: 250px;\n    padding: 8px 0;\n    border: 0;\n    border-radius: 4px;\n    color: $white;\n    background-color: $blue-60;\n    transition: background-color 150ms;\n\n    &:not([disabled]):active,\n    &:not([disabled]):hover {\n      background: $blue-70;\n      border-color: $blue-80;\n    }\n  }\n\n  .skip-button {\n    font-size: 13px;\n    margin-top: 20px;\n    margin-bottom: 20px;\n    background-color: $grey-10;\n    color: $blue-50;\n    border: 1px solid $blue-50;\n    border-radius: 2px;\n    min-height: 24px;\n    padding: 5px 10px;\n    transition: background-color 150ms, color 150ms, border-color 150ms;\n\n    &[disabled] {\n      background-color: $grey-20;\n      border-color: $grey-40;\n      color: $grey-50;\n      cursor: default;\n      opacity: 0.5;\n    }\n\n    &:not([disabled]):hover {\n      background-color: $blue-50;\n      border-color: $blue-60;\n      color: $white;\n    }\n  }\n}\n\n.firstrun-left-divider {\n  position: relative;\n  float: inline-start;\n  clear: both;\n  width: 435px;\n\n  @media screen and (max-width: 825px) {\n    width: 400px;\n  }\n\n  @media screen and (max-width: 790px) {\n    margin: auto;\n    float: none;\n    width: 352px;\n    text-align: center;\n  }\n}\n\n.firstrun-content {\n  line-height: 1.5;\n  margin-bottom: 48px;\n  max-width: 352px;\n  background: url('#{$image-path}sync-devices.svg') bottom center no-repeat;\n  padding-bottom: 210px;\n}\n\na.firstrun-link { // sass-lint:disable-line no-qualifying-elements\n  color: $white;\n  display: block;\n  text-decoration: underline;\n\n  &:hover,\n  &:active,\n  &:focus {\n    color: $white;\n  }\n}\n\n.firstrun-title {\n  background: url('chrome://branding/content/about-logo.png') top left no-repeat;\n  background-size: 90px 90px;\n  margin: 40px 0 10px;\n  padding-top: 110px;\n\n  @media screen and (max-width: 790px) {\n    background: url('chrome://branding/content/about-logo.png') top center no-repeat;\n    background-size: 90px 90px;\n  }\n\n  &:dir(rtl) {\n    background-position: top right;\n  }\n}\n\n.fxaccounts-container {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  top: 0;\n  left: 0;\n  color: $white;\n  height: 515px;\n  margin: auto;\n  width: 819px;\n  z-index: 10;\n  transition: opacity 0.3s;\n  opacity: 0;\n\n  @media screen and (max-width: 825px) {\n    width: 784px;\n  }\n\n  @media screen and (max-width: 790px) {\n    width: auto;\n    height: 100%;\n  }\n}\n\n.firstrun-title,\n.firstrun-content,\n.firstrun-link {\n  opacity: 0;\n  transform: translateY(-5px);\n}\n\n.error {\n  display: none;\n}\n\n.error.active {\n  display: block;\n  padding: 5px 12px;\n  animation: fade-down 450ms;\n  font-size: 12px;\n  font-weight: 500;\n  color: $white;\n  background-color: $red-60;\n  position: absolute;\n  inset-inline-start: 50px;\n  top: -28px;\n  border-radius: 2px;\n\n  &::before {\n    inset-inline-start: 12px;\n    background: $red-60;\n    bottom: -8px;\n    content: '.';\n    height: 16px;\n    position: absolute;\n    text-indent: -999px;\n    transform: rotate(45deg);\n    white-space: nowrap;\n    width: 16px;\n    z-index: -1;\n  }\n}\n\n@keyframes fade-down {\n  0% {\n    opacity: 0;\n    transform: translateY(-15px);\n  }\n\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n",
 		".topic {\n  color: var(--newtab-section-navigation-text-color);\n  font-size: 12px;\n  line-height: 1.6;\n  margin-top: $topic-margin-top;\n\n  @media (min-width: $break-point-large) {\n    line-height: 16px;\n  }\n\n  ul {\n    margin: 0;\n    padding: 0;\n    @media (min-width: $break-point-large) {\n      display: inline;\n      padding-inline-start: 12px;\n    }\n  }\n\n\n  ul li {\n    display: inline-block;\n\n    &::after {\n      content: '•';\n      padding: 8px;\n    }\n\n    &:last-child::after {\n      content: none;\n    }\n  }\n\n  .topic-link {\n    color: var(--newtab-link-secondary-color);\n    font-weight: bold;\n  }\n\n  .topic-read-more {\n    color: var(--newtab-link-secondary-color);\n    font-weight: bold;\n\n    @media (min-width: $break-point-large) {\n      // This is floating to accomodate a very large number of topics and/or\n      // very long topic names due to l10n.\n      float: right;\n\n      &:dir(rtl) {\n        float: left;\n      }\n    }\n\n    &::after {\n      background: url('#{$image-path}topic-show-more-12.svg') no-repeat center center;\n      content: '';\n      -moz-context-properties: fill;\n      display: inline-block;\n      fill: var(--newtab-link-secondary-color);\n      height: 16px;\n      margin-inline-start: 5px;\n      vertical-align: top;\n      width: 12px;\n    }\n\n    &:dir(rtl)::after  {\n      transform: scaleX(-1);\n    }\n  }\n\n  // This is a clearfix to for the topics-read-more link which is floating and causes\n  // some jank when we set overflow:hidden for the animation.\n  &::after {\n    clear: both;\n    content: '';\n    display: table;\n  }\n}\n",
 		".search-wrapper {\n  $search-height: 35px;\n  $search-icon-size: 18px;\n  $search-icon-padding: 8px;\n  $search-icon-width: 2 * $search-icon-padding + $search-icon-size;\n  $search-input-left-label-width: 35px;\n  $search-button-width: 36px;\n  $glyph-forward: url('chrome://browser/skin/forward.svg');\n\n  cursor: default;\n  display: flex;\n  height: $search-height;\n  margin-bottom: $section-spacing;\n  position: relative;\n  width: 100%;\n\n  input {\n    background: var(--newtab-textbox-background-color) var(--newtab-search-icon) $search-icon-padding center / $search-icon-size no-repeat;\n    border: solid 1px var(--newtab-search-border-color);\n    box-shadow: $shadow-secondary, 0 0 0 1px $black-15;\n    font-size: 15px;\n    -moz-context-properties: fill;\n    fill: var(--newtab-search-icon-color);\n    padding: 0;\n    padding-inline-end: $search-button-width;\n    padding-inline-start: $search-icon-width;\n    width: 100%;\n\n    &:dir(rtl) {\n      background-position-x: right $search-icon-padding;\n    }\n  }\n\n  &:hover input {\n    box-shadow: $shadow-secondary, 0 0 0 1px $black-25;\n  }\n\n  &:active input,\n  input:focus {\n    border: $input-border-active;\n    box-shadow: var(--newtab-textbox-focus-boxshadow);\n  }\n\n  .search-button {\n    background: $glyph-forward no-repeat center center;\n    background-size: 16px 16px;\n    border: 0;\n    border-radius: 0 $border-radius $border-radius 0;\n    -moz-context-properties: fill;\n    fill: var(--newtab-search-icon-color);\n    height: 100%;\n    inset-inline-end: 0;\n    position: absolute;\n    width: $search-button-width;\n\n    &:focus,\n    &:hover {\n      background-color: $grey-90-10;\n      cursor: pointer;\n    }\n\n    &:active {\n      background-color: $grey-90-20;\n    }\n\n    &:dir(rtl) {\n      transform: scaleX(-1);\n    }\n  }\n}\n\n@at-root {\n  // Adjust the style of the contentSearchUI-generated table\n  .contentSearchSuggestionTable {\n    background-color: var(--newtab-search-dropdown-color);\n    border: 0;\n    box-shadow: $context-menu-shadow;\n    transform: translateY($textbox-shadow-size);\n\n    .contentSearchHeader {\n      background-color: var(--newtab-search-dropdown-header-color);\n      color: var(--newtab-text-secondary-color);\n    }\n\n    .contentSearchHeader,\n    .contentSearchSettingsButton {\n      border-color: var(--newtab-border-secondary-color);\n    }\n\n    .contentSearchSuggestionsList {\n      border: 0;\n    }\n\n    .contentSearchOneOffsTable {\n      background-color: var(--newtab-search-dropdown-header-color);\n      border-top: solid 1px var(--newtab-border-secondary-color);\n    }\n\n    .contentSearchSearchWithHeaderSearchText {\n      color: var(--newtab-text-primary-color);\n    }\n\n    .contentSearchSuggestionsContainer {\n      background-color: var(--newtab-search-dropdown-color);\n    }\n\n    .contentSearchSuggestionRow {\n      &.selected {\n        background: var(--newtab-element-hover-color);\n        color: var(--newtab-text-primary-color);\n\n        &:active {\n          background: var(--newtab-element-active-color);\n        }\n\n        .historyIcon {\n          fill: var(--newtab-icon-secondary-color);\n        }\n      }\n    }\n\n    .contentSearchOneOffsTable {\n      .contentSearchSuggestionsContainer {\n        background-color: var(--newtab-search-dropdown-header-color);\n      }\n    }\n\n    .contentSearchOneOffItem {\n      // Make the border slightly shorter by offsetting from the top and bottom\n      $border-offset: 18%;\n\n      background-image: none;\n      border-image: linear-gradient(transparent $border-offset, var(--newtab-border-secondary-color) $border-offset, var(--newtab-border-secondary-color) 100% - $border-offset, transparent 100% - $border-offset) 1;\n      border-inline-end: 1px solid;\n      position: relative;\n\n      &.selected {\n        background: var(--newtab-element-hover-color);\n      }\n\n      &:active {\n        background: var(--newtab-element-active-color);\n      }\n    }\n\n    .contentSearchSettingsButton {\n      &:hover {\n        background: var(--newtab-element-hover-color);\n        color: var(--newtab-text-primary-color);\n      }\n    }\n  }\n}\n",
 		".context-menu {\n  background: var(--newtab-contextmenu-background-color);\n  border-radius: $context-menu-border-radius;\n  box-shadow: $context-menu-shadow;\n  display: block;\n  font-size: $context-menu-font-size;\n  margin-inline-start: 5px;\n  inset-inline-start: 100%;\n  position: absolute;\n  top: ($context-menu-button-size / 4);\n  z-index: 10000;\n\n  > ul {\n    list-style: none;\n    margin: 0;\n    padding: $context-menu-outer-padding 0;\n\n    > li {\n      margin: 0;\n      width: 100%;\n\n      &.separator {\n        border-bottom: $border-secondary;\n        margin: $context-menu-outer-padding 0;\n      }\n\n      > a {\n        align-items: center;\n        color: inherit;\n        cursor: pointer;\n        display: flex;\n        line-height: 16px;\n        outline: none;\n        padding: $context-menu-item-padding;\n        white-space: nowrap;\n\n        &:-moz-any(:focus, :hover) {\n          background: var(--newtab-element-hover-color);\n        }\n\n        &:active {\n          background: var(--newtab-element-active-color);\n        }\n\n        &.disabled {\n          opacity: 0.4;\n          pointer-events: none;\n        }\n      }\n    }\n  }\n}\n",
 		".confirmation-dialog {\n  .modal {\n    box-shadow: 0 2px 2px 0 $black-10;\n    left: 50%;\n    margin-left: -200px;\n    position: fixed;\n    top: 20%;\n    width: 400px;\n  }\n\n  section {\n    margin: 0;\n  }\n\n  .modal-message {\n    display: flex;\n    padding: 16px;\n    padding-bottom: 0;\n\n    p {\n      margin: 0;\n      margin-bottom: 16px;\n    }\n  }\n\n  .actions {\n    border: 0;\n    display: flex;\n    flex-wrap: nowrap;\n    padding: 0 16px;\n\n    button {\n      margin-inline-end: 16px;\n      padding-inline-end: 18px;\n      padding-inline-start: 18px;\n      white-space: normal;\n      width: 50%;\n\n      &.done {\n        margin-inline-end: 0;\n        margin-inline-start: 0;\n      }\n    }\n  }\n\n  .icon {\n    margin-inline-end: 16px;\n  }\n}\n\n.modal-overlay {\n  background: var(--newtab-overlay-color);\n  height: 100%;\n  left: 0;\n  position: fixed;\n  top: 0;\n  width: 100%;\n  z-index: 11001;\n}\n\n.modal {\n  background: var(--newtab-modal-color);\n  border: $border-secondary;\n  border-radius: 5px;\n  font-size: 15px;\n  z-index: 11002;\n}\n",
-		".card-outer {\n  @include context-menu-button;\n  background: var(--newtab-card-background-color);\n  border-radius: $border-radius;\n  display: inline-block;\n  height: $card-height;\n  margin-inline-end: $base-gutter;\n  position: relative;\n  width: 100%;\n\n  &.placeholder {\n    background: transparent;\n\n    .card {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .card-preview-image-outer,\n    .card-context {\n      display: none;\n    }\n  }\n\n  .card {\n    border-radius: $border-radius;\n    box-shadow: var(--newtab-card-shadow);\n    height: 100%;\n  }\n\n  > a {\n    color: inherit;\n    display: block;\n    height: 100%;\n    outline: none;\n    position: absolute;\n    width: 100%;\n\n    &:-moz-any(.active, :focus) {\n      .card {\n        @include fade-in-card;\n      }\n\n      .card-title {\n        color: var(--newtab-link-primary-color);\n      }\n    }\n  }\n\n  &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n    @include fade-in-card;\n    @include context-menu-button-hover;\n    outline: none;\n\n    .card-title {\n      color: var(--newtab-link-primary-color);\n    }\n\n    .alternate ~ .card-host-name {\n      display: none;\n    }\n\n    .card-host-name.alternate {\n      display: block;\n    }\n  }\n\n  .card-preview-image-outer {\n    background-color: $grey-30;\n    border-radius: $border-radius $border-radius 0 0;\n    height: $card-preview-image-height;\n    overflow: hidden;\n    position: relative;\n\n    [lwt-newtab-brighttext] & {\n      background-color: $grey-60;\n    }\n\n    &::after {\n      border-bottom: 1px solid var(--newtab-card-hairline-color);\n      bottom: 0;\n      content: '';\n      position: absolute;\n      width: 100%;\n    }\n\n    .card-preview-image {\n      background-position: center;\n      background-repeat: no-repeat;\n      background-size: cover;\n      height: 100%;\n      opacity: 0;\n      transition: opacity 1s $photon-easing;\n      width: 100%;\n\n      &.loaded {\n        opacity: 1;\n      }\n    }\n  }\n\n  .card-details {\n    padding: 15px 16px 12px;\n  }\n\n  .card-text {\n    max-height: 4 * $card-text-line-height + $card-title-margin;\n    overflow: hidden;\n\n    &.no-host-name,\n    &.no-context {\n      max-height: 5 * $card-text-line-height + $card-title-margin;\n    }\n\n    &.no-host-name.no-context {\n      max-height: 6 * $card-text-line-height + $card-title-margin;\n    }\n\n    &:not(.no-description) .card-title {\n      max-height: 3 * $card-text-line-height;\n      overflow: hidden;\n    }\n  }\n\n  .card-host-name {\n    color: var(--newtab-text-secondary-color);\n    font-size: 10px;\n    overflow: hidden;\n    padding-bottom: 4px;\n    text-overflow: ellipsis;\n    text-transform: uppercase;\n    white-space: nowrap;\n  }\n\n  .card-host-name.alternate { display: none; }\n\n  .card-title {\n    font-size: 14px;\n    font-weight: 600;\n    line-height: $card-text-line-height;\n    margin: 0 0 $card-title-margin;\n    word-wrap: break-word;\n  }\n\n  .card-description {\n    font-size: 12px;\n    line-height: $card-text-line-height;\n    margin: 0;\n    overflow: hidden;\n    word-wrap: break-word;\n  }\n\n  .card-context {\n    bottom: 0;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 11px;\n    inset-inline-start: 0;\n    padding: 9px 16px 9px 14px;\n    position: absolute;\n  }\n\n  .card-context-icon {\n    fill: var(--newtab-text-secondary-color);\n    height: 22px;\n    margin-inline-end: 6px;\n  }\n\n  .card-context-label {\n    flex-grow: 1;\n    line-height: 22px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n\n.normal-cards {\n  .card-outer {\n    // Wide layout styles\n    @media (min-width: $break-point-widest) {\n      $line-height: 23px;\n      height: $card-height-large;\n\n      .card-preview-image-outer {\n        height: $card-preview-image-height-large;\n      }\n\n      .card-details {\n        padding: 13px 16px 12px;\n      }\n\n      .card-text {\n        max-height: 6 * $line-height + $card-title-margin;\n      }\n\n      .card-host-name {\n        font-size: 12px;\n        padding-bottom: 5px;\n      }\n\n      .card-title {\n        font-size: 17px;\n        line-height: $line-height;\n        margin-bottom: 0;\n      }\n\n      .card-text:not(.no-description) {\n        .card-title {\n          max-height: 3 * $line-height;\n        }\n      }\n\n      .card-description {\n        font-size: 15px;\n        line-height: $line-height;\n      }\n\n      .card-context {\n        bottom: 4px;\n        font-size: 14px;\n      }\n    }\n  }\n}\n\n.compact-cards {\n  $card-detail-vertical-spacing: 12px;\n  $card-title-font-size: 12px;\n\n  .card-outer {\n    height: $card-height-compact;\n\n    .card-preview-image-outer {\n      height: $card-preview-image-height-compact;\n    }\n\n    .card-details {\n      padding: $card-detail-vertical-spacing 16px;\n    }\n\n    .card-host-name {\n      line-height: 10px;\n    }\n\n    .card-text {\n      .card-title,\n      &:not(.no-description) .card-title {\n        font-size: $card-title-font-size;\n        line-height: $card-title-font-size + 1;\n        max-height: $card-title-font-size + 5;\n        overflow: hidden;\n        padding: 0 0 4px;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n      }\n    }\n\n    .card-description {\n      display: none;\n    }\n\n    .card-context {\n      $icon-size: 16px;\n      $container-size: 32px;\n      background-color: var(--newtab-card-background-color);\n      border-radius: $container-size / 2;\n      clip-path: inset(-1px -1px $container-size - ($card-height-compact - $card-preview-image-height-compact - 2 * $card-detail-vertical-spacing));\n      height: $container-size;\n      width: $container-size;\n      padding: ($container-size - $icon-size) / 2;\n      top: $card-preview-image-height-compact - $icon-size;\n      inset-inline-end: 12px;\n      inset-inline-start: auto;\n\n      &::after {\n        border: 1px solid var(--newtab-card-hairline-color);\n        border-bottom: 0;\n        border-radius: ($container-size / 2) + 1 ($container-size / 2) + 1 0 0;\n        content: '';\n        position: absolute;\n        height: ($container-size + 2) / 2;\n        width: $container-size + 2;\n        top: -1px;\n        left: -1px;\n      }\n\n      .card-context-icon {\n        margin-inline-end: 0;\n        height: $icon-size;\n        width: $icon-size;\n\n        &.icon-bookmark-added {\n          fill: $bookmark-icon-fill;\n        }\n\n        &.icon-download {\n          fill: $download-icon-fill;\n        }\n\n        &.icon-pocket {\n          fill: $pocket-icon-fill;\n        }\n      }\n\n      .card-context-label {\n        display: none;\n      }\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n}\n",
+		".card-outer {\n  @include context-menu-button;\n  background: var(--newtab-card-background-color);\n  border-radius: $border-radius;\n  display: inline-block;\n  height: $card-height;\n  margin-inline-end: $base-gutter;\n  position: relative;\n  width: 100%;\n\n  &.placeholder {\n    background: transparent;\n\n    .card {\n      box-shadow: inset $inner-box-shadow;\n    }\n\n    .card-preview-image-outer,\n    .card-context {\n      display: none;\n    }\n  }\n\n  .card {\n    border-radius: $border-radius;\n    box-shadow: var(--newtab-card-shadow);\n    height: 100%;\n  }\n\n  > a {\n    color: inherit;\n    display: block;\n    height: 100%;\n    outline: none;\n    position: absolute;\n    width: 100%;\n\n    &:-moz-any(.active, :focus) {\n      .card {\n        @include fade-in-card;\n      }\n\n      .card-title {\n        color: var(--newtab-link-primary-color);\n      }\n    }\n  }\n\n  &:-moz-any(:hover, :focus, .active):not(.placeholder) {\n    @include fade-in-card;\n    @include context-menu-button-hover;\n    outline: none;\n\n    .card-title {\n      color: var(--newtab-link-primary-color);\n    }\n\n    .alternate ~ .card-host-name {\n      display: none;\n    }\n\n    .card-host-name.alternate {\n      display: block;\n    }\n  }\n\n  .card-preview-image-outer {\n    background-color: $grey-30;\n    border-radius: $border-radius $border-radius 0 0;\n    height: $card-preview-image-height;\n    overflow: hidden;\n    position: relative;\n\n    [lwt-newtab-brighttext] & {\n      background-color: $grey-60;\n    }\n\n    &::after {\n      border-bottom: 1px solid var(--newtab-card-hairline-color);\n      bottom: 0;\n      content: '';\n      position: absolute;\n      width: 100%;\n    }\n\n    .card-preview-image {\n      background-position: center;\n      background-repeat: no-repeat;\n      background-size: cover;\n      height: 100%;\n      opacity: 0;\n      transition: opacity 1s $photon-easing;\n      width: 100%;\n\n      &.loaded {\n        opacity: 1;\n      }\n    }\n  }\n\n  .card-details {\n    padding: 15px 16px 12px;\n  }\n\n  .card-text {\n    max-height: 4 * $card-text-line-height + $card-title-margin;\n    overflow: hidden;\n\n    &.no-host-name,\n    &.no-context {\n      max-height: 5 * $card-text-line-height + $card-title-margin;\n    }\n\n    &.no-host-name.no-context {\n      max-height: 6 * $card-text-line-height + $card-title-margin;\n    }\n\n    &:not(.no-description) .card-title {\n      max-height: 3 * $card-text-line-height;\n      overflow: hidden;\n    }\n  }\n\n  .card-host-name {\n    color: var(--newtab-text-secondary-color);\n    font-size: 10px;\n    overflow: hidden;\n    padding-bottom: 4px;\n    text-overflow: ellipsis;\n    text-transform: uppercase; // sass-lint:disable-line no-disallowed-properties\n    white-space: nowrap;\n  }\n\n  .card-host-name.alternate { display: none; }\n\n  .card-title {\n    font-size: 14px;\n    font-weight: 600;\n    line-height: $card-text-line-height;\n    margin: 0 0 $card-title-margin;\n    word-wrap: break-word;\n  }\n\n  .card-description {\n    font-size: 12px;\n    line-height: $card-text-line-height;\n    margin: 0;\n    overflow: hidden;\n    word-wrap: break-word;\n  }\n\n  .card-context {\n    bottom: 0;\n    color: var(--newtab-text-secondary-color);\n    display: flex;\n    font-size: 11px;\n    inset-inline-start: 0;\n    padding: 9px 16px 9px 14px;\n    position: absolute;\n  }\n\n  .card-context-icon {\n    fill: var(--newtab-text-secondary-color);\n    height: 22px;\n    margin-inline-end: 6px;\n  }\n\n  .card-context-label {\n    flex-grow: 1;\n    line-height: 22px;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n\n.normal-cards {\n  .card-outer {\n    // Wide layout styles\n    @media (min-width: $break-point-widest) {\n      $line-height: 23px;\n      height: $card-height-large;\n\n      .card-preview-image-outer {\n        height: $card-preview-image-height-large;\n      }\n\n      .card-details {\n        padding: 13px 16px 12px;\n      }\n\n      .card-text {\n        max-height: 6 * $line-height + $card-title-margin;\n      }\n\n      .card-host-name {\n        font-size: 12px;\n        padding-bottom: 5px;\n      }\n\n      .card-title {\n        font-size: 17px;\n        line-height: $line-height;\n        margin-bottom: 0;\n      }\n\n      .card-text:not(.no-description) {\n        .card-title {\n          max-height: 3 * $line-height;\n        }\n      }\n\n      .card-description {\n        font-size: 15px;\n        line-height: $line-height;\n      }\n\n      .card-context {\n        bottom: 4px;\n        font-size: 14px;\n      }\n    }\n  }\n}\n\n.compact-cards {\n  $card-detail-vertical-spacing: 12px;\n  $card-title-font-size: 12px;\n\n  .card-outer {\n    height: $card-height-compact;\n\n    .card-preview-image-outer {\n      height: $card-preview-image-height-compact;\n    }\n\n    .card-details {\n      padding: $card-detail-vertical-spacing 16px;\n    }\n\n    .card-host-name {\n      line-height: 10px;\n    }\n\n    .card-text {\n      .card-title,\n      &:not(.no-description) .card-title {\n        font-size: $card-title-font-size;\n        line-height: $card-title-font-size + 1;\n        max-height: $card-title-font-size + 5;\n        overflow: hidden;\n        padding: 0 0 4px;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n      }\n    }\n\n    .card-description {\n      display: none;\n    }\n\n    .card-context {\n      $icon-size: 16px;\n      $container-size: 32px;\n      background-color: var(--newtab-card-background-color);\n      border-radius: $container-size / 2;\n      clip-path: inset(-1px -1px $container-size - ($card-height-compact - $card-preview-image-height-compact - 2 * $card-detail-vertical-spacing));\n      height: $container-size;\n      width: $container-size;\n      padding: ($container-size - $icon-size) / 2;\n      top: $card-preview-image-height-compact - $icon-size;\n      inset-inline-end: 12px;\n      inset-inline-start: auto;\n\n      &::after {\n        border: 1px solid var(--newtab-card-hairline-color);\n        border-bottom: 0;\n        border-radius: ($container-size / 2) + 1 ($container-size / 2) + 1 0 0;\n        content: '';\n        position: absolute;\n        height: ($container-size + 2) / 2;\n        width: $container-size + 2;\n        top: -1px;\n        left: -1px;\n      }\n\n      .card-context-icon {\n        margin-inline-end: 0;\n        height: $icon-size;\n        width: $icon-size;\n\n        &.icon-bookmark-added {\n          fill: $bookmark-icon-fill;\n        }\n\n        &.icon-download {\n          fill: $download-icon-fill;\n        }\n\n        &.icon-pocket {\n          fill: $pocket-icon-fill;\n        }\n      }\n\n      .card-context-label {\n        display: none;\n      }\n    }\n  }\n\n  @media not all and (min-width: $break-point-widest) {\n    .hide-for-narrow {\n      display: none;\n    }\n  }\n}\n",
 		".manual-migration-container {\n  color: var(--newtab-text-conditional-color);\n  font-size: 13px;\n  line-height: 15px;\n  margin-bottom: $section-spacing;\n  text-align: center;\n\n  @media (min-width: $break-point-medium) {\n    display: flex;\n    justify-content: space-between;\n    text-align: left;\n  }\n\n  p {\n    margin: 0;\n    @media (min-width: $break-point-medium) {\n      align-self: center;\n      display: flex;\n      justify-content: space-between;\n    }\n  }\n\n  .icon {\n    display: none;\n    @media (min-width: $break-point-medium) {\n      align-self: center;\n      display: block;\n      fill: var(--newtab-icon-secondary-color);\n      margin-inline-end: 6px;\n    }\n  }\n}\n\n.manual-migration-actions {\n  border: 0;\n  display: block;\n  flex-wrap: nowrap;\n\n  @media (min-width: $break-point-medium) {\n    display: flex;\n    justify-content: space-between;\n    padding: 0;\n  }\n\n  button {\n    align-self: center;\n    height: 26px;\n    margin: 0;\n    margin-inline-start: 20px;\n    padding: 0 12px;\n  }\n}\n",
-		".collapsible-section {\n  padding: $section-vertical-padding $section-horizontal-padding;\n  transition-delay: 100ms;\n  transition-duration: 100ms;\n  transition-property: background-color;\n\n  .section-title {\n    font-size: $section-title-font-size;\n    font-weight: bold;\n    margin: 0;\n    text-transform: uppercase;\n\n    span {\n      color: var(--newtab-section-header-text-color);\n      display: inline-block;\n      fill: var(--newtab-section-header-text-color);\n      vertical-align: middle;\n    }\n\n    .click-target {\n      cursor: pointer;\n      vertical-align: top;\n      white-space: nowrap;\n    }\n\n    .collapsible-arrow {\n      margin-inline-start: 8px;\n      margin-top: -1px;\n    }\n  }\n\n  .section-top-bar {\n    height: 19px;\n    margin-bottom: 13px;\n    position: relative;\n\n    .context-menu-button {\n      background: url('chrome://browser/skin/page-action.svg') no-repeat right center;\n      border: 0;\n      cursor: pointer;\n      fill: var(--newtab-section-header-text-color);\n      height: 100%;\n      inset-inline-end: 0;\n      opacity: 0;\n      position: absolute;\n      top: 0;\n      transition-duration: 200ms;\n      transition-property: opacity;\n      width: $context-menu-button-size;\n\n      &:-moz-any(:active, :focus, :hover) {\n        fill: $grey-90;\n        opacity: 1;\n      }\n    }\n\n    .context-menu {\n      top: 16px;\n    }\n\n    @media (max-width: $break-point-widest + $card-width * 1.5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  &:hover,\n  &.active {\n    .section-top-bar {\n      .context-menu-button {\n        opacity: 1;\n      }\n    }\n  }\n\n  &.active {\n    background: var(--newtab-element-hover-color);\n    border-radius: 4px;\n\n    .section-top-bar {\n      .context-menu-button {\n        fill: var(--newtab-section-active-contextmenu-color);\n      }\n    }\n  }\n\n  .section-disclaimer {\n    $max-button-width: 130px;\n    $min-button-height: 26px;\n\n    color: var(--newtab-text-conditional-color);\n    font-size: 13px;\n    margin-bottom: 26px;\n    position: relative;\n    display: flex;\n\n    .section-disclaimer-text {\n      display: inline-block;\n      width: calc(100% - #{$max-button-width});\n\n      @media (max-width: $break-point-medium) {\n        width: $card-width;\n      }\n    }\n\n    a {\n      color: var(--newtab-link-primary-color);\n      font-weight: bold;\n      padding-left: 3px;\n    }\n\n    button {\n      background: var(--newtab-button-secondary-color);\n      border: 1px solid $grey-40;\n      border-radius: 4px;\n      cursor: pointer;\n      max-width: $max-button-width;\n      min-height: $min-button-height;\n      inset-inline-end: 0;\n      align-self: center;\n\n      &:hover:not(.dismiss) {\n        box-shadow: $shadow-primary;\n        transition: box-shadow 150ms;\n      }\n\n      @media (min-width: $break-point-small) {\n        position: absolute;\n      }\n    }\n  }\n\n  .section-body-fallback {\n    height: $card-height;\n  }\n\n  .section-body {\n    // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n    $horizontal-padding: 7px;\n    margin: 0 (-$horizontal-padding);\n    padding: 0 $horizontal-padding;\n\n    &.animating {\n      overflow: hidden;\n      pointer-events: none;\n    }\n  }\n\n  &.animation-enabled {\n    .section-title {\n      .collapsible-arrow {\n        transition: transform 0.5s $photon-easing;\n      }\n    }\n\n    .section-body {\n      transition: max-height 0.5s $photon-easing;\n    }\n  }\n\n  &.collapsed {\n    .section-body {\n      max-height: 0;\n      overflow: hidden;\n    }\n  }\n}\n",
+		".collapsible-section {\n  padding: $section-vertical-padding $section-horizontal-padding;\n  transition-delay: 100ms;\n  transition-duration: 100ms;\n  transition-property: background-color;\n\n  .section-title {\n    font-size: $section-title-font-size;\n    font-weight: bold;\n    margin: 0;\n\n    span {\n      color: var(--newtab-section-header-text-color);\n      display: inline-block;\n      fill: var(--newtab-section-header-text-color);\n      vertical-align: middle;\n    }\n\n    .click-target {\n      cursor: pointer;\n      vertical-align: top;\n      white-space: nowrap;\n    }\n\n    .collapsible-arrow {\n      margin-inline-start: 8px;\n      margin-top: -1px;\n    }\n  }\n\n  .section-top-bar {\n    height: 19px;\n    margin-bottom: 13px;\n    position: relative;\n\n    .context-menu-button {\n      background: url('chrome://browser/skin/page-action.svg') no-repeat right center;\n      border: 0;\n      cursor: pointer;\n      fill: var(--newtab-section-header-text-color);\n      height: 100%;\n      inset-inline-end: 0;\n      opacity: 0;\n      position: absolute;\n      top: 0;\n      transition-duration: 200ms;\n      transition-property: opacity;\n      width: $context-menu-button-size;\n\n      &:-moz-any(:active, :focus, :hover) {\n        fill: $grey-90;\n        opacity: 1;\n      }\n    }\n\n    .context-menu {\n      top: 16px;\n    }\n\n    @media (max-width: $break-point-widest + $card-width * 1.5) {\n      @include context-menu-open-left;\n    }\n  }\n\n  &:hover,\n  &.active {\n    .section-top-bar {\n      .context-menu-button {\n        opacity: 1;\n      }\n    }\n  }\n\n  &.active {\n    background: var(--newtab-element-hover-color);\n    border-radius: 4px;\n\n    .section-top-bar {\n      .context-menu-button {\n        fill: var(--newtab-section-active-contextmenu-color);\n      }\n    }\n  }\n\n  .section-disclaimer {\n    $max-button-width: 130px;\n    $min-button-height: 26px;\n\n    color: var(--newtab-text-conditional-color);\n    font-size: 13px;\n    margin-bottom: 26px;\n    position: relative;\n    display: flex;\n\n    .section-disclaimer-text {\n      display: inline-block;\n      width: calc(100% - #{$max-button-width});\n\n      @media (max-width: $break-point-medium) {\n        width: $card-width;\n      }\n    }\n\n    a {\n      color: var(--newtab-link-primary-color);\n      font-weight: bold;\n      padding-left: 3px;\n    }\n\n    button {\n      background: var(--newtab-button-secondary-color);\n      border: 1px solid $grey-40;\n      border-radius: 4px;\n      cursor: pointer;\n      max-width: $max-button-width;\n      min-height: $min-button-height;\n      inset-inline-end: 0;\n      align-self: center;\n\n      &:hover:not(.dismiss) {\n        box-shadow: $shadow-primary;\n        transition: box-shadow 150ms;\n      }\n\n      @media (min-width: $break-point-small) {\n        position: absolute;\n      }\n    }\n  }\n\n  .section-body-fallback {\n    height: $card-height;\n  }\n\n  .section-body {\n    // This is so the top sites favicon and card dropshadows don't get clipped during animation:\n    $horizontal-padding: 7px;\n    margin: 0 (-$horizontal-padding);\n    padding: 0 $horizontal-padding;\n\n    &.animating {\n      overflow: hidden;\n      pointer-events: none;\n    }\n  }\n\n  &.animation-enabled {\n    .section-title {\n      .collapsible-arrow {\n        transition: transform 0.5s $photon-easing;\n      }\n    }\n\n    .section-body {\n      transition: max-height 0.5s $photon-easing;\n    }\n  }\n\n  &.collapsed {\n    .section-body {\n      max-height: 0;\n      overflow: hidden;\n    }\n  }\n}\n",
 		"\n.asrouter-admin {\n  $border-color: var(--newtab-border-secondary-color);\n  $monospace: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Mono', 'Droid Sans Mono', 'Source Code Pro', monospace;\n  max-width: 996px;\n  margin: 0 auto;\n  font-size: 14px;\n  // Reset .outer-wrapper styles\n  display: inherit;\n  padding: 0 0 92px;\n\n  h1 {\n    font-weight: 200;\n    font-size: 32px;\n  }\n\n  table {\n    border-collapse: collapse;\n    width: 100%;\n  }\n\n  .message-item {\n    &:first-child td {\n      border-top: 1px solid $border-color;\n    }\n\n    td {\n      vertical-align: top;\n      border-bottom: 1px solid $border-color;\n      padding: 8px;\n\n      &:first-child {\n        border-left: 1px solid $border-color;\n      }\n\n      &:last-child {\n        border-right: 1px solid $border-color;\n      }\n    }\n\n    &.current {\n      .message-id span {\n        background: $yellow-50;\n        padding: 2px 5px;\n\n        [lwt-newtab-brighttext] & {\n          color: $black;\n        }\n      }\n    }\n\n    &.blocked {\n      .message-id,\n      .message-summary {\n        opacity: 0.5;\n      }\n\n      .message-id {\n        opacity: 0.5;\n      }\n    }\n\n    .message-id {\n      font-family: $monospace;\n      font-size: 12px;\n    }\n  }\n\n  pre {\n    background: var(--newtab-textbox-background-color);\n    margin: 0;\n    padding: 8px;\n    font-size: 12px;\n    max-width: 750px;\n    overflow: auto;\n    font-family: $monospace;\n  }\n}\n",
 		".ASRouterButton {\n  white-space: nowrap;\n  border-radius: 4px;\n  border: 1px solid var(--newtab-border-secondary-color);\n  background-color: var(--newtab-button-secondary-color);\n  font-family: inherit;\n  padding: 8px 15px;\n  margin-inline-start: 12px;\n  color: inherit;\n\n  .tall & {\n    margin-inline-start: 20px;\n  }\n}\n",
 		".SnippetBaseContainer {\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  background-color: var(--newtab-snippets-background-color);\n  color: var(--newtab-text-primary-color);\n  font-size: 12px;\n  line-height: 16px;\n  border-top: 1px solid var(--newtab-snippets-hairline-color);\n  box-shadow: $shadow-secondary;\n  display: flex;\n  align-items: center;\n\n  .innerWrapper {\n    margin: 0 auto;\n    display: flex;\n    align-items: center;\n    padding: 12px $section-horizontal-padding;\n\n    // This is to account for the block button on smaller screens\n    padding-inline-end: 36px;\n    @media (min-width: $break-point-large) {\n      padding-inline-end: $section-horizontal-padding;\n    }\n\n    max-width: $wrapper-max-width-large;\n    @media (min-width: $break-point-widest) {\n      max-width: $wrapper-max-width-widest;\n    }\n  }\n\n  .blockButton {\n    display: none;\n    background: none;\n    border: 0;\n    position: absolute;\n    top: 50%;\n    inset-inline-end: 12px;\n    height: 16px;\n    width: 16px;\n    background-image: url('resource://activity-stream/data/content/assets/glyph-dismiss-16.svg');\n    -moz-context-properties: fill;\n    fill: var(--newtab-icon-primary-color);\n    opacity: 0.5;\n    margin-top: -8px;\n    padding: 0;\n    cursor: pointer;\n\n    @media (min-width: 766px) {\n      inset-inline-end: 24px;\n    }\n  }\n\n  &:hover .blockButton {\n    display: block;\n  }\n}\n",
 		".activity-stream {\n  &.modal-open {\n    overflow: hidden;\n  }\n}\n\n.modalOverlayOuter {\n  background: $white;\n  opacity: 0.93;\n  height: 100%;\n  position: fixed;\n  top: 0;\n  width: 100%;\n  display: none;\n  z-index: 1100;\n\n  &.active {\n    display: block;\n  }\n}\n\n.modalOverlayInner {\n  width: 960px;\n  height: 510px;\n  position: fixed;\n  top: calc(50% - 255px); // halfway down minus half the height of the modal\n  left: calc(50% - 480px); // halfway across minus half the width of the modal\n  background: $white;\n  box-shadow: 0 1px 15px 0 $black-30;\n  border-radius: 4px;\n  display: none;\n  z-index: 1101;\n\n\n  // modal takes over entire screen\n  @media(max-width: 960px) {\n    width: 100%;\n    height: 100%;\n    top: 0;\n    left: 0;\n    box-shadow: none;\n    border-radius: 0;\n  }\n\n  // if modal is short enough, add a vertical scroll bar\n  @media(max-width: 850px) and (max-height: 730px) {\n    overflow-y: scroll;\n  }\n\n  // if modal is narrow enough, add a vertical scroll bar\n  @media(max-width: 650px) and (max-height: 600px) {\n    overflow-y: scroll;\n  }\n\n  &.active {\n    display: block;\n  }\n\n  h2 {\n    color: $grey-60;\n    text-align: center;\n    font-weight: 200;\n    margin-top: 30px;\n    font-size: 28px;\n    line-height: 37px;\n    letter-spacing: -0.13px;\n\n    @media(max-width: 960px) {\n      margin-top: 100px;\n    }\n\n    @media(max-width: 850px) {\n      margin-top: 30px;\n    }\n  }\n\n  .footer {\n    border-top: 1px solid $grey-30;\n    height: 70px;\n    width: 100%;\n    position: absolute;\n    bottom: 0;\n    text-align: center;\n    background-color: $white;\n\n    // if modal is short enough, footer becomes sticky\n    @media(max-width: 850px) and (max-height: 730px) {\n      position: sticky;\n    }\n\n    // if modal is narrow enough, footer becomes sticky\n    @media(max-width: 650px) and (max-height: 600px) {\n      position: sticky;\n    }\n\n    .modalButton {\n      margin-top: 20px;\n      width: 150px;\n      height: 30px;\n      padding: 4px 0 6px;\n      font-size: 15px;\n\n      &:focus,\n      &.active {\n        box-shadow: $shadow-primary;\n        transition: box-shadow 150ms;\n      }\n    }\n  }\n}\n",
 		".SimpleSnippet {\n  &.tall {\n    padding: 27px 0;\n  }\n\n  .title {\n    display: inline;\n    font-size: inherit;\n    margin: 0;\n  }\n\n  .titleIcon {\n    background-repeat: no-repeat;\n    background-size: 14px;\n    height: 16px;\n    width: 16px;\n    margin-top: 2px;\n    margin-inline-end: 2px;\n    display: inline-block;\n    vertical-align: top;\n  }\n\n  .body {\n    display: inline;\n    margin: 0;\n  }\n\n  .icon {\n    height: 42px;\n    width: 42px;\n    margin-inline-end: 12px;\n    flex-shrink: 0;\n  }\n\n  &.tall .icon {\n    margin-inline-end: 20px;\n  }\n\n  .ASRouterAnchor {\n    color: inherit;\n    text-decoration: underline;\n  }\n}\n",
 		".onboardingMessageContainer {\n  display: grid;\n  grid-column-gap: 21px;\n  grid-template-columns: auto auto auto;\n  padding-left: 30px;\n  padding-right: 30px;\n\n  // at 850px, the cards go from vertical layout to horizontal layout\n  @media(max-width: 850px) {\n    grid-template-columns: none;\n    grid-template-rows: auto auto auto;\n    padding-left: 110px;\n    padding-right: 110px;\n  }\n}\n\n.onboardingMessage {\n  height: 340px;\n  text-align: center;\n  padding: 13px;\n  font-weight: 200;\n\n  // at 850px, img floats left, content floats right next to it\n  @media(max-width: 850px) {\n    height: 170px;\n    text-align: left;\n    padding: 10px;\n    border-bottom: 1px solid $grey-30;\n    display: flex;\n    margin-bottom: 11px;\n\n    &:last-child {\n      border: 0;\n    }\n\n    .onboardingContent {\n      padding-left: 10px;\n      height: 100%;\n\n      > span > h3 {\n        margin-top: 0;\n        margin-bottom: 4px;\n        font-weight: 400;\n      }\n\n      > span > p {\n        margin-top: 0;\n        line-height: 22px;\n        font-size: 15px;\n      }\n    }\n  }\n\n  @media(max-width: 650px) {\n    height: 250px;\n  }\n\n  .onboardingMessageImage {\n    height: 100px;\n    width: 120px;\n    background-size: 120px;\n    background-position: center center;\n    background-repeat: no-repeat;\n    display: inline-block;\n    vertical-align: middle;\n\n\n    @media(max-width: 850px) {\n      height: 75px;\n      min-width: 80px;\n      background-size: 80px;\n    }\n\n    &.addons {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-addons@2x.png');\n    }\n\n    &.privatebrowsing {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-privatebrowsing@2x.png');\n    }\n\n    &.screenshots {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-screenshots@2x.png');\n    }\n\n    &.gift {\n      background-image: url('resource://activity-stream/data/content/assets/illustration-gift@2x.png');\n    }\n  }\n\n  .onboardingContent {\n    height: 175px;\n\n    > span > h3 {\n      color: $grey-90;\n      margin-bottom: 8px;\n      font-weight: 400;\n    }\n\n    > span > p {\n      color: $grey-60;\n      margin-top: 0;\n      height: 130px;\n      margin-bottom: 12px;\n      font-size: 15px;\n      line-height: 22px;\n\n      @media(max-width: 650px) {\n        margin-bottom: 0;\n      }\n    }\n  }\n\n  .onboardingButton {\n    background-color: $grey-90-10;\n    border: 0;\n    width: 150px;\n    height: 30px;\n    margin-bottom: 23px;\n    padding: 4px 0 6px;\n    font-size: 15px;\n\n    // at 850px, the button shimmies down and to the right\n    @media(max-width: 850px) {\n      float: right;\n      margin-top: -60px;\n      margin-right: -10px;\n    }\n\n    @media(max-width: 650px) {\n      float: none;\n      margin-top: 30px;\n    }\n\n    &:focus,\n    &.active {\n      box-shadow: $shadow-primary;\n      transition: box-shadow 150ms;\n    }\n  }\n\n\n  &::before {\n    content: '';\n    height: 220px;\n    width: 1px;\n    position: absolute;\n    background-color: $grey-30;\n    margin-top: 40px;\n    margin-left: 215px;\n\n    // at 850px, the line goes from vertical to horizontal\n    @media(max-width: 850px) {\n      content: none;\n    }\n  }\n\n  &:last-child::before {\n    content: none;\n  }\n}\n"
 	],
 	"names": [],
-	"mappings": "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"
+	"mappings": "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"
 }
\ No newline at end of file
--- a/browser/components/newtab/data/content/activity-stream.bundle.js
+++ b/browser/components/newtab/data/content/activity-stream.bundle.js
@@ -208,17 +208,17 @@ const actionTypes = {};
 for (const type of ["ADDONS_INFO_REQUEST", "ADDONS_INFO_RESPONSE", "ARCHIVE_FROM_POCKET", "AS_ROUTER_TELEMETRY_USER_EVENT", "BLOCK_URL", "BOOKMARK_URL", "COPY_DOWNLOAD_LINK", "DELETE_BOOKMARK_BY_ID", "DELETE_FROM_POCKET", "DELETE_HISTORY_URL", "DIALOG_CANCEL", "DIALOG_OPEN", "DISABLE_ONBOARDING", "DOWNLOAD_CHANGED", "INIT", "MIGRATION_CANCEL", "MIGRATION_COMPLETED", "MIGRATION_START", "NEW_TAB_INIT", "NEW_TAB_INITIAL_STATE", "NEW_TAB_LOAD", "NEW_TAB_REHYDRATED", "NEW_TAB_STATE_REQUEST", "NEW_TAB_UNLOAD", "OPEN_DOWNLOAD_FILE", "OPEN_LINK", "OPEN_NEW_WINDOW", "OPEN_PRIVATE_WINDOW", "OPEN_WEBEXT_SETTINGS", "PAGE_PRERENDERED", "PLACES_BOOKMARK_ADDED", "PLACES_BOOKMARK_REMOVED", "PLACES_HISTORY_CLEARED", "PLACES_LINKS_CHANGED", "PLACES_LINK_BLOCKED", "PLACES_LINK_DELETED", "PLACES_SAVED_TO_POCKET", "PREFS_INITIAL_VALUES", "PREF_CHANGED", "PREVIEW_REQUEST", "PREVIEW_REQUEST_CANCEL", "PREVIEW_RESPONSE", "REMOVE_DOWNLOAD_FILE", "RICH_ICON_MISSING", "SAVE_SESSION_PERF_DATA", "SAVE_TO_POCKET", "SCREENSHOT_UPDATED", "SECTION_DEREGISTER", "SECTION_DISABLE", "SECTION_ENABLE", "SECTION_MOVE", "SECTION_OPTIONS_CHANGED", "SECTION_REGISTER", "SECTION_UPDATE", "SECTION_UPDATE_CARD", "SETTINGS_CLOSE", "SETTINGS_OPEN", "SET_PREF", "SHOW_DOWNLOAD_FILE", "SHOW_FIREFOX_ACCOUNTS", "SKIPPED_SIGNIN", "SNIPPETS_BLOCKLIST_CLEARED", "SNIPPETS_BLOCKLIST_UPDATED", "SNIPPETS_DATA", "SNIPPETS_RESET", "SNIPPET_BLOCKED", "SUBMIT_EMAIL", "SYSTEM_TICK", "TELEMETRY_IMPRESSION_STATS", "TELEMETRY_PERFORMANCE_EVENT", "TELEMETRY_UNDESIRED_EVENT", "TELEMETRY_USER_EVENT", "TOP_SITES_CANCEL_EDIT", "TOP_SITES_EDIT", "TOP_SITES_INSERT", "TOP_SITES_PIN", "TOP_SITES_PREFS_UPDATED", "TOP_SITES_UNPIN", "TOP_SITES_UPDATED", "TOTAL_BOOKMARKS_REQUEST", "TOTAL_BOOKMARKS_RESPONSE", "UNINIT", "UPDATE_SECTION_PREFS", "WEBEXT_CLICK", "WEBEXT_DISMISS"]) {
   actionTypes[type] = type;
 }
 
 // These are acceptable actions for AS Router messages to have. They can show up
 // as call-to-action buttons in snippets, onboarding tour, etc.
 const ASRouterActions = {};
 
-for (const type of ["OPEN_PRIVATE_BROWSER_WINDOW", "OPEN_URL", "OPEN_ABOUT_PAGE"]) {
+for (const type of ["INSTALL_ADDON_FROM_URL", "OPEN_PRIVATE_BROWSER_WINDOW", "OPEN_URL", "OPEN_ABOUT_PAGE"]) {
   ASRouterActions[type] = type;
 }
 
 // Helper function for creating routed actions between content and main
 // Not intended to be used by consumers
 function _RouteMessage(action, options) {
   const meta = action.meta ? Object.assign({}, action.meta) : {};
   if (!options || !options.from || !options.to) {
@@ -1127,17 +1127,17 @@ class ASRouterUISurface extends react__W
   }
 
   componentWillMount() {
     const endpoint = ASRouterUtils.getEndpoint();
     ASRouterUtils.addListener(this.onMessageFromParent);
 
     // If we are loading about:welcome we want to trigger the onboarding messages
     if (this.props.document.location.href === "about:welcome") {
-      ASRouterUtils.sendMessage({ type: "TRIGGER", data: { trigger: "firstRun" } });
+      ASRouterUtils.sendMessage({ type: "TRIGGER", data: { trigger: { id: "firstRun" } } });
     } else {
       ASRouterUtils.sendMessage({ type: "CONNECT_UI_REQUEST", data: { endpoint } });
     }
   }
 
   componentWillUnmount() {
     ASRouterUtils.removeListener(this.onMessageFromParent);
   }
@@ -2746,17 +2746,17 @@ const LinkMenuOptions = {
     }),
     userEvent: "OPEN_NEW_WINDOW"
   }),
   BlockUrl: (site, index, eventSource) => ({
     id: "menu_action_dismiss",
     icon: "dismiss",
     action: common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionCreators"].AlsoToMain({
       type: common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionTypes"].BLOCK_URL,
-      data: { url: site.url, pocket_id: site.pocket_id }
+      data: { url: site.open_url || site.url, pocket_id: site.pocket_id }
     }),
     impression: common_Actions_jsm__WEBPACK_IMPORTED_MODULE_0__["actionCreators"].ImpressionStats({
       source: eventSource,
       block: 0,
       tiles: [{ id: site.guid, pos: index }]
     }),
     userEvent: "BLOCK"
   }),
--- a/browser/components/newtab/data/content/activity-stream.bundle.js.map
+++ b/browser/components/newtab/data/content/activity-stream.bundle.js.map
@@ -1,1 +1,1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./content-src/activity-stream.jsx","webpack:///(webpack)/buildin/global.js","webpack:///./common/Actions.jsm","webpack:///./content-src/lib/snippets.js","webpack:///./content-src/asrouter/asrouter-content.jsx","webpack:///external \"React\"","webpack:///external \"PropTypes\"","webpack:///./content-src/lib/init-store.js","webpack:///external \"Redux\"","webpack:///./content-src/asrouter/components/ImpressionsWrapper/ImpressionsWrapper.jsx","webpack:///external \"ReactDOM\"","webpack:///./content-src/asrouter/template-utils.js","webpack:///./content-src/components/Base/Base.jsx","webpack:///external \"ReactIntl\"","webpack:///./content-src/components/ASRouterAdmin/ASRouterAdmin.jsx","webpack:///./content-src/components/ConfirmDialog/ConfirmDialog.jsx","webpack:///external \"ReactRedux\"","webpack:///./content-src/components/ErrorBoundary/ErrorBoundary.jsx","webpack:///./content-src/components/ManualMigration/ManualMigration.jsx","webpack:///./common/PrerenderData.jsm","webpack:///./content-src/components/Search/Search.jsx","webpack:///./content-src/lib/constants.js","webpack:///./content-src/components/Sections/Sections.jsx","webpack:///./content-src/lib/link-menu-options.js","webpack:///./content-src/components/LinkMenu/LinkMenu.jsx","webpack:///./content-src/components/ContextMenu/ContextMenu.jsx","webpack:///./content-src/lib/screenshot-utils.js","webpack:///./content-src/components/CollapsibleSection/CollapsibleSection.jsx","webpack:///./content-src/components/SectionMenu/SectionMenu.jsx","webpack:///./content-src/lib/section-menu-options.js","webpack:///./content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx","webpack:///./common/PerfService.jsm","webpack:///./content-src/components/Topics/Topics.jsx","webpack:///./content-src/components/TopSites/TopSites.jsx","webpack:///./content-src/components/TopSites/TopSitesConstants.js","webpack:///./content-src/components/TopSites/TopSite.jsx","webpack:///./content-src/components/StartupOverlay/StartupOverlay.jsx","webpack:///./content-src/lib/detect-user-session-start.js","webpack:///./node_modules/fluent/src/parser.js","webpack:///./node_modules/fluent/src/types.js","webpack:///./node_modules/fluent/src/builtins.js","webpack:///./node_modules/fluent/src/resolver.js","webpack:///./node_modules/fluent/src/context.js","webpack:///./node_modules/fluent/src/cached_iterable.js","webpack:///./node_modules/fluent/src/fallback.js","webpack:///./node_modules/fluent/src/util.js","webpack:///./node_modules/fluent/src/index.js","webpack:///./node_modules/fluent-react/src/localization.js","webpack:///./node_modules/fluent-react/src/provider.js","webpack:///./node_modules/fluent-react/src/with_localization.js","webpack:///./node_modules/fluent-react/src/markup.js","webpack:///./node_modules/fluent-react/vendor/omittedCloseTags.js","webpack:///./node_modules/fluent-react/vendor/voidElementTags.js","webpack:///./node_modules/fluent-react/src/localized.js","webpack:///./node_modules/fluent-react/src/index.js","webpack:///./content-src/asrouter/components/Button/Button.jsx","webpack:///./content-src/asrouter/components/SnippetBase/SnippetBase.jsx","webpack:///./content-src/asrouter/templates/SimpleSnippet/SimpleSnippet.jsx","webpack:///./common/Dedupe.jsm","webpack:///./common/Reducers.jsm","webpack:///./content-src/asrouter/components/ModalOverlay/ModalOverlay.jsx","webpack:///./content-src/asrouter/templates/OnboardingMessage/OnboardingMessage.jsx","webpack:///./content-src/components/Card/types.js","webpack:///./content-src/components/Card/Card.jsx","webpack:///./content-src/components/TopSites/TopSiteFormInput.jsx","webpack:///./content-src/components/TopSites/TopSiteForm.jsx"],"names":["store","initStore","global","gActivityStreamPrerenderedState","sendEventOrAddListener","dispatch","ac","AlsoToMain","type","at","NEW_TAB_STATE_REQUEST","ReactDOM","hydrate","document","location","href","documentElement","lang","gActivityStreamStrings","getElementById","addSnippetsSubscriber","globalImportContext","Window","BACKGROUND_PROCESS","UI_CODE","actionTypes","ASRouterActions","_RouteMessage","action","options","meta","from","to","Error","forEach","o","fromTarget","skipLocal","CONTENT_MESSAGE_TYPE","MAIN_MESSAGE_TYPE","OnlyToMain","BroadcastToContent","AlsoToOneContent","target","skipMain","toTarget","OnlyToOneContent","AlsoToPreloaded","PRELOAD_MESSAGE_TYPE","UserEvent","data","TELEMETRY_USER_EVENT","ASRouterUserEvent","AS_ROUTER_TELEMETRY_USER_EVENT","UndesiredEvent","importContext","TELEMETRY_UNDESIRED_EVENT","PerfEvent","TELEMETRY_PERFORMANCE_EVENT","ImpressionStats","TELEMETRY_IMPRESSION_STATS","SetPref","name","value","SET_PREF","WebExtEvent","source","isSendToMain","isBroadcastToContent","isSendToOneContent","isSendToPreloaded","isFromMain","getPortIdOfSender","DATABASE_NAME","DATABASE_VERSION","SNIPPETS_OBJECTSTORE_NAME","SNIPPETS_UPDATE_INTERVAL_MS","SNIPPETS_ENABLED_EVENT","SNIPPETS_DISABLED_EVENT","SnippetsMap","Map","constructor","_db","_dispatch","set","key","_dbTransaction","db","put","delete","clear","SNIPPETS_BLOCKLIST_CLEARED","blockList","get","blockSnippetById","id","includes","push","SNIPPETS_BLOCKLIST_UPDATED","disableOnboarding","DISABLE_ONBOARDING","showFirefoxAccounts","SHOW_FIREFOX_ACCOUNTS","getTotalBookmarksCount","Promise","resolve","TOTAL_BOOKMARKS_REQUEST","RPMAddMessageListener","onMessage","TOTAL_BOOKMARKS_RESPONSE","RPMRemoveMessageListener","getAddonsInfo","ADDONS_INFO_REQUEST","ADDONS_INFO_RESPONSE","connect","_openDB","_restoreFromDb","modifier","reject","transaction","objectStore","onsuccess","event","onerror","error","openRequest","indexedDB","open","deleteDatabase","onupgradeneeded","result","objectStoreNames","contains","createObjectStore","err","console","onversionchange","versionChangeEvent","close","cursorRequest","openCursor","cursor","continue","SnippetsProvider","gSnippetsMap","_onAction","bind","snippetsMap","_refreshSnippets","cachedVersion","appData","version","lastUpdate","needsUpdate","Date","now","snippetsURL","response","fetch","status","payload","text","e","_noSnippetFallback","_forceOnboardingVisibility","shouldBeVisible","onboardingEl","style","display","_showRemoteSnippets","snippetsEl","elementId","innerHTML","scriptEl","getElementsByTagName","relocatedScript","createElement","parentNode","replaceChild","msg","SNIPPET_BLOCKED","concat","init","Object","assign","keys","window","dispatchEvent","Event","initialized","uninit","snippets","asrouterContent","initializing","subscribe","state","getState","isASRouterEnabled","Prefs","values","asrouterExperimentEnabled","asrouterOnboardingCohort","disableSnippets","Snippets","INCOMING_MESSAGE_NAME","OUTGOING_MESSAGE_NAME","ASRouterUtils","addListener","listener","removeListener","sendMessage","RPMSendAsyncMessage","blockById","blockBundle","bundle","executeAction","button_action","button_action_params","unblockById","unblockBundle","getNextMessage","overrideMessage","sendTelemetry","ping","getEndpoint","params","URLSearchParams","slice","indexOf","endpoint","URL","url","snippetId","shouldSendImpressionOnUpdate","nextProps","prevProps","message","generateMessages","content","cx","addMessages","ALLOWED_TAGS","b","i","u","strong","em","br","convertLinks","links","sendClick","reduce","acc","linkTag","safeURI","metric","RichText","props","ASRouterUISurface","React","PureComponent","onMessageFromParent","sendImpression","sendUserActionTelemetry","extraProps","message_id","eventType","provider","dataset","onBlockById","clearBundle","setState","componentWillMount","trigger","componentWillUnmount","renderSnippets","renderOnboarding","render","template","defaultProps","ASRouterContent","containerElement","_mount","_unmount","unmountComponentAtNode","MERGE_STORE_ACTION","EARLY_QUEUED_ACTIONS","SAVE_SESSION_PERF_DATA","PAGE_PRERENDERED","mergeStateReducer","mainReducer","prevState","messageMiddleware","next","au","rehydrationMiddleware","_didRehydrate","isMergeStoreAction","isRehydrationRequest","_didRequestInitialState","INIT","queueEarlyMessageMiddleware","_receivedFromMain","_earlyActionQueue","reducers","initialState","createStore","combineReducers","applyMiddleware","ex","dump","JSON","stringify","stack","VISIBLE","VISIBILITY_CHANGE_EVENT","ImpressionsWrapper","sendImpressionOrAddListener","visibilityState","_onVisibilityChange","removeEventListener","addEventListener","componentDidMount","sendOnMount","componentDidUpdate","children","protocol","isAllowed","warn","PrefsButton","injectIntl","onClick","intl","formatMessage","addLocaleDataForReactIntl","locale","addLocaleData","parentLocale","_Base","App","sendNewTabRehydrated","isFirstrun","body","classList","add","isPrerendered","updateTheme","componentWillUpdate","bodyClassName","filter","v","join","className","renderNotified","NEW_TAB_REHYDRATED","strings","prefs","hash","BaseContent","openPreferences","SETTINGS_OPEN","shouldBeFixedToTop","PrerenderData","arePrefsValid","outerClassName","showSearch","migrationExpired","Base","ASRouterAdmin","findOtherBundledMessagesOfSameTemplate","messages","bundled","handleBlock","handleUnblock","handleOverride","renderMessageItem","isCurrent","lastMessageId","isBlocked","impressions","length","itemClassName","renderMessages","map","renderProviders","providers","_ConfirmDialog","_handleCancelBtn","_handleConfirmBtn","DIALOG_CANCEL","eventSource","onConfirm","_renderModalMessage","message_body","body_string_id","visible","icon","cancel_button_string_id","confirm_button_string_id","ConfirmDialog","Dialog","ErrorBoundaryFallback","windowObj","reload","defaultClass","ErrorBoundary","hasError","componentDidCatch","info","FallbackComponent","_ManualMigration","onLaunchTour","onCancelTour","MIGRATION_START","MIGRATION_CANCEL","ManualMigration","_PrerenderData","initialPrefs","initialSections","_setValidation","validation","_validation","invalidatingPrefs","_invalidatingPrefs","oneOf","getPref","indexedDBPrefs","some","anyModifiedPrefs","prefName","pref","enabled","order","title","_Search","onInputMount","handleEvent","detail","gContentSearchController","search","input","healthReportKey","IS_NEWTAB","searchSource","ContentSearchUIController","Search","documentURI","CARDS_PER_ROW_DEFAULT","CARDS_PER_ROW_COMPACT_WIDE","getFormattedMessage","Section","numRows","rowsPref","maxRows","_dispatchImpressionStats","cardsPerRow","compactCards","matchMedia","matches","maxCards","cards","rows","needsImpressionStats","tiles","link","guid","impressionCardGuids","sendImpressionStatsOrAddListener","shouldSendImpressionStats","collapsed","isCollapsed","wasCollapsed","emptyState","contextMenuOptions","disclaimer","privacyNoticeURL","isFirst","isLast","maxCardsPerRow","maxCardsOnNarrow","shouldShowTopics","topics","realRows","shouldShowEmptyState","isWebExtension","sectionClassName","feed","padding","startsWith","read_more_endpoint","SectionIntl","_Sections","renderSections","sections","enabledSections","Sections","section","sectionOrder","showTopSites","expectedCount","sectionId","split","commonProps","find","s","_OpenInPrivateWindow","site","OPEN_PRIVATE_WINDOW","referrer","userEvent","GetPlatformString","platform","LinkMenuOptions","Separator","EmptyItem","RemoveBookmark","DELETE_BOOKMARK_BY_ID","bookmarkGuid","AddBookmark","BOOKMARK_URL","OpenInNewWindow","OPEN_NEW_WINDOW","typedBonus","BlockUrl","index","BLOCK_URL","pocket_id","impression","block","pos","WebExtDismiss","string_id","WEBEXT_DISMISS","action_position","DeleteUrl","isEnabled","siteInfo","DIALOG_OPEN","DELETE_HISTORY_URL","forceBlock","ShowFile","SHOW_DOWNLOAD_FILE","OpenFile","OPEN_DOWNLOAD_FILE","CopyDownloadLink","COPY_DOWNLOAD_LINK","GoToDownloadPage","OPEN_LINK","disabled","RemoveDownload","REMOVE_DOWNLOAD_FILE","PinTopSite","TOP_SITES_PIN","UnpinTopSite","TOP_SITES_UNPIN","SaveToPocket","SAVE_TO_POCKET","pocket","DeleteFromPocket","DELETE_FROM_POCKET","ArchiveFromPocket","ARCHIVE_FROM_POCKET","EditTopSite","TOP_SITES_EDIT","CheckBookmark","CheckPinTopSite","isPinned","CheckSavedToPocket","CheckBookmarkOrArchive","OpenInPrivateWindow","DEFAULT_SITE_MENU_OPTIONS","_LinkMenu","getOptions","isPrivateBrowsingEnabled","propOptions","isDefault","option","label","userEventData","first","last","onUpdate","LinkMenu","ContextMenu","hideContext","setTimeout","stopPropagation","ContextMenuItem","onKeyDown","shiftKey","ScreenshotUtils","isBlob","isLocal","image","path","createLocalImageObject","remoteImage","createObjectURL","maybeRevokeBlobObjectURL","localImage","revokeObjectURL","isRemoteImageLocal","Disclaimer","onAcknowledge","disclaimerPref","button","DisclaimerIntl","_CollapsibleSection","onBodyMount","onHeaderClick","onTransitionEnd","enableOrDisableAnimation","onMenuButtonClick","onMenuButtonMouseEnter","onMenuButtonMouseLeave","onMenuUpdate","enableAnimation","isAnimating","menuButtonHover","showContextMenu","sectionBody","scrollHeight","node","undefined","maxHeight","SectionMenuOptions","CheckCollapsed","currentTarget","renderIcon","backgroundImage","preventDefault","isCollapsible","extraMenuOptions","showPrefName","needsDisclaimer","active","CollapsibleSection","DEFAULT_SECTION_MENU_OPTIONS","WEBEXT_SECTION_MENU_OPTIONS","_SectionMenu","extraOptions","splice","SectionMenu","MoveUp","SECTION_MOVE","direction","MoveDown","RemoveSection","CollapseSection","UPDATE_SECTION_PREFS","ExpandSection","ManageSection","ManageWebExtension","OPEN_WEBEXT_SETTINGS","AddTopSite","PrivacyNotice","RECORDED_SECTIONS","ComponentPerfTimer","Component","perfSvc","_sendBadStateEvent","_sendPaintedEvent","_reportMissingData","_timestampHandled","_recordedFirstRender","_maybeSendPaintedEvent","_afterFramePaint","callback","requestAnimationFrame","_maybeSendBadStateEvent","_ensureFirstRenderTsRecorded","mark","dataReadyKey","firstRenderKey","parseInt","getMostRecentAbsMarkStartByName","ChromeUtils","import","usablePerfObj","Services","appShell","hiddenDOMWindow","performance","_PerfService","performanceObj","_perf","prototype","str","getEntriesByName","timeOrigin","absNow","entries","mostRecentEntry","startTime","Topic","Topics","t","topSiteIconType","customScreenshotURL","tippyTopIcon","faviconRef","faviconSize","screenshot","countTopSitesIconsTypes","topSites","countTopSitesTypes","_TopSites","onFormClose","_dispatchTopSitesStats","_getVisibleTopSites","topSitesIconsStats","topSitesPinned","topsites_icon_stats","topsites_pinned","sitesPerRow","TopSites","TopSitesRows","TOP_SITES_CANCEL_EDIT","editForm","topSitesRows","TOP_SITES_SOURCE","TOP_SITES_CONTEXT_MENU_OPTIONS","MIN_RICH_FAVICON_SIZE","MIN_CORNER_FAVICON_SIZE","TopSiteLink","screenshotImage","onDragEvent","_allowDrop","dataTransfer","types","dragged","effectAllowed","setData","blur","getNextStateFromProps","imageInState","nextState","componentWillReceiveProps","defaultStyle","isDraggable","topSiteOuterClassName","isDragged","letterFallback","imageClassName","imageStyle","showSmallFavicon","smallFaviconStyle","smallFaviconFallback","hasScreenshotImage","backgroundColor","favicon","draggableProps","onDragEnd","onDragStart","onMouseDown","TopSite","onLinkClick","_getTelemetryInfo","icon_type","iconType","card_type","altKey","ctrlKey","metaKey","onActivate","isContextMenuOpen","activeIndex","hostname","TopSitePlaceholder","onEditButtonClick","_TopSiteList","DEFAULT_STATE","draggedIndex","draggedSite","draggedTitle","topSitesPreview","prevTopSites","newTopSites","dropped","_makeTopSitesPreview","TOP_SITES_INSERT","draggedFromIndex","_getTopSites","pinnedOnly","unpinned","siteToInsert","holeIndex","indexStep","shiftingStep","nextIndex","preview","shift","topSitesUI","maxNarrowVisibleIndex","l","slotProps","TopSiteList","_StartupOverlay","onInputChange","onSubmit","clickSkip","initScene","removeOverlay","onInputInvalid","emailInput","overlayRemoved","flowId","flowBeginTime","didFetch","fxa_endpoint","json","show","remove","previousSibling","focus","termsLink","privacyLink","terms","privacy","StartupOverlay","DetectUserSessionStart","_store","_perfService","perfService","_sendEvent","visibility_event_rcvd_ts","MAX_PLACEABLES","entryIdentifierRe","identifierRe","functionIdentifierRe","RuntimeParser","getResource","string","_source","_index","_length","errors","skipWS","getEntry","SyntaxError","skipToNextEntryStart","ch","skipComment","skipSection","getMessage","skipInlineWS","getVariantName","getEntryIdentifier","val","getPattern","attrs","lineStart","getAttributes","skipBlankLines","ptr","getIdentifier","re","lastIndex","exec","toString","start","cc","charCodeAt","getString","substring","eol","firstLineContent","getComplexPattern","buffer","placeables","blankLinesStart","blankLinesEnd","ch2","getPlaceable","variants","getVariants","exp","vars","def","selector","getSelectorExpression","literal","getLiteral","getVariantKey","args","getCallArgs","test","fun","Array","isArray","lastIndexOf","getNumber","num","defaultIndex","cc0","cc1","parse","parser","FluentType","opts","valueOf","FluentNone","FluentNumber","parseFloat","ctx","nf","_memoizeIntlObject","Intl","NumberFormat","format","match","other","FluentDateTime","dtf","DateTimeFormat","FluentSymbol","pr","PluralRules","select","arg","merge","argopts","unwrapped","opt","MAX_PLACEABLE_LENGTH","FSI","PDI","DefaultMember","env","members","RangeError","MessageReference","_terms","_messages","ReferenceError","VariantExpression","keyword","Type","isVariantList","variant","variantKey","AttributeExpression","attrName","SelectExpression","keyCanMatch","expr","Pattern","ExternalArgument","FunctionReference","CallExpression","attr","member","hasOwnProperty","TypeError","_functions","func","builtins","callee","posargs","keyargs","ptn","dirty","has","useIsolating","_useIsolating","elem","part","WeakSet","locales","functions","_intls","WeakMap","Symbol","iterator","hasMessage","ctor","cache","CachedIterable","iterable","asyncIterator","seen","cur","touchNext","done","mapContextSync","ids","getContextForId","context","remainingCount","foundContexts","fill","mapContextAsync","nonBlank","line","countIndent","indent","ftl","code","lines","indents","common","Math","min","RegExp","replace","contexts","subs","Set","comp","unsubscribe","setMessages","relocalize","getMessageContext","formatCompound","mcx","fallback","isReactLocalization","propName","prop","l10n","getChildContext","Children","only","LocalizationProvider","childContextTypes","propTypes","PropTypes","element","isRequired","isIterable","componentName","withLocalization","Inner","WithLocalization","forceUpdate","displayName","contextTypes","component","TEMPLATE","parseMarkup","omittedCloseTags","area","base","col","embed","hr","img","keygen","param","track","wbr","voidElementTags","menuitem","reMarkup","toArguments","elems","propname","propval","substr","isValidElement","toLowerCase","messageValue","messageAttrs","localizedProps","cloneElement","translationNodes","childNodes","translatedChildren","childNode","nodeType","TEXT_NODE","textContent","localName","sourceChild","Localized","ALLOWED_STYLE_TAGS","Button","tag","border","onBlockClicked","UISurface","onBlock","containerClassName","DEFAULT_ICON_PATH","onButtonClick","renderTitle","renderTitleIcon","titleIcon","title_icon","renderButton","button_url","button_color","button_background_color","button_label","hasLink","button_type","hasButton","tall","richText","Dedupe","createKey","defaultCreateKey","item","group","groups","globalKeys","valueMap","m","TOP_SITES_DEFAULT_ROWS","TOP_SITES_MAX_SITES_PER_ROW","dedupe","INITIAL_STATE","insertPinned","pinned","pinnedUrls","newLinks","pinIndex","hasMatch","newRows","TOP_SITES_UPDATED","TOP_SITES_PREFS_UPDATED","previewResponse","PREVIEW_RESPONSE","previewUrl","PREVIEW_REQUEST","PREVIEW_REQUEST_CANCEL","SCREENSHOT_UPDATED","row","PLACES_BOOKMARK_ADDED","bookmarkTitle","dateAdded","bookmarkDateCreated","PLACES_BOOKMARK_REMOVED","newSite","PLACES_LINK_DELETED","newValues","PREFS_INITIAL_VALUES","PREF_CHANGED","newState","SECTION_DEREGISTER","SECTION_REGISTER","SECTION_UPDATE","card","dedupeConfigurations","dedupeConf","dedupedRows","dedupeFrom","dedupeSectionId","dedupeSection","SECTION_UPDATE_CARD","PLACES_SAVED_TO_POCKET","open_url","PLACES_LINK_BLOCKED","SNIPPETS_DATA","SNIPPETS_RESET","onDoneButton","onAction","cardContextTypes","history","intlID","bookmark","trending","download","gImageLoading","activeCard","imageLoaded","cardImage","maybeLoadImage","imageUrl","loaderPromise","loader","Image","src","catch","then","WEBEXT_CLICK","click","_Card","hasImage","placeholder","description","Card","PlaceholderCard","validationError","onChange","onMount","shouldFocus","ev","showClearButton","onClear","typeUrl","titleId","loading","placeholderId","errorMessageId","TopSiteFormInput","customScreenshotUrl","showCustomScreenshotForm","onClearScreenshotInput","onLabelChange","onUrlChange","onCancelButtonClick","onClearUrlClick","onDoneButtonClick","onCustomScreenshotUrlChange","onPreviewButtonClick","onEnableScreenshotUrlForm","validateUrl","_updateCustomScreenshotInput","onClose","validateForm","cleanUrl","_tryParseUrl","validProtocols","urlObj","validateCustomScreenshotUrl","validate","_renderCustomScreenshotInput","requestFailed","isLoading","showAsAdd","previous","changed","previewMode","previewLink","TopSiteForm"],"mappings":"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","file":"activity-stream.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addSnippetsSubscriber} from \"content-src/lib/snippets\";\nimport {Base} from \"content-src/components/Base/Base\";\nimport {DetectUserSessionStart} from \"content-src/lib/detect-user-session-start\";\nimport {initStore} from \"content-src/lib/init-store\";\nimport {Provider} from \"react-redux\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {reducers} from \"common/Reducers.jsm\";\n\nconst store = initStore(reducers, global.gActivityStreamPrerenderedState);\n\nnew DetectUserSessionStart(store).sendEventOrAddListener();\n\n// If we are starting in a prerendered state, we must wait until the first render\n// to request state rehydration (see Base.jsx). If we are NOT in a prerendered state,\n// we can request it immedately.\nif (!global.gActivityStreamPrerenderedState) {\n  store.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n}\n\nReactDOM.hydrate(<Provider store={store}>\n  <Base\n    isFirstrun={global.document.location.href === \"about:welcome\"}\n    isPrerendered={!!global.gActivityStreamPrerenderedState}\n    locale={global.document.documentElement.lang}\n    strings={global.gActivityStreamStrings} />\n</Provider>, document.getElementById(\"root\"));\n\naddSnippetsSubscriber(store);\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nthis.MAIN_MESSAGE_TYPE = \"ActivityStream:Main\";\nthis.CONTENT_MESSAGE_TYPE = \"ActivityStream:Content\";\nthis.PRELOAD_MESSAGE_TYPE = \"ActivityStream:PreloadedBrowser\";\nthis.UI_CODE = 1;\nthis.BACKGROUND_PROCESS = 2;\n\n/**\n * globalImportContext - Are we in UI code (i.e. react, a dom) or some kind of background process?\n *                       Use this in action creators if you need different logic\n *                       for ui/background processes.\n */\nconst globalImportContext = typeof Window === \"undefined\" ? BACKGROUND_PROCESS : UI_CODE;\n// Export for tests\nthis.globalImportContext = globalImportContext;\n\n// Create an object that avoids accidental differing key/value pairs:\n// {\n//   INIT: \"INIT\",\n//   UNINIT: \"UNINIT\"\n// }\nconst actionTypes = {};\nfor (const type of [\n  \"ADDONS_INFO_REQUEST\",\n  \"ADDONS_INFO_RESPONSE\",\n  \"ARCHIVE_FROM_POCKET\",\n  \"AS_ROUTER_TELEMETRY_USER_EVENT\",\n  \"BLOCK_URL\",\n  \"BOOKMARK_URL\",\n  \"COPY_DOWNLOAD_LINK\",\n  \"DELETE_BOOKMARK_BY_ID\",\n  \"DELETE_FROM_POCKET\",\n  \"DELETE_HISTORY_URL\",\n  \"DIALOG_CANCEL\",\n  \"DIALOG_OPEN\",\n  \"DISABLE_ONBOARDING\",\n  \"DOWNLOAD_CHANGED\",\n  \"INIT\",\n  \"MIGRATION_CANCEL\",\n  \"MIGRATION_COMPLETED\",\n  \"MIGRATION_START\",\n  \"NEW_TAB_INIT\",\n  \"NEW_TAB_INITIAL_STATE\",\n  \"NEW_TAB_LOAD\",\n  \"NEW_TAB_REHYDRATED\",\n  \"NEW_TAB_STATE_REQUEST\",\n  \"NEW_TAB_UNLOAD\",\n  \"OPEN_DOWNLOAD_FILE\",\n  \"OPEN_LINK\",\n  \"OPEN_NEW_WINDOW\",\n  \"OPEN_PRIVATE_WINDOW\",\n  \"OPEN_WEBEXT_SETTINGS\",\n  \"PAGE_PRERENDERED\",\n  \"PLACES_BOOKMARK_ADDED\",\n  \"PLACES_BOOKMARK_REMOVED\",\n  \"PLACES_HISTORY_CLEARED\",\n  \"PLACES_LINKS_CHANGED\",\n  \"PLACES_LINK_BLOCKED\",\n  \"PLACES_LINK_DELETED\",\n  \"PLACES_SAVED_TO_POCKET\",\n  \"PREFS_INITIAL_VALUES\",\n  \"PREF_CHANGED\",\n  \"PREVIEW_REQUEST\",\n  \"PREVIEW_REQUEST_CANCEL\",\n  \"PREVIEW_RESPONSE\",\n  \"REMOVE_DOWNLOAD_FILE\",\n  \"RICH_ICON_MISSING\",\n  \"SAVE_SESSION_PERF_DATA\",\n  \"SAVE_TO_POCKET\",\n  \"SCREENSHOT_UPDATED\",\n  \"SECTION_DEREGISTER\",\n  \"SECTION_DISABLE\",\n  \"SECTION_ENABLE\",\n  \"SECTION_MOVE\",\n  \"SECTION_OPTIONS_CHANGED\",\n  \"SECTION_REGISTER\",\n  \"SECTION_UPDATE\",\n  \"SECTION_UPDATE_CARD\",\n  \"SETTINGS_CLOSE\",\n  \"SETTINGS_OPEN\",\n  \"SET_PREF\",\n  \"SHOW_DOWNLOAD_FILE\",\n  \"SHOW_FIREFOX_ACCOUNTS\",\n  \"SKIPPED_SIGNIN\",\n  \"SNIPPETS_BLOCKLIST_CLEARED\",\n  \"SNIPPETS_BLOCKLIST_UPDATED\",\n  \"SNIPPETS_DATA\",\n  \"SNIPPETS_RESET\",\n  \"SNIPPET_BLOCKED\",\n  \"SUBMIT_EMAIL\",\n  \"SYSTEM_TICK\",\n  \"TELEMETRY_IMPRESSION_STATS\",\n  \"TELEMETRY_PERFORMANCE_EVENT\",\n  \"TELEMETRY_UNDESIRED_EVENT\",\n  \"TELEMETRY_USER_EVENT\",\n  \"TOP_SITES_CANCEL_EDIT\",\n  \"TOP_SITES_EDIT\",\n  \"TOP_SITES_INSERT\",\n  \"TOP_SITES_PIN\",\n  \"TOP_SITES_PREFS_UPDATED\",\n  \"TOP_SITES_UNPIN\",\n  \"TOP_SITES_UPDATED\",\n  \"TOTAL_BOOKMARKS_REQUEST\",\n  \"TOTAL_BOOKMARKS_RESPONSE\",\n  \"UNINIT\",\n  \"UPDATE_SECTION_PREFS\",\n  \"WEBEXT_CLICK\",\n  \"WEBEXT_DISMISS\"\n]) {\n  actionTypes[type] = type;\n}\n\n// These are acceptable actions for AS Router messages to have. They can show up\n// as call-to-action buttons in snippets, onboarding tour, etc.\nconst ASRouterActions = {};\nfor (const type of [\n  \"OPEN_PRIVATE_BROWSER_WINDOW\",\n  \"OPEN_URL\",\n  \"OPEN_ABOUT_PAGE\"\n]) {\n  ASRouterActions[type] = type;\n}\n\n// Helper function for creating routed actions between content and main\n// Not intended to be used by consumers\nfunction _RouteMessage(action, options) {\n  const meta = action.meta ? {...action.meta} : {};\n  if (!options || !options.from || !options.to) {\n    throw new Error(\"Routed Messages must have options as the second parameter, and must at least include a .from and .to property.\");\n  }\n  // For each of these fields, if they are passed as an option,\n  // add them to the action. If they are not defined, remove them.\n  [\"from\", \"to\", \"toTarget\", \"fromTarget\", \"skipMain\", \"skipLocal\"].forEach(o => {\n    if (typeof options[o] !== \"undefined\") {\n      meta[o] = options[o];\n    } else if (meta[o]) {\n      delete meta[o];\n    }\n  });\n  return {...action, meta};\n}\n\n/**\n * AlsoToMain - Creates a message that will be dispatched locally and also sent to the Main process.\n *\n * @param  {object} action Any redux action (required)\n * @param  {object} options\n * @param  {bool}   skipLocal Used by OnlyToMain to skip the main reducer\n * @param  {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToMain(action, fromTarget, skipLocal) {\n  return _RouteMessage(action, {\n    from: CONTENT_MESSAGE_TYPE,\n    to: MAIN_MESSAGE_TYPE,\n    fromTarget,\n    skipLocal\n  });\n}\n\n/**\n * OnlyToMain - Creates a message that will be sent to the Main process and skip the local reducer.\n *\n * @param  {object} action Any redux action (required)\n * @param  {object} options\n * @param  {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToMain(action, fromTarget) {\n  return AlsoToMain(action, fromTarget, true);\n}\n\n/**\n * BroadcastToContent - Creates a message that will be dispatched to main and sent to ALL content processes.\n *\n * @param  {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction BroadcastToContent(action) {\n  return _RouteMessage(action, {\n    from: MAIN_MESSAGE_TYPE,\n    to: CONTENT_MESSAGE_TYPE\n  });\n}\n\n/**\n * AlsoToOneContent - Creates a message that will be will be dispatched to the main store\n *                    and also sent to a particular Content process.\n *\n * @param  {object} action Any redux action (required)\n * @param  {string} target The id of a content port\n * @param  {bool} skipMain Used by OnlyToOneContent to skip the main process\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToOneContent(action, target, skipMain) {\n  if (!target) {\n    throw new Error(\"You must provide a target ID as the second parameter of AlsoToOneContent. If you want to send to all content processes, use BroadcastToContent\");\n  }\n  return _RouteMessage(action, {\n    from: MAIN_MESSAGE_TYPE,\n    to: CONTENT_MESSAGE_TYPE,\n    toTarget: target,\n    skipMain\n  });\n}\n\n/**\n * OnlyToOneContent - Creates a message that will be sent to a particular Content process\n *                    and skip the main reducer.\n *\n * @param  {object} action Any redux action (required)\n * @param  {string} target The id of a content port\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToOneContent(action, target) {\n  return AlsoToOneContent(action, target, true);\n}\n\n/**\n * AlsoToPreloaded - Creates a message that dispatched to the main reducer and also sent to the preloaded tab.\n *\n * @param  {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToPreloaded(action) {\n  return _RouteMessage(action, {\n    from: MAIN_MESSAGE_TYPE,\n    to: PRELOAD_MESSAGE_TYPE\n  });\n}\n\n/**\n * UserEvent - A telemetry ping indicating a user action. This should only\n *                   be sent from the UI during a user session.\n *\n * @param  {object} data Fields to include in the ping (source, etc.)\n * @return {object} An AlsoToMain action\n */\nfunction UserEvent(data) {\n  return AlsoToMain({\n    type: actionTypes.TELEMETRY_USER_EVENT,\n    data\n  });\n}\n\n/**\n * ASRouterUserEvent - A telemetry ping indicating a user action from AS router. This should only\n *                     be sent from the UI during a user session.\n *\n * @param  {object} data Fields to include in the ping (source, etc.)\n * @return {object} An AlsoToMain action\n */\nfunction ASRouterUserEvent(data) {\n  return AlsoToMain({\n    type: actionTypes.AS_ROUTER_TELEMETRY_USER_EVENT,\n    data\n  });\n}\n\n/**\n * UndesiredEvent - A telemetry ping indicating an undesired state.\n *\n * @param  {object} data Fields to include in the ping (value, etc.)\n * @param  {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction UndesiredEvent(data, importContext = globalImportContext) {\n  const action = {\n    type: actionTypes.TELEMETRY_UNDESIRED_EVENT,\n    data\n  };\n  return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * PerfEvent - A telemetry ping indicating a performance-related event.\n *\n * @param  {object} data Fields to include in the ping (value, etc.)\n * @param  {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction PerfEvent(data, importContext = globalImportContext) {\n  const action = {\n    type: actionTypes.TELEMETRY_PERFORMANCE_EVENT,\n    data\n  };\n  return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * ImpressionStats - A telemetry ping indicating an impression stats.\n *\n * @param  {object} data Fields to include in the ping\n * @param  {int} importContext (For testing) Override the import context for testing.\n * #return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction ImpressionStats(data, importContext = globalImportContext) {\n  const action = {\n    type: actionTypes.TELEMETRY_IMPRESSION_STATS,\n    data\n  };\n  return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction SetPref(name, value, importContext = globalImportContext) {\n  const action = {type: actionTypes.SET_PREF, data: {name, value}};\n  return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction WebExtEvent(type, data, importContext = globalImportContext) {\n  if (!data || !data.source) {\n    throw new Error(\"WebExtEvent actions should include a property \\\"source\\\", the id of the webextension that should receive the event.\");\n  }\n  const action = {type, data};\n  return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nthis.actionTypes = actionTypes;\nthis.ASRouterActions = ASRouterActions;\n\nthis.actionCreators = {\n  BroadcastToContent,\n  UserEvent,\n  ASRouterUserEvent,\n  UndesiredEvent,\n  PerfEvent,\n  ImpressionStats,\n  AlsoToOneContent,\n  OnlyToOneContent,\n  AlsoToMain,\n  OnlyToMain,\n  AlsoToPreloaded,\n  SetPref,\n  WebExtEvent\n};\n\n// These are helpers to test for certain kinds of actions\nthis.actionUtils = {\n  isSendToMain(action) {\n    if (!action.meta) {\n      return false;\n    }\n    return action.meta.to === MAIN_MESSAGE_TYPE && action.meta.from === CONTENT_MESSAGE_TYPE;\n  },\n  isBroadcastToContent(action) {\n    if (!action.meta) {\n      return false;\n    }\n    if (action.meta.to === CONTENT_MESSAGE_TYPE && !action.meta.toTarget) {\n      return true;\n    }\n    return false;\n  },\n  isSendToOneContent(action) {\n    if (!action.meta) {\n      return false;\n    }\n    if (action.meta.to === CONTENT_MESSAGE_TYPE && action.meta.toTarget) {\n      return true;\n    }\n    return false;\n  },\n  isSendToPreloaded(action) {\n    if (!action.meta) {\n      return false;\n    }\n    return action.meta.to === PRELOAD_MESSAGE_TYPE &&\n      action.meta.from === MAIN_MESSAGE_TYPE;\n  },\n  isFromMain(action) {\n    if (!action.meta) {\n      return false;\n    }\n    return action.meta.from === MAIN_MESSAGE_TYPE &&\n      action.meta.to === CONTENT_MESSAGE_TYPE;\n  },\n  getPortIdOfSender(action) {\n    return (action.meta && action.meta.fromTarget) || null;\n  },\n  _RouteMessage\n};\n\nconst EXPORTED_SYMBOLS = [\n  \"actionTypes\",\n  \"actionCreators\",\n  \"actionUtils\",\n  \"ASRouterActions\",\n  \"globalImportContext\",\n  \"UI_CODE\",\n  \"BACKGROUND_PROCESS\",\n  \"MAIN_MESSAGE_TYPE\",\n  \"CONTENT_MESSAGE_TYPE\",\n  \"PRELOAD_MESSAGE_TYPE\"\n];\n","const DATABASE_NAME = \"snippets_db\";\nconst DATABASE_VERSION = 1;\nconst SNIPPETS_OBJECTSTORE_NAME = \"snippets\";\nexport const SNIPPETS_UPDATE_INTERVAL_MS = 14400000; // 4 hours.\n\nconst SNIPPETS_ENABLED_EVENT = \"Snippets:Enabled\";\nconst SNIPPETS_DISABLED_EVENT = \"Snippets:Disabled\";\n\nimport {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {ASRouterContent} from \"content-src/asrouter/asrouter-content\";\n\n/**\n * SnippetsMap - A utility for cacheing values related to the snippet. It has\n *               the same interface as a Map, but is optionally backed by\n *               indexedDB for persistent storage.\n *               Call .connect() to open a database connection and restore any\n *               previously cached data, if necessary.\n *\n */\nexport class SnippetsMap extends Map {\n  constructor(dispatch) {\n    super();\n    this._db = null;\n    this._dispatch = dispatch;\n  }\n\n  set(key, value) {\n    super.set(key, value);\n    return this._dbTransaction(db => db.put(value, key));\n  }\n\n  delete(key) {\n    super.delete(key);\n    return this._dbTransaction(db => db.delete(key));\n  }\n\n  clear() {\n    super.clear();\n    this._dispatch(ac.OnlyToMain({type: at.SNIPPETS_BLOCKLIST_CLEARED}));\n    return this._dbTransaction(db => db.clear());\n  }\n\n  get blockList() {\n    return this.get(\"blockList\") || [];\n  }\n\n  /**\n   * blockSnippetById - Blocks a snippet given an id\n   *\n   * @param  {str|int} id   The id of the snippet\n   * @return {Promise}      Resolves when the id has been written to indexedDB,\n   *                        or immediately if the snippetMap is not connected\n   */\n  async blockSnippetById(id) {\n    if (!id) {\n      return;\n    }\n    const {blockList} = this;\n    if (!blockList.includes(id)) {\n      blockList.push(id);\n      this._dispatch(ac.AlsoToMain({type: at.SNIPPETS_BLOCKLIST_UPDATED, data: id}));\n      await this.set(\"blockList\", blockList);\n    }\n  }\n\n  disableOnboarding() {\n    this._dispatch(ac.AlsoToMain({type: at.DISABLE_ONBOARDING}));\n  }\n\n  showFirefoxAccounts() {\n    this._dispatch(ac.AlsoToMain({type: at.SHOW_FIREFOX_ACCOUNTS}));\n  }\n\n  getTotalBookmarksCount() {\n    return new Promise(resolve => {\n      this._dispatch(ac.OnlyToMain({type: at.TOTAL_BOOKMARKS_REQUEST}));\n      global.RPMAddMessageListener(\"ActivityStream:MainToContent\", function onMessage({data: action}) {\n        if (action.type === at.TOTAL_BOOKMARKS_RESPONSE) {\n          resolve(action.data);\n          global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", onMessage);\n        }\n      });\n    });\n  }\n\n  getAddonsInfo() {\n    return new Promise(resolve => {\n      this._dispatch(ac.OnlyToMain({type: at.ADDONS_INFO_REQUEST}));\n      global.RPMAddMessageListener(\"ActivityStream:MainToContent\", function onMessage({data: action}) {\n        if (action.type === at.ADDONS_INFO_RESPONSE) {\n          resolve(action.data);\n          global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", onMessage);\n        }\n      });\n    });\n  }\n\n  /**\n   * connect - Attaches an indexedDB back-end to the Map so that any set values\n   *           are also cached in a store. It also restores any existing values\n   *           that are already stored in the indexedDB store.\n   *\n   * @return {type}  description\n   */\n  async connect() {\n    // Open the connection\n    const db = await this._openDB();\n\n    // Restore any existing values\n    await this._restoreFromDb(db);\n\n    // Attach a reference to the db\n    this._db = db;\n  }\n\n  /**\n   * _dbTransaction - Returns a db transaction wrapped with the given modifier\n   *                  function as a Promise. If the db has not been connected,\n   *                  it resolves immediately.\n   *\n   * @param  {func} modifier A function to call with the transaction\n   * @return {obj}           A Promise that resolves when the transaction has\n   *                         completed or errored\n   */\n  _dbTransaction(modifier) {\n    if (!this._db) {\n      return Promise.resolve();\n    }\n    return new Promise((resolve, reject) => {\n      const transaction = modifier(\n        this._db\n          .transaction(SNIPPETS_OBJECTSTORE_NAME, \"readwrite\")\n          .objectStore(SNIPPETS_OBJECTSTORE_NAME)\n      );\n      transaction.onsuccess = event => resolve();\n\n      /* istanbul ignore next */\n      transaction.onerror = event => reject(transaction.error);\n    });\n  }\n\n  _openDB() {\n    return new Promise((resolve, reject) => {\n      const openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n\n      /* istanbul ignore next */\n      openRequest.onerror = event => {\n        // Try to delete the old database so that we can start this process over\n        // next time.\n        indexedDB.deleteDatabase(DATABASE_NAME);\n        reject(event);\n      };\n\n      openRequest.onupgradeneeded = event => {\n        const db = event.target.result;\n        if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) {\n          db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME);\n        }\n      };\n\n      openRequest.onsuccess = event => {\n        let db = event.target.result;\n\n        /* istanbul ignore next */\n        db.onerror = err => console.error(err); // eslint-disable-line no-console\n        /* istanbul ignore next */\n        db.onversionchange = versionChangeEvent => versionChangeEvent.target.close();\n\n        resolve(db);\n      };\n    });\n  }\n\n  _restoreFromDb(db) {\n    return new Promise((resolve, reject) => {\n      let cursorRequest;\n      try {\n        cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)\n          .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();\n      } catch (err) {\n        // istanbul ignore next\n        reject(err);\n        // istanbul ignore next\n        return;\n      }\n\n      /* istanbul ignore next */\n      cursorRequest.onerror = event => reject(event);\n\n      cursorRequest.onsuccess = event => {\n        let cursor = event.target.result;\n        // Populate the cache from the persistent storage.\n        if (cursor) {\n          if (cursor.value !== \"blockList\") {\n            this.set(cursor.key, cursor.value);\n          }\n          cursor.continue();\n        } else {\n          // We are done.\n          resolve();\n        }\n      };\n    });\n  }\n}\n\n/**\n * SnippetsProvider - Initializes a SnippetsMap and loads snippets from a\n *                    remote location, or else default snippets if the remote\n *                    snippets cannot be retrieved.\n */\nexport class SnippetsProvider {\n  constructor(dispatch) {\n    // Initialize the Snippets Map and attaches it to a global so that\n    // the snippet payload can interact with it.\n    global.gSnippetsMap = new SnippetsMap(dispatch);\n    this._onAction = this._onAction.bind(this);\n  }\n\n  get snippetsMap() {\n    return global.gSnippetsMap;\n  }\n\n  async _refreshSnippets() {\n    // Check if the cached version of of the snippets in snippetsMap. If it's too\n    // old, blow away the entire snippetsMap.\n    const cachedVersion = this.snippetsMap.get(\"snippets-cached-version\");\n\n    if (cachedVersion !== this.appData.version) {\n      this.snippetsMap.clear();\n    }\n\n    // Has enough time passed for us to require an update?\n    const lastUpdate = this.snippetsMap.get(\"snippets-last-update\");\n    const needsUpdate = !(lastUpdate >= 0) || Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS;\n\n    if (needsUpdate && this.appData.snippetsURL) {\n      this.snippetsMap.set(\"snippets-last-update\", Date.now());\n      try {\n        const response = await fetch(this.appData.snippetsURL);\n        if (response.status === 200) {\n          const payload = await response.text();\n\n          this.snippetsMap.set(\"snippets\", payload);\n          this.snippetsMap.set(\"snippets-cached-version\", this.appData.version);\n        }\n      } catch (e) {\n        console.error(e); // eslint-disable-line no-console\n      }\n    }\n  }\n\n  _noSnippetFallback() {\n    // TODO\n  }\n\n  _forceOnboardingVisibility(shouldBeVisible) {\n    const onboardingEl = document.getElementById(\"onboarding-notification-bar\");\n\n    if (onboardingEl) {\n      onboardingEl.style.display = shouldBeVisible ? \"\" : \"none\";\n    }\n  }\n\n  _showRemoteSnippets() {\n    const snippetsEl = document.getElementById(this.elementId);\n    const payload = this.snippetsMap.get(\"snippets\");\n\n    if (!snippetsEl) {\n      throw new Error(`No element was found with id '${this.elementId}'.`);\n    }\n\n    // This could happen if fetching failed\n    if (!payload) {\n      throw new Error(\"No remote snippets were found in gSnippetsMap.\");\n    }\n\n    if (typeof payload !== \"string\") {\n      throw new Error(\"Snippet payload was incorrectly formatted\");\n    }\n\n    // Note that injecting snippets can throw if they're invalid XML.\n    // eslint-disable-next-line no-unsanitized/property\n    snippetsEl.innerHTML = payload;\n\n    // Scripts injected by innerHTML are inactive, so we have to relocate them\n    // through DOM manipulation to activate their contents.\n    for (const scriptEl of snippetsEl.getElementsByTagName(\"script\")) {\n      const relocatedScript = document.createElement(\"script\");\n      relocatedScript.text = scriptEl.text;\n      scriptEl.parentNode.replaceChild(relocatedScript, scriptEl);\n    }\n  }\n\n  _onAction(msg) {\n    if (msg.data.type === at.SNIPPET_BLOCKED) {\n      if (!this.snippetsMap.blockList.includes(msg.data.data)) {\n        this.snippetsMap.set(\"blockList\", this.snippetsMap.blockList.concat(msg.data.data));\n        document.getElementById(\"snippets-container\").style.display = \"none\";\n      }\n    }\n  }\n\n  /**\n   * init - Fetch the snippet payload and show snippets\n   *\n   * @param  {obj} options\n   * @param  {str} options.appData.snippetsURL  The URL from which we fetch snippets\n   * @param  {int} options.appData.version  The current snippets version\n   * @param  {str} options.elementId  The id of the element in which to inject snippets\n   * @param  {bool} options.connect  Should gSnippetsMap connect to indexedDB?\n   */\n  async init(options) {\n    Object.assign(this, {\n      appData: {},\n      elementId: \"snippets\",\n      connect: true\n    }, options);\n\n    // Add listener so we know when snippets are blocked on other pages\n    if (global.RPMAddMessageListener) {\n      global.RPMAddMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n    }\n\n    // TODO: Requires enabling indexedDB on newtab\n    // Restore the snippets map from indexedDB\n    if (this.connect) {\n      try {\n        await this.snippetsMap.connect();\n      } catch (e) {\n        console.error(e); // eslint-disable-line no-console\n      }\n    }\n\n    // Cache app data values so they can be accessible from gSnippetsMap\n    for (const key of Object.keys(this.appData)) {\n      if (key === \"blockList\") {\n        this.snippetsMap.set(\"blockList\", this.appData[key]);\n      } else {\n        this.snippetsMap.set(`appData.${key}`, this.appData[key]);\n      }\n    }\n\n    // Refresh snippets, if enough time has passed.\n    await this._refreshSnippets();\n\n    // Try showing remote snippets, falling back to defaults if necessary.\n    try {\n      this._showRemoteSnippets();\n    } catch (e) {\n      this._noSnippetFallback(e);\n    }\n\n    window.dispatchEvent(new Event(SNIPPETS_ENABLED_EVENT));\n\n    this._forceOnboardingVisibility(true);\n    this.initialized = true;\n  }\n\n  uninit() {\n    window.dispatchEvent(new Event(SNIPPETS_DISABLED_EVENT));\n    this._forceOnboardingVisibility(false);\n    if (global.RPMRemoveMessageListener) {\n      global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n    }\n    this.initialized = false;\n  }\n}\n\n/**\n * addSnippetsSubscriber - Creates a SnippetsProvider that Initializes\n *                         when the store has received the appropriate\n *                         Snippet data.\n *\n * @param  {obj} store   The redux store\n * @return {obj}         Returns the snippets instance, asrouterContent instance and unsubscribe function\n */\nexport function addSnippetsSubscriber(store) {\n  const snippets = new SnippetsProvider(store.dispatch);\n  const asrouterContent = new ASRouterContent();\n\n  let initializing = false;\n\n  store.subscribe(async () => {\n    const state = store.getState();\n    const isASRouterEnabled = state.Prefs.values.asrouterExperimentEnabled && state.Prefs.values.asrouterOnboardingCohort > 0;\n    // state.Prefs.values[\"feeds.snippets\"]:  Should snippets be shown?\n    // state.Snippets.initialized             Is the snippets data initialized?\n    // snippets.initialized:                  Is SnippetsProvider currently initialised?\n    if (state.Prefs.values[\"feeds.snippets\"] &&\n      // If the message center experiment is enabled, don't show snippets\n      !isASRouterEnabled &&\n      !state.Prefs.values.disableSnippets &&\n      state.Snippets.initialized &&\n      !snippets.initialized &&\n      // Don't call init multiple times\n      !initializing &&\n      location.href !== \"about:welcome\"\n    ) {\n      initializing = true;\n      await snippets.init({appData: state.Snippets});\n      initializing = false;\n    } else if (\n      (state.Prefs.values[\"feeds.snippets\"] === false ||\n        state.Prefs.values.disableSnippets === true) &&\n      snippets.initialized\n    ) {\n      snippets.uninit();\n    }\n\n    // Turn on AS Router snippets if the experiment is enabled and the snippets pref is on;\n    // otherwise, turn it off.\n    if (\n      (state.Prefs.values.asrouterExperimentEnabled || state.Prefs.values.asrouterOnboardingCohort > 0) &&\n      state.Prefs.values[\"feeds.snippets\"] &&\n      !asrouterContent.initialized) {\n      asrouterContent.init();\n    } else if (\n      ((!state.Prefs.values.asrouterExperimentEnabled && state.Prefs.values.asrouterOnboardingCohort === 0) || !state.Prefs.values[\"feeds.snippets\"]) &&\n      asrouterContent.initialized\n    ) {\n      asrouterContent.uninit();\n    }\n  });\n\n  // These values are returned for testing purposes\n  return {snippets, asrouterContent};\n}\n","import {actionCreators as ac, ASRouterActions as ra} from \"common/Actions.jsm\";\nimport {LocalizationProvider, Localized} from \"fluent-react\";\nimport {OUTGOING_MESSAGE_NAME as AS_GENERAL_OUTGOING_MESSAGE_NAME} from \"content-src/lib/init-store\";\nimport {ImpressionsWrapper} from \"./components/ImpressionsWrapper/ImpressionsWrapper\";\nimport {MessageContext} from \"fluent\";\nimport {OnboardingMessage} from \"./templates/OnboardingMessage/OnboardingMessage\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {safeURI} from \"./template-utils\";\nimport {SimpleSnippet} from \"./templates/SimpleSnippet/SimpleSnippet\";\n\nconst INCOMING_MESSAGE_NAME = \"ASRouter:parent-to-child\";\nconst OUTGOING_MESSAGE_NAME = \"ASRouter:child-to-parent\";\n\nexport const ASRouterUtils = {\n  addListener(listener) {\n    global.RPMAddMessageListener(INCOMING_MESSAGE_NAME, listener);\n  },\n  removeListener(listener) {\n    global.RPMRemoveMessageListener(INCOMING_MESSAGE_NAME, listener);\n  },\n  sendMessage(action) {\n    global.RPMSendAsyncMessage(OUTGOING_MESSAGE_NAME, action);\n  },\n  blockById(id) {\n    ASRouterUtils.sendMessage({type: \"BLOCK_MESSAGE_BY_ID\", data: {id}});\n  },\n  blockBundle(bundle) {\n    ASRouterUtils.sendMessage({type: \"BLOCK_BUNDLE\", data: {bundle}});\n  },\n  executeAction({button_action, button_action_params}) {\n    if (button_action in ra) {\n      ASRouterUtils.sendMessage({type: button_action, data: {button_action_params}});\n    }\n  },\n  unblockById(id) {\n    ASRouterUtils.sendMessage({type: \"UNBLOCK_MESSAGE_BY_ID\", data: {id}});\n  },\n  unblockBundle(bundle) {\n    ASRouterUtils.sendMessage({type: \"UNBLOCK_BUNDLE\", data: {bundle}});\n  },\n  getNextMessage() {\n    ASRouterUtils.sendMessage({type: \"GET_NEXT_MESSAGE\"});\n  },\n  overrideMessage(id) {\n    ASRouterUtils.sendMessage({type: \"OVERRIDE_MESSAGE\", data: {id}});\n  },\n  sendTelemetry(ping) {\n    const payload = ac.ASRouterUserEvent(ping);\n    global.RPMSendAsyncMessage(AS_GENERAL_OUTGOING_MESSAGE_NAME, payload);\n  },\n  getEndpoint() {\n    if (window.location.href.includes(\"endpoint\")) {\n      const params = new URLSearchParams(window.location.href.slice(window.location.href.indexOf(\"endpoint\")));\n      try {\n        const endpoint = new URL(params.get(\"endpoint\"));\n        return {\n          url: endpoint.href,\n          snippetId: params.get(\"snippetId\")\n        };\n      } catch (e) {}\n    }\n\n    return null;\n  }\n};\n\n// Note: nextProps/prevProps refer to props passed to <ImpressionsWrapper />, not <ASRouterUISurface />\nfunction shouldSendImpressionOnUpdate(nextProps, prevProps) {\n  return (nextProps.message.id && (!prevProps.message || prevProps.message.id !== nextProps.message.id));\n}\n\nfunction generateMessages(content) {\n  const cx = new MessageContext(\"en-US\");\n  cx.addMessages(`RichTextSnippet = ${content}`);\n  return [cx];\n}\n\n// Elements allowed in snippet content\nconst ALLOWED_TAGS = {\n  b: <b />,\n  i: <i />,\n  u: <u />,\n  strong: <strong />,\n  em: <em />,\n  br: <br />\n};\n\n/**\n * Transform an object (tag name: {url}) into (tag name: anchor) where the url\n * is used as href, in order to render links inside a Fluent.Localized component.\n */\nexport function convertLinks(links, sendClick) {\n  if (links) {\n    return Object.keys(links).reduce((acc, linkTag) => {\n      acc[linkTag] = <a href={safeURI(links[linkTag].url)} data-metric={links[linkTag].metric} onClick={sendClick} />;\n      return acc;\n    }, {});\n  }\n\n  return null;\n}\n\n/**\n * Message wrapper used to sanitize markup and render HTML.\n */\nfunction RichText(props) {\n  return (\n    <Localized id=\"RichTextSnippet\" {...ALLOWED_TAGS} {...convertLinks(props.links, props.sendClick)}>\n      <span>{props.text}</span>\n    </Localized>\n  );\n}\n\nexport class ASRouterUISurface extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onMessageFromParent = this.onMessageFromParent.bind(this);\n    this.sendClick = this.sendClick.bind(this);\n    this.sendImpression = this.sendImpression.bind(this);\n    this.sendUserActionTelemetry = this.sendUserActionTelemetry.bind(this);\n    this.state = {message: {}, bundle: {}};\n  }\n\n  sendUserActionTelemetry(extraProps = {}) {\n    const {message, bundle} = this.state;\n    if (!message && !extraProps.message_id) {\n      throw new Error(`You must provide a message_id for bundled messages`);\n    }\n    const eventType = `${message.provider || bundle.provider}_user_event`;\n    ASRouterUtils.sendTelemetry({\n      message_id: message.id || extraProps.message_id,\n      source: extraProps.id,\n      action: eventType,\n      ...extraProps\n    });\n  }\n\n  sendImpression(extraProps) {\n    ASRouterUtils.sendMessage({type: \"IMPRESSION\", data: this.state.message});\n    this.sendUserActionTelemetry({event: \"IMPRESSION\", ...extraProps});\n  }\n\n  // If link has a `metric` data attribute send it as part of the `value`\n  // telemetry field which can have arbitrary values.\n  // Used for router messages with links as part of the content.\n  sendClick(event) {\n    const metric = {\n      value: event.target.dataset.metric,\n      // Used for the `source` of the event. Needed to differentiate\n      // from other snippet or onboarding events that may occur.\n      id: \"NEWTAB_FOOTER_BAR_CONTENT\"\n    };\n    this.sendUserActionTelemetry({event: \"CLICK_BUTTON\", ...metric});\n  }\n\n  onBlockById(id) {\n    return () => ASRouterUtils.blockById(id);\n  }\n\n  clearBundle(bundle) {\n    return () => ASRouterUtils.blockBundle(bundle);\n  }\n\n  onMessageFromParent({data: action}) {\n    switch (action.type) {\n      case \"SET_MESSAGE\":\n        this.setState({message: action.data});\n        break;\n      case \"SET_BUNDLED_MESSAGES\":\n        this.setState({bundle: action.data});\n        break;\n      case \"CLEAR_MESSAGE\":\n        if (action.data.id === this.state.message.id) {\n          this.setState({message: {}});\n        }\n        break;\n      case \"CLEAR_BUNDLE\":\n        if (this.state.bundle.bundle) {\n          this.setState({bundle: {}});\n        }\n        break;\n      case \"CLEAR_ALL\":\n        this.setState({message: {}, bundle: {}});\n    }\n  }\n\n  componentWillMount() {\n    const endpoint = ASRouterUtils.getEndpoint();\n    ASRouterUtils.addListener(this.onMessageFromParent);\n\n    // If we are loading about:welcome we want to trigger the onboarding messages\n    if (this.props.document.location.href === \"about:welcome\") {\n      ASRouterUtils.sendMessage({type: \"TRIGGER\", data: {trigger: \"firstRun\"}});\n    } else {\n      ASRouterUtils.sendMessage({type: \"CONNECT_UI_REQUEST\", data: {endpoint}});\n    }\n  }\n\n  componentWillUnmount() {\n    ASRouterUtils.removeListener(this.onMessageFromParent);\n  }\n\n  renderSnippets() {\n    return (\n      <ImpressionsWrapper\n        id=\"NEWTAB_FOOTER_BAR\"\n        message={this.state.message}\n        sendImpression={this.sendImpression}\n        shouldSendImpressionOnUpdate={shouldSendImpressionOnUpdate}\n        // This helps with testing\n        document={this.props.document}>\n          <LocalizationProvider messages={generateMessages(this.state.message.content.text)}>\n            <SimpleSnippet\n              {...this.state.message}\n              richText={<RichText text={this.state.message.content.text}\n                                  links={this.state.message.content.links}\n                                  sendClick={this.sendClick} />}\n              UISurface=\"NEWTAB_FOOTER_BAR\"\n              getNextMessage={ASRouterUtils.getNextMessage}\n              onBlock={this.onBlockById(this.state.message.id)}\n              sendUserActionTelemetry={this.sendUserActionTelemetry} />\n          </LocalizationProvider>\n      </ImpressionsWrapper>);\n  }\n\n  renderOnboarding() {\n    return (\n      <OnboardingMessage\n        {...this.state.bundle}\n        UISurface=\"NEWTAB_OVERLAY\"\n        onAction={ASRouterUtils.executeAction}\n        onDoneButton={this.clearBundle(this.state.bundle.bundle)}\n        getNextMessage={ASRouterUtils.getNextMessage}\n        sendUserActionTelemetry={this.sendUserActionTelemetry} />);\n  }\n\n  render() {\n    const {message, bundle} = this.state;\n    if (!message.id && !bundle.template) { return null; }\n    if (bundle.template === \"onboarding\") { return this.renderOnboarding(); }\n    return this.renderSnippets();\n  }\n}\n\nASRouterUISurface.defaultProps = {document: global.document};\n\nexport class ASRouterContent {\n  constructor() {\n    this.initialized = false;\n    this.containerElement = null;\n  }\n\n  _mount() {\n    this.containerElement = global.document.getElementById(\"snippets-container\");\n    ReactDOM.render(<ASRouterUISurface />, this.containerElement);\n  }\n\n  _unmount() {\n    ReactDOM.unmountComponentAtNode(this.containerElement);\n  }\n\n  init() {\n    this._mount();\n    this.initialized = true;\n  }\n\n  uninit() {\n    if (this.initialized) {\n      this._unmount();\n      this.initialized = false;\n    }\n  }\n}\n","module.exports = React;","module.exports = PropTypes;","/* eslint-env mozilla/frame-script */\n\nimport {actionCreators as ac, actionTypes as at, actionUtils as au} from \"common/Actions.jsm\";\nimport {applyMiddleware, combineReducers, createStore} from \"redux\";\n\nexport const MERGE_STORE_ACTION = \"NEW_TAB_INITIAL_STATE\";\nexport const OUTGOING_MESSAGE_NAME = \"ActivityStream:ContentToMain\";\nexport const INCOMING_MESSAGE_NAME = \"ActivityStream:MainToContent\";\nexport const EARLY_QUEUED_ACTIONS = [at.SAVE_SESSION_PERF_DATA, at.PAGE_PRERENDERED];\n\n/**\n * A higher-order function which returns a reducer that, on MERGE_STORE action,\n * will return the action.data object merged into the previous state.\n *\n * For all other actions, it merely calls mainReducer.\n *\n * Because we want this to merge the entire state object, it's written as a\n * higher order function which takes the main reducer (itself often a call to\n * combineReducers) as a parameter.\n *\n * @param  {function} mainReducer reducer to call if action != MERGE_STORE_ACTION\n * @return {function}             a reducer that, on MERGE_STORE_ACTION action,\n *                                will return the action.data object merged\n *                                into the previous state, and the result\n *                                of calling mainReducer otherwise.\n */\nfunction mergeStateReducer(mainReducer) {\n  return (prevState, action) => {\n    if (action.type === MERGE_STORE_ACTION) {\n      return {...prevState, ...action.data};\n    }\n\n    return mainReducer(prevState, action);\n  };\n}\n\n/**\n * messageMiddleware - Middleware that looks for SentToMain type actions, and sends them if necessary\n */\nconst messageMiddleware = store => next => action => {\n  const skipLocal = action.meta && action.meta.skipLocal;\n  if (au.isSendToMain(action)) {\n    RPMSendAsyncMessage(OUTGOING_MESSAGE_NAME, action);\n  }\n  if (!skipLocal) {\n    next(action);\n  }\n};\n\nexport const rehydrationMiddleware = store => next => action => {\n  if (store._didRehydrate) {\n    return next(action);\n  }\n\n  const isMergeStoreAction = action.type === MERGE_STORE_ACTION;\n  const isRehydrationRequest = action.type === at.NEW_TAB_STATE_REQUEST;\n\n  if (isRehydrationRequest) {\n    store._didRequestInitialState = true;\n    return next(action);\n  }\n\n  if (isMergeStoreAction) {\n    store._didRehydrate = true;\n    return next(action);\n  }\n\n  // If init happened after our request was made, we need to re-request\n  if (store._didRequestInitialState && action.type === at.INIT) {\n    return next(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n  }\n\n  if (au.isBroadcastToContent(action) || au.isSendToOneContent(action) || au.isSendToPreloaded(action)) {\n    // Note that actions received before didRehydrate will not be dispatched\n    // because this could negatively affect preloading and the the state\n    // will be replaced by rehydration anyway.\n    return null;\n  }\n\n  return next(action);\n};\n\n/**\n * This middleware queues up all the EARLY_QUEUED_ACTIONS until it receives\n * the first action from main. This is useful for those actions for main which\n * require higher reliability, i.e. the action will not be lost in the case\n * that it gets sent before the main is ready to receive it. Conversely, any\n * actions allowed early are accepted to be ignorable or re-sendable.\n */\nexport const queueEarlyMessageMiddleware = store => next => action => {\n  if (store._receivedFromMain) {\n    next(action);\n  } else if (au.isFromMain(action)) {\n    next(action);\n    store._receivedFromMain = true;\n    // Sending out all the early actions as main is ready now\n    if (store._earlyActionQueue) {\n      store._earlyActionQueue.forEach(next);\n      store._earlyActionQueue = [];\n    }\n  } else if (EARLY_QUEUED_ACTIONS.includes(action.type)) {\n    store._earlyActionQueue = store._earlyActionQueue || [];\n    store._earlyActionQueue.push(action);\n  } else {\n    // Let any other type of action go through\n    next(action);\n  }\n};\n\n/**\n * initStore - Create a store and listen for incoming actions\n *\n * @param  {object} reducers An object containing Redux reducers\n * @param  {object} intialState (optional) The initial state of the store, if desired\n * @return {object}          A redux store\n */\nexport function initStore(reducers, initialState) {\n  const store = createStore(\n    mergeStateReducer(combineReducers(reducers)),\n    initialState,\n    global.RPMAddMessageListener && applyMiddleware(rehydrationMiddleware, queueEarlyMessageMiddleware, messageMiddleware)\n  );\n\n  store._didRehydrate = false;\n  store._didRequestInitialState = false;\n\n  if (global.RPMAddMessageListener) {\n    global.RPMAddMessageListener(INCOMING_MESSAGE_NAME, msg => {\n      try {\n        store.dispatch(msg.data);\n      } catch (ex) {\n        console.error(\"Content msg:\", msg, \"Dispatch error: \", ex); // eslint-disable-line no-console\n        dump(`Content msg: ${JSON.stringify(msg)}\\nDispatch error: ${ex}\\n${ex.stack}`);\n      }\n    });\n  }\n\n  return store;\n}\n","module.exports = Redux;","import React from \"react\";\n\nexport const VISIBLE = \"visible\";\nexport const VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\n/**\n * Component wrapper used to send telemetry pings on every impression.\n */\nexport class ImpressionsWrapper extends React.PureComponent {\n  // This sends an event when a user sees a set of new content. If content\n  // changes while the page is hidden (i.e. preloaded or on a hidden tab),\n  // only send the event if the page becomes visible again.\n  sendImpressionOrAddListener() {\n    if (this.props.document.visibilityState === VISIBLE) {\n      this.props.sendImpression({id: this.props.id});\n    } else {\n      // We should only ever send the latest impression stats ping, so remove any\n      // older listeners.\n      if (this._onVisibilityChange) {\n        this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n      }\n\n      // When the page becomes visible, send the impression stats ping if the section isn't collapsed.\n      this._onVisibilityChange = () => {\n        if (this.props.document.visibilityState === VISIBLE) {\n          this.props.sendImpression({id: this.props.id});\n          this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n        }\n      };\n      this.props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n\n  componentWillUnmount() {\n    if (this._onVisibilityChange) {\n      this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n\n  componentDidMount() {\n    if (this.props.sendOnMount) {\n      this.sendImpressionOrAddListener();\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.shouldSendImpressionOnUpdate(this.props, prevProps)) {\n      this.sendImpressionOrAddListener();\n    }\n  }\n\n  render() {\n    return this.props.children;\n  }\n}\n\nImpressionsWrapper.defaultProps = {\n  document: global.document,\n  sendOnMount: true\n};\n","module.exports = ReactDOM;","export function safeURI(url) {\n  if (!url) {\n    return \"\";\n  }\n  const {protocol} = new URL(url);\n  const isAllowed = [\n    \"http:\",\n    \"https:\",\n    \"data:\",\n    \"resource:\",\n    \"chrome:\"\n  ].includes(protocol);\n  if (!isAllowed) {\n    console.warn(`The protocol ${protocol} is not allowed for template URLs.`); // eslint-disable-line no-console\n  }\n  return isAllowed ? url : \"\";\n}\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addLocaleData, injectIntl, IntlProvider} from \"react-intl\";\nimport {ASRouterAdmin} from \"content-src/components/ASRouterAdmin/ASRouterAdmin\";\nimport {ConfirmDialog} from \"content-src/components/ConfirmDialog/ConfirmDialog\";\nimport {connect} from \"react-redux\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport {ManualMigration} from \"content-src/components/ManualMigration/ManualMigration\";\nimport {PrerenderData} from \"common/PrerenderData.jsm\";\nimport React from \"react\";\nimport {Search} from \"content-src/components/Search/Search\";\nimport {Sections} from \"content-src/components/Sections/Sections\";\nimport {StartupOverlay} from \"content-src/components/StartupOverlay/StartupOverlay\";\n\nconst PrefsButton = injectIntl(props => (\n  <div className=\"prefs-button\">\n    <button className=\"icon icon-settings\" onClick={props.onClick} title={props.intl.formatMessage({id: \"settings_pane_button_label\"})} />\n  </div>\n));\n\n// Add the locale data for pluralization and relative-time formatting for now,\n// this just uses english locale data. We can make this more sophisticated if\n// more features are needed.\nfunction addLocaleDataForReactIntl(locale) {\n  addLocaleData([{locale, parentLocale: \"en\"}]);\n}\n\nexport class _Base extends React.PureComponent {\n  componentWillMount() {\n    const {App, locale} = this.props;\n    this.sendNewTabRehydrated(App);\n    addLocaleDataForReactIntl(locale);\n    if (this.props.isFirstrun) {\n      global.document.body.classList.add(\"welcome\", \"hide-main\");\n    }\n  }\n\n  componentDidMount() {\n    // Request state AFTER the first render to ensure we don't cause the\n    // prerendered DOM to be unmounted. Otherwise, NEW_TAB_STATE_REQUEST is\n    // dispatched right after the store is ready.\n    if (this.props.isPrerendered) {\n      this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n      this.props.dispatch(ac.AlsoToMain({type: at.PAGE_PRERENDERED}));\n    }\n  }\n\n  componentWillUnmount() {\n    this.updateTheme();\n  }\n\n  componentWillUpdate({App}) {\n    this.updateTheme();\n    this.sendNewTabRehydrated(App);\n  }\n\n  updateTheme() {\n    const bodyClassName = [\n      \"activity-stream\",\n      // If we skipped the about:welcome overlay and removed the CSS classes\n      // we don't want to add them back to the Activity Stream view\n      document.body.classList.contains(\"welcome\") ? \"welcome\" : \"\",\n      document.body.classList.contains(\"hide-main\") ? \"hide-main\" : \"\"\n    ].filter(v => v).join(\" \");\n    global.document.body.className = bodyClassName;\n  }\n\n  // The NEW_TAB_REHYDRATED event is used to inform feeds that their\n  // data has been consumed e.g. for counting the number of tabs that\n  // have rendered that data.\n  sendNewTabRehydrated(App) {\n    if (App && App.initialized && !this.renderNotified) {\n      this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_REHYDRATED, data: {}}));\n      this.renderNotified = true;\n    }\n  }\n\n  render() {\n    const {props} = this;\n    const {App, locale, strings} = props;\n    const {initialized} = App;\n\n    const prefs = props.Prefs.values;\n    if ((prefs.asrouterExperimentEnabled || prefs.asrouterOnboardingCohort > 0) && window.location.hash === \"#asrouter\") {\n      return (<ASRouterAdmin />);\n    }\n\n    if (!props.isPrerendered && !initialized) {\n      return null;\n    }\n\n    // Until we can delete the existing onboarding tour, just hide the onboarding button when users are in\n    // the new simplified onboarding experiment. CSS hacks ftw\n    if (prefs.asrouterOnboardingCohort > 0) {\n      global.document.body.classList.add(\"hide-onboarding\");\n    }\n\n    return (<IntlProvider locale={locale} messages={strings}>\n        <ErrorBoundary className=\"base-content-fallback\">\n          <BaseContent {...this.props} />\n        </ErrorBoundary>\n      </IntlProvider>);\n  }\n}\n\nexport class BaseContent extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.openPreferences = this.openPreferences.bind(this);\n  }\n\n  openPreferences() {\n    this.props.dispatch(ac.OnlyToMain({type: at.SETTINGS_OPEN}));\n    this.props.dispatch(ac.UserEvent({event: \"OPEN_NEWTAB_PREFS\"}));\n  }\n\n  render() {\n    const {props} = this;\n    const {App} = props;\n    const {initialized} = App;\n    const prefs = props.Prefs.values;\n\n    const shouldBeFixedToTop = PrerenderData.arePrefsValid(name => prefs[name]);\n\n    const outerClassName = [\n      \"outer-wrapper\",\n      shouldBeFixedToTop && \"fixed-to-top\"\n    ].filter(v => v).join(\" \");\n\n    return (\n      <div>\n        <div className={outerClassName}>\n          <main>\n            {prefs.showSearch &&\n              <div className=\"non-collapsible-section\">\n                <ErrorBoundary>\n                  <Search />\n                </ErrorBoundary>\n              </div>\n            }\n            <div className={`body-wrapper${(initialized ? \" on\" : \"\")}`}>\n              {!prefs.migrationExpired &&\n                <div className=\"non-collapsible-section\">\n                  <ManualMigration />\n                </div>\n                }\n              <Sections />\n              <PrefsButton onClick={this.openPreferences} />\n            </div>\n            <ConfirmDialog />\n          </main>\n        </div>\n        {this.props.isFirstrun && <StartupOverlay />}\n      </div>);\n  }\n}\n\nexport const Base = connect(state => ({App: state.App, Prefs: state.Prefs}))(_Base);\n","module.exports = ReactIntl;","import {ASRouterUtils} from \"../../asrouter/asrouter-content\";\nimport React from \"react\";\n\nexport class ASRouterAdmin extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onMessage = this.onMessage.bind(this);\n    this.findOtherBundledMessagesOfSameTemplate = this.findOtherBundledMessagesOfSameTemplate.bind(this);\n    this.state = {};\n  }\n\n  onMessage({data: action}) {\n    if (action.type === \"ADMIN_SET_STATE\") {\n      this.setState(action.data);\n    }\n  }\n\n  componentWillMount() {\n    const endpoint = ASRouterUtils.getEndpoint();\n    ASRouterUtils.sendMessage({type: \"ADMIN_CONNECT_STATE\", data: {endpoint}});\n    ASRouterUtils.addListener(this.onMessage);\n  }\n\n  componentWillUnmount() {\n    ASRouterUtils.removeListener(this.onMessage);\n  }\n\n  findOtherBundledMessagesOfSameTemplate(template) {\n    return this.state.messages.filter(msg => msg.template === template && msg.bundled);\n  }\n\n  handleBlock(msg) {\n    if (msg.bundled) {\n      // If we are blocking a message that belongs to a bundle, block all other messages that are bundled of that same template\n      let bundle = this.findOtherBundledMessagesOfSameTemplate(msg.template);\n      return () => ASRouterUtils.blockBundle(bundle);\n    }\n    return () => ASRouterUtils.blockById(msg.id);\n  }\n\n  handleUnblock(msg) {\n    if (msg.bundled) {\n      // If we are unblocking a message that belongs to a bundle, unblock all other messages that are bundled of that same template\n      let bundle = this.findOtherBundledMessagesOfSameTemplate(msg.template);\n      return () => ASRouterUtils.unblockBundle(bundle);\n    }\n    return () => ASRouterUtils.unblockById(msg.id);\n  }\n\n  handleOverride(id) {\n    return () => ASRouterUtils.overrideMessage(id);\n  }\n\n  renderMessageItem(msg) {\n    const isCurrent = msg.id === this.state.lastMessageId;\n    const isBlocked = this.state.blockList.includes(msg.id);\n    const impressions = this.state.impressions[msg.id] ? this.state.impressions[msg.id].length : 0;\n\n    let itemClassName = \"message-item\";\n    if (isCurrent) { itemClassName += \" current\"; }\n    if (isBlocked) { itemClassName += \" blocked\"; }\n\n    return (<tr className={itemClassName} key={msg.id}>\n      <td className=\"message-id\"><span>{msg.id} <br /></span></td>\n      <td>\n        <button className={`button ${(isBlocked ? \"\" : \" primary\")}`} onClick={isBlocked ? this.handleUnblock(msg) : this.handleBlock(msg)}>{isBlocked ? \"Unblock\" : \"Block\"}</button>\n       {isBlocked ? null : <button className=\"button\" onClick={this.handleOverride(msg.id)}>Show</button>}\n       <br />({impressions} impressions)\n      </td>\n      <td className=\"message-summary\">\n        <pre>{JSON.stringify(msg, null, 2)}</pre>\n      </td>\n    </tr>);\n  }\n\n  renderMessages() {\n    if (!this.state.messages) {\n      return null;\n    }\n    return (<table><tbody>\n      {this.state.messages.map(msg => this.renderMessageItem(msg))}\n    </tbody></table>);\n  }\n\n  renderProviders() {\n    return (<table><tbody>\n      {this.state.providers.map((provider, i) => (<tr className=\"message-item\" key={i}>\n        <td>{provider.id}</td>\n        <td>{provider.type === \"remote\" ? <a target=\"_blank\" href={provider.url}>{provider.url}</a> : \"(local)\"}</td>\n      </tr>))}\n    </tbody></table>);\n  }\n\n  render() {\n    return (<div className=\"asrouter-admin outer-wrapper\">\n      <h1>AS Router Admin</h1>\n      <button className=\"button primary\" onClick={ASRouterUtils.getNextMessage}>Refresh Current Message</button>\n      <h2>Message Providers</h2>\n      {this.state.providers ? this.renderProviders() : null}\n      <h2>Messages</h2>\n      {this.renderMessages()}\n    </div>);\n  }\n}\n","import {actionCreators as ac, actionTypes} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * ConfirmDialog component.\n * One primary action button, one cancel button.\n *\n * Content displayed is controlled by `data` prop the component receives.\n * Example:\n * data: {\n *   // Any sort of data needed to be passed around by actions.\n *   payload: site.url,\n *   // Primary button AlsoToMain action.\n *   action: \"DELETE_HISTORY_URL\",\n *   // Primary button USerEvent action.\n *   userEvent: \"DELETE\",\n *   // Array of locale ids to display.\n *   message_body: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n *   // Text for primary button.\n *   confirm_button_string_id: \"menu_action_delete\"\n * },\n */\nexport class _ConfirmDialog extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this._handleCancelBtn = this._handleCancelBtn.bind(this);\n    this._handleConfirmBtn = this._handleConfirmBtn.bind(this);\n  }\n\n  _handleCancelBtn() {\n    this.props.dispatch({type: actionTypes.DIALOG_CANCEL});\n    this.props.dispatch(ac.UserEvent({event: actionTypes.DIALOG_CANCEL, source: this.props.data.eventSource}));\n  }\n\n  _handleConfirmBtn() {\n    this.props.data.onConfirm.forEach(this.props.dispatch);\n  }\n\n  _renderModalMessage() {\n    const message_body = this.props.data.body_string_id;\n\n    if (!message_body) {\n      return null;\n    }\n\n    return (<span>\n      {message_body.map(msg => <p key={msg}><FormattedMessage id={msg} /></p>)}\n    </span>);\n  }\n\n  render() {\n    if (!this.props.visible) {\n      return null;\n    }\n\n    return (<div className=\"confirmation-dialog\">\n      <div className=\"modal-overlay\" onClick={this._handleCancelBtn} />\n      <div className=\"modal\">\n        <section className=\"modal-message\">\n          {this.props.data.icon && <span className={`icon icon-spacer icon-${this.props.data.icon}`} />}\n          {this._renderModalMessage()}\n        </section>\n        <section className=\"actions\">\n          <button onClick={this._handleCancelBtn}>\n            <FormattedMessage id={this.props.data.cancel_button_string_id} />\n          </button>\n          <button className=\"done\" onClick={this._handleConfirmBtn}>\n            <FormattedMessage id={this.props.data.confirm_button_string_id} />\n          </button>\n        </section>\n      </div>\n    </div>);\n  }\n}\n\nexport const ConfirmDialog = connect(state => state.Dialog)(_ConfirmDialog);\n","module.exports = ReactRedux;","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class ErrorBoundaryFallback extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.windowObj = this.props.windowObj || window;\n    this.onClick = this.onClick.bind(this);\n  }\n\n  /**\n   * Since we only get here if part of the page has crashed, do a\n   * forced reload to give us the best chance at recovering.\n   */\n  onClick() {\n    this.windowObj.location.reload(true);\n  }\n\n  render() {\n    const defaultClass = \"as-error-fallback\";\n    let className;\n    if (\"className\" in this.props) {\n      className = `${this.props.className} ${defaultClass}`;\n    } else {\n      className = defaultClass;\n    }\n\n    // href=\"#\" to force normal link styling stuff (eg cursor on hover)\n    return (\n      <div className={className}>\n        <div>\n          <FormattedMessage\n            defaultMessage=\"Oops, something went wrong loading this content.\"\n            id=\"error_fallback_default_info\" />\n        </div>\n        <span>\n          <a href=\"#\" className=\"reload-button\" onClick={this.onClick}>\n            <FormattedMessage\n              defaultMessage=\"Refresh page to try again.\"\n              id=\"error_fallback_default_refresh_suggestion\" />\n          </a>\n        </span>\n      </div>\n    );\n  }\n}\nErrorBoundaryFallback.defaultProps = {className: \"as-error-fallback\"};\n\nexport class ErrorBoundary extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {hasError: false};\n  }\n\n  componentDidCatch(error, info) {\n    this.setState({hasError: true});\n  }\n\n  render() {\n    if (!this.state.hasError) {\n      return (this.props.children);\n    }\n\n    return <this.props.FallbackComponent className={this.props.className} />;\n  }\n}\n\nErrorBoundary.defaultProps = {FallbackComponent: ErrorBoundaryFallback};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * Manual migration component used to start the profile import wizard.\n * Message is presented temporarily and will go away if:\n * 1.  User clicks \"No Thanks\"\n * 2.  User completed the data import\n * 3.  After 3 active days\n * 4.  User clicks \"Cancel\" on the import wizard (currently not implemented).\n */\nexport class _ManualMigration extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onLaunchTour = this.onLaunchTour.bind(this);\n    this.onCancelTour = this.onCancelTour.bind(this);\n  }\n\n  onLaunchTour() {\n    this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_START}));\n    this.props.dispatch(ac.UserEvent({event: at.MIGRATION_START}));\n  }\n\n  onCancelTour() {\n    this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_CANCEL}));\n    this.props.dispatch(ac.UserEvent({event: at.MIGRATION_CANCEL}));\n  }\n\n  render() {\n    return (<div className=\"manual-migration-container\">\n        <p>\n          <span className=\"icon icon-import\" />\n          <FormattedMessage id=\"manual_migration_explanation2\" />\n        </p>\n        <div className=\"manual-migration-actions actions\">\n          <button className=\"dismiss\" onClick={this.onCancelTour}>\n            <FormattedMessage id=\"manual_migration_cancel_button\" />\n          </button>\n          <button onClick={this.onLaunchTour}>\n            <FormattedMessage id=\"manual_migration_import_button\" />\n          </button>\n        </div>\n    </div>);\n  }\n}\n\nexport const ManualMigration = connect()(_ManualMigration);\n","class _PrerenderData {\n  constructor(options) {\n    this.initialPrefs = options.initialPrefs;\n    this.initialSections = options.initialSections;\n    this._setValidation(options.validation);\n  }\n\n  get validation() {\n    return this._validation;\n  }\n\n  set validation(value) {\n    this._setValidation(value);\n  }\n\n  get invalidatingPrefs() {\n    return this._invalidatingPrefs;\n  }\n\n    // This is needed so we can use it in the constructor\n  _setValidation(value = []) {\n    this._validation = value;\n    this._invalidatingPrefs = value.reduce((result, next) => {\n      if (typeof next === \"string\") {\n        result.push(next);\n        return result;\n      } else if (next && next.oneOf) {\n        return result.concat(next.oneOf);\n      } else if (next && next.indexedDB) {\n        return result.concat(next.indexedDB);\n      }\n      throw new Error(\"Your validation configuration is not properly configured\");\n    }, []);\n  }\n\n  arePrefsValid(getPref, indexedDBPrefs) {\n    for (const prefs of this.validation) {\n      // {oneOf: [\"foo\", \"bar\"]}\n      if (prefs && prefs.oneOf && !prefs.oneOf.some(name => getPref(name) === this.initialPrefs[name])) {\n        return false;\n\n        // {indexedDB: [\"foo\", \"bar\"]}\n      } else if (indexedDBPrefs && prefs && prefs.indexedDB) {\n        const anyModifiedPrefs = prefs.indexedDB.some(prefName => indexedDBPrefs.some(pref => pref && pref[prefName]));\n        if (anyModifiedPrefs) {\n          return false;\n        }\n        // \"foo\"\n      } else if (getPref(prefs) !== this.initialPrefs[prefs]) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\nthis.PrerenderData = new _PrerenderData({\n  initialPrefs: {\n    \"migrationExpired\": true,\n    \"feeds.topsites\": true,\n    \"showSearch\": true,\n    \"topSitesRows\": 1,\n    \"feeds.section.topstories\": true,\n    \"feeds.section.highlights\": true,\n    \"sectionOrder\": \"topsites,topstories,highlights\",\n    \"collapsed\": false\n  },\n  // Prefs listed as invalidating will prevent the prerendered version\n  // of AS from being used if their value is something other than what is listed\n  // here. This is required because some preferences cause the page layout to be\n  // too different for the prerendered version to be used. Unfortunately, this\n  // will result in users who have modified some of their preferences not being\n  // able to get the benefits of prerendering.\n  validation: [\n    \"feeds.topsites\",\n    \"showSearch\",\n    \"topSitesRows\",\n    \"sectionOrder\",\n    // This means if either of these are set to their default values,\n    // prerendering can be used.\n    {oneOf: [\"feeds.section.topstories\", \"feeds.section.highlights\"]},\n    // If any component has the following preference set to `true` it will\n    // invalidate the prerendered version.\n    {indexedDB: [\"collapsed\"]}\n  ],\n  initialSections: [\n    {\n      enabled: true,\n      icon: \"pocket\",\n      id: \"topstories\",\n      order: 1,\n      title: {id: \"header_recommended_by\", values: {provider: \"Pocket\"}}\n    },\n    {\n      enabled: true,\n      id: \"highlights\",\n      icon: \"highlights\",\n      order: 2,\n      title: {id: \"header_highlights\"}\n    }\n  ]\n});\n\nthis._PrerenderData = _PrerenderData;\nconst EXPORTED_SYMBOLS = [\"PrerenderData\", \"_PrerenderData\"];\n","/* globals ContentSearchUIController */\n\"use strict\";\n\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {IS_NEWTAB} from \"content-src/lib/constants\";\nimport React from \"react\";\n\nexport class _Search extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onClick = this.onClick.bind(this);\n    this.onInputMount = this.onInputMount.bind(this);\n  }\n\n  handleEvent(event) {\n    // Also track search events with our own telemetry\n    if (event.detail.type === \"Search\") {\n      this.props.dispatch(ac.UserEvent({event: \"SEARCH\"}));\n    }\n  }\n\n  onClick(event) {\n    window.gContentSearchController.search(event);\n  }\n\n  componentWillUnmount() {\n    delete window.gContentSearchController;\n  }\n\n  onInputMount(input) {\n    if (input) {\n      // The \"healthReportKey\" and needs to be \"newtab\" or \"abouthome\" so that\n      // BrowserUsageTelemetry.jsm knows to handle events with this name, and\n      // can add the appropriate telemetry probes for search. Without the correct\n      // name, certain tests like browser_UsageTelemetry_content.js will fail\n      // (See github ticket #2348 for more details)\n      const healthReportKey = IS_NEWTAB ? \"newtab\" : \"abouthome\";\n\n      // The \"searchSource\" needs to be \"newtab\" or \"homepage\" and is sent with\n      // the search data and acts as context for the search request (See\n      // nsISearchEngine.getSubmission). It is necessary so that search engine\n      // plugins can correctly atribute referrals. (See github ticket #3321 for\n      // more details)\n      const searchSource = IS_NEWTAB ? \"newtab\" : \"homepage\";\n\n      // gContentSearchController needs to exist as a global so that tests for\n      // the existing about:home can find it; and so it allows these tests to pass.\n      // In the future, when activity stream is default about:home, this can be renamed\n      window.gContentSearchController = new ContentSearchUIController(input, input.parentNode,\n        healthReportKey, searchSource);\n      addEventListener(\"ContentSearchClient\", this);\n    } else {\n      window.gContentSearchController = null;\n      removeEventListener(\"ContentSearchClient\", this);\n    }\n  }\n\n  /*\n   * Do not change the ID on the input field, as legacy newtab code\n   * specifically looks for the id 'newtab-search-text' on input fields\n   * in order to execute searches in various tests\n   */\n  render() {\n    return (<div className=\"search-wrapper\">\n      <label htmlFor=\"newtab-search-text\" className=\"search-label\">\n        <span className=\"sr-only\"><FormattedMessage id=\"search_web_placeholder\" /></span>\n      </label>\n      <input\n        id=\"newtab-search-text\"\n        maxLength=\"256\"\n        placeholder={this.props.intl.formatMessage({id: \"search_web_placeholder\"})}\n        ref={this.onInputMount}\n        title={this.props.intl.formatMessage({id: \"search_web_placeholder\"})}\n        type=\"search\" />\n      <button\n        id=\"searchSubmit\"\n        className=\"search-button\"\n        onClick={this.onClick}\n        title={this.props.intl.formatMessage({id: \"search_button\"})}>\n        <span className=\"sr-only\"><FormattedMessage id=\"search_button\" /></span>\n      </button>\n    </div>);\n  }\n}\n\nexport const Search = connect()(injectIntl(_Search));\n","export const IS_NEWTAB = global.document && global.document.documentURI === \"about:newtab\";\n","import {Card, PlaceholderCard} from \"content-src/components/Card/Card\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\nimport {Topics} from \"content-src/components/Topics/Topics\";\nimport {TopSites} from \"content-src/components/TopSites/TopSites\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\nconst CARDS_PER_ROW_DEFAULT = 3;\nconst CARDS_PER_ROW_COMPACT_WIDE = 4;\n\nfunction getFormattedMessage(message) {\n  return typeof message === \"string\" ? <span>{message}</span> : <FormattedMessage {...message} />;\n}\n\nexport class Section extends React.PureComponent {\n  get numRows() {\n    const {rowsPref, maxRows, Prefs} = this.props;\n    return rowsPref ? Prefs.values[rowsPref] : maxRows;\n  }\n\n  _dispatchImpressionStats() {\n    const {props} = this;\n    let cardsPerRow = CARDS_PER_ROW_DEFAULT;\n    if (props.compactCards && global.matchMedia(`(min-width: 1072px)`).matches) {\n      // If the section has compact cards and the viewport is wide enough, we show\n      // 4 columns instead of 3.\n      // $break-point-widest = 1072px (from _variables.scss)\n      cardsPerRow = CARDS_PER_ROW_COMPACT_WIDE;\n    }\n    const maxCards = cardsPerRow * this.numRows;\n    const cards = props.rows.slice(0, maxCards);\n\n    if (this.needsImpressionStats(cards)) {\n      props.dispatch(ac.ImpressionStats({\n        source: props.eventSource,\n        tiles: cards.map(link => ({id: link.guid}))\n      }));\n      this.impressionCardGuids = cards.map(link => link.guid);\n    }\n  }\n\n  // This sends an event when a user sees a set of new content. If content\n  // changes while the page is hidden (i.e. preloaded or on a hidden tab),\n  // only send the event if the page becomes visible again.\n  sendImpressionStatsOrAddListener() {\n    const {props} = this;\n\n    if (!props.shouldSendImpressionStats || !props.dispatch) {\n      return;\n    }\n\n    if (props.document.visibilityState === VISIBLE) {\n      this._dispatchImpressionStats();\n    } else {\n      // We should only ever send the latest impression stats ping, so remove any\n      // older listeners.\n      if (this._onVisibilityChange) {\n        props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n      }\n\n      // When the page becomes visible, send the impression stats ping if the section isn't collapsed.\n      this._onVisibilityChange = () => {\n        if (props.document.visibilityState === VISIBLE) {\n          if (!this.props.pref.collapsed) {\n            this._dispatchImpressionStats();\n          }\n          props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n        }\n      };\n      props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n\n  componentDidMount() {\n    if (this.props.rows.length && !this.props.pref.collapsed) {\n      this.sendImpressionStatsOrAddListener();\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    const {props} = this;\n    const isCollapsed = props.pref.collapsed;\n    const wasCollapsed = prevProps.pref.collapsed;\n    if (\n      // Don't send impression stats for the empty state\n      props.rows.length &&\n      (\n        // We only want to send impression stats if the content of the cards has changed\n        // and the section is not collapsed...\n        (props.rows !== prevProps.rows && !isCollapsed) ||\n        // or if we are expanding a section that was collapsed.\n        (wasCollapsed && !isCollapsed)\n      )\n    ) {\n      this.sendImpressionStatsOrAddListener();\n    }\n  }\n\n  componentWillUnmount() {\n    if (this._onVisibilityChange) {\n      this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n\n  needsImpressionStats(cards) {\n    if (!this.impressionCardGuids || (this.impressionCardGuids.length !== cards.length)) {\n      return true;\n    }\n\n    for (let i = 0; i < cards.length; i++) {\n      if (cards[i].guid !== this.impressionCardGuids[i]) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  render() {\n    const {\n      id, eventSource, title, icon, rows,\n      emptyState, dispatch, compactCards,\n      contextMenuOptions, initialized, disclaimer,\n      pref, privacyNoticeURL, isFirst, isLast\n    } = this.props;\n\n    const maxCardsPerRow = compactCards ? CARDS_PER_ROW_COMPACT_WIDE : CARDS_PER_ROW_DEFAULT;\n    const {numRows} = this;\n    const maxCards = maxCardsPerRow * numRows;\n    const maxCardsOnNarrow = CARDS_PER_ROW_DEFAULT * numRows;\n\n    // Show topics only for top stories and if it's not initialized yet (so\n    // content doesn't shift when it is loaded) or has loaded with topics\n    const shouldShowTopics = (id === \"topstories\" &&\n      (!this.props.topics || this.props.topics.length > 0));\n\n    const realRows = rows.slice(0, maxCards);\n\n    // The empty state should only be shown after we have initialized and there is no content.\n    // Otherwise, we should show placeholders.\n    const shouldShowEmptyState = initialized && !rows.length;\n\n    const cards = [];\n    if (!shouldShowEmptyState) {\n      for (let i = 0; i < maxCards; i++) {\n        const link = realRows[i];\n        // On narrow viewports, we only show 3 cards per row. We'll mark the rest as\n        // .hide-for-narrow to hide in CSS via @media query.\n        const className = (i >= maxCardsOnNarrow) ? \"hide-for-narrow\" : \"\";\n        cards.push(link ? (\n          <Card key={i}\n            index={i}\n            className={className}\n            dispatch={dispatch}\n            link={link}\n            contextMenuOptions={contextMenuOptions}\n            eventSource={eventSource}\n            shouldSendImpressionStats={this.props.shouldSendImpressionStats}\n            isWebExtension={this.props.isWebExtension} />\n        ) : (\n          <PlaceholderCard key={i} className={className} />\n        ));\n      }\n    }\n\n    const sectionClassName = [\n      \"section\",\n      compactCards ? \"compact-cards\" : \"normal-cards\"\n    ].join(\" \");\n\n    // <Section> <-- React component\n    // <section> <-- HTML5 element\n    return (<ComponentPerfTimer {...this.props}>\n      <CollapsibleSection className={sectionClassName} icon={icon}\n        title={title}\n        id={id}\n        eventSource={eventSource}\n        disclaimer={disclaimer}\n        collapsed={this.props.pref.collapsed}\n        showPrefName={(pref && pref.feed) || id}\n        privacyNoticeURL={privacyNoticeURL}\n        Prefs={this.props.Prefs}\n        isFirst={isFirst}\n        isLast={isLast}\n        dispatch={this.props.dispatch}\n        isWebExtension={this.props.isWebExtension}>\n\n        {!shouldShowEmptyState && (<ul className=\"section-list\" style={{padding: 0}}>\n          {cards}\n        </ul>)}\n        {shouldShowEmptyState &&\n          <div className=\"section-empty-state\">\n            <div className=\"empty-state\">\n              {emptyState.icon && emptyState.icon.startsWith(\"moz-extension://\") ?\n                <img className=\"empty-state-icon icon\" style={{\"background-image\": `url('${emptyState.icon}')`}} /> :\n                <img className={`empty-state-icon icon icon-${emptyState.icon}`} />}\n              <p className=\"empty-state-message\">\n                {getFormattedMessage(emptyState.message)}\n              </p>\n            </div>\n          </div>}\n        {shouldShowTopics && <Topics topics={this.props.topics} read_more_endpoint={this.props.read_more_endpoint} />}\n      </CollapsibleSection>\n    </ComponentPerfTimer>);\n  }\n}\n\nSection.defaultProps = {\n  document: global.document,\n  rows: [],\n  emptyState: {},\n  pref: {},\n  title: \"\"\n};\n\nexport const SectionIntl = connect(state => ({Prefs: state.Prefs}))(injectIntl(Section));\n\nexport class _Sections extends React.PureComponent {\n  renderSections() {\n    const sections = [];\n    const enabledSections = this.props.Sections.filter(section => section.enabled);\n    const {sectionOrder, \"feeds.topsites\": showTopSites} = this.props.Prefs.values;\n    // Enabled sections doesn't include Top Sites, so we add it if enabled.\n    const expectedCount = enabledSections.length + ~~showTopSites;\n\n    for (const sectionId of sectionOrder.split(\",\")) {\n      const commonProps = {\n        key: sectionId,\n        isFirst: sections.length === 0,\n        isLast: sections.length === expectedCount - 1\n      };\n      if (sectionId === \"topsites\" && showTopSites) {\n        sections.push(<TopSites {...commonProps} />);\n      } else {\n        const section = enabledSections.find(s => s.id === sectionId);\n        if (section) {\n          sections.push(<SectionIntl {...section} {...commonProps} />);\n        }\n      }\n    }\n    return sections;\n  }\n\n  render() {\n    return (\n      <div className=\"sections-list\">\n        {this.renderSections()}\n      </div>\n    );\n  }\n}\n\nexport const Sections = connect(state => ({Sections: state.Sections, Prefs: state.Prefs}))(_Sections);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\nconst _OpenInPrivateWindow = site => ({\n  id: \"menu_action_open_private_window\",\n  icon: \"new-window-private\",\n  action: ac.OnlyToMain({\n    type: at.OPEN_PRIVATE_WINDOW,\n    data: {url: site.url, referrer: site.referrer}\n  }),\n  userEvent: \"OPEN_PRIVATE_WINDOW\"\n});\n\nexport const GetPlatformString = platform => {\n  switch (platform) {\n    case \"win\":\n      return \"menu_action_show_file_windows\";\n    case \"macosx\":\n      return \"menu_action_show_file_mac_os\";\n    case \"linux\":\n      return \"menu_action_show_file_linux\";\n    default:\n      return \"menu_action_show_file_default\";\n  }\n};\n\n/**\n * List of functions that return items that can be included as menu options in a\n * LinkMenu. All functions take the site as the first parameter, and optionally\n * the index of the site.\n */\nexport const LinkMenuOptions = {\n  Separator: () => ({type: \"separator\"}),\n  EmptyItem: () => ({type: \"empty\"}),\n  RemoveBookmark: site => ({\n    id: \"menu_action_remove_bookmark\",\n    icon: \"bookmark-added\",\n    action: ac.AlsoToMain({\n      type: at.DELETE_BOOKMARK_BY_ID,\n      data: site.bookmarkGuid\n    }),\n    userEvent: \"BOOKMARK_DELETE\"\n  }),\n  AddBookmark: site => ({\n    id: \"menu_action_bookmark\",\n    icon: \"bookmark-hollow\",\n    action: ac.AlsoToMain({\n      type: at.BOOKMARK_URL,\n      data: {url: site.url, title: site.title, type: site.type}\n    }),\n    userEvent: \"BOOKMARK_ADD\"\n  }),\n  OpenInNewWindow: site => ({\n    id: \"menu_action_open_new_window\",\n    icon: \"new-window\",\n    action: ac.AlsoToMain({\n      type: at.OPEN_NEW_WINDOW,\n      data: {\n        referrer: site.referrer,\n        typedBonus: site.typedBonus,\n        url: site.url\n      }\n    }),\n    userEvent: \"OPEN_NEW_WINDOW\"\n  }),\n  BlockUrl: (site, index, eventSource) => ({\n    id: \"menu_action_dismiss\",\n    icon: \"dismiss\",\n    action: ac.AlsoToMain({\n      type: at.BLOCK_URL,\n      data: {url: site.url, pocket_id: site.pocket_id}\n    }),\n    impression: ac.ImpressionStats({\n      source: eventSource,\n      block: 0,\n      tiles: [{id: site.guid, pos: index}]\n    }),\n    userEvent: \"BLOCK\"\n  }),\n\n  // This is an option for web extentions which will result in remove items from\n  // memory and notify the web extenion, rather than using the built-in block list.\n  WebExtDismiss: (site, index, eventSource) => ({\n    id: \"menu_action_webext_dismiss\",\n    string_id: \"menu_action_dismiss\",\n    icon: \"dismiss\",\n    action: ac.WebExtEvent(at.WEBEXT_DISMISS, {\n      source: eventSource,\n      url: site.url,\n      action_position: index\n    })\n  }),\n  DeleteUrl: (site, index, eventSource, isEnabled, siteInfo) => ({\n    id: \"menu_action_delete\",\n    icon: \"delete\",\n    action: {\n      type: at.DIALOG_OPEN,\n      data: {\n        onConfirm: [\n          ac.AlsoToMain({type: at.DELETE_HISTORY_URL, data: {url: site.url, pocket_id: site.pocket_id, forceBlock: site.bookmarkGuid}}),\n          ac.UserEvent(Object.assign({event: \"DELETE\", source: eventSource, action_position: index}, siteInfo))\n        ],\n        eventSource,\n        body_string_id: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n        confirm_button_string_id: \"menu_action_delete\",\n        cancel_button_string_id: \"topsites_form_cancel_button\",\n        icon: \"modal-delete\"\n      }\n    },\n    userEvent: \"DIALOG_OPEN\"\n  }),\n  ShowFile: (site, index, eventSource, isEnabled, siteInfo, platform) => ({\n    id: GetPlatformString(platform),\n    icon: \"search\",\n    action: ac.OnlyToMain({\n      type: at.SHOW_DOWNLOAD_FILE,\n      data: {url: site.url}\n    })\n  }),\n  OpenFile: site => ({\n    id: \"menu_action_open_file\",\n    icon: \"open-file\",\n    action: ac.OnlyToMain({\n      type: at.OPEN_DOWNLOAD_FILE,\n      data: {url: site.url}\n    })\n  }),\n  CopyDownloadLink: site => ({\n    id: \"menu_action_copy_download_link\",\n    icon: \"copy\",\n    action: ac.OnlyToMain({\n      type: at.COPY_DOWNLOAD_LINK,\n      data: {url: site.url}\n    })\n  }),\n  GoToDownloadPage: site => ({\n    id: \"menu_action_go_to_download_page\",\n    icon: \"download\",\n    action: ac.OnlyToMain({\n      type: at.OPEN_LINK,\n      data: {url: site.referrer}\n    }),\n    disabled: !site.referrer\n  }),\n  RemoveDownload: site => ({\n    id: \"menu_action_remove_download\",\n    icon: \"delete\",\n    action: ac.OnlyToMain({\n      type: at.REMOVE_DOWNLOAD_FILE,\n      data: {url: site.url}\n    })\n  }),\n  PinTopSite: (site, index) => ({\n    id: \"menu_action_pin\",\n    icon: \"pin\",\n    action: ac.AlsoToMain({\n      type: at.TOP_SITES_PIN,\n      data: {site: {url: site.url}, index}\n    }),\n    userEvent: \"PIN\"\n  }),\n  UnpinTopSite: site => ({\n    id: \"menu_action_unpin\",\n    icon: \"unpin\",\n    action: ac.AlsoToMain({\n      type: at.TOP_SITES_UNPIN,\n      data: {site: {url: site.url}}\n    }),\n    userEvent: \"UNPIN\"\n  }),\n  SaveToPocket: (site, index, eventSource) => ({\n    id: \"menu_action_save_to_pocket\",\n    icon: \"pocket\",\n    action: ac.AlsoToMain({\n      type: at.SAVE_TO_POCKET,\n      data: {site: {url: site.url, title: site.title}}\n    }),\n    impression: ac.ImpressionStats({\n      source: eventSource,\n      pocket: 0,\n      tiles: [{id: site.guid, pos: index}]\n    }),\n    userEvent: \"SAVE_TO_POCKET\"\n  }),\n  DeleteFromPocket: site => ({\n    id: \"menu_action_delete_pocket\",\n    icon: \"delete\",\n    action: ac.AlsoToMain({\n      type: at.DELETE_FROM_POCKET,\n      data: {pocket_id: site.pocket_id}\n    }),\n    userEvent: \"DELETE_FROM_POCKET\"\n  }),\n  ArchiveFromPocket: site => ({\n    id: \"menu_action_archive_pocket\",\n    icon: \"check\",\n    action: ac.AlsoToMain({\n      type: at.ARCHIVE_FROM_POCKET,\n      data: {pocket_id: site.pocket_id}\n    }),\n    userEvent: \"ARCHIVE_FROM_POCKET\"\n  }),\n  EditTopSite: (site, index) => ({\n    id: \"edit_topsites_button_text\",\n    icon: \"edit\",\n    action: {\n      type: at.TOP_SITES_EDIT,\n      data: {index}\n    }\n  }),\n  CheckBookmark: site => (site.bookmarkGuid ? LinkMenuOptions.RemoveBookmark(site) : LinkMenuOptions.AddBookmark(site)),\n  CheckPinTopSite: (site, index) => (site.isPinned ? LinkMenuOptions.UnpinTopSite(site) : LinkMenuOptions.PinTopSite(site, index)),\n  CheckSavedToPocket: (site, index) => (site.pocket_id ? LinkMenuOptions.DeleteFromPocket(site) : LinkMenuOptions.SaveToPocket(site, index)),\n  CheckBookmarkOrArchive: site => (site.pocket_id ? LinkMenuOptions.ArchiveFromPocket(site) : LinkMenuOptions.CheckBookmark(site)),\n  OpenInPrivateWindow: (site, index, eventSource, isEnabled) => (isEnabled ? _OpenInPrivateWindow(site) : LinkMenuOptions.EmptyItem())\n};\n","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {ContextMenu} from \"content-src/components/ContextMenu/ContextMenu\";\nimport {injectIntl} from \"react-intl\";\nimport {LinkMenuOptions} from \"content-src/lib/link-menu-options\";\nimport React from \"react\";\n\nconst DEFAULT_SITE_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\", \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\"];\n\nexport class _LinkMenu extends React.PureComponent {\n  getOptions() {\n    const {props} = this;\n    const {site, index, source, isPrivateBrowsingEnabled, siteInfo, platform} = props;\n\n    // Handle special case of default site\n    const propOptions = !site.isDefault ? props.options : DEFAULT_SITE_MENU_OPTIONS;\n\n    const options = propOptions.map(o => LinkMenuOptions[o](site, index, source, isPrivateBrowsingEnabled, siteInfo, platform)).map(option => {\n      const {action, impression, id, string_id, type, userEvent} = option;\n      if (!type && id) {\n        option.label = props.intl.formatMessage({id: string_id || id});\n        option.onClick = () => {\n          props.dispatch(action);\n          if (userEvent) {\n            const userEventData = Object.assign({\n              event: userEvent,\n              source,\n              action_position: index\n            }, siteInfo);\n            props.dispatch(ac.UserEvent(userEventData));\n          }\n          if (impression && props.shouldSendImpressionStats) {\n            props.dispatch(impression);\n          }\n        };\n      }\n      return option;\n    });\n\n    // This is for accessibility to support making each item tabbable.\n    // We want to know which item is the first and which item\n    // is the last, so we can close the context menu accordingly.\n    options[0].first = true;\n    options[options.length - 1].last = true;\n    return options;\n  }\n\n  render() {\n    return (<ContextMenu\n      onUpdate={this.props.onUpdate}\n      options={this.getOptions()} />);\n  }\n}\n\nconst getState = state => ({isPrivateBrowsingEnabled: state.Prefs.values.isPrivateBrowsingEnabled, platform: state.Prefs.values.platform});\nexport const LinkMenu = connect(getState)(injectIntl(_LinkMenu));\n","import React from \"react\";\n\nexport class ContextMenu extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.hideContext = this.hideContext.bind(this);\n    this.onClick = this.onClick.bind(this);\n  }\n\n  hideContext() {\n    this.props.onUpdate(false);\n  }\n\n  componentDidMount() {\n    setTimeout(() => {\n      global.addEventListener(\"click\", this.hideContext);\n    }, 0);\n  }\n\n  componentWillUnmount() {\n    global.removeEventListener(\"click\", this.hideContext);\n  }\n\n  onClick(event) {\n    // Eat all clicks on the context menu so they don't bubble up to window.\n    // This prevents the context menu from closing when clicking disabled items\n    // or the separators.\n    event.stopPropagation();\n  }\n\n  render() {\n    return (<span className=\"context-menu\" onClick={this.onClick}>\n      <ul role=\"menu\" className=\"context-menu-list\">\n        {this.props.options.map((option, i) => (option.type === \"separator\" ?\n          (<li key={i} className=\"separator\" />) :\n          (option.type !== \"empty\" && <ContextMenuItem key={i} option={option} hideContext={this.hideContext} />)\n        ))}\n      </ul>\n    </span>);\n  }\n}\n\nexport class ContextMenuItem extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onClick = this.onClick.bind(this);\n    this.onKeyDown = this.onKeyDown.bind(this);\n  }\n\n  onClick() {\n    this.props.hideContext();\n    this.props.option.onClick();\n  }\n\n  onKeyDown(event) {\n    const {option} = this.props;\n    switch (event.key) {\n      case \"Tab\":\n        // tab goes down in context menu, shift + tab goes up in context menu\n        // if we're on the last item, one more tab will close the context menu\n        // similarly, if we're on the first item, one more shift + tab will close it\n        if ((event.shiftKey && option.first) || (!event.shiftKey && option.last)) {\n          this.props.hideContext();\n        }\n        break;\n      case \"Enter\":\n        this.props.hideContext();\n        option.onClick();\n        break;\n    }\n  }\n\n  render() {\n    const {option} = this.props;\n    return (\n      <li role=\"menuitem\" className=\"context-menu-item\">\n        <a onClick={this.onClick} onKeyDown={this.onKeyDown} tabIndex=\"0\" className={option.disabled ? \"disabled\" : \"\"}>\n          {option.icon && <span className={`icon icon-spacer icon-${option.icon}`} />}\n          {option.label}\n        </a>\n      </li>);\n  }\n}\n","/**\n * List of helper functions for screenshot-based images.\n *\n * There are two kinds of images:\n * 1. Remote Image: This is the image from the main process and it refers to\n *    the image in the React props. This can either be an object with the `data`\n *    and `path` properties, if it is a blob, or a string, if it is a normal image.\n * 2. Local Image: This is the image object in the content process and it refers\n *    to the image *object* in the React component's state. All local image\n *    objects have the `url` property, and an additional property `path`, if they\n *    are blobs.\n */\nexport const ScreenshotUtils = {\n  isBlob(isLocal, image) {\n    return !!(image && image.path && ((!isLocal && image.data) || (isLocal && image.url)));\n  },\n\n  // This should always be called with a remote image and not a local image.\n  createLocalImageObject(remoteImage) {\n    if (!remoteImage) {\n      return null;\n    }\n    if (this.isBlob(false, remoteImage)) {\n      return {url: global.URL.createObjectURL(remoteImage.data), path: remoteImage.path};\n    }\n    return {url: remoteImage};\n  },\n\n  // Revokes the object URL of the image if the local image is a blob.\n  // This should always be called with a local image and not a remote image.\n  maybeRevokeBlobObjectURL(localImage) {\n    if (this.isBlob(true, localImage)) {\n      global.URL.revokeObjectURL(localImage.url);\n    }\n  },\n\n  // Checks if remoteImage and localImage are the same.\n  isRemoteImageLocal(localImage, remoteImage) {\n    // Both remoteImage and localImage are present.\n    if (remoteImage && localImage) {\n      return this.isBlob(false, remoteImage) ?\n             localImage.path === remoteImage.path :\n             localImage.url === remoteImage;\n    }\n\n    // This will only handle the remaining three possible outcomes.\n    // (i.e. everything except when both image and localImage are present)\n    return !remoteImage && !localImage;\n  }\n};\n","import {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport React from \"react\";\nimport {SectionMenu} from \"content-src/components/SectionMenu/SectionMenu\";\nimport {SectionMenuOptions} from \"content-src/lib/section-menu-options\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\nfunction getFormattedMessage(message) {\n  return typeof message === \"string\" ? <span>{message}</span> : <FormattedMessage {...message} />;\n}\n\nexport class Disclaimer extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onAcknowledge = this.onAcknowledge.bind(this);\n  }\n\n  onAcknowledge() {\n    this.props.dispatch(ac.SetPref(this.props.disclaimerPref, false));\n    this.props.dispatch(ac.UserEvent({event: \"DISCLAIMER_ACKED\", source: this.props.eventSource}));\n  }\n\n  render() {\n    const {disclaimer} = this.props;\n    return (\n      <div className=\"section-disclaimer\">\n          <div className=\"section-disclaimer-text\">\n            {getFormattedMessage(disclaimer.text)}\n            {disclaimer.link &&\n              <a href={disclaimer.link.href} target=\"_blank\" rel=\"noopener noreferrer\">\n                {getFormattedMessage(disclaimer.link.title || disclaimer.link)}\n              </a>\n            }\n          </div>\n\n          <button onClick={this.onAcknowledge}>\n            {getFormattedMessage(disclaimer.button)}\n          </button>\n      </div>\n    );\n  }\n}\n\nexport const DisclaimerIntl = injectIntl(Disclaimer);\n\nexport class _CollapsibleSection extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onBodyMount = this.onBodyMount.bind(this);\n    this.onHeaderClick = this.onHeaderClick.bind(this);\n    this.onTransitionEnd = this.onTransitionEnd.bind(this);\n    this.enableOrDisableAnimation = this.enableOrDisableAnimation.bind(this);\n    this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n    this.onMenuButtonMouseEnter = this.onMenuButtonMouseEnter.bind(this);\n    this.onMenuButtonMouseLeave = this.onMenuButtonMouseLeave.bind(this);\n    this.onMenuUpdate = this.onMenuUpdate.bind(this);\n    this.state = {enableAnimation: true, isAnimating: false, menuButtonHover: false, showContextMenu: false};\n  }\n\n  componentWillMount() {\n    this.props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n  }\n\n  componentWillUpdate(nextProps) {\n    // Check if we're about to go from expanded to collapsed\n    if (!this.props.collapsed && nextProps.collapsed) {\n      // This next line forces a layout flush of the section body, which has a\n      // max-height style set, so that the upcoming collapse animation can\n      // animate from that height to the collapsed height. Without this, the\n      // update is coalesced and there's no animation from no-max-height to 0.\n      this.sectionBody.scrollHeight; // eslint-disable-line no-unused-expressions\n    }\n  }\n\n  componentWillUnmount() {\n    this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n  }\n\n  enableOrDisableAnimation() {\n    // Only animate the collapse/expand for visible tabs.\n    const visible = this.props.document.visibilityState === VISIBLE;\n    if (this.state.enableAnimation !== visible) {\n      this.setState({enableAnimation: visible});\n    }\n  }\n\n  onBodyMount(node) {\n    this.sectionBody = node;\n  }\n\n  onHeaderClick() {\n    // If this.sectionBody is unset, it means that we're in some sort of error\n    // state, probably displaying the error fallback, so we won't be able to\n    // compute the height, and we don't want to persist the preference.\n    // If props.collapsed is undefined handler shouldn't do anything.\n    if (!this.sectionBody || this.props.collapsed === undefined) {\n      return;\n    }\n\n    // Get the current height of the body so max-height transitions can work\n    this.setState({\n      isAnimating: true,\n      maxHeight: `${this.sectionBody.scrollHeight}px`\n    });\n    const {action, userEvent} = SectionMenuOptions.CheckCollapsed(this.props);\n    this.props.dispatch(action);\n    this.props.dispatch(ac.UserEvent({\n      event: userEvent,\n      source: this.props.source\n    }));\n  }\n\n  onTransitionEnd(event) {\n    // Only update the animating state for our own transition (not a child's)\n    if (event.target === event.currentTarget) {\n      this.setState({isAnimating: false});\n    }\n  }\n\n  renderIcon() {\n    const {icon} = this.props;\n    if (icon && icon.startsWith(\"moz-extension://\")) {\n      return <span className=\"icon icon-small-spacer\" style={{backgroundImage: `url('${icon}')`}} />;\n    }\n    return <span className={`icon icon-small-spacer icon-${icon || \"webextension\"}`} />;\n  }\n\n  onMenuButtonClick(event) {\n    event.preventDefault();\n    this.setState({showContextMenu: true});\n  }\n\n  onMenuButtonMouseEnter() {\n    this.setState({menuButtonHover: true});\n  }\n\n  onMenuButtonMouseLeave() {\n    this.setState({menuButtonHover: false});\n  }\n\n  onMenuUpdate(showContextMenu) {\n    this.setState({showContextMenu});\n  }\n\n  render() {\n    const isCollapsible = this.props.collapsed !== undefined;\n    const {enableAnimation, isAnimating, maxHeight, menuButtonHover, showContextMenu} = this.state;\n    const {id, eventSource, collapsed, disclaimer, title, extraMenuOptions, showPrefName, privacyNoticeURL, dispatch, isFirst, isLast, isWebExtension} = this.props;\n    const disclaimerPref = `section.${id}.showDisclaimer`;\n    const needsDisclaimer = disclaimer && this.props.Prefs.values[disclaimerPref];\n    const active = menuButtonHover || showContextMenu;\n    return (\n      <section\n        className={`collapsible-section ${this.props.className}${enableAnimation ? \" animation-enabled\" : \"\"}${collapsed ? \" collapsed\" : \"\"}${active ? \" active\" : \"\"}`}\n        // Note: data-section-id is used for web extension api tests in mozilla central\n        data-section-id={id}>\n        <div className=\"section-top-bar\">\n          <h3 className=\"section-title\">\n            <span className=\"click-target\" onClick={this.onHeaderClick}>\n              {this.renderIcon()}\n              {getFormattedMessage(title)}\n              {isCollapsible && <span className={`collapsible-arrow icon ${collapsed ? \"icon-arrowhead-forward-small\" : \"icon-arrowhead-down-small\"}`} />}\n            </span>\n          </h3>\n          <div>\n            <button\n              className=\"context-menu-button icon\"\n              onClick={this.onMenuButtonClick}\n              onMouseEnter={this.onMenuButtonMouseEnter}\n              onMouseLeave={this.onMenuButtonMouseLeave}>\n              <span className=\"sr-only\">\n                <FormattedMessage id=\"section_context_menu_button_sr\" />\n              </span>\n            </button>\n            {showContextMenu &&\n              <SectionMenu\n                id={id}\n                extraOptions={extraMenuOptions}\n                eventSource={eventSource}\n                showPrefName={showPrefName}\n                privacyNoticeURL={privacyNoticeURL}\n                collapsed={collapsed}\n                onUpdate={this.onMenuUpdate}\n                isFirst={isFirst}\n                isLast={isLast}\n                dispatch={dispatch}\n                isWebExtension={isWebExtension} />\n            }\n          </div>\n        </div>\n        <ErrorBoundary className=\"section-body-fallback\">\n          <div\n            className={`section-body${isAnimating ? \" animating\" : \"\"}`}\n            onTransitionEnd={this.onTransitionEnd}\n            ref={this.onBodyMount}\n            style={isAnimating && !collapsed ? {maxHeight} : null}>\n            {needsDisclaimer && <DisclaimerIntl disclaimerPref={disclaimerPref} disclaimer={disclaimer} eventSource={eventSource} dispatch={this.props.dispatch} />}\n            {this.props.children}\n          </div>\n        </ErrorBoundary>\n      </section>\n    );\n  }\n}\n\n_CollapsibleSection.defaultProps = {\n  document: global.document || {\n    addEventListener: () => {},\n    removeEventListener: () => {},\n    visibilityState: \"hidden\"\n  },\n  Prefs: {values: {}}\n};\n\nexport const CollapsibleSection = injectIntl(_CollapsibleSection);\n","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {ContextMenu} from \"content-src/components/ContextMenu/ContextMenu\";\nimport {injectIntl} from \"react-intl\";\nimport React from \"react\";\nimport {SectionMenuOptions} from \"content-src/lib/section-menu-options\";\n\nconst DEFAULT_SECTION_MENU_OPTIONS = [\"MoveUp\", \"MoveDown\", \"Separator\", \"RemoveSection\", \"CheckCollapsed\", \"Separator\", \"ManageSection\"];\nconst WEBEXT_SECTION_MENU_OPTIONS = [\"MoveUp\", \"MoveDown\", \"Separator\", \"CheckCollapsed\", \"Separator\", \"ManageWebExtension\"];\n\nexport class _SectionMenu extends React.PureComponent {\n  getOptions() {\n    const {props} = this;\n\n    const propOptions = props.isWebExtension ? [...WEBEXT_SECTION_MENU_OPTIONS] : [...DEFAULT_SECTION_MENU_OPTIONS];\n    // Prepend custom options and a separator\n    if (props.extraOptions) {\n      propOptions.splice(0, 0, ...props.extraOptions, \"Separator\");\n    }\n    // Insert privacy notice before the last option (\"ManageSection\")\n    if (props.privacyNoticeURL) {\n      propOptions.splice(-1, 0, \"PrivacyNotice\");\n    }\n\n    const options = propOptions.map(o => SectionMenuOptions[o](props)).map(option => {\n      const {action, id, type, userEvent} = option;\n      if (!type && id) {\n        option.label = props.intl.formatMessage({id});\n        option.onClick = () => {\n          props.dispatch(action);\n          if (userEvent) {\n            props.dispatch(ac.UserEvent({\n              event: userEvent,\n              source: props.source\n            }));\n          }\n        };\n      }\n      return option;\n    });\n\n    // This is for accessibility to support making each item tabbable.\n    // We want to know which item is the first and which item\n    // is the last, so we can close the context menu accordingly.\n    options[0].first = true;\n    options[options.length - 1].last = true;\n    return options;\n  }\n\n  render() {\n    return (<ContextMenu\n      onUpdate={this.props.onUpdate}\n      options={this.getOptions()} />);\n  }\n}\n\nexport const SectionMenu = injectIntl(_SectionMenu);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\n/**\n * List of functions that return items that can be included as menu options in a\n * SectionMenu. All functions take the section as the only parameter.\n */\nexport const SectionMenuOptions = {\n  Separator: () => ({type: \"separator\"}),\n  MoveUp: section => ({\n    id: \"section_menu_action_move_up\",\n    icon: \"arrowhead-up\",\n    action: ac.OnlyToMain({\n      type: at.SECTION_MOVE,\n      data: {id: section.id, direction: -1}\n    }),\n    userEvent: \"MENU_MOVE_UP\",\n    disabled: !!section.isFirst\n  }),\n  MoveDown: section => ({\n    id: \"section_menu_action_move_down\",\n    icon: \"arrowhead-down\",\n    action: ac.OnlyToMain({\n      type: at.SECTION_MOVE,\n      data: {id: section.id, direction: +1}\n    }),\n    userEvent: \"MENU_MOVE_DOWN\",\n    disabled: !!section.isLast\n  }),\n  RemoveSection: section => ({\n    id: \"section_menu_action_remove_section\",\n    icon: \"dismiss\",\n    action: ac.SetPref(section.showPrefName, false),\n    userEvent: \"MENU_REMOVE\"\n  }),\n  CollapseSection: section => ({\n    id: \"section_menu_action_collapse_section\",\n    icon: \"minimize\",\n    action: ac.OnlyToMain({type: at.UPDATE_SECTION_PREFS, data: {id: section.id, value: {collapsed: true}}}),\n    userEvent: \"MENU_COLLAPSE\"\n  }),\n  ExpandSection: section => ({\n    id: \"section_menu_action_expand_section\",\n    icon: \"maximize\",\n    action: ac.OnlyToMain({type: at.UPDATE_SECTION_PREFS, data: {id: section.id, value: {collapsed: false}}}),\n    userEvent: \"MENU_EXPAND\"\n  }),\n  ManageSection: section => ({\n    id: \"section_menu_action_manage_section\",\n    icon: \"settings\",\n    action: ac.OnlyToMain({type: at.SETTINGS_OPEN}),\n    userEvent: \"MENU_MANAGE\"\n  }),\n  ManageWebExtension: section => ({\n    id: \"section_menu_action_manage_webext\",\n    icon: \"settings\",\n    action: ac.OnlyToMain({type: at.OPEN_WEBEXT_SETTINGS, data: section.id})\n  }),\n  AddTopSite: section => ({\n    id: \"section_menu_action_add_topsite\",\n    icon: \"add\",\n    action: {type: at.TOP_SITES_EDIT, data: {index: -1}},\n    userEvent: \"MENU_ADD_TOPSITE\"\n  }),\n  PrivacyNotice: section => ({\n    id: \"section_menu_action_privacy_notice\",\n    icon: \"info\",\n    action: ac.OnlyToMain({\n      type: at.OPEN_LINK,\n      data: {url: section.privacyNoticeURL}\n    }),\n    userEvent: \"MENU_PRIVACY_NOTICE\"\n  }),\n  CheckCollapsed: section => (section.collapsed ? SectionMenuOptions.ExpandSection(section) : SectionMenuOptions.CollapseSection(section))\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {perfService as perfSvc} from \"common/PerfService.jsm\";\nimport React from \"react\";\n\n// Currently record only a fixed set of sections. This will prevent data\n// from custom sections from showing up or from topstories.\nconst RECORDED_SECTIONS = [\"highlights\", \"topsites\"];\n\nexport class ComponentPerfTimer extends React.Component {\n  constructor(props) {\n    super(props);\n    // Just for test dependency injection:\n    this.perfSvc = this.props.perfSvc || perfSvc;\n\n    this._sendBadStateEvent = this._sendBadStateEvent.bind(this);\n    this._sendPaintedEvent = this._sendPaintedEvent.bind(this);\n    this._reportMissingData = false;\n    this._timestampHandled = false;\n    this._recordedFirstRender = false;\n  }\n\n  componentDidMount() {\n    if (!RECORDED_SECTIONS.includes(this.props.id)) {\n      return;\n    }\n\n    this._maybeSendPaintedEvent();\n  }\n\n  componentDidUpdate() {\n    if (!RECORDED_SECTIONS.includes(this.props.id)) {\n      return;\n    }\n\n    this._maybeSendPaintedEvent();\n  }\n\n  /**\n   * Call the given callback after the upcoming frame paints.\n   *\n   * @note Both setTimeout and requestAnimationFrame are throttled when the page\n   * is hidden, so this callback may get called up to a second or so after the\n   * requestAnimationFrame \"paint\" for hidden tabs.\n   *\n   * Newtabs hidden while loading will presumably be fairly rare (other than\n   * preloaded tabs, which we will be filtering out on the server side), so such\n   * cases should get lost in the noise.\n   *\n   * If we decide that it's important to find out when something that's hidden\n   * has \"painted\", however, another option is to post a message to this window.\n   * That should happen even faster than setTimeout, and, at least as of this\n   * writing, it's not throttled in hidden windows in Firefox.\n   *\n   * @param {Function} callback\n   *\n   * @returns void\n   */\n  _afterFramePaint(callback) {\n    requestAnimationFrame(() => setTimeout(callback, 0));\n  }\n\n  _maybeSendBadStateEvent() {\n    // Follow up bugs:\n    // https://github.com/mozilla/activity-stream/issues/3691\n    if (!this.props.initialized) {\n      // Remember to report back when data is available.\n      this._reportMissingData = true;\n    } else if (this._reportMissingData) {\n      this._reportMissingData = false;\n      // Report how long it took for component to become initialized.\n      this._sendBadStateEvent();\n    }\n  }\n\n  _maybeSendPaintedEvent() {\n    // If we've already handled a timestamp, don't do it again.\n    if (this._timestampHandled || !this.props.initialized) {\n      return;\n    }\n\n    // And if we haven't, we're doing so now, so remember that. Even if\n    // something goes wrong in the callback, we can't try again, as we'd be\n    // sending back the wrong data, and we have to do it here, so that other\n    // calls to this method while waiting for the next frame won't also try to\n    // handle it.\n    this._timestampHandled = true;\n    this._afterFramePaint(this._sendPaintedEvent);\n  }\n\n  /**\n   * Triggered by call to render. Only first call goes through due to\n   * `_recordedFirstRender`.\n   */\n  _ensureFirstRenderTsRecorded() {\n    // Used as t0 for recording how long component took to initialize.\n    if (!this._recordedFirstRender) {\n      this._recordedFirstRender = true;\n      // topsites_first_render_ts, highlights_first_render_ts.\n      const key = `${this.props.id}_first_render_ts`;\n      this.perfSvc.mark(key);\n    }\n  }\n\n  /**\n   * Creates `TELEMETRY_UNDESIRED_EVENT` with timestamp in ms\n   * of how much longer the data took to be ready for display than it would\n   * have been the ideal case.\n   * https://github.com/mozilla/ping-centre/issues/98\n   */\n  _sendBadStateEvent() {\n    // highlights_data_ready_ts, topsites_data_ready_ts.\n    const dataReadyKey = `${this.props.id}_data_ready_ts`;\n    this.perfSvc.mark(dataReadyKey);\n\n    try {\n      const firstRenderKey = `${this.props.id}_first_render_ts`;\n      // value has to be Int32.\n      const value = parseInt(this.perfSvc.getMostRecentAbsMarkStartByName(dataReadyKey) -\n                             this.perfSvc.getMostRecentAbsMarkStartByName(firstRenderKey), 10);\n      this.props.dispatch(ac.OnlyToMain({\n        type: at.SAVE_SESSION_PERF_DATA,\n        // highlights_data_late_by_ms, topsites_data_late_by_ms.\n        data: {[`${this.props.id}_data_late_by_ms`]: value}\n      }));\n    } catch (ex) {\n      // If this failed, it's likely because the `privacy.resistFingerprinting`\n      // pref is true.\n    }\n  }\n\n  _sendPaintedEvent() {\n    // Record first_painted event but only send if topsites.\n    if (this.props.id !== \"topsites\") {\n      return;\n    }\n\n    // topsites_first_painted_ts.\n    const key = `${this.props.id}_first_painted_ts`;\n    this.perfSvc.mark(key);\n\n    try {\n      const data = {};\n      data[key] = this.perfSvc.getMostRecentAbsMarkStartByName(key);\n\n      this.props.dispatch(ac.OnlyToMain({\n        type: at.SAVE_SESSION_PERF_DATA,\n        data\n      }));\n    } catch (ex) {\n      // If this failed, it's likely because the `privacy.resistFingerprinting`\n      // pref is true.  We should at least not blow up, and should continue\n      // to set this._timestampHandled to avoid going through this again.\n    }\n  }\n\n  render() {\n    if (RECORDED_SECTIONS.includes(this.props.id)) {\n      this._ensureFirstRenderTsRecorded();\n      this._maybeSendBadStateEvent();\n    }\n    return this.props.children;\n  }\n}\n","/* globals Services */\n\"use strict\";\n\n/* istanbul ignore if */\nif (typeof ChromeUtils !== \"undefined\") {\n  ChromeUtils.import(\"resource://gre/modules/Services.jsm\");\n}\n\nlet usablePerfObj;\n\n/* istanbul ignore if */\n/* istanbul ignore else */\nif (typeof Services !== \"undefined\") {\n  // Borrow the high-resolution timer from the hidden window....\n  usablePerfObj = Services.appShell.hiddenDOMWindow.performance;\n} else if (typeof performance !== \"undefined\") {\n  // we must be running in content space\n  // eslint-disable-next-line no-undef\n  usablePerfObj = performance;\n} else {\n  // This is a dummy object so this file doesn't crash in the node prerendering\n  // task.\n  usablePerfObj = {\n    now() {},\n    mark() {}\n  };\n}\n\nfunction _PerfService(options) {\n  // For testing, so that we can use a fake Window.performance object with\n  // known state.\n  if (options && options.performanceObj) {\n    this._perf = options.performanceObj;\n  } else {\n    this._perf = usablePerfObj;\n  }\n}\n\n_PerfService.prototype = {\n  /**\n   * Calls the underlying mark() method on the appropriate Window.performance\n   * object to add a mark with the given name to the appropriate performance\n   * timeline.\n   *\n   * @param  {String} name  the name to give the current mark\n   * @return {void}\n   */\n  mark: function mark(str) {\n    this._perf.mark(str);\n  },\n\n  /**\n   * Calls the underlying getEntriesByName on the appropriate Window.performance\n   * object.\n   *\n   * @param  {String} name\n   * @param  {String} type eg \"mark\"\n   * @return {Array}       Performance* objects\n   */\n  getEntriesByName: function getEntriesByName(name, type) {\n    return this._perf.getEntriesByName(name, type);\n  },\n\n  /**\n   * The timeOrigin property from the appropriate performance object.\n   * Used to ensure that timestamps from the add-on code and the content code\n   * are comparable.\n   *\n   * @note If this is called from a context without a window\n   * (eg a JSM in chrome), it will return the timeOrigin of the XUL hidden\n   * window, which appears to be the first created window (and thus\n   * timeOrigin) in the browser.  Note also, however, there is also a private\n   * hidden window, presumably for private browsing, which appears to be\n   * created dynamically later.  Exactly how/when that shows up needs to be\n   * investigated.\n   *\n   * @return {Number} A double of milliseconds with a precision of 0.5us.\n   */\n  get timeOrigin() {\n    return this._perf.timeOrigin;\n  },\n\n  /**\n   * Returns the \"absolute\" version of performance.now(), i.e. one that\n   * should ([bug 1401406](https://bugzilla.mozilla.org/show_bug.cgi?id=1401406)\n   * be comparable across both chrome and content.\n   *\n   * @return {Number}\n   */\n  absNow: function absNow() {\n    return this.timeOrigin + this._perf.now();\n  },\n\n  /**\n   * This returns the absolute startTime from the most recent performance.mark()\n   * with the given name.\n   *\n   * @param  {String} name  the name to lookup the start time for\n   *\n   * @return {Number}       the returned start time, as a DOMHighResTimeStamp\n   *\n   * @throws {Error}        \"No Marks with the name ...\" if none are available\n   *\n   * @note Always surround calls to this by try/catch.  Otherwise your code\n   * may fail when the `privacy.resistFingerprinting` pref is true.  When\n   * this pref is set, all attempts to get marks will likely fail, which will\n   * cause this method to throw.\n   *\n   * See [bug 1369303](https://bugzilla.mozilla.org/show_bug.cgi?id=1369303)\n   * for more info.\n   */\n  getMostRecentAbsMarkStartByName(name) {\n    let entries = this.getEntriesByName(name, \"mark\");\n\n    if (!entries.length) {\n      throw new Error(`No marks with the name ${name}`);\n    }\n\n    let mostRecentEntry = entries[entries.length - 1];\n    return this._perf.timeOrigin + mostRecentEntry.startTime;\n  }\n};\n\nthis.perfService = new _PerfService();\nconst EXPORTED_SYMBOLS = [\"_PerfService\", \"perfService\"];\n","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class Topic extends React.PureComponent {\n  render() {\n    const {url, name} = this.props;\n    return (<li><a key={name} className=\"topic-link\" href={url}>{name}</a></li>);\n  }\n}\n\nexport class Topics extends React.PureComponent {\n  render() {\n    const {topics, read_more_endpoint} = this.props;\n    return (\n      <div className=\"topic\">\n        <span><FormattedMessage id=\"pocket_read_more\" /></span>\n        <ul>{topics && topics.map(t => <Topic key={t.name} url={t.url} name={t.name} />)}</ul>\n\n        {read_more_endpoint && <a className=\"topic-read-more\" href={read_more_endpoint}>\n          <FormattedMessage id=\"pocket_read_even_more\" />\n        </a>}\n      </div>\n    );\n  }\n}\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {MIN_CORNER_FAVICON_SIZE, MIN_RICH_FAVICON_SIZE, TOP_SITES_SOURCE} from \"./TopSitesConstants\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport {injectIntl} from \"react-intl\";\nimport React from \"react\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\nimport {TopSiteForm} from \"./TopSiteForm\";\nimport {TopSiteList} from \"./TopSite\";\n\nfunction topSiteIconType(link) {\n  if (link.customScreenshotURL) {\n    return \"custom_screenshot\";\n  }\n  if (link.tippyTopIcon || link.faviconRef === \"tippytop\") {\n    return \"tippytop\";\n  }\n  if (link.faviconSize >= MIN_RICH_FAVICON_SIZE) {\n    return \"rich_icon\";\n  }\n  if (link.screenshot && link.faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n    return \"screenshot_with_icon\";\n  }\n  if (link.screenshot) {\n    return \"screenshot\";\n  }\n  return \"no_image\";\n}\n\n/**\n * Iterates through TopSites and counts types of images.\n * @param acc Accumulator for reducer.\n * @param topsite Entry in TopSites.\n */\nfunction countTopSitesIconsTypes(topSites) {\n  const countTopSitesTypes = (acc, link) => {\n    acc[topSiteIconType(link)]++;\n    return acc;\n  };\n\n  return topSites.reduce(countTopSitesTypes, {\n    \"custom_screenshot\": 0,\n    \"screenshot_with_icon\": 0,\n    \"screenshot\": 0,\n    \"tippytop\": 0,\n    \"rich_icon\": 0,\n    \"no_image\": 0\n  });\n}\n\nexport class _TopSites extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onFormClose = this.onFormClose.bind(this);\n  }\n\n  /**\n   * Dispatch session statistics about the quality of TopSites icons and pinned count.\n   */\n  _dispatchTopSitesStats() {\n    const topSites = this._getVisibleTopSites();\n    const topSitesIconsStats = countTopSitesIconsTypes(topSites);\n    const topSitesPinned = topSites.filter(site => !!site.isPinned).length;\n    // Dispatch telemetry event with the count of TopSites images types.\n    this.props.dispatch(ac.AlsoToMain({\n      type: at.SAVE_SESSION_PERF_DATA,\n      data: {topsites_icon_stats: topSitesIconsStats, topsites_pinned: topSitesPinned}\n    }));\n  }\n\n  /**\n   * Return the TopSites that are visible based on prefs and window width.\n   */\n  _getVisibleTopSites() {\n    // We hide 2 sites per row when not in the wide layout.\n    let sitesPerRow = TOP_SITES_MAX_SITES_PER_ROW;\n    // $break-point-widest = 1072px (from _variables.scss)\n    if (!global.matchMedia(`(min-width: 1072px)`).matches) {\n      sitesPerRow -= 2;\n    }\n    return this.props.TopSites.rows.slice(0, this.props.TopSitesRows * sitesPerRow);\n  }\n\n  componentDidUpdate() {\n    this._dispatchTopSitesStats();\n  }\n\n  componentDidMount() {\n    this._dispatchTopSitesStats();\n  }\n\n  onFormClose() {\n    this.props.dispatch(ac.UserEvent({\n      source: TOP_SITES_SOURCE,\n      event: \"TOP_SITES_EDIT_CLOSE\"\n    }));\n    this.props.dispatch({type: at.TOP_SITES_CANCEL_EDIT});\n  }\n\n  render() {\n    const {props} = this;\n    const {editForm} = props.TopSites;\n\n    return (<ComponentPerfTimer id=\"topsites\" initialized={props.TopSites.initialized} dispatch={props.dispatch}>\n      <CollapsibleSection\n        className=\"top-sites\"\n        icon=\"topsites\"\n        id=\"topsites\"\n        title={{id: \"header_top_sites\"}}\n        extraMenuOptions={[\"AddTopSite\"]}\n        showPrefName=\"feeds.topsites\"\n        eventSource={TOP_SITES_SOURCE}\n        collapsed={props.TopSites.pref ? props.TopSites.pref.collapsed : undefined}\n        isFirst={props.isFirst}\n        isLast={props.isLast}\n        dispatch={props.dispatch}>\n        <TopSiteList TopSites={props.TopSites} TopSitesRows={props.TopSitesRows} dispatch={props.dispatch} intl={props.intl} topSiteIconType={topSiteIconType} />\n        <div className=\"edit-topsites-wrapper\">\n          {editForm &&\n            <div className=\"edit-topsites\">\n              <div className=\"modal-overlay\" onClick={this.onFormClose} />\n              <div className=\"modal\">\n                <TopSiteForm\n                  site={props.TopSites.rows[editForm.index]}\n                  onClose={this.onFormClose}\n                  dispatch={this.props.dispatch}\n                  intl={this.props.intl}\n                  {...editForm} />\n              </div>\n            </div>\n          }\n        </div>\n      </CollapsibleSection>\n    </ComponentPerfTimer>);\n  }\n}\n\nexport const TopSites = connect(state => ({\n  TopSites: state.TopSites,\n  Prefs: state.Prefs,\n  TopSitesRows: state.Prefs.values.topSitesRows\n}))(injectIntl(_TopSites));\n","export const TOP_SITES_SOURCE = \"TOP_SITES\";\nexport const TOP_SITES_CONTEXT_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\",\n  \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\", \"DeleteUrl\"];\n// minimum size necessary to show a rich icon instead of a screenshot\nexport const MIN_RICH_FAVICON_SIZE = 96;\n// minimum size necessary to show any icon in the top left corner with a screenshot\nexport const MIN_CORNER_FAVICON_SIZE = 16;\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {\n  MIN_CORNER_FAVICON_SIZE,\n  MIN_RICH_FAVICON_SIZE,\n  TOP_SITES_CONTEXT_MENU_OPTIONS,\n  TOP_SITES_SOURCE\n} from \"./TopSitesConstants\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\nimport {ScreenshotUtils} from \"content-src/lib/screenshot-utils\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\n\nexport class TopSiteLink extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {screenshotImage: null};\n    this.onDragEvent = this.onDragEvent.bind(this);\n  }\n\n  /*\n   * Helper to determine whether the drop zone should allow a drop. We only allow\n   * dropping top sites for now.\n   */\n  _allowDrop(e) {\n    return e.dataTransfer.types.includes(\"text/topsite-index\");\n  }\n\n  onDragEvent(event) {\n    switch (event.type) {\n      case \"click\":\n        // Stop any link clicks if we started any dragging\n        if (this.dragged) {\n          event.preventDefault();\n        }\n        break;\n      case \"dragstart\":\n        this.dragged = true;\n        event.dataTransfer.effectAllowed = \"move\";\n        event.dataTransfer.setData(\"text/topsite-index\", this.props.index);\n        event.target.blur();\n        this.props.onDragEvent(event, this.props.index, this.props.link, this.props.title);\n        break;\n      case \"dragend\":\n        this.props.onDragEvent(event);\n        break;\n      case \"dragenter\":\n      case \"dragover\":\n      case \"drop\":\n        if (this._allowDrop(event)) {\n          event.preventDefault();\n          this.props.onDragEvent(event, this.props.index);\n        }\n        break;\n      case \"mousedown\":\n        // Reset at the first mouse event of a potential drag\n        this.dragged = false;\n        break;\n    }\n  }\n\n  /**\n   * Helper to obtain the next state based on nextProps and prevState.\n   *\n   * NOTE: Rename this method to getDerivedStateFromProps when we update React\n   *       to >= 16.3. We will need to update tests as well. We cannot rename this\n   *       method to getDerivedStateFromProps now because there is a mismatch in\n   *       the React version that we are using for both testing and production.\n   *       (i.e. react-test-render => \"16.3.2\", react => \"16.2.0\").\n   *\n   * See https://github.com/airbnb/enzyme/blob/master/packages/enzyme-adapter-react-16/package.json#L43.\n   */\n  static getNextStateFromProps(nextProps, prevState) {\n    const {screenshot} = nextProps.link;\n    const imageInState = ScreenshotUtils.isRemoteImageLocal(prevState.screenshotImage, screenshot);\n    if (imageInState) {\n      return null;\n    }\n\n    // Since image was updated, attempt to revoke old image blob URL, if it exists.\n    ScreenshotUtils.maybeRevokeBlobObjectURL(prevState.screenshotImage);\n\n    return {screenshotImage: ScreenshotUtils.createLocalImageObject(screenshot)};\n  }\n\n  // NOTE: Remove this function when we update React to >= 16.3 since React will\n  //       call getDerivedStateFromProps automatically. We will also need to\n  //       rename getNextStateFromProps to getDerivedStateFromProps.\n  componentWillMount() {\n    const nextState = TopSiteLink.getNextStateFromProps(this.props, this.state);\n    if (nextState) {\n      this.setState(nextState);\n    }\n  }\n\n  // NOTE: Remove this function when we update React to >= 16.3 since React will\n  //       call getDerivedStateFromProps automatically. We will also need to\n  //       rename getNextStateFromProps to getDerivedStateFromProps.\n  componentWillReceiveProps(nextProps) {\n    const nextState = TopSiteLink.getNextStateFromProps(nextProps, this.state);\n    if (nextState) {\n      this.setState(nextState);\n    }\n  }\n\n  componentWillUnmount() {\n    ScreenshotUtils.maybeRevokeBlobObjectURL(this.state.screenshotImage);\n  }\n\n  render() {\n    const {children, className, defaultStyle, isDraggable, link, onClick, title} = this.props;\n    const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : \"\"}${link.isDragged ? \" dragged\" : \"\"}`;\n    const {tippyTopIcon, faviconSize} = link;\n    const [letterFallback] = title;\n    let imageClassName;\n    let imageStyle;\n    let showSmallFavicon = false;\n    let smallFaviconStyle;\n    let smallFaviconFallback;\n    let hasScreenshotImage = this.state.screenshotImage && this.state.screenshotImage.url;\n    if (defaultStyle) { // force no styles (letter fallback) even if the link has imagery\n      smallFaviconFallback = false;\n    } else if (link.customScreenshotURL) {\n      // assume high quality custom screenshot and use rich icon styles and class names\n      imageClassName = \"top-site-icon rich-icon\";\n      imageStyle = {\n        backgroundColor: link.backgroundColor,\n        backgroundImage: hasScreenshotImage ? `url(${this.state.screenshotImage.url})` : \"none\"\n      };\n    } else if (tippyTopIcon || faviconSize >= MIN_RICH_FAVICON_SIZE) {\n      // styles and class names for top sites with rich icons\n      imageClassName = \"top-site-icon rich-icon\";\n      imageStyle = {\n        backgroundColor: link.backgroundColor,\n        backgroundImage: `url(${tippyTopIcon || link.favicon})`\n      };\n    } else {\n      // styles and class names for top sites with screenshot + small icon in top left corner\n      imageClassName = `screenshot${hasScreenshotImage ? \" active\" : \"\"}`;\n      imageStyle = {backgroundImage: hasScreenshotImage ? `url(${this.state.screenshotImage.url})` : \"none\"};\n\n      // only show a favicon in top left if it's greater than 16x16\n      if (faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n        showSmallFavicon = true;\n        smallFaviconStyle = {backgroundImage:  `url(${link.favicon})`};\n      } else if (hasScreenshotImage) {\n        // Don't show a small favicon if there is no screenshot, because that\n        // would result in two fallback icons\n        showSmallFavicon = true;\n        smallFaviconFallback = true;\n      }\n    }\n    let draggableProps = {};\n    if (isDraggable) {\n      draggableProps = {\n        onClick: this.onDragEvent,\n        onDragEnd: this.onDragEvent,\n        onDragStart: this.onDragEvent,\n        onMouseDown: this.onDragEvent\n      };\n    }\n    return (<li className={topSiteOuterClassName} onDrop={this.onDragEvent} onDragOver={this.onDragEvent} onDragEnter={this.onDragEvent} onDragLeave={this.onDragEvent} {...draggableProps}>\n      <div className=\"top-site-inner\">\n         <a href={link.url} onClick={onClick}>\n            <div className=\"tile\" aria-hidden={true} data-fallback={letterFallback}>\n              <div className={imageClassName} style={imageStyle} />\n              {showSmallFavicon && <div\n                className=\"top-site-icon default-icon\"\n                data-fallback={smallFaviconFallback && letterFallback}\n                style={smallFaviconStyle} />}\n           </div>\n           <div className={`title ${link.isPinned ? \"pinned\" : \"\"}`}>\n             {link.isPinned && <div className=\"icon icon-pin-small\" />}\n              <span dir=\"auto\">{title}</span>\n           </div>\n         </a>\n         {children}\n      </div>\n    </li>);\n  }\n}\nTopSiteLink.defaultProps = {\n  title: \"\",\n  link: {},\n  isDraggable: true\n};\n\nexport class TopSite extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {showContextMenu: false};\n    this.onLinkClick = this.onLinkClick.bind(this);\n    this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n    this.onMenuUpdate = this.onMenuUpdate.bind(this);\n  }\n\n  /**\n   * Report to telemetry additional information about the item.\n   */\n  _getTelemetryInfo() {\n    const value = {icon_type: this.props.link.iconType};\n    // Filter out \"not_pinned\" type for being the default\n    if (this.props.link.isPinned) {\n      value.card_type = \"pinned\";\n    }\n    return {value};\n  }\n\n  userEvent(event) {\n    this.props.dispatch(ac.UserEvent(Object.assign({\n      event,\n      source: TOP_SITES_SOURCE,\n      action_position: this.props.index\n    }, this._getTelemetryInfo())));\n  }\n\n  onLinkClick(event) {\n    this.userEvent(\"CLICK\");\n\n    // Specially handle a top site link click for \"typed\" frecency bonus as\n    // specified as a property on the link.\n    event.preventDefault();\n    const {altKey, button, ctrlKey, metaKey, shiftKey} = event;\n    this.props.dispatch(ac.OnlyToMain({\n      type: at.OPEN_LINK,\n      data: Object.assign(this.props.link, {event: {altKey, button, ctrlKey, metaKey, shiftKey}})\n    }));\n  }\n\n  onMenuButtonClick(event) {\n    event.preventDefault();\n    this.props.onActivate(this.props.index);\n    this.setState({showContextMenu: true});\n  }\n\n  onMenuUpdate(showContextMenu) {\n    this.setState({showContextMenu});\n  }\n\n  render() {\n    const {props} = this;\n    const {link} = props;\n    const isContextMenuOpen = this.state.showContextMenu && props.activeIndex === props.index;\n    const title = link.label || link.hostname;\n    return (<TopSiteLink {...props} onClick={this.onLinkClick} onDragEvent={this.props.onDragEvent} className={`${props.className || \"\"}${isContextMenuOpen ? \" active\" : \"\"}`} title={title}>\n        <div>\n          <button className=\"context-menu-button icon\" onClick={this.onMenuButtonClick}>\n            <span className=\"sr-only\">\n              <FormattedMessage id=\"context_menu_button_sr\" values={{title}} />\n            </span>\n          </button>\n          {isContextMenuOpen &&\n            <LinkMenu\n              dispatch={props.dispatch}\n              index={props.index}\n              onUpdate={this.onMenuUpdate}\n              options={TOP_SITES_CONTEXT_MENU_OPTIONS}\n              site={link}\n              siteInfo={this._getTelemetryInfo()}\n              source={TOP_SITES_SOURCE} />\n          }\n        </div>\n    </TopSiteLink>);\n  }\n}\nTopSite.defaultProps = {\n  link: {},\n  onActivate() {}\n};\n\nexport class TopSitePlaceholder extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onEditButtonClick = this.onEditButtonClick.bind(this);\n  }\n\n  onEditButtonClick() {\n    this.props.dispatch(\n      {type: at.TOP_SITES_EDIT, data: {index: this.props.index}});\n  }\n\n  render() {\n    return (<TopSiteLink {...this.props} className={`placeholder ${this.props.className || \"\"}`} isDraggable={false}>\n      <button className=\"context-menu-button edit-button icon\"\n       title={this.props.intl.formatMessage({id: \"edit_topsites_edit_button\"})}\n       onClick={this.onEditButtonClick} />\n    </TopSiteLink>);\n  }\n}\n\nexport class _TopSiteList extends React.PureComponent {\n  static get DEFAULT_STATE() {\n    return {\n      activeIndex: null,\n      draggedIndex: null,\n      draggedSite: null,\n      draggedTitle: null,\n      topSitesPreview: null\n    };\n  }\n\n  constructor(props) {\n    super(props);\n    this.state = _TopSiteList.DEFAULT_STATE;\n    this.onDragEvent = this.onDragEvent.bind(this);\n    this.onActivate = this.onActivate.bind(this);\n  }\n\n  componentWillReceiveProps(nextProps) {\n    if (this.state.draggedSite) {\n      const prevTopSites = this.props.TopSites && this.props.TopSites.rows;\n      const newTopSites = nextProps.TopSites && nextProps.TopSites.rows;\n      if (prevTopSites && prevTopSites[this.state.draggedIndex] &&\n        prevTopSites[this.state.draggedIndex].url === this.state.draggedSite.url &&\n        (!newTopSites[this.state.draggedIndex] || newTopSites[this.state.draggedIndex].url !== this.state.draggedSite.url)) {\n        // We got the new order from the redux store via props. We can clear state now.\n        this.setState(_TopSiteList.DEFAULT_STATE);\n      }\n    }\n  }\n\n  userEvent(event, index) {\n    this.props.dispatch(ac.UserEvent({\n      event,\n      source: TOP_SITES_SOURCE,\n      action_position: index\n    }));\n  }\n\n  onDragEvent(event, index, link, title) {\n    switch (event.type) {\n      case \"dragstart\":\n        this.dropped = false;\n        this.setState({\n          draggedIndex: index,\n          draggedSite: link,\n          draggedTitle: title,\n          activeIndex: null\n        });\n        this.userEvent(\"DRAG\", index);\n        break;\n      case \"dragend\":\n        if (!this.dropped) {\n          // If there was no drop event, reset the state to the default.\n          this.setState(_TopSiteList.DEFAULT_STATE);\n        }\n        break;\n      case \"dragenter\":\n        if (index === this.state.draggedIndex) {\n          this.setState({topSitesPreview: null});\n        } else {\n          this.setState({topSitesPreview: this._makeTopSitesPreview(index)});\n        }\n        break;\n      case \"drop\":\n        if (index !== this.state.draggedIndex) {\n          this.dropped = true;\n          this.props.dispatch(ac.AlsoToMain({\n            type: at.TOP_SITES_INSERT,\n            data: {\n              site: {\n                url: this.state.draggedSite.url,\n                label: this.state.draggedTitle,\n                customScreenshotURL: this.state.draggedSite.customScreenshotURL\n              },\n              index,\n              draggedFromIndex: this.state.draggedIndex\n            }\n          }));\n          this.userEvent(\"DROP\", index);\n        }\n        break;\n    }\n  }\n\n  _getTopSites() {\n    // Make a copy of the sites to truncate or extend to desired length\n    let topSites = this.props.TopSites.rows.slice();\n    topSites.length = this.props.TopSitesRows * TOP_SITES_MAX_SITES_PER_ROW;\n    return topSites;\n  }\n\n  /**\n   * Make a preview of the topsites that will be the result of dropping the currently\n   * dragged site at the specified index.\n   */\n  _makeTopSitesPreview(index) {\n    const topSites = this._getTopSites();\n    topSites[this.state.draggedIndex] = null;\n    const pinnedOnly = topSites.map(site => ((site && site.isPinned) ? site : null));\n    const unpinned = topSites.filter(site => site && !site.isPinned);\n    const siteToInsert = Object.assign({}, this.state.draggedSite, {isPinned: true, isDragged: true});\n    if (!pinnedOnly[index]) {\n      pinnedOnly[index] = siteToInsert;\n    } else {\n      // Find the hole to shift the pinned site(s) towards. We shift towards the\n      // hole left by the site being dragged.\n      let holeIndex = index;\n      const indexStep = index > this.state.draggedIndex ? -1 : 1;\n      while (pinnedOnly[holeIndex]) {\n        holeIndex += indexStep;\n      }\n\n      // Shift towards the hole.\n      const shiftingStep = index > this.state.draggedIndex ? 1 : -1;\n      while (holeIndex !== index) {\n        const nextIndex = holeIndex + shiftingStep;\n        pinnedOnly[holeIndex] = pinnedOnly[nextIndex];\n        holeIndex = nextIndex;\n      }\n      pinnedOnly[index] = siteToInsert;\n    }\n\n    // Fill in the remaining holes with unpinned sites.\n    const preview = pinnedOnly;\n    for (let i = 0; i < preview.length; i++) {\n      if (!preview[i]) {\n        preview[i] = unpinned.shift() || null;\n      }\n    }\n\n    return preview;\n  }\n\n  onActivate(index) {\n    this.setState({activeIndex: index});\n  }\n\n  render() {\n    const {props} = this;\n    const topSites = this.state.topSitesPreview || this._getTopSites();\n    const topSitesUI = [];\n    const commonProps = {\n      onDragEvent: this.onDragEvent,\n      dispatch: props.dispatch,\n      intl: props.intl\n    };\n    // We assign a key to each placeholder slot. We need it to be independent\n    // of the slot index (i below) so that the keys used stay the same during\n    // drag and drop reordering and the underlying DOM nodes are reused.\n    // This mostly (only?) affects linux so be sure to test on linux before changing.\n    let holeIndex = 0;\n\n    // On narrow viewports, we only show 6 sites per row. We'll mark the rest as\n    // .hide-for-narrow to hide in CSS via @media query.\n    const maxNarrowVisibleIndex = props.TopSitesRows * 6;\n\n    for (let i = 0, l = topSites.length; i < l; i++) {\n      const link = topSites[i] && Object.assign({}, topSites[i], {iconType: this.props.topSiteIconType(topSites[i])});\n      const slotProps = {\n        key: link ? link.url : holeIndex++,\n        index: i\n      };\n      if (i >= maxNarrowVisibleIndex) {\n        slotProps.className = \"hide-for-narrow\";\n      }\n      topSitesUI.push(!link ? (\n        <TopSitePlaceholder\n          {...slotProps}\n          {...commonProps} />\n      ) : (\n        <TopSite\n          link={link}\n          activeIndex={this.state.activeIndex}\n          onActivate={this.onActivate}\n          {...slotProps}\n          {...commonProps} />\n      ));\n    }\n    return (<ul className={`top-sites-list${this.state.draggedSite ? \" dnd-active\" : \"\"}`}>\n      {topSitesUI}\n    </ul>);\n  }\n}\n\nexport const TopSiteList = injectIntl(_TopSiteList);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\n\nexport class _StartupOverlay extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onInputChange = this.onInputChange.bind(this);\n    this.onSubmit = this.onSubmit.bind(this);\n    this.clickSkip = this.clickSkip.bind(this);\n    this.initScene = this.initScene.bind(this);\n    this.removeOverlay = this.removeOverlay.bind(this);\n    this.onInputInvalid = this.onInputInvalid.bind(this);\n\n    this.state = {\n      emailInput: \"\",\n      overlayRemoved: false,\n      flowId: \"\",\n      flowBeginTime: 0\n    };\n    this.didFetch = false;\n  }\n\n  async componentWillUpdate() {\n    if (this.props.fxa_endpoint && !this.didFetch) {\n      try {\n        this.didFetch = true;\n        const response = await fetch(`${this.props.fxa_endpoint}/metrics-flow`);\n        if (response.status === 200) {\n          const {flowId, flowBeginTime} = await response.json();\n          this.setState({flowId, flowBeginTime});\n        }\n      } catch (error) {\n        this.props.dispatch(ac.OnlyToMain({type: at.TELEMETRY_UNDESIRED_EVENT, data: {value: \"FXA_METRICS_ERROR\"}}));\n      }\n    }\n  }\n\n  componentDidMount() {\n    this.initScene();\n  }\n\n  initScene() {\n    // Timeout to allow the scene to render once before attaching the attribute\n    // to trigger the animation.\n    setTimeout(() => {\n      this.setState({show: true});\n    }, 10);\n  }\n\n  removeOverlay() {\n    window.removeEventListener(\"visibilitychange\", this.removeOverlay);\n    document.body.classList.remove(\"hide-main\");\n    this.setState({show: false});\n    setTimeout(() => {\n      // Allow scrolling and fully remove overlay after animation finishes.\n      document.body.classList.remove(\"welcome\");\n      this.setState({overlayRemoved: true});\n    }, 400);\n  }\n\n  onInputChange(e) {\n    let error = e.target.previousSibling;\n    this.setState({emailInput: e.target.value});\n    error.classList.remove(\"active\");\n    e.target.classList.remove(\"invalid\");\n  }\n\n  onSubmit() {\n    this.props.dispatch(ac.UserEvent({event: \"SUBMIT_EMAIL\"}));\n    window.addEventListener(\"visibilitychange\", this.removeOverlay);\n  }\n\n  clickSkip() {\n    this.props.dispatch(ac.UserEvent({event: \"SKIPPED_SIGNIN\"}));\n    this.removeOverlay();\n  }\n\n  onInputInvalid(e) {\n    let error = e.target.previousSibling;\n    error.classList.add(\"active\");\n    e.target.classList.add(\"invalid\");\n    e.preventDefault(); // Override built-in form validation popup\n    e.target.focus();\n  }\n\n  render() {\n    // When skipping the onboarding tour we show AS but we are still on\n    // about:welcome, prop.isFirstrun is true and StartupOverlay is rendered\n    if (this.state.overlayRemoved) {\n      return null;\n    }\n\n    let termsLink = (<a href={`${this.props.fxa_endpoint}/legal/terms`} target=\"_blank\" rel=\"noopener noreferrer\"><FormattedMessage id=\"firstrun_terms_of_service\" /></a>);\n    let privacyLink = (<a href={`${this.props.fxa_endpoint}/legal/privacy`} target=\"_blank\" rel=\"noopener noreferrer\"><FormattedMessage id=\"firstrun_privacy_notice\" /></a>);\n\n    return (\n      <div className={`overlay-wrapper ${this.state.show ? \"show\" : \"\"}`}>\n        <div className=\"background\" />\n        <div className=\"firstrun-scene\">\n          <div className=\"fxaccounts-container\">\n            <div className=\"firstrun-left-divider\">\n              <h1 className=\"firstrun-title\"><FormattedMessage id=\"firstrun_title\" /></h1>\n              <p className=\"firstrun-content\"><FormattedMessage id=\"firstrun_content\" /></p>\n              <a className=\"firstrun-link\" href=\"https://www.mozilla.org/firefox/features/sync/\" target=\"_blank\" rel=\"noopener noreferrer\"><FormattedMessage id=\"firstrun_learn_more_link\" /></a>\n            </div>\n            <div className=\"firstrun-sign-in\">\n              <p className=\"form-header\"><FormattedMessage id=\"firstrun_form_header\" /><span className=\"sub-header\"><FormattedMessage id=\"firstrun_form_sub_header\" /></span></p>\n              <form method=\"get\" action={this.props.fxa_endpoint} target=\"_blank\" rel=\"noopener noreferrer\" onSubmit={this.onSubmit}>\n                <input name=\"service\" type=\"hidden\" value=\"sync\" />\n                <input name=\"action\" type=\"hidden\" value=\"email\" />\n                <input name=\"context\" type=\"hidden\" value=\"fx_desktop_v3\" />\n                <input name=\"entrypoint\" type=\"hidden\" value=\"activity-stream-firstrun\" />\n                <input name=\"utm_source\" type=\"hidden\" value=\"activity-stream\" />\n                <input name=\"utm_campaign\" type=\"hidden\" value=\"firstrun\" />\n                <input name=\"flow_id\" type=\"hidden\" value={this.state.flowId} />\n                <input name=\"flow_begin_time\" type=\"hidden\" value={this.state.flowBeginTime} />\n                <span className=\"error\">{this.props.intl.formatMessage({id: \"firstrun_invalid_input\"})}</span>\n                <input className=\"email-input\" name=\"email\" type=\"email\" required=\"true\" onInvalid={this.onInputInvalid} placeholder={this.props.intl.formatMessage({id: \"firstrun_email_input_placeholder\"})} onChange={this.onInputChange} />\n                <div className=\"extra-links\">\n                  <FormattedMessage\n                    id=\"firstrun_extra_legal_links\"\n                    values={{\n                      terms: termsLink,\n                      privacy: privacyLink\n                    }} />\n                </div>\n                <button className=\"continue-button\" type=\"submit\"><FormattedMessage id=\"firstrun_continue_to_login\" /></button>\n              </form>\n              <button className=\"skip-button\" disabled={!!this.state.emailInput} onClick={this.clickSkip}><FormattedMessage id=\"firstrun_skip_login\" /></button>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n\nconst getState = state => ({fxa_endpoint: state.Prefs.values.fxa_endpoint});\nexport const StartupOverlay = connect(getState)(injectIntl(_StartupOverlay));\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {perfService as perfSvc} from \"common/PerfService.jsm\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\nexport class DetectUserSessionStart {\n  constructor(store, options = {}) {\n    this._store = store;\n    // Overrides for testing\n    this.document = options.document || global.document;\n    this._perfService = options.perfService || perfSvc;\n    this._onVisibilityChange = this._onVisibilityChange.bind(this);\n  }\n\n  /**\n   * sendEventOrAddListener - Notify immediately if the page is already visible,\n   *                    or else set up a listener for when visibility changes.\n   *                    This is needed for accurate session tracking for telemetry,\n   *                    because tabs are pre-loaded.\n   */\n  sendEventOrAddListener() {\n    if (this.document.visibilityState === VISIBLE) {\n      // If the document is already visible, to the user, send a notification\n      // immediately that a session has started.\n      this._sendEvent();\n    } else {\n      // If the document is not visible, listen for when it does become visible.\n      this.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n\n  /**\n   * _sendEvent - Sends a message to the main process to indicate the current\n   *              tab is now visible to the user, includes the\n   *              visibility_event_rcvd_ts time in ms from the UNIX epoch.\n   */\n  _sendEvent() {\n    this._perfService.mark(\"visibility_event_rcvd_ts\");\n\n    try {\n      let visibility_event_rcvd_ts = this._perfService\n        .getMostRecentAbsMarkStartByName(\"visibility_event_rcvd_ts\");\n\n      this._store.dispatch(ac.AlsoToMain({\n        type: at.SAVE_SESSION_PERF_DATA,\n        data: {visibility_event_rcvd_ts}\n      }));\n    } catch (ex) {\n      // If this failed, it's likely because the `privacy.resistFingerprinting`\n      // pref is true.  We should at least not blow up.\n    }\n  }\n\n  /**\n   * _onVisibilityChange - If the visibility has changed to visible, sends a notification\n   *                      and removes the event listener. This should only be called once per tab.\n   */\n  _onVisibilityChange() {\n    if (this.document.visibilityState === VISIBLE) {\n      this._sendEvent();\n      this.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n}\n","/*  eslint no-magic-numbers: [0]  */\n\nconst MAX_PLACEABLES = 100;\n\nconst entryIdentifierRe = /-?[a-zA-Z][a-zA-Z0-9_-]*/y;\nconst identifierRe = /[a-zA-Z][a-zA-Z0-9_-]*/y;\nconst functionIdentifierRe = /^[A-Z][A-Z_?-]*$/;\n\n/**\n * The `Parser` class is responsible for parsing FTL resources.\n *\n * It's only public method is `getResource(source)` which takes an FTL string\n * and returns a two element Array with an Object of entries generated from the\n * source as the first element and an array of SyntaxError objects as the\n * second.\n *\n * This parser is optimized for runtime performance.\n *\n * There is an equivalent of this parser in syntax/parser which is\n * generating full AST which is useful for FTL tools.\n */\nclass RuntimeParser {\n  /**\n   * Parse FTL code into entries formattable by the MessageContext.\n   *\n   * Given a string of FTL syntax, return a map of entries that can be passed\n   * to MessageContext.format and a list of errors encountered during parsing.\n   *\n   * @param {String} string\n   * @returns {Array<Object, Array>}\n   */\n  getResource(string) {\n    this._source = string;\n    this._index = 0;\n    this._length = string.length;\n    this.entries = {};\n\n    const errors = [];\n\n    this.skipWS();\n    while (this._index < this._length) {\n      try {\n        this.getEntry();\n      } catch (e) {\n        if (e instanceof SyntaxError) {\n          errors.push(e);\n\n          this.skipToNextEntryStart();\n        } else {\n          throw e;\n        }\n      }\n      this.skipWS();\n    }\n\n    return [this.entries, errors];\n  }\n\n  /**\n   * Parse the source string from the current index as an FTL entry\n   * and add it to object's entries property.\n   *\n   * @private\n   */\n  getEntry() {\n    // The index here should either be at the beginning of the file\n    // or right after new line.\n    if (this._index !== 0 &&\n        this._source[this._index - 1] !== \"\\n\") {\n      throw this.error(`Expected an entry to start\n        at the beginning of the file or on a new line.`);\n    }\n\n    const ch = this._source[this._index];\n\n    // We don't care about comments or sections at runtime\n    if (ch === \"/\" ||\n      (ch === \"#\" &&\n        [\" \", \"#\", \"\\n\"].includes(this._source[this._index + 1]))) {\n      this.skipComment();\n      return;\n    }\n\n    if (ch === \"[\") {\n      this.skipSection();\n      return;\n    }\n\n    this.getMessage();\n  }\n\n  /**\n   * Skip the section entry from the current index.\n   *\n   * @private\n   */\n  skipSection() {\n    this._index += 1;\n    if (this._source[this._index] !== \"[\") {\n      throw this.error('Expected \"[[\" to open a section');\n    }\n\n    this._index += 1;\n\n    this.skipInlineWS();\n    this.getVariantName();\n    this.skipInlineWS();\n\n    if (this._source[this._index] !== \"]\" ||\n        this._source[this._index + 1] !== \"]\") {\n      throw this.error('Expected \"]]\" to close a section');\n    }\n\n    this._index += 2;\n  }\n\n  /**\n   * Parse the source string from the current index as an FTL message\n   * and add it to the entries property on the Parser.\n   *\n   * @private\n   */\n  getMessage() {\n    const id = this.getEntryIdentifier();\n\n    this.skipInlineWS();\n\n    if (this._source[this._index] === \"=\") {\n      this._index++;\n    }\n\n    this.skipInlineWS();\n\n    const val = this.getPattern();\n\n    if (id.startsWith(\"-\") && val === null) {\n      throw this.error(\"Expected term to have a value\");\n    }\n\n    let attrs = null;\n\n    if (this._source[this._index] === \" \") {\n      const lineStart = this._index;\n      this.skipInlineWS();\n\n      if (this._source[this._index] === \".\") {\n        this._index = lineStart;\n        attrs = this.getAttributes();\n      }\n    }\n\n    if (attrs === null && typeof val === \"string\") {\n      this.entries[id] = val;\n    } else {\n      if (val === null && attrs === null) {\n        throw this.error(\"Expected message to have a value or attributes\");\n      }\n\n      this.entries[id] = {};\n\n      if (val !== null) {\n        this.entries[id].val = val;\n      }\n\n      if (attrs !== null) {\n        this.entries[id].attrs = attrs;\n      }\n    }\n  }\n\n  /**\n   * Skip whitespace.\n   *\n   * @private\n   */\n  skipWS() {\n    let ch = this._source[this._index];\n    while (ch === \" \" || ch === \"\\n\" || ch === \"\\t\" || ch === \"\\r\") {\n      ch = this._source[++this._index];\n    }\n  }\n\n  /**\n   * Skip inline whitespace (space and \\t).\n   *\n   * @private\n   */\n  skipInlineWS() {\n    let ch = this._source[this._index];\n    while (ch === \" \" || ch === \"\\t\") {\n      ch = this._source[++this._index];\n    }\n  }\n\n  /**\n   * Skip blank lines.\n   *\n   * @private\n   */\n  skipBlankLines() {\n    while (true) {\n      const ptr = this._index;\n\n      this.skipInlineWS();\n\n      if (this._source[this._index] === \"\\n\") {\n        this._index += 1;\n      } else {\n        this._index = ptr;\n        break;\n      }\n    }\n  }\n\n  /**\n   * Get identifier using the provided regex.\n   *\n   * By default this will get identifiers of public messages, attributes and\n   * external arguments (without the $).\n   *\n   * @returns {String}\n   * @private\n   */\n  getIdentifier(re = identifierRe) {\n    re.lastIndex = this._index;\n    const result = re.exec(this._source);\n\n    if (result === null) {\n      this._index += 1;\n      throw this.error(`Expected an identifier [${re.toString()}]`);\n    }\n\n    this._index = re.lastIndex;\n    return result[0];\n  }\n\n  /**\n   * Get identifier of a Message or a Term (staring with a dash).\n   *\n   * @returns {String}\n   * @private\n   */\n  getEntryIdentifier() {\n    return this.getIdentifier(entryIdentifierRe);\n  }\n\n  /**\n   * Get Variant name.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getVariantName() {\n    let name = \"\";\n\n    const start = this._index;\n    let cc = this._source.charCodeAt(this._index);\n\n    if ((cc >= 97 && cc <= 122) || // a-z\n        (cc >= 65 && cc <= 90) || // A-Z\n        cc === 95 || cc === 32) { // _ <space>\n      cc = this._source.charCodeAt(++this._index);\n    } else {\n      throw this.error(\"Expected a keyword (starting with [a-zA-Z_])\");\n    }\n\n    while ((cc >= 97 && cc <= 122) || // a-z\n           (cc >= 65 && cc <= 90) || // A-Z\n           (cc >= 48 && cc <= 57) || // 0-9\n           cc === 95 || cc === 45 || cc === 32) { // _- <space>\n      cc = this._source.charCodeAt(++this._index);\n    }\n\n    // If we encountered the end of name, we want to test if the last\n    // collected character is a space.\n    // If it is, we will backtrack to the last non-space character because\n    // the keyword cannot end with a space character.\n    while (this._source.charCodeAt(this._index - 1) === 32) {\n      this._index--;\n    }\n\n    name += this._source.slice(start, this._index);\n\n    return { type: \"varname\", name };\n  }\n\n  /**\n   * Get simple string argument enclosed in `\"`.\n   *\n   * @returns {String}\n   * @private\n   */\n  getString() {\n    const start = this._index + 1;\n\n    while (++this._index < this._length) {\n      const ch = this._source[this._index];\n\n      if (ch === '\"') {\n        break;\n      }\n\n      if (ch === \"\\n\") {\n        throw this.error(\"Unterminated string expression\");\n      }\n    }\n\n    return this._source.substring(start, this._index++);\n  }\n\n  /**\n   * Parses a Message pattern.\n   * Message Pattern may be a simple string or an array of strings\n   * and placeable expressions.\n   *\n   * @returns {String|Array}\n   * @private\n   */\n  getPattern() {\n    // We're going to first try to see if the pattern is simple.\n    // If it is we can just look for the end of the line and read the string.\n    //\n    // Then, if either the line contains a placeable opening `{` or the\n    // next line starts an indentation, we switch to complex pattern.\n    const start = this._index;\n    let eol = this._source.indexOf(\"\\n\", this._index);\n\n    if (eol === -1) {\n      eol = this._length;\n    }\n\n    const firstLineContent = start !== eol ?\n      this._source.slice(start, eol) : null;\n\n    if (firstLineContent && firstLineContent.includes(\"{\")) {\n      return this.getComplexPattern();\n    }\n\n    this._index = eol + 1;\n\n    this.skipBlankLines();\n\n    if (this._source[this._index] !== \" \") {\n      // No indentation means we're done with this message. Callers should check\n      // if the return value here is null. It may be OK for messages, but not OK\n      // for terms, attributes and variants.\n      return firstLineContent;\n    }\n\n    const lineStart = this._index;\n\n    this.skipInlineWS();\n\n    if (this._source[this._index] === \".\") {\n      // The pattern is followed by an attribute. Rewind _index to the first\n      // column of the current line as expected by getAttributes.\n      this._index = lineStart;\n      return firstLineContent;\n    }\n\n    if (firstLineContent) {\n      // It's a multiline pattern which started on the same line as the\n      // identifier. Reparse the whole pattern to make sure we get all of it.\n      this._index = start;\n    }\n\n    return this.getComplexPattern();\n  }\n\n  /**\n   * Parses a complex Message pattern.\n   * This function is called by getPattern when the message is multiline,\n   * or contains escape chars or placeables.\n   * It does full parsing of complex patterns.\n   *\n   * @returns {Array}\n   * @private\n   */\n  /* eslint-disable complexity */\n  getComplexPattern() {\n    let buffer = \"\";\n    const content = [];\n    let placeables = 0;\n\n    let ch = this._source[this._index];\n\n    while (this._index < this._length) {\n      // This block handles multi-line strings combining strings separated\n      // by new line.\n      if (ch === \"\\n\") {\n        this._index++;\n\n        // We want to capture the start and end pointers\n        // around blank lines and add them to the buffer\n        // but only if the blank lines are in the middle\n        // of the string.\n        const blankLinesStart = this._index;\n        this.skipBlankLines();\n        const blankLinesEnd = this._index;\n\n\n        if (this._source[this._index] !== \" \") {\n          break;\n        }\n        this.skipInlineWS();\n\n        if (this._source[this._index] === \"}\" ||\n            this._source[this._index] === \"[\" ||\n            this._source[this._index] === \"*\" ||\n            this._source[this._index] === \".\") {\n          this._index = blankLinesEnd;\n          break;\n        }\n\n        buffer += this._source.substring(blankLinesStart, blankLinesEnd);\n\n        if (buffer.length || content.length) {\n          buffer += \"\\n\";\n        }\n        ch = this._source[this._index];\n        continue;\n      } else if (ch === \"\\\\\") {\n        const ch2 = this._source[this._index + 1];\n        if (ch2 === '\"' || ch2 === \"{\" || ch2 === \"\\\\\") {\n          ch = ch2;\n          this._index++;\n        }\n      } else if (ch === \"{\") {\n        // Push the buffer to content array right before placeable\n        if (buffer.length) {\n          content.push(buffer);\n        }\n        if (placeables > MAX_PLACEABLES - 1) {\n          throw this.error(\n            `Too many placeables, maximum allowed is ${MAX_PLACEABLES}`);\n        }\n        buffer = \"\";\n        content.push(this.getPlaceable());\n\n        this._index++;\n\n        ch = this._source[this._index];\n        placeables++;\n        continue;\n      }\n\n      if (ch) {\n        buffer += ch;\n      }\n      this._index++;\n      ch = this._source[this._index];\n    }\n\n    if (content.length === 0) {\n      return buffer.length ? buffer : null;\n    }\n\n    if (buffer.length) {\n      content.push(buffer);\n    }\n\n    return content;\n  }\n  /* eslint-enable complexity */\n\n  /**\n   * Parses a single placeable in a Message pattern and returns its\n   * expression.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getPlaceable() {\n    const start = ++this._index;\n\n    this.skipWS();\n\n    if (this._source[this._index] === \"*\" ||\n       (this._source[this._index] === \"[\" &&\n        this._source[this._index + 1] !== \"]\")) {\n      const variants = this.getVariants();\n\n      return {\n        type: \"sel\",\n        exp: null,\n        vars: variants[0],\n        def: variants[1]\n      };\n    }\n\n    // Rewind the index and only support in-line white-space now.\n    this._index = start;\n    this.skipInlineWS();\n\n    const selector = this.getSelectorExpression();\n\n    this.skipWS();\n\n    const ch = this._source[this._index];\n\n    if (ch === \"}\") {\n      if (selector.type === \"attr\" && selector.id.name.startsWith(\"-\")) {\n        throw this.error(\n          \"Attributes of private messages cannot be interpolated.\"\n        );\n      }\n\n      return selector;\n    }\n\n    if (ch !== \"-\" || this._source[this._index + 1] !== \">\") {\n      throw this.error('Expected \"}\" or \"->\"');\n    }\n\n    if (selector.type === \"ref\") {\n      throw this.error(\"Message references cannot be used as selectors.\");\n    }\n\n    if (selector.type === \"var\") {\n      throw this.error(\"Variants cannot be used as selectors.\");\n    }\n\n    if (selector.type === \"attr\" && !selector.id.name.startsWith(\"-\")) {\n      throw this.error(\n        \"Attributes of public messages cannot be used as selectors.\"\n      );\n    }\n\n\n    this._index += 2; // ->\n\n    this.skipInlineWS();\n\n    if (this._source[this._index] !== \"\\n\") {\n      throw this.error(\"Variants should be listed in a new line\");\n    }\n\n    this.skipWS();\n\n    const variants = this.getVariants();\n\n    if (variants[0].length === 0) {\n      throw this.error(\"Expected members for the select expression\");\n    }\n\n    return {\n      type: \"sel\",\n      exp: selector,\n      vars: variants[0],\n      def: variants[1]\n    };\n  }\n\n  /**\n   * Parses a selector expression.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getSelectorExpression() {\n    const literal = this.getLiteral();\n\n    if (literal.type !== \"ref\") {\n      return literal;\n    }\n\n    if (this._source[this._index] === \".\") {\n      this._index++;\n\n      const name = this.getIdentifier();\n      this._index++;\n      return {\n        type: \"attr\",\n        id: literal,\n        name\n      };\n    }\n\n    if (this._source[this._index] === \"[\") {\n      this._index++;\n\n      const key = this.getVariantKey();\n      this._index++;\n      return {\n        type: \"var\",\n        id: literal,\n        key\n      };\n    }\n\n    if (this._source[this._index] === \"(\") {\n      this._index++;\n      const args = this.getCallArgs();\n\n      if (!functionIdentifierRe.test(literal.name)) {\n        throw this.error(\"Function names must be all upper-case\");\n      }\n\n      this._index++;\n\n      literal.type = \"fun\";\n\n      return {\n        type: \"call\",\n        fun: literal,\n        args\n      };\n    }\n\n    return literal;\n  }\n\n  /**\n   * Parses call arguments for a CallExpression.\n   *\n   * @returns {Array}\n   * @private\n   */\n  getCallArgs() {\n    const args = [];\n\n    while (this._index < this._length) {\n      this.skipInlineWS();\n\n      if (this._source[this._index] === \")\") {\n        return args;\n      }\n\n      const exp = this.getSelectorExpression();\n\n      // MessageReference in this place may be an entity reference, like:\n      // `call(foo)`, or, if it's followed by `:` it will be a key-value pair.\n      if (exp.type !== \"ref\") {\n        args.push(exp);\n      } else {\n        this.skipInlineWS();\n\n        if (this._source[this._index] === \":\") {\n          this._index++;\n          this.skipInlineWS();\n\n          const val = this.getSelectorExpression();\n\n          // If the expression returned as a value of the argument\n          // is not a quote delimited string or number, throw.\n          //\n          // We don't have to check here if the pattern is quote delimited\n          // because that's the only type of string allowed in expressions.\n          if (typeof val === \"string\" ||\n              Array.isArray(val) ||\n              val.type === \"num\") {\n            args.push({\n              type: \"narg\",\n              name: exp.name,\n              val\n            });\n          } else {\n            this._index = this._source.lastIndexOf(\":\", this._index) + 1;\n            throw this.error(\n              \"Expected string in quotes, number.\");\n          }\n\n        } else {\n          args.push(exp);\n        }\n      }\n\n      this.skipInlineWS();\n\n      if (this._source[this._index] === \")\") {\n        break;\n      } else if (this._source[this._index] === \",\") {\n        this._index++;\n      } else {\n        throw this.error('Expected \",\" or \")\"');\n      }\n    }\n\n    return args;\n  }\n\n  /**\n   * Parses an FTL Number.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getNumber() {\n    let num = \"\";\n    let cc = this._source.charCodeAt(this._index);\n\n    // The number literal may start with negative sign `-`.\n    if (cc === 45) {\n      num += \"-\";\n      cc = this._source.charCodeAt(++this._index);\n    }\n\n    // next, we expect at least one digit\n    if (cc < 48 || cc > 57) {\n      throw this.error(`Unknown literal \"${num}\"`);\n    }\n\n    // followed by potentially more digits\n    while (cc >= 48 && cc <= 57) {\n      num += this._source[this._index++];\n      cc = this._source.charCodeAt(this._index);\n    }\n\n    // followed by an optional decimal separator `.`\n    if (cc === 46) {\n      num += this._source[this._index++];\n      cc = this._source.charCodeAt(this._index);\n\n      // followed by at least one digit\n      if (cc < 48 || cc > 57) {\n        throw this.error(`Unknown literal \"${num}\"`);\n      }\n\n      // and optionally more digits\n      while (cc >= 48 && cc <= 57) {\n        num += this._source[this._index++];\n        cc = this._source.charCodeAt(this._index);\n      }\n    }\n\n    return {\n      type: \"num\",\n      val: num\n    };\n  }\n\n  /**\n   * Parses a list of Message attributes.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getAttributes() {\n    const attrs = {};\n\n    while (this._index < this._length) {\n      if (this._source[this._index] !== \" \") {\n        break;\n      }\n      this.skipInlineWS();\n\n      if (this._source[this._index] !== \".\") {\n        break;\n      }\n      this._index++;\n\n      const key = this.getIdentifier();\n\n      this.skipInlineWS();\n\n      if (this._source[this._index] !== \"=\") {\n        throw this.error('Expected \"=\"');\n      }\n      this._index++;\n\n      this.skipInlineWS();\n\n      const val = this.getPattern();\n\n      if (val === null) {\n        throw this.error(\"Expected attribute to have a value\");\n      }\n\n      if (typeof val === \"string\") {\n        attrs[key] = val;\n      } else {\n        attrs[key] = {\n          val\n        };\n      }\n\n      this.skipBlankLines();\n    }\n\n    return attrs;\n  }\n\n  /**\n   * Parses a list of Selector variants.\n   *\n   * @returns {Array}\n   * @private\n   */\n  getVariants() {\n    const variants = [];\n    let index = 0;\n    let defaultIndex;\n\n    while (this._index < this._length) {\n      const ch = this._source[this._index];\n\n      if ((ch !== \"[\" || this._source[this._index + 1] === \"[\") &&\n          ch !== \"*\") {\n        break;\n      }\n      if (ch === \"*\") {\n        this._index++;\n        defaultIndex = index;\n      }\n\n      if (this._source[this._index] !== \"[\") {\n        throw this.error('Expected \"[\"');\n      }\n\n      this._index++;\n\n      const key = this.getVariantKey();\n\n      this.skipInlineWS();\n\n      const val = this.getPattern();\n\n      if (val === null) {\n        throw this.error(\"Expected variant to have a value\");\n      }\n\n      variants[index++] = {key, val};\n\n      this.skipWS();\n    }\n\n    return [variants, defaultIndex];\n  }\n\n  /**\n   * Parses a Variant key.\n   *\n   * @returns {String}\n   * @private\n   */\n  getVariantKey() {\n    // VariantKey may be a Keyword or Number\n\n    const cc = this._source.charCodeAt(this._index);\n    let literal;\n\n    if ((cc >= 48 && cc <= 57) || cc === 45) {\n      literal = this.getNumber();\n    } else {\n      literal = this.getVariantName();\n    }\n\n    if (this._source[this._index] !== \"]\") {\n      throw this.error('Expected \"]\"');\n    }\n\n    this._index++;\n    return literal;\n  }\n\n  /**\n   * Parses an FTL literal.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getLiteral() {\n    const cc0 = this._source.charCodeAt(this._index);\n\n    if (cc0 === 36) { // $\n      this._index++;\n      return {\n        type: \"ext\",\n        name: this.getIdentifier()\n      };\n    }\n\n    const cc1 = cc0 === 45 // -\n      // Peek at the next character after the dash.\n      ? this._source.charCodeAt(this._index + 1)\n      // Or keep using the character at the current index.\n      : cc0;\n\n    if ((cc1 >= 97 && cc1 <= 122) || // a-z\n        (cc1 >= 65 && cc1 <= 90)) { // A-Z\n      return {\n        type: \"ref\",\n        name: this.getEntryIdentifier()\n      };\n    }\n\n    if ((cc1 >= 48 && cc1 <= 57)) { // 0-9\n      return this.getNumber();\n    }\n\n    if (cc0 === 34) { // \"\n      return this.getString();\n    }\n\n    throw this.error(\"Expected literal\");\n  }\n\n  /**\n   * Skips an FTL comment.\n   *\n   * @private\n   */\n  skipComment() {\n    // At runtime, we don't care about comments so we just have\n    // to parse them properly and skip their content.\n    let eol = this._source.indexOf(\"\\n\", this._index);\n\n    while (eol !== -1 &&\n      ((this._source[eol + 1] === \"/\" && this._source[eol + 2] === \"/\") ||\n       (this._source[eol + 1] === \"#\" &&\n         [\" \", \"#\"].includes(this._source[eol + 2])))) {\n      this._index = eol + 3;\n\n      eol = this._source.indexOf(\"\\n\", this._index);\n\n      if (eol === -1) {\n        break;\n      }\n    }\n\n    if (eol === -1) {\n      this._index = this._length;\n    } else {\n      this._index = eol + 1;\n    }\n  }\n\n  /**\n   * Creates a new SyntaxError object with a given message.\n   *\n   * @param {String} message\n   * @returns {Object}\n   * @private\n   */\n  error(message) {\n    return new SyntaxError(message);\n  }\n\n  /**\n   * Skips to the beginning of a next entry after the current position.\n   * This is used to mark the boundary of junk entry in case of error,\n   * and recover from the returned position.\n   *\n   * @private\n   */\n  skipToNextEntryStart() {\n    let start = this._index;\n\n    while (true) {\n      if (start === 0 || this._source[start - 1] === \"\\n\") {\n        const cc = this._source.charCodeAt(start);\n\n        if ((cc >= 97 && cc <= 122) || // a-z\n            (cc >= 65 && cc <= 90) || // A-Z\n             cc === 47 || cc === 91) { // /[\n          this._index = start;\n          return;\n        }\n      }\n\n      start = this._source.indexOf(\"\\n\", start);\n\n      if (start === -1) {\n        this._index = this._length;\n        return;\n      }\n      start++;\n    }\n  }\n}\n\n/**\n * Parses an FTL string using RuntimeParser and returns the generated\n * object with entries and a list of errors.\n *\n * @param {String} string\n * @returns {Array<Object, Array>}\n */\nexport default function parse(string) {\n  const parser = new RuntimeParser();\n  return parser.getResource(string);\n}\n","/* global Intl */\n\n/**\n * The `FluentType` class is the base of Fluent's type system.\n *\n * Fluent types wrap JavaScript values and store additional configuration for\n * them, which can then be used in the `toString` method together with a proper\n * `Intl` formatter.\n */\nexport class FluentType {\n\n  /**\n   * Create an `FluentType` instance.\n   *\n   * @param   {Any}    value - JavaScript value to wrap.\n   * @param   {Object} opts  - Configuration.\n   * @returns {FluentType}\n   */\n  constructor(value, opts) {\n    this.value = value;\n    this.opts = opts;\n  }\n\n  /**\n   * Unwrap the raw value stored by this `FluentType`.\n   *\n   * @returns {Any}\n   */\n  valueOf() {\n    return this.value;\n  }\n\n  /**\n   * Format this instance of `FluentType` to a string.\n   *\n   * Formatted values are suitable for use outside of the `MessageContext`.\n   * This method can use `Intl` formatters memoized by the `MessageContext`\n   * instance passed as an argument.\n   *\n   * @param   {MessageContext} [ctx]\n   * @returns {string}\n   */\n  toString() {\n    throw new Error(\"Subclasses of FluentType must implement toString.\");\n  }\n}\n\nexport class FluentNone extends FluentType {\n  toString() {\n    return this.value || \"???\";\n  }\n}\n\nexport class FluentNumber extends FluentType {\n  constructor(value, opts) {\n    super(parseFloat(value), opts);\n  }\n\n  toString(ctx) {\n    try {\n      const nf = ctx._memoizeIntlObject(\n        Intl.NumberFormat, this.opts\n      );\n      return nf.format(this.value);\n    } catch (e) {\n      // XXX Report the error.\n      return this.value;\n    }\n  }\n\n  /**\n   * Compare the object with another instance of a FluentType.\n   *\n   * @param   {MessageContext} ctx\n   * @param   {FluentType}     other\n   * @returns {bool}\n   */\n  match(ctx, other) {\n    if (other instanceof FluentNumber) {\n      return this.value === other.value;\n    }\n    return false;\n  }\n}\n\nexport class FluentDateTime extends FluentType {\n  constructor(value, opts) {\n    super(new Date(value), opts);\n  }\n\n  toString(ctx) {\n    try {\n      const dtf = ctx._memoizeIntlObject(\n        Intl.DateTimeFormat, this.opts\n      );\n      return dtf.format(this.value);\n    } catch (e) {\n      // XXX Report the error.\n      return this.value;\n    }\n  }\n}\n\nexport class FluentSymbol extends FluentType {\n  toString() {\n    return this.value;\n  }\n\n  /**\n   * Compare the object with another instance of a FluentType.\n   *\n   * @param   {MessageContext} ctx\n   * @param   {FluentType}     other\n   * @returns {bool}\n   */\n  match(ctx, other) {\n    if (other instanceof FluentSymbol) {\n      return this.value === other.value;\n    } else if (typeof other === \"string\") {\n      return this.value === other;\n    } else if (other instanceof FluentNumber) {\n      const pr = ctx._memoizeIntlObject(\n        Intl.PluralRules, other.opts\n      );\n      return this.value === pr.select(other.value);\n    }\n    return false;\n  }\n}\n","/**\n * @overview\n *\n * The FTL resolver ships with a number of functions built-in.\n *\n * Each function take two arguments:\n *   - args - an array of positional args\n *   - opts - an object of key-value args\n *\n * Arguments to functions are guaranteed to already be instances of\n * `FluentType`.  Functions must return `FluentType` objects as well.\n */\n\nimport { FluentNumber, FluentDateTime } from \"./types\";\n\nexport default {\n  \"NUMBER\": ([arg], opts) =>\n    new FluentNumber(arg.valueOf(), merge(arg.opts, opts)),\n  \"DATETIME\": ([arg], opts) =>\n    new FluentDateTime(arg.valueOf(), merge(arg.opts, opts)),\n};\n\nfunction merge(argopts, opts) {\n  return Object.assign({}, argopts, values(opts));\n}\n\nfunction values(opts) {\n  const unwrapped = {};\n  for (const [name, opt] of Object.entries(opts)) {\n    unwrapped[name] = opt.valueOf();\n  }\n  return unwrapped;\n}\n","/**\n * @overview\n *\n * The role of the Fluent resolver is to format a translation object to an\n * instance of `FluentType` or an array of instances.\n *\n * Translations can contain references to other messages or external arguments,\n * conditional logic in form of select expressions, traits which describe their\n * grammatical features, and can use Fluent builtins which make use of the\n * `Intl` formatters to format numbers, dates, lists and more into the\n * context's language.  See the documentation of the Fluent syntax for more\n * information.\n *\n * In case of errors the resolver will try to salvage as much of the\n * translation as possible.  In rare situations where the resolver didn't know\n * how to recover from an error it will return an instance of `FluentNone`.\n *\n * `MessageReference`, `VariantExpression`, `AttributeExpression` and\n * `SelectExpression` resolve to raw Runtime Entries objects and the result of\n * the resolution needs to be passed into `Type` to get their real value.\n * This is useful for composing expressions.  Consider:\n *\n *     brand-name[nominative]\n *\n * which is a `VariantExpression` with properties `id: MessageReference` and\n * `key: Keyword`.  If `MessageReference` was resolved eagerly, it would\n * instantly resolve to the value of the `brand-name` message.  Instead, we\n * want to get the message object and look for its `nominative` variant.\n *\n * All other expressions (except for `FunctionReference` which is only used in\n * `CallExpression`) resolve to an instance of `FluentType`.  The caller should\n * use the `toString` method to convert the instance to a native value.\n *\n *\n * All functions in this file pass around a special object called `env`.\n * This object stores a set of elements used by all resolve functions:\n *\n *  * {MessageContext} ctx\n *      context for which the given resolution is happening\n *  * {Object} args\n *      list of developer provided arguments that can be used\n *  * {Array} errors\n *      list of errors collected while resolving\n *  * {WeakSet} dirty\n *      Set of patterns already encountered during this resolution.\n *      This is used to prevent cyclic resolutions.\n */\n\n\nimport { FluentType, FluentNone, FluentNumber, FluentDateTime, FluentSymbol }\n  from \"./types\";\nimport builtins from \"./builtins\";\n\n// Prevent expansion of too long placeables.\nconst MAX_PLACEABLE_LENGTH = 2500;\n\n// Unicode bidi isolation characters.\nconst FSI = \"\\u2068\";\nconst PDI = \"\\u2069\";\n\n\n/**\n * Helper for choosing the default value from a set of members.\n *\n * Used in SelectExpressions and Type.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} members\n *    Hash map of variants from which the default value is to be selected.\n * @param   {Number} def\n *    The index of the default variant.\n * @returns {FluentType}\n * @private\n */\nfunction DefaultMember(env, members, def) {\n  if (members[def]) {\n    return members[def];\n  }\n\n  const { errors } = env;\n  errors.push(new RangeError(\"No default\"));\n  return new FluentNone();\n}\n\n\n/**\n * Resolve a reference to another message.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} id\n *    The identifier of the message to be resolved.\n * @param   {String} id.name\n *    The name of the identifier.\n * @returns {FluentType}\n * @private\n */\nfunction MessageReference(env, {name}) {\n  const { ctx, errors } = env;\n  const message = name.startsWith(\"-\")\n    ? ctx._terms.get(name)\n    : ctx._messages.get(name);\n\n  if (!message) {\n    const err = name.startsWith(\"-\")\n      ? new ReferenceError(`Unknown term: ${name}`)\n      : new ReferenceError(`Unknown message: ${name}`);\n    errors.push(err);\n    return new FluentNone(name);\n  }\n\n  return message;\n}\n\n/**\n * Resolve a variant expression to the variant object.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {Object} expr.id\n *    An Identifier of a message for which the variant is resolved.\n * @param   {Object} expr.id.name\n *    Name a message for which the variant is resolved.\n * @param   {Object} expr.key\n *    Variant key to be resolved.\n * @returns {FluentType}\n * @private\n */\nfunction VariantExpression(env, {id, key}) {\n  const message = MessageReference(env, id);\n  if (message instanceof FluentNone) {\n    return message;\n  }\n\n  const { ctx, errors } = env;\n  const keyword = Type(env, key);\n\n  function isVariantList(node) {\n    return Array.isArray(node) &&\n      node[0].type === \"sel\" &&\n      node[0].exp === null;\n  }\n\n  if (isVariantList(message.val)) {\n    // Match the specified key against keys of each variant, in order.\n    for (const variant of message.val[0].vars) {\n      const variantKey = Type(env, variant.key);\n      if (keyword.match(ctx, variantKey)) {\n        return variant;\n      }\n    }\n  }\n\n  errors.push(new ReferenceError(`Unknown variant: ${keyword.toString(ctx)}`));\n  return Type(env, message);\n}\n\n\n/**\n * Resolve an attribute expression to the attribute object.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {String} expr.id\n *    An ID of a message for which the attribute is resolved.\n * @param   {String} expr.name\n *    Name of the attribute to be resolved.\n * @returns {FluentType}\n * @private\n */\nfunction AttributeExpression(env, {id, name}) {\n  const message = MessageReference(env, id);\n  if (message instanceof FluentNone) {\n    return message;\n  }\n\n  if (message.attrs) {\n    // Match the specified name against keys of each attribute.\n    for (const attrName in message.attrs) {\n      if (name === attrName) {\n        return message.attrs[name];\n      }\n    }\n  }\n\n  const { errors } = env;\n  errors.push(new ReferenceError(`Unknown attribute: ${name}`));\n  return Type(env, message);\n}\n\n/**\n * Resolve a select expression to the member object.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {String} expr.exp\n *    Selector expression\n * @param   {Array} expr.vars\n *    List of variants for the select expression.\n * @param   {Number} expr.def\n *    Index of the default variant.\n * @returns {FluentType}\n * @private\n */\nfunction SelectExpression(env, {exp, vars, def}) {\n  if (exp === null) {\n    return DefaultMember(env, vars, def);\n  }\n\n  const selector = Type(env, exp);\n  if (selector instanceof FluentNone) {\n    return DefaultMember(env, vars, def);\n  }\n\n  // Match the selector against keys of each variant, in order.\n  for (const variant of vars) {\n    const key = Type(env, variant.key);\n    const keyCanMatch =\n      key instanceof FluentNumber || key instanceof FluentSymbol;\n\n    if (!keyCanMatch) {\n      continue;\n    }\n\n    const { ctx } = env;\n\n    if (key.match(ctx, selector)) {\n      return variant;\n    }\n  }\n\n  return DefaultMember(env, vars, def);\n}\n\n\n/**\n * Resolve expression to a Fluent type.\n *\n * JavaScript strings are a special case.  Since they natively have the\n * `toString` method they can be used as if they were a Fluent type without\n * paying the cost of creating a instance of one.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression object to be resolved into a Fluent type.\n * @returns {FluentType}\n * @private\n */\nfunction Type(env, expr) {\n  // A fast-path for strings which are the most common case, and for\n  // `FluentNone` which doesn't require any additional logic.\n  if (typeof expr === \"string\" || expr instanceof FluentNone) {\n    return expr;\n  }\n\n  // The Runtime AST (Entries) encodes patterns (complex strings with\n  // placeables) as Arrays.\n  if (Array.isArray(expr)) {\n    return Pattern(env, expr);\n  }\n\n\n  switch (expr.type) {\n    case \"varname\":\n      return new FluentSymbol(expr.name);\n    case \"num\":\n      return new FluentNumber(expr.val);\n    case \"ext\":\n      return ExternalArgument(env, expr);\n    case \"fun\":\n      return FunctionReference(env, expr);\n    case \"call\":\n      return CallExpression(env, expr);\n    case \"ref\": {\n      const message = MessageReference(env, expr);\n      return Type(env, message);\n    }\n    case \"attr\": {\n      const attr = AttributeExpression(env, expr);\n      return Type(env, attr);\n    }\n    case \"var\": {\n      const variant = VariantExpression(env, expr);\n      return Type(env, variant);\n    }\n    case \"sel\": {\n      const member = SelectExpression(env, expr);\n      return Type(env, member);\n    }\n    case undefined: {\n      // If it's a node with a value, resolve the value.\n      if (expr.val !== null && expr.val !== undefined) {\n        return Type(env, expr.val);\n      }\n\n      const { errors } = env;\n      errors.push(new RangeError(\"No value\"));\n      return new FluentNone();\n    }\n    default:\n      return new FluentNone();\n  }\n}\n\n/**\n * Resolve a reference to an external argument.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {String} expr.name\n *    Name of an argument to be returned.\n * @returns {FluentType}\n * @private\n */\nfunction ExternalArgument(env, {name}) {\n  const { args, errors } = env;\n\n  if (!args || !args.hasOwnProperty(name)) {\n    errors.push(new ReferenceError(`Unknown external: ${name}`));\n    return new FluentNone(name);\n  }\n\n  const arg = args[name];\n\n  // Return early if the argument already is an instance of FluentType.\n  if (arg instanceof FluentType) {\n    return arg;\n  }\n\n  // Convert the argument to a Fluent type.\n  switch (typeof arg) {\n    case \"string\":\n      return arg;\n    case \"number\":\n      return new FluentNumber(arg);\n    case \"object\":\n      if (arg instanceof Date) {\n        return new FluentDateTime(arg);\n      }\n    default:\n      errors.push(\n        new TypeError(`Unsupported external type: ${name}, ${typeof arg}`)\n      );\n      return new FluentNone(name);\n  }\n}\n\n/**\n * Resolve a reference to a function.\n *\n * @param   {Object}  env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {String} expr.name\n *    Name of the function to be returned.\n * @returns {Function}\n * @private\n */\nfunction FunctionReference(env, {name}) {\n  // Some functions are built-in.  Others may be provided by the runtime via\n  // the `MessageContext` constructor.\n  const { ctx: { _functions }, errors } = env;\n  const func = _functions[name] || builtins[name];\n\n  if (!func) {\n    errors.push(new ReferenceError(`Unknown function: ${name}()`));\n    return new FluentNone(`${name}()`);\n  }\n\n  if (typeof func !== \"function\") {\n    errors.push(new TypeError(`Function ${name}() is not callable`));\n    return new FluentNone(`${name}()`);\n  }\n\n  return func;\n}\n\n/**\n * Resolve a call to a Function with positional and key-value arguments.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {Object} expr.fun\n *    FTL Function object.\n * @param   {Array} expr.args\n *    FTL Function argument list.\n * @returns {FluentType}\n * @private\n */\nfunction CallExpression(env, {fun, args}) {\n  const callee = FunctionReference(env, fun);\n\n  if (callee instanceof FluentNone) {\n    return callee;\n  }\n\n  const posargs = [];\n  const keyargs = {};\n\n  for (const arg of args) {\n    if (arg.type === \"narg\") {\n      keyargs[arg.name] = Type(env, arg.val);\n    } else {\n      posargs.push(Type(env, arg));\n    }\n  }\n\n  try {\n    return callee(posargs, keyargs);\n  } catch (e) {\n    // XXX Report errors.\n    return new FluentNone();\n  }\n}\n\n/**\n * Resolve a pattern (a complex string with placeables).\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Array} ptn\n *    Array of pattern elements.\n * @returns {Array}\n * @private\n */\nfunction Pattern(env, ptn) {\n  const { ctx, dirty, errors } = env;\n\n  if (dirty.has(ptn)) {\n    errors.push(new RangeError(\"Cyclic reference\"));\n    return new FluentNone();\n  }\n\n  // Tag the pattern as dirty for the purpose of the current resolution.\n  dirty.add(ptn);\n  const result = [];\n\n  // Wrap interpolations with Directional Isolate Formatting characters\n  // only when the pattern has more than one element.\n  const useIsolating = ctx._useIsolating && ptn.length > 1;\n\n  for (const elem of ptn) {\n    if (typeof elem === \"string\") {\n      result.push(elem);\n      continue;\n    }\n\n    const part = Type(env, elem).toString(ctx);\n\n    if (useIsolating) {\n      result.push(FSI);\n    }\n\n    if (part.length > MAX_PLACEABLE_LENGTH) {\n      errors.push(\n        new RangeError(\n          \"Too many characters in placeable \" +\n          `(${part.length}, max allowed is ${MAX_PLACEABLE_LENGTH})`\n        )\n      );\n      result.push(part.slice(MAX_PLACEABLE_LENGTH));\n    } else {\n      result.push(part);\n    }\n\n    if (useIsolating) {\n      result.push(PDI);\n    }\n  }\n\n  dirty.delete(ptn);\n  return result.join(\"\");\n}\n\n/**\n * Format a translation into a string.\n *\n * @param   {MessageContext} ctx\n *    A MessageContext instance which will be used to resolve the\n *    contextual information of the message.\n * @param   {Object}         args\n *    List of arguments provided by the developer which can be accessed\n *    from the message.\n * @param   {Object}         message\n *    An object with the Message to be resolved.\n * @param   {Array}          errors\n *    An error array that any encountered errors will be appended to.\n * @returns {FluentType}\n */\nexport default function resolve(ctx, args, message, errors = []) {\n  const env = {\n    ctx, args, errors, dirty: new WeakSet()\n  };\n  return Type(env, message).toString(ctx);\n}\n","import resolve from \"./resolver\";\nimport parse from \"./parser\";\n\n/**\n * Message contexts are single-language stores of translations.  They are\n * responsible for parsing translation resources in the Fluent syntax and can\n * format translation units (entities) to strings.\n *\n * Always use `MessageContext.format` to retrieve translation units from\n * a context.  Translations can contain references to other entities or\n * external arguments, conditional logic in form of select expressions, traits\n * which describe their grammatical features, and can use Fluent builtins which\n * make use of the `Intl` formatters to format numbers, dates, lists and more\n * into the context's language.  See the documentation of the Fluent syntax for\n * more information.\n */\nexport class MessageContext {\n\n  /**\n   * Create an instance of `MessageContext`.\n   *\n   * The `locales` argument is used to instantiate `Intl` formatters used by\n   * translations.  The `options` object can be used to configure the context.\n   *\n   * Examples:\n   *\n   *     const ctx = new MessageContext(locales);\n   *\n   *     const ctx = new MessageContext(locales, { useIsolating: false });\n   *\n   *     const ctx = new MessageContext(locales, {\n   *       useIsolating: true,\n   *       functions: {\n   *         NODE_ENV: () => process.env.NODE_ENV\n   *       }\n   *     });\n   *\n   * Available options:\n   *\n   *   - `functions` - an object of additional functions available to\n   *                   translations as builtins.\n   *\n   *   - `useIsolating` - boolean specifying whether to use Unicode isolation\n   *                    marks (FSI, PDI) for bidi interpolations.\n   *\n   * @param   {string|Array<string>} locales - Locale or locales of the context\n   * @param   {Object} [options]\n   * @returns {MessageContext}\n   */\n  constructor(locales, { functions = {}, useIsolating = true } = {}) {\n    this.locales = Array.isArray(locales) ? locales : [locales];\n\n    this._terms = new Map();\n    this._messages = new Map();\n    this._functions = functions;\n    this._useIsolating = useIsolating;\n    this._intls = new WeakMap();\n  }\n\n  /*\n   * Return an iterator over public `[id, message]` pairs.\n   *\n   * @returns {Iterator}\n   */\n  get messages() {\n    return this._messages[Symbol.iterator]();\n  }\n\n  /*\n   * Check if a message is present in the context.\n   *\n   * @param {string} id - The identifier of the message to check.\n   * @returns {bool}\n   */\n  hasMessage(id) {\n    return this._messages.has(id);\n  }\n\n  /*\n   * Return the internal representation of a message.\n   *\n   * The internal representation should only be used as an argument to\n   * `MessageContext.format`.\n   *\n   * @param {string} id - The identifier of the message to check.\n   * @returns {Any}\n   */\n  getMessage(id) {\n    return this._messages.get(id);\n  }\n\n  /**\n   * Add a translation resource to the context.\n   *\n   * The translation resource must use the Fluent syntax.  It will be parsed by\n   * the context and each translation unit (message) will be available in the\n   * context by its identifier.\n   *\n   *     ctx.addMessages('foo = Foo');\n   *     ctx.getMessage('foo');\n   *\n   *     // Returns a raw representation of the 'foo' message.\n   *\n   * Parsed entities should be formatted with the `format` method in case they\n   * contain logic (references, select expressions etc.).\n   *\n   * @param   {string} source - Text resource with translations.\n   * @returns {Array<Error>}\n   */\n  addMessages(source) {\n    const [entries, errors] = parse(source);\n    for (const id in entries) {\n      if (id.startsWith(\"-\")) {\n        // Identifiers starting with a dash (-) define terms. Terms are private\n        // and cannot be retrieved from MessageContext.\n        if (this._terms.has(id)) {\n          errors.push(`Attempt to override an existing term: \"${id}\"`);\n          continue;\n        }\n        this._terms.set(id, entries[id]);\n      } else {\n        if (this._messages.has(id)) {\n          errors.push(`Attempt to override an existing message: \"${id}\"`);\n          continue;\n        }\n        this._messages.set(id, entries[id]);\n      }\n    }\n\n    return errors;\n  }\n\n  /**\n   * Format a message to a string or null.\n   *\n   * Format a raw `message` from the context into a string (or a null if it has\n   * a null value).  `args` will be used to resolve references to external\n   * arguments inside of the translation.\n   *\n   * In case of errors `format` will try to salvage as much of the translation\n   * as possible and will still return a string.  For performance reasons, the\n   * encountered errors are not returned but instead are appended to the\n   * `errors` array passed as the third argument.\n   *\n   *     const errors = [];\n   *     ctx.addMessages('hello = Hello, { $name }!');\n   *     const hello = ctx.getMessage('hello');\n   *     ctx.format(hello, { name: 'Jane' }, errors);\n   *\n   *     // Returns 'Hello, Jane!' and `errors` is empty.\n   *\n   *     ctx.format(hello, undefined, errors);\n   *\n   *     // Returns 'Hello, name!' and `errors` is now:\n   *\n   *     [<ReferenceError: Unknown external: name>]\n   *\n   * @param   {Object | string}    message\n   * @param   {Object | undefined} args\n   * @param   {Array}              errors\n   * @returns {?string}\n   */\n  format(message, args, errors) {\n    // optimize entities which are simple strings with no attributes\n    if (typeof message === \"string\") {\n      return message;\n    }\n\n    // optimize simple-string entities with attributes\n    if (typeof message.val === \"string\") {\n      return message.val;\n    }\n\n    // optimize entities with null values\n    if (message.val === undefined) {\n      return null;\n    }\n\n    return resolve(this, args, message, errors);\n  }\n\n  _memoizeIntlObject(ctor, opts) {\n    const cache = this._intls.get(ctor) || {};\n    const id = JSON.stringify(opts);\n\n    if (!cache[id]) {\n      cache[id] = new ctor(this.locales, opts);\n      this._intls.set(ctor, cache);\n    }\n\n    return cache[id];\n  }\n}\n","/*\n * CachedIterable caches the elements yielded by an iterable.\n *\n * It can be used to iterate over an iterable many times without depleting the\n * iterable.\n */\nexport default class CachedIterable {\n  /**\n   * Create an `CachedIterable` instance.\n   *\n   * @param {Iterable} iterable\n   * @returns {CachedIterable}\n   */\n  constructor(iterable) {\n    if (Symbol.asyncIterator in Object(iterable)) {\n      this.iterator = iterable[Symbol.asyncIterator]();\n    } else if (Symbol.iterator in Object(iterable)) {\n      this.iterator = iterable[Symbol.iterator]();\n    } else {\n      throw new TypeError(\"Argument must implement the iteration protocol.\");\n    }\n\n    this.seen = [];\n  }\n\n  [Symbol.iterator]() {\n    const { seen, iterator } = this;\n    let cur = 0;\n\n    return {\n      next() {\n        if (seen.length <= cur) {\n          seen.push(iterator.next());\n        }\n        return seen[cur++];\n      }\n    };\n  }\n\n  [Symbol.asyncIterator]() {\n    const { seen, iterator } = this;\n    let cur = 0;\n\n    return {\n      async next() {\n        if (seen.length <= cur) {\n          seen.push(await iterator.next());\n        }\n        return seen[cur++];\n      }\n    };\n  }\n\n  /**\n   * This method allows user to consume the next element from the iterator\n   * into the cache.\n   */\n  touchNext() {\n    const { seen, iterator } = this;\n    if (seen.length === 0 || seen[seen.length - 1].done === false) {\n      seen.push(iterator.next());\n    }\n  }\n}\n","/*\n * @overview\n *\n * Functions for managing ordered sequences of MessageContexts.\n *\n * An ordered iterable of MessageContext instances can represent the current\n * negotiated fallback chain of languages.  This iterable can be used to find\n * the best existing translation for a given identifier.\n *\n * The mapContext* methods can be used to find the first MessageContext in the\n * given iterable which contains the translation with the given identifier.  If\n * the iterable is ordered according to the result of a language negotiation\n * the returned MessageContext contains the best available translation.\n *\n * A simple function which formats translations based on the identifier might\n * be implemented as follows:\n *\n *     formatString(id, args) {\n *         const ctx = mapContextSync(contexts, id);\n *\n *         if (ctx === null) {\n *             return id;\n *         }\n *\n *         const msg = ctx.getMessage(id);\n *         return ctx.format(msg, args);\n *     }\n *\n * In order to pass an iterator to mapContext*, wrap it in CachedIterable.\n * This allows multiple calls to mapContext* without advancing and eventually\n * depleting the iterator.\n *\n *     function *generateMessages() {\n *         // Some lazy logic for yielding MessageContexts.\n *         yield *[ctx1, ctx2];\n *     }\n *\n *     const contexts = new CachedIterable(generateMessages());\n *     const ctx = mapContextSync(contexts, id);\n *\n */\n\n/*\n * Synchronously map an identifier or an array of identifiers to the best\n * `MessageContext` instance(s).\n *\n * @param {Iterable} iterable\n * @param {string|Array<string>} ids\n * @returns {MessageContext|Array<MessageContext>}\n */\nexport function mapContextSync(iterable, ids) {\n  if (!Array.isArray(ids)) {\n    return getContextForId(iterable, ids);\n  }\n\n  return ids.map(\n    id => getContextForId(iterable, id)\n  );\n}\n\n/*\n * Find the best `MessageContext` with the translation for `id`.\n */\nfunction getContextForId(iterable, id) {\n  for (const context of iterable) {\n    if (context.hasMessage(id)) {\n      return context;\n    }\n  }\n\n  return null;\n}\n\n/*\n * Asynchronously map an identifier or an array of identifiers to the best\n * `MessageContext` instance(s).\n *\n * @param {AsyncIterable} iterable\n * @param {string|Array<string>} ids\n * @returns {Promise<MessageContext|Array<MessageContext>>}\n */\nexport async function mapContextAsync(iterable, ids) {\n  if (!Array.isArray(ids)) {\n    for await (const context of iterable) {\n      if (context.hasMessage(ids)) {\n        return context;\n      }\n    }\n  }\n\n  let remainingCount = ids.length;\n  const foundContexts = new Array(remainingCount).fill(null);\n\n  for await (const context of iterable) {\n    // XXX Switch to const [index, id] of id.entries() when we move to Babel 7.\n    // See https://github.com/babel/babel/issues/5880.\n    for (let index = 0; index < ids.length; index++) {\n      const id = ids[index];\n      if (!foundContexts[index] && context.hasMessage(id)) {\n        foundContexts[index] = context;\n        remainingCount--;\n      }\n\n      // Return early when all ids have been mapped to contexts.\n      if (remainingCount === 0) {\n        return foundContexts;\n      }\n    }\n  }\n\n  return foundContexts;\n}\n","function nonBlank(line) {\n  return !/^\\s*$/.test(line);\n}\n\nfunction countIndent(line) {\n  const [indent] = line.match(/^\\s*/);\n  return indent.length;\n}\n\n/**\n * Template literal tag for dedenting FTL code.\n *\n * Strip the common indent of non-blank lines. Remove blank lines.\n *\n * @param {Array<string>} strings\n */\nexport function ftl(strings) {\n  const [code] = strings;\n  const lines = code.split(\"\\n\").filter(nonBlank);\n  const indents = lines.map(countIndent);\n  const common = Math.min(...indents);\n  const indent = new RegExp(`^\\\\s{${common}}`);\n\n  return lines.map(\n    line => line.replace(indent, \"\")\n  ).join(\"\\n\");\n}\n","/*\n * @module fluent\n * @overview\n *\n * `fluent` is a JavaScript implementation of Project Fluent, a localization\n * framework designed to unleash the expressive power of the natural language.\n *\n */\n\nexport { default as _parse } from \"./parser\";\n\nexport { MessageContext } from \"./context\";\nexport {\n  FluentType as MessageArgument,\n  FluentNumber as MessageNumberArgument,\n  FluentDateTime as MessageDateTimeArgument,\n} from \"./types\";\n\nexport { default as CachedIterable } from \"./cached_iterable\";\nexport { mapContextSync, mapContextAsync } from \"./fallback\";\n\nexport { ftl } from \"./util\";\n","import { CachedIterable, mapContextSync } from \"fluent\";\n\n/*\n * `ReactLocalization` handles translation formatting and fallback.\n *\n * The current negotiated fallback chain of languages is stored in the\n * `ReactLocalization` instance in form of an iterable of `MessageContext`\n * instances.  This iterable is used to find the best existing translation for\n * a given identifier.\n *\n * `Localized` components must subscribe to the changes of the\n * `ReactLocalization`'s fallback chain.  When the fallback chain changes (the\n * `messages` iterable is set anew), all subscribed compontent must relocalize.\n *\n * The `ReactLocalization` class instances are exposed to `Localized` elements\n * via the `LocalizationProvider` component.\n */\nexport default class ReactLocalization {\n  constructor(messages) {\n    this.contexts = new CachedIterable(messages);\n    this.subs = new Set();\n  }\n\n  /*\n   * Subscribe a `Localized` component to changes of `messages`.\n   */\n  subscribe(comp) {\n    this.subs.add(comp);\n  }\n\n  /*\n   * Unsubscribe a `Localized` component from `messages` changes.\n   */\n  unsubscribe(comp) {\n    this.subs.delete(comp);\n  }\n\n  /*\n   * Set a new `messages` iterable and trigger the retranslation.\n   */\n  setMessages(messages) {\n    this.contexts = new CachedIterable(messages);\n\n    // Update all subscribed Localized components.\n    this.subs.forEach(comp => comp.relocalize());\n  }\n\n  getMessageContext(id) {\n    return mapContextSync(this.contexts, id);\n  }\n\n  formatCompound(mcx, msg, args) {\n    const value = mcx.format(msg, args);\n\n    if (msg.attrs) {\n      var attrs = {};\n      for (const name of Object.keys(msg.attrs)) {\n        attrs[name] = mcx.format(msg.attrs[name], args);\n      }\n    }\n\n    return { value, attrs };\n  }\n\n  /*\n   * Find a translation by `id` and format it to a string using `args`.\n   */\n  getString(id, args, fallback) {\n    const mcx = this.getMessageContext(id);\n\n    if (mcx === null) {\n      return fallback || id;\n    }\n\n    const msg = mcx.getMessage(id);\n    return mcx.format(msg, args);\n  }\n}\n\nexport function isReactLocalization(props, propName) {\n  const prop = props[propName];\n\n  if (prop instanceof ReactLocalization) {\n    return null;\n  }\n\n  return new Error(\n    `The ${propName} context field must be an instance of ReactLocalization.`\n  );\n}\n","import { Component, Children } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport ReactLocalization, { isReactLocalization} from \"./localization\";\n\n/*\n * The Provider component for the `ReactLocalization` class.\n *\n * Exposes a `ReactLocalization` instance to all descendants via React's\n * context feature.  It makes translations available to all localizable\n * elements in the descendant's render tree without the need to pass them\n * explicitly.\n *\n *     <LocalizationProvider messages={…}>\n *         …\n *     </LocalizationProvider>\n *\n * The `LocalizationProvider` component takes one prop: `messages`.  It should\n * be an iterable of `MessageContext` instances in order of the user's\n * preferred languages.  The `MessageContext` instances will be used by\n * `ReactLocalization` to format translations.  If a translation is missing in\n * one instance, `ReactLocalization` will fall back to the next one.\n */\nexport default class LocalizationProvider extends Component {\n  constructor(props) {\n    super(props);\n    const { messages } = props;\n\n    if (messages === undefined) {\n      throw new Error(\"LocalizationProvider must receive the messages prop.\");\n    }\n\n    if (!messages[Symbol.iterator]) {\n      throw new Error(\"The messages prop must be an iterable.\");\n    }\n\n    this.l10n = new ReactLocalization(messages);\n  }\n\n  getChildContext() {\n    return {\n      l10n: this.l10n\n    };\n  }\n\n  componentWillReceiveProps(next) {\n    const { messages } = next;\n\n    if (messages !== this.props.messages) {\n      this.l10n.setMessages(messages);\n    }\n  }\n\n  render() {\n    return Children.only(this.props.children);\n  }\n}\n\nLocalizationProvider.childContextTypes = {\n  l10n: isReactLocalization\n};\n\nLocalizationProvider.propTypes = {\n  children: PropTypes.element.isRequired,\n  messages: isIterable\n};\n\nfunction isIterable(props, propName, componentName) {\n  const prop = props[propName];\n\n  if (Symbol.iterator in Object(prop)) {\n    return null;\n  }\n\n  return new Error(\n    `The ${propName} prop supplied to ${componentName} must be an iterable.`\n  );\n}\n","import { createElement, Component } from \"react\";\n\nimport { isReactLocalization } from \"./localization\";\n\nexport default function withLocalization(Inner) {\n  class WithLocalization extends Component {\n    componentDidMount() {\n      const { l10n } = this.context;\n\n      if (l10n) {\n        l10n.subscribe(this);\n      }\n    }\n\n    componentWillUnmount() {\n      const { l10n } = this.context;\n\n      if (l10n) {\n        l10n.unsubscribe(this);\n      }\n    }\n\n    /*\n     * Rerender this component in a new language.\n     */\n    relocalize() {\n      // When the `ReactLocalization`'s fallback chain changes, update the\n      // component.\n      this.forceUpdate();\n    }\n\n    /*\n     * Find a translation by `id` and format it to a string using `args`.\n     */\n    getString(id, args, fallback) {\n      const { l10n } = this.context;\n\n      if (!l10n) {\n        return fallback || id;\n      }\n\n      return l10n.getString(id, args, fallback);\n    }\n\n    render() {\n      return createElement(\n        Inner,\n        Object.assign(\n          // getString needs to be re-bound on updates to trigger a re-render\n          { getString: (...args) => this.getString(...args) },\n          this.props\n        )\n      );\n    }\n  }\n\n  WithLocalization.displayName = `WithLocalization(${displayName(Inner)})`;\n\n  WithLocalization.contextTypes = {\n    l10n: isReactLocalization\n  };\n\n  return WithLocalization;\n}\n\nfunction displayName(component) {\n  return component.displayName || component.name || \"Component\";\n}\n","/* eslint-env browser */\n\nconst TEMPLATE = document.createElement(\"template\");\n\nexport function parseMarkup(str) {\n  TEMPLATE.innerHTML = str;\n  return TEMPLATE.content;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in this directory.\n */\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n  area: true,\n  base: true,\n  br: true,\n  col: true,\n  embed: true,\n  hr: true,\n  img: true,\n  input: true,\n  keygen: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true,\n  // NOTE: menuitem's close tag should be omitted, but that causes problems.\n};\n\nexport default omittedCloseTags;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in this directory.\n */\n\nimport omittedCloseTags from './omittedCloseTags';\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = {\n  menuitem: true,\n  ...omittedCloseTags,\n};\n\nexport default voidElementTags;\n","import { isValidElement, cloneElement, Component, Children } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isReactLocalization } from \"./localization\";\nimport { parseMarkup } from \"./markup\";\nimport VOID_ELEMENTS from \"../vendor/voidElementTags\";\n\n// Match the opening angle bracket (<) in HTML tags, and HTML entities like\n// &amp;, &#0038;, &#x0026;.\nconst reMarkup = /<|&#?\\w+;/;\n\n/*\n * Prepare props passed to `Localized` for formatting.\n */\nfunction toArguments(props) {\n  const args = {};\n  const elems = {};\n\n  for (const [propname, propval] of Object.entries(props)) {\n    if (propname.startsWith(\"$\")) {\n      const name = propname.substr(1);\n      args[name] = propval;\n    } else if (isValidElement(propval)) {\n      // We'll try to match localNames of elements found in the translation with\n      // names of elements passed as props. localNames are always lowercase.\n      const name = propname.toLowerCase();\n      elems[name] = propval;\n    }\n  }\n\n  return [args, elems];\n}\n\n/*\n * The `Localized` class renders its child with translated props and children.\n *\n *     <Localized id=\"hello-world\">\n *         <p>{'Hello, world!'}</p>\n *     </Localized>\n *\n * The `id` prop should be the unique identifier of the translation.  Any\n * attributes found in the translation will be applied to the wrapped element.\n *\n * Arguments to the translation can be passed as `$`-prefixed props on\n * `Localized`.\n *\n *     <Localized id=\"hello-world\" $username={name}>\n *         <p>{'Hello, { $username }!'}</p>\n *     </Localized>\n *\n *  It's recommended that the contents of the wrapped component be a string\n *  expression.  The string will be used as the ultimate fallback if no\n *  translation is available.  It also makes it easy to grep for strings in the\n *  source code.\n */\nexport default class Localized extends Component {\n  componentDidMount() {\n    const { l10n } = this.context;\n\n    if (l10n) {\n      l10n.subscribe(this);\n    }\n  }\n\n  componentWillUnmount() {\n    const { l10n } = this.context;\n\n    if (l10n) {\n      l10n.unsubscribe(this);\n    }\n  }\n\n  /*\n   * Rerender this component in a new language.\n   */\n  relocalize() {\n    // When the `ReactLocalization`'s fallback chain changes, update the\n    // component.\n    this.forceUpdate();\n  }\n\n  render() {\n    const { l10n } = this.context;\n    const { id, attrs, children } = this.props;\n    const elem = Children.only(children);\n\n    if (!l10n) {\n      // Use the wrapped component as fallback.\n      return elem;\n    }\n\n    const mcx = l10n.getMessageContext(id);\n\n    if (mcx === null) {\n      // Use the wrapped component as fallback.\n      return elem;\n    }\n\n    const msg = mcx.getMessage(id);\n    const [args, elems] = toArguments(this.props);\n    const {\n      value: messageValue,\n      attrs: messageAttrs\n    } = l10n.formatCompound(mcx, msg, args);\n\n    // The default is to forbid all message attributes. If the attrs prop exists\n    // on the Localized instance, only set message attributes which have been\n    // explicitly allowed by the developer.\n    if (attrs && messageAttrs) {\n      var localizedProps = {};\n\n      for (const [name, value] of Object.entries(messageAttrs)) {\n        if (attrs[name]) {\n          localizedProps[name] = value;\n        }\n      }\n    }\n\n    // If the wrapped component is a known void element, explicitly dismiss the\n    // message value and do not pass it to cloneElement in order to avoid the\n    // \"void element tags must neither have `children` nor use\n    // `dangerouslySetInnerHTML`\" error.\n    if (elem.type in VOID_ELEMENTS) {\n      return cloneElement(elem, localizedProps);\n    }\n\n    // If the message has a null value, we're only interested in its attributes.\n    // Do not pass the null value to cloneElement as it would nuke all children\n    // of the wrapped component.\n    if (messageValue === null) {\n      return cloneElement(elem, localizedProps);\n    }\n\n    // If the message value doesn't contain any markup nor any HTML entities,\n    // insert it as the only child of the wrapped component.\n    if (!reMarkup.test(messageValue)) {\n      return cloneElement(elem, localizedProps, messageValue);\n    }\n\n    // If the message contains markup, parse it and try to match the children\n    // found in the translation with the props passed to this Localized.\n    const translationNodes = Array.from(parseMarkup(messageValue).childNodes);\n    const translatedChildren = translationNodes.map(childNode => {\n      if (childNode.nodeType === childNode.TEXT_NODE) {\n        return childNode.textContent;\n      }\n\n      // If the child is not expected just take its textContent.\n      if (!elems.hasOwnProperty(childNode.localName)) {\n        return childNode.textContent;\n      }\n\n      const sourceChild = elems[childNode.localName];\n\n      // If the element passed as a prop to <Localized> is a known void element,\n      // explicitly dismiss any textContent which might have accidentally been\n      // defined in the translation to prevent the \"void element tags must not\n      // have children\" error.\n      if (sourceChild.type in VOID_ELEMENTS) {\n        return sourceChild;\n      }\n\n      // TODO Protect contents of elements wrapped in <Localized>\n      // https://github.com/projectfluent/fluent.js/issues/184\n      // TODO  Control localizable attributes on elements passed as props\n      // https://github.com/projectfluent/fluent.js/issues/185\n      return cloneElement(sourceChild, null, childNode.textContent);\n    });\n\n    return cloneElement(elem, localizedProps, ...translatedChildren);\n  }\n}\n\nLocalized.contextTypes = {\n  l10n: isReactLocalization\n};\n\nLocalized.propTypes = {\n  children: PropTypes.element.isRequired,\n};\n","/*\n * @module fluent-react\n * @overview\n *\n\n * `fluent-react` provides React bindings for Fluent.  It takes advantage of\n * React's Components system and the virtual DOM.  Translations are exposed to\n * components via the provider pattern.\n *\n *     <LocalizationProvider messages={…}>\n *         <Localized id=\"hello-world\">\n *             <p>{'Hello, world!'}</p>\n *         </Localized>\n *     </LocalizationProvider>\n *\n * Consult the documentation of the `LocalizationProvider` and the `Localized`\n * components for more information.\n */\n\nexport { default as LocalizationProvider } from \"./provider\";\nexport { default as withLocalization } from \"./with_localization\";\nexport { default as Localized } from \"./localized\";\nexport { default as ReactLocalization, isReactLocalization }\n  from \"./localization\";\n","import React from \"react\";\nimport {safeURI} from \"../../template-utils\";\n\nconst ALLOWED_STYLE_TAGS = [\"color\", \"backgroundColor\"];\n\nexport const Button = props => {\n  const style = {};\n\n  // Add allowed style tags from props, e.g. props.color becomes style={color: props.color}\n  for (const tag of ALLOWED_STYLE_TAGS) {\n    if (typeof props[tag] !== \"undefined\") {\n      style[tag] = props[tag];\n    }\n  }\n  // remove border if bg is set to something custom\n  if (style.backgroundColor) {\n    style.border = \"0\";\n  }\n\n  return (<a href={safeURI(props.url)}\n    onClick={props.onClick}\n    className={props.className || \"ASRouterButton\"}\n    style={style}>\n    {props.children}\n  </a>);\n};\n","import React from \"react\";\n\nexport class SnippetBase extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onBlockClicked = this.onBlockClicked.bind(this);\n  }\n\n  onBlockClicked() {\n    this.props.sendUserActionTelemetry({event: \"BLOCK\", id: this.props.UISurface});\n    this.props.onBlock();\n  }\n\n  render() {\n    const {props} = this;\n\n    const containerClassName = `SnippetBaseContainer${props.className ? ` ${props.className}` : \"\"}`;\n\n    return (<div className={containerClassName}>\n      <div className=\"innerWrapper\">\n        {props.children}\n      </div>\n      <button className=\"blockButton\" onClick={this.onBlockClicked} />\n    </div>);\n  }\n}\n","import {Button} from \"../../components/Button/Button\";\nimport React from \"react\";\nimport {safeURI} from \"../../template-utils\";\nimport {SnippetBase} from \"../../components/SnippetBase/SnippetBase\";\n\nconst DEFAULT_ICON_PATH = \"chrome://branding/content/icon64.png\";\n\nexport class SimpleSnippet extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onButtonClick = this.onButtonClick.bind(this);\n  }\n\n  onButtonClick() {\n    this.props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", id: this.props.UISurface});\n  }\n\n  renderTitle() {\n    const {title} = this.props.content;\n    return title ? <h3 className=\"title\">{title}</h3> : null;\n  }\n\n  renderTitleIcon() {\n    const titleIcon = safeURI(this.props.content.title_icon);\n    return titleIcon ? <span className=\"titleIcon\" style={{backgroundImage: `url(\"${titleIcon}\")`}} /> : null;\n  }\n\n  renderButton(className) {\n    const {props} = this;\n    return (<Button\n      className={className}\n      onClick={this.onButtonClick}\n      url={props.content.button_url}\n      color={props.content.button_color}\n      backgroundColor={props.content.button_background_color}>\n      {props.content.button_label}\n    </Button>);\n  }\n\n  render() {\n    const {props} = this;\n    const hasLink = props.content.button_url && props.content.button_type === \"anchor\";\n    const hasButton = props.content.button_url && !props.content.button_type;\n    const className = `SimpleSnippet${props.content.tall ? \" tall\" : \"\"}`;\n    return (<SnippetBase {...props} className={className}>\n      <img src={safeURI(props.content.icon) || DEFAULT_ICON_PATH} className=\"icon\" />\n      <div>\n        {this.renderTitleIcon()} {this.renderTitle()} <p className=\"body\">{props.richText || props.content.text}</p> {hasLink ? this.renderButton(\"ASRouterAnchor\") : null}\n      </div>\n      {hasButton ? <div>{this.renderButton()}</div> : null}\n    </SnippetBase>);\n  }\n}\n","this.Dedupe = class Dedupe {\n  constructor(createKey) {\n    this.createKey = createKey || this.defaultCreateKey;\n  }\n\n  defaultCreateKey(item) {\n    return item;\n  }\n\n  /**\n   * Dedupe any number of grouped elements favoring those from earlier groups.\n   *\n   * @param {Array} groups Contains an arbitrary number of arrays of elements.\n   * @returns {Array} A matching array of each provided group deduped.\n   */\n  group(...groups) {\n    const globalKeys = new Set();\n    const result = [];\n    for (const values of groups) {\n      const valueMap = new Map();\n      for (const value of values) {\n        const key = this.createKey(value);\n        if (!globalKeys.has(key) && !valueMap.has(key)) {\n          valueMap.set(key, value);\n        }\n      }\n      result.push(valueMap);\n      valueMap.forEach((value, key) => globalKeys.add(key));\n    }\n    return result.map(m => Array.from(m.values()));\n  }\n};\n\nconst EXPORTED_SYMBOLS = [\"Dedupe\"];\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nconst {actionTypes: at} = ChromeUtils.import(\"resource://activity-stream/common/Actions.jsm\", {});\nconst {Dedupe} = ChromeUtils.import(\"resource://activity-stream/common/Dedupe.jsm\", {});\n\nconst TOP_SITES_DEFAULT_ROWS = 1;\nconst TOP_SITES_MAX_SITES_PER_ROW = 8;\n\nconst dedupe = new Dedupe(site => site && site.url);\n\nconst INITIAL_STATE = {\n  App: {\n    // Have we received real data from the app yet?\n    initialized: false\n  },\n  Snippets: {initialized: false},\n  TopSites: {\n    // Have we received real data from history yet?\n    initialized: false,\n    // The history (and possibly default) links\n    rows: [],\n    // Used in content only to dispatch action to TopSiteForm.\n    editForm: null\n  },\n  Prefs: {\n    initialized: false,\n    values: {}\n  },\n  Dialog: {\n    visible: false,\n    data: {}\n  },\n  Sections: []\n};\n\nfunction App(prevState = INITIAL_STATE.App, action) {\n  switch (action.type) {\n    case at.INIT:\n      return Object.assign({}, prevState, action.data || {}, {initialized: true});\n    default:\n      return prevState;\n  }\n}\n\n/**\n * insertPinned - Inserts pinned links in their specified slots\n *\n * @param {array} a list of links\n * @param {array} a list of pinned links\n * @return {array} resulting list of links with pinned links inserted\n */\nfunction insertPinned(links, pinned) {\n  // Remove any pinned links\n  const pinnedUrls = pinned.map(link => link && link.url);\n  let newLinks = links.filter(link => (link ? !pinnedUrls.includes(link.url) : false));\n  newLinks = newLinks.map(link => {\n    if (link && link.isPinned) {\n      delete link.isPinned;\n      delete link.pinIndex;\n    }\n    return link;\n  });\n\n  // Then insert them in their specified location\n  pinned.forEach((val, index) => {\n    if (!val) { return; }\n    let link = Object.assign({}, val, {isPinned: true, pinIndex: index});\n    if (index > newLinks.length) {\n      newLinks[index] = link;\n    } else {\n      newLinks.splice(index, 0, link);\n    }\n  });\n\n  return newLinks;\n}\n\nfunction TopSites(prevState = INITIAL_STATE.TopSites, action) {\n  let hasMatch;\n  let newRows;\n  switch (action.type) {\n    case at.TOP_SITES_UPDATED:\n      if (!action.data || !action.data.links) {\n        return prevState;\n      }\n      return Object.assign({}, prevState, {initialized: true, rows: action.data.links}, action.data.pref ? {pref: action.data.pref} : {});\n    case at.TOP_SITES_PREFS_UPDATED:\n      return Object.assign({}, prevState, {pref: action.data.pref});\n    case at.TOP_SITES_EDIT:\n      return Object.assign({}, prevState, {\n        editForm: {\n          index: action.data.index,\n          previewResponse: null\n        }\n      });\n    case at.TOP_SITES_CANCEL_EDIT:\n      return Object.assign({}, prevState, {editForm: null});\n    case at.PREVIEW_RESPONSE:\n      if (!prevState.editForm || action.data.url !== prevState.editForm.previewUrl) {\n        return prevState;\n      }\n      return Object.assign({}, prevState, {\n        editForm: {\n          index: prevState.editForm.index,\n          previewResponse: action.data.preview,\n          previewUrl: action.data.url\n        }\n      });\n    case at.PREVIEW_REQUEST:\n      if (!prevState.editForm) {\n        return prevState;\n      }\n      return Object.assign({}, prevState, {\n        editForm: {\n          index: prevState.editForm.index,\n          previewResponse: null,\n          previewUrl: action.data.url\n        }\n      });\n    case at.PREVIEW_REQUEST_CANCEL:\n      if (!prevState.editForm) {\n        return prevState;\n      }\n      return Object.assign({}, prevState, {\n        editForm: {\n          index: prevState.editForm.index,\n          previewResponse: null\n        }\n      });\n    case at.SCREENSHOT_UPDATED:\n      newRows = prevState.rows.map(row => {\n        if (row && row.url === action.data.url) {\n          hasMatch = true;\n          return Object.assign({}, row, {screenshot: action.data.screenshot});\n        }\n        return row;\n      });\n      return hasMatch ? Object.assign({}, prevState, {rows: newRows}) : prevState;\n    case at.PLACES_BOOKMARK_ADDED:\n      if (!action.data) {\n        return prevState;\n      }\n      newRows = prevState.rows.map(site => {\n        if (site && site.url === action.data.url) {\n          const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n          return Object.assign({}, site, {bookmarkGuid, bookmarkTitle, bookmarkDateCreated: dateAdded});\n        }\n        return site;\n      });\n      return Object.assign({}, prevState, {rows: newRows});\n    case at.PLACES_BOOKMARK_REMOVED:\n      if (!action.data) {\n        return prevState;\n      }\n      newRows = prevState.rows.map(site => {\n        if (site && site.url === action.data.url) {\n          const newSite = Object.assign({}, site);\n          delete newSite.bookmarkGuid;\n          delete newSite.bookmarkTitle;\n          delete newSite.bookmarkDateCreated;\n          return newSite;\n        }\n        return site;\n      });\n      return Object.assign({}, prevState, {rows: newRows});\n    case at.PLACES_LINK_DELETED:\n      if (!action.data) {\n        return prevState;\n      }\n      newRows = prevState.rows.filter(site => action.data.url !== site.url);\n      return Object.assign({}, prevState, {rows: newRows});\n    default:\n      return prevState;\n  }\n}\n\nfunction Dialog(prevState = INITIAL_STATE.Dialog, action) {\n  switch (action.type) {\n    case at.DIALOG_OPEN:\n      return Object.assign({}, prevState, {visible: true, data: action.data});\n    case at.DIALOG_CANCEL:\n      return Object.assign({}, prevState, {visible: false});\n    case at.DELETE_HISTORY_URL:\n      return Object.assign({}, INITIAL_STATE.Dialog);\n    default:\n      return prevState;\n  }\n}\n\nfunction Prefs(prevState = INITIAL_STATE.Prefs, action) {\n  let newValues;\n  switch (action.type) {\n    case at.PREFS_INITIAL_VALUES:\n      return Object.assign({}, prevState, {initialized: true, values: action.data});\n    case at.PREF_CHANGED:\n      newValues = Object.assign({}, prevState.values);\n      newValues[action.data.name] = action.data.value;\n      return Object.assign({}, prevState, {values: newValues});\n    default:\n      return prevState;\n  }\n}\n\nfunction Sections(prevState = INITIAL_STATE.Sections, action) {\n  let hasMatch;\n  let newState;\n  switch (action.type) {\n    case at.SECTION_DEREGISTER:\n      return prevState.filter(section => section.id !== action.data);\n    case at.SECTION_REGISTER:\n      // If section exists in prevState, update it\n      newState = prevState.map(section => {\n        if (section && section.id === action.data.id) {\n          hasMatch = true;\n          return Object.assign({}, section, action.data);\n        }\n        return section;\n      });\n      // Otherwise, append it\n      if (!hasMatch) {\n        const initialized = !!(action.data.rows && action.data.rows.length > 0);\n        const section = Object.assign({title: \"\", rows: [], enabled: false}, action.data, {initialized});\n        newState.push(section);\n      }\n      return newState;\n    case at.SECTION_UPDATE:\n      newState = prevState.map(section => {\n        if (section && section.id === action.data.id) {\n          // If the action is updating rows, we should consider initialized to be true.\n          // This can be overridden if initialized is defined in the action.data\n          const initialized = action.data.rows ? {initialized: true} : {};\n\n          // Make sure pinned cards stay at their current position when rows are updated.\n          // Disabling a section (SECTION_UPDATE with empty rows) does not retain pinned cards.\n          if (action.data.rows && action.data.rows.length > 0 && section.rows.find(card => card.pinned)) {\n            const rows = Array.from(action.data.rows);\n            section.rows.forEach((card, index) => {\n              if (card.pinned) {\n                rows.splice(index, 0, card);\n              }\n            });\n            return Object.assign({}, section, initialized, Object.assign({}, action.data, {rows}));\n          }\n\n          return Object.assign({}, section, initialized, action.data);\n        }\n        return section;\n      });\n\n      if (!action.data.dedupeConfigurations) {\n        return newState;\n      }\n\n      action.data.dedupeConfigurations.forEach(dedupeConf => {\n        newState = newState.map(section => {\n          if (section.id === dedupeConf.id) {\n            const dedupedRows = dedupeConf.dedupeFrom.reduce((rows, dedupeSectionId) => {\n              const dedupeSection = newState.find(s => s.id === dedupeSectionId);\n              const [, newRows] = dedupe.group(dedupeSection.rows, rows);\n              return newRows;\n            }, section.rows);\n\n            return Object.assign({}, section, {rows: dedupedRows});\n          }\n\n          return section;\n        });\n      });\n\n      return newState;\n    case at.SECTION_UPDATE_CARD:\n      return prevState.map(section => {\n        if (section && section.id === action.data.id && section.rows) {\n          const newRows = section.rows.map(card => {\n            if (card.url === action.data.url) {\n              return Object.assign({}, card, action.data.options);\n            }\n            return card;\n          });\n          return Object.assign({}, section, {rows: newRows});\n        }\n        return section;\n      });\n    case at.PLACES_BOOKMARK_ADDED:\n      if (!action.data) {\n        return prevState;\n      }\n      return prevState.map(section => Object.assign({}, section, {\n        rows: section.rows.map(item => {\n          // find the item within the rows that is attempted to be bookmarked\n          if (item.url === action.data.url) {\n            const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n            return Object.assign({}, item, {\n              bookmarkGuid,\n              bookmarkTitle,\n              bookmarkDateCreated: dateAdded,\n              type: \"bookmark\"\n            });\n          }\n          return item;\n        })\n      }));\n    case at.PLACES_SAVED_TO_POCKET:\n      if (!action.data) {\n        return prevState;\n      }\n      return prevState.map(section => Object.assign({}, section, {\n        rows: section.rows.map(item => {\n          if (item.url === action.data.url) {\n            return Object.assign({}, item, {\n              open_url: action.data.open_url,\n              pocket_id: action.data.pocket_id,\n              title: action.data.title,\n              type: \"pocket\"\n            });\n          }\n          return item;\n        })\n      }));\n    case at.PLACES_BOOKMARK_REMOVED:\n      if (!action.data) {\n        return prevState;\n      }\n      return prevState.map(section => Object.assign({}, section, {\n        rows: section.rows.map(item => {\n          // find the bookmark within the rows that is attempted to be removed\n          if (item.url === action.data.url) {\n            const newSite = Object.assign({}, item);\n            delete newSite.bookmarkGuid;\n            delete newSite.bookmarkTitle;\n            delete newSite.bookmarkDateCreated;\n            if (!newSite.type || newSite.type === \"bookmark\") {\n              newSite.type = \"history\";\n            }\n            return newSite;\n          }\n          return item;\n        })\n      }));\n    case at.PLACES_LINK_DELETED:\n    case at.PLACES_LINK_BLOCKED:\n      if (!action.data) {\n        return prevState;\n      }\n      return prevState.map(section =>\n        Object.assign({}, section, {rows: section.rows.filter(site => site.url !== action.data.url)}));\n    case at.DELETE_FROM_POCKET:\n    case at.ARCHIVE_FROM_POCKET:\n      return prevState.map(section =>\n        Object.assign({}, section, {rows: section.rows.filter(site => site.pocket_id !== action.data.pocket_id)}));\n    default:\n      return prevState;\n  }\n}\n\nfunction Snippets(prevState = INITIAL_STATE.Snippets, action) {\n  switch (action.type) {\n    case at.SNIPPETS_DATA:\n      return Object.assign({}, prevState, {initialized: true}, action.data);\n    case at.SNIPPET_BLOCKED:\n      return Object.assign({}, prevState, {blockList: prevState.blockList.concat(action.data)});\n    case at.SNIPPETS_BLOCKLIST_CLEARED:\n      return Object.assign({}, prevState, {blockList: []});\n    case at.SNIPPETS_RESET:\n      return INITIAL_STATE.Snippets;\n    default:\n      return prevState;\n  }\n}\n\nthis.INITIAL_STATE = INITIAL_STATE;\nthis.TOP_SITES_DEFAULT_ROWS = TOP_SITES_DEFAULT_ROWS;\nthis.TOP_SITES_MAX_SITES_PER_ROW = TOP_SITES_MAX_SITES_PER_ROW;\n\nthis.reducers = {TopSites, App, Snippets, Prefs, Dialog, Sections};\n\nconst EXPORTED_SYMBOLS = [\"reducers\", \"INITIAL_STATE\", \"insertPinned\", \"TOP_SITES_DEFAULT_ROWS\", \"TOP_SITES_MAX_SITES_PER_ROW\"];\n","import React from \"react\";\n\nexport class ModalOverlay extends React.PureComponent {\n  componentWillMount() {\n    this.setState({active: true});\n    document.body.classList.add(\"modal-open\");\n  }\n\n  componentWillUnmount() {\n    document.body.classList.remove(\"modal-open\");\n    this.setState({active: false});\n  }\n\n  render() {\n    const {active} = this.state;\n    const {title, button_label} = this.props;\n    return (\n      <div>\n        <div className={`modalOverlayOuter ${active ? \"active\" : \"\"}`} />\n        <div className={`modalOverlayInner ${active ? \"active\" : \"\"}`}>\n          <h2> {title} </h2>\n          {this.props.children}\n          <div className=\"footer\">\n            <button tabIndex=\"2\" onClick={this.props.onDoneButton} className=\"button primary modalButton\"> {button_label} </button>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n","import {ModalOverlay} from \"../../components/ModalOverlay/ModalOverlay\";\nimport React from \"react\";\n\nclass OnboardingCard extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onClick = this.onClick.bind(this);\n  }\n\n  onClick() {\n    const {props} = this;\n    props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", message_id: props.id, id: props.UISurface});\n    props.onAction(props.content);\n  }\n\n  render() {\n    const {content} = this.props;\n    return (\n      <div className=\"onboardingMessage\">\n        <div className={`onboardingMessageImage ${content.icon}`} />\n        <div className=\"onboardingContent\">\n          <span>\n            <h3> {content.title} </h3>\n            <p> {content.text} </p>\n          </span>\n          <span>\n            <button tabIndex=\"1\" className=\"button onboardingButton\" onClick={this.onClick}> {content.button_label} </button>\n          </span>\n        </div>\n      </div>\n    );\n  }\n}\n\nexport class OnboardingMessage extends React.PureComponent {\n  render() {\n    const {props} = this;\n    return (\n      <ModalOverlay {...props} button_label={\"Start Browsing\"} title={\"Welcome to Firefox\"}>\n        <div className=\"onboardingMessageContainer\">\n          {props.bundle.map(message => (\n            <OnboardingCard key={message.id}\n              sendUserActionTelemetry={props.sendUserActionTelemetry}\n              onAction={props.onAction}\n              UISurface={props.UISurface}\n              {...message} />\n          ))}\n        </div>\n      </ModalOverlay>\n    );\n  }\n}\n","export const cardContextTypes = {\n  history: {\n    intlID: \"type_label_visited\",\n    icon: \"history-item\"\n  },\n  bookmark: {\n    intlID: \"type_label_bookmarked\",\n    icon: \"bookmark-added\"\n  },\n  trending: {\n    intlID: \"type_label_recommended\",\n    icon: \"trending\"\n  },\n  now: {\n    intlID: \"type_label_now\",\n    icon: \"now\"\n  },\n  pocket: {\n    intlID: \"type_label_pocket\",\n    icon: \"pocket\"\n  },\n  download: {\n    intlID: \"type_label_downloaded\",\n    icon: \"download\"\n  }\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {cardContextTypes} from \"./types\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport {GetPlatformString} from \"content-src/lib/link-menu-options\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\nimport {ScreenshotUtils} from \"content-src/lib/screenshot-utils\";\n\n// Keep track of pending image loads to only request once\nconst gImageLoading = new Map();\n\n/**\n * Card component.\n * Cards are found within a Section component and contain information about a link such\n * as preview image, page title, page description, and some context about if the page\n * was visited, bookmarked, trending etc...\n * Each Section can make an unordered list of Cards which will create one instane of\n * this class. Each card will then get a context menu which reflects the actions that\n * can be done on this Card.\n */\nexport class _Card extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {\n      activeCard: null,\n      imageLoaded: false,\n      showContextMenu: false,\n      cardImage: null\n    };\n    this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n    this.onMenuUpdate = this.onMenuUpdate.bind(this);\n    this.onLinkClick = this.onLinkClick.bind(this);\n  }\n\n  /**\n   * Helper to conditionally load an image and update state when it loads.\n   */\n  async maybeLoadImage() {\n    // No need to load if it's already loaded or no image\n    const {cardImage} = this.state;\n    if (!cardImage) {\n      return;\n    }\n\n    const imageUrl = cardImage.url;\n    if (!this.state.imageLoaded) {\n      // Initialize a promise to share a load across multiple card updates\n      if (!gImageLoading.has(imageUrl)) {\n        const loaderPromise = new Promise((resolve, reject) => {\n          const loader = new Image();\n          loader.addEventListener(\"load\", resolve);\n          loader.addEventListener(\"error\", reject);\n          loader.src = imageUrl;\n        });\n\n        // Save and remove the promise only while it's pending\n        gImageLoading.set(imageUrl, loaderPromise);\n        loaderPromise.catch(ex => ex).then(() => gImageLoading.delete(imageUrl)).catch();\n      }\n\n      // Wait for the image whether just started loading or reused promise\n      await gImageLoading.get(imageUrl);\n\n      // Only update state if we're still waiting to load the original image\n      if (ScreenshotUtils.isRemoteImageLocal(this.state.cardImage, this.props.link.image) &&\n          !this.state.imageLoaded) {\n        this.setState({imageLoaded: true});\n      }\n    }\n  }\n\n  /**\n   * Helper to obtain the next state based on nextProps and prevState.\n   *\n   * NOTE: Rename this method to getDerivedStateFromProps when we update React\n   *       to >= 16.3. We will need to update tests as well. We cannot rename this\n   *       method to getDerivedStateFromProps now because there is a mismatch in\n   *       the React version that we are using for both testing and production.\n   *       (i.e. react-test-render => \"16.3.2\", react => \"16.2.0\").\n   *\n   * See https://github.com/airbnb/enzyme/blob/master/packages/enzyme-adapter-react-16/package.json#L43.\n   */\n  static getNextStateFromProps(nextProps, prevState) {\n    const {image} = nextProps.link;\n    const imageInState = ScreenshotUtils.isRemoteImageLocal(prevState.cardImage, image);\n    let nextState = null;\n\n    // Image is updating.\n    if (!imageInState && nextProps.link) {\n      nextState = {imageLoaded: false};\n    }\n\n    if (imageInState) {\n      return nextState;\n    }\n\n    // Since image was updated, attempt to revoke old image blob URL, if it exists.\n    ScreenshotUtils.maybeRevokeBlobObjectURL(prevState.cardImage);\n\n    nextState = nextState || {};\n    nextState.cardImage = ScreenshotUtils.createLocalImageObject(image);\n\n    return nextState;\n  }\n\n  onMenuButtonClick(event) {\n    event.preventDefault();\n    this.setState({\n      activeCard: this.props.index,\n      showContextMenu: true\n    });\n  }\n\n  /**\n   * Report to telemetry additional information about the item.\n   */\n  _getTelemetryInfo() {\n    // Filter out \"history\" type for being the default\n    if (this.props.link.type !== \"history\") {\n      return {value: {card_type: this.props.link.type}};\n    }\n\n    return null;\n  }\n\n  onLinkClick(event) {\n    event.preventDefault();\n    if (this.props.link.type === \"download\") {\n      this.props.dispatch(ac.OnlyToMain({\n        type: at.SHOW_DOWNLOAD_FILE,\n        data: this.props.link\n      }));\n    } else {\n      const {altKey, button, ctrlKey, metaKey, shiftKey} = event;\n      this.props.dispatch(ac.OnlyToMain({\n        type: at.OPEN_LINK,\n        data: Object.assign(this.props.link, {event: {altKey, button, ctrlKey, metaKey, shiftKey}})\n      }));\n    }\n    if (this.props.isWebExtension) {\n      this.props.dispatch(ac.WebExtEvent(at.WEBEXT_CLICK, {\n        source: this.props.eventSource,\n        url: this.props.link.url,\n        action_position: this.props.index\n      }));\n    } else {\n      this.props.dispatch(ac.UserEvent(Object.assign({\n        event: \"CLICK\",\n        source: this.props.eventSource,\n        action_position: this.props.index\n      }, this._getTelemetryInfo())));\n\n      if (this.props.shouldSendImpressionStats) {\n        this.props.dispatch(ac.ImpressionStats({\n          source: this.props.eventSource,\n          click: 0,\n          tiles: [{id: this.props.link.guid, pos: this.props.index}]\n        }));\n      }\n    }\n  }\n\n  onMenuUpdate(showContextMenu) {\n    this.setState({showContextMenu});\n  }\n\n  componentDidMount() {\n    this.maybeLoadImage();\n  }\n\n  componentDidUpdate() {\n    this.maybeLoadImage();\n  }\n\n  // NOTE: Remove this function when we update React to >= 16.3 since React will\n  //       call getDerivedStateFromProps automatically. We will also need to\n  //       rename getNextStateFromProps to getDerivedStateFromProps.\n  componentWillMount() {\n    const nextState = _Card.getNextStateFromProps(this.props, this.state);\n    if (nextState) {\n      this.setState(nextState);\n    }\n  }\n\n  // NOTE: Remove this function when we update React to >= 16.3 since React will\n  //       call getDerivedStateFromProps automatically. We will also need to\n  //       rename getNextStateFromProps to getDerivedStateFromProps.\n  componentWillReceiveProps(nextProps) {\n    const nextState = _Card.getNextStateFromProps(nextProps, this.state);\n    if (nextState) {\n      this.setState(nextState);\n    }\n  }\n\n  componentWillUnmount() {\n    ScreenshotUtils.maybeRevokeBlobObjectURL(this.state.cardImage);\n  }\n\n  render() {\n    const {index, className, link, dispatch, contextMenuOptions, eventSource, shouldSendImpressionStats} = this.props;\n    const {props} = this;\n    const isContextMenuOpen = this.state.showContextMenu && this.state.activeCard === index;\n    // Display \"now\" as \"trending\" until we have new strings #3402\n    const {icon, intlID} = cardContextTypes[link.type === \"now\" ? \"trending\" : link.type] || {};\n    const hasImage = this.state.cardImage || link.hasImage;\n    const imageStyle = {backgroundImage: this.state.cardImage ? `url(${this.state.cardImage.url})` : \"none\"};\n    const outerClassName = [\n      \"card-outer\",\n      className,\n      isContextMenuOpen && \"active\",\n      props.placeholder && \"placeholder\"\n    ].filter(v => v).join(\" \");\n\n    return (<li className={outerClassName}>\n      <a href={link.type === \"pocket\" ? link.open_url : link.url} onClick={!props.placeholder ? this.onLinkClick : undefined}>\n        <div className=\"card\">\n          <div className=\"card-preview-image-outer\">\n            {hasImage &&\n              <div className={`card-preview-image${this.state.imageLoaded ? \" loaded\" : \"\"}`} style={imageStyle} />\n            }\n          </div>\n          <div className=\"card-details\">\n            {link.type === \"download\" && <div className=\"card-host-name alternate\"><FormattedMessage id={GetPlatformString(this.props.platform)} /></div>}\n            {link.hostname &&\n              <div className=\"card-host-name\">\n                {link.hostname.slice(0, 100)}{link.type === \"download\" && `  \\u2014 ${link.description}`}\n              </div>\n            }\n            <div className={[\n              \"card-text\",\n              icon ? \"\" : \"no-context\",\n              link.description ? \"\" : \"no-description\",\n              link.hostname ? \"\" : \"no-host-name\"\n            ].join(\" \")}>\n              <h4 className=\"card-title\" dir=\"auto\">{link.title}</h4>\n              <p className=\"card-description\" dir=\"auto\">{link.description}</p>\n            </div>\n            <div className=\"card-context\">\n              {icon && !link.context && <span className={`card-context-icon icon icon-${icon}`} />}\n              {link.icon && link.context && <span className=\"card-context-icon icon\" style={{backgroundImage: `url('${link.icon}')`}} />}\n              {intlID && !link.context && <div className=\"card-context-label\"><FormattedMessage id={intlID} defaultMessage=\"Visited\" /></div>}\n              {link.context && <div className=\"card-context-label\">{link.context}</div>}\n            </div>\n          </div>\n        </div>\n      </a>\n      {!props.placeholder && <button className=\"context-menu-button icon\"\n        onClick={this.onMenuButtonClick}>\n        <span className=\"sr-only\">{`Open context menu for ${link.title}`}</span>\n      </button>}\n      {isContextMenuOpen &&\n        <LinkMenu\n          dispatch={dispatch}\n          index={index}\n          source={eventSource}\n          onUpdate={this.onMenuUpdate}\n          options={link.contextMenuOptions || contextMenuOptions}\n          site={link}\n          siteInfo={this._getTelemetryInfo()}\n          shouldSendImpressionStats={shouldSendImpressionStats} />\n      }\n   </li>);\n  }\n}\n_Card.defaultProps = {link: {}};\nexport const Card = connect(state => ({platform: state.Prefs.values.platform}))(_Card);\nexport const PlaceholderCard = props => <Card placeholder={true} className={props.className} />;\n","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class TopSiteFormInput extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {validationError: this.props.validationError};\n    this.onChange = this.onChange.bind(this);\n    this.onMount = this.onMount.bind(this);\n  }\n\n  componentWillReceiveProps(nextProps) {\n    if (nextProps.shouldFocus && !this.props.shouldFocus) {\n      this.input.focus();\n    }\n    if (nextProps.validationError && !this.props.validationError) {\n      this.setState({validationError: true});\n    }\n    // If the component is in an error state but the value was cleared by the parent\n    if (this.state.validationError && !nextProps.value) {\n      this.setState({validationError: false});\n    }\n  }\n\n  onChange(ev) {\n    if (this.state.validationError) {\n      this.setState({validationError: false});\n    }\n    this.props.onChange(ev);\n  }\n\n  onMount(input) {\n    this.input = input;\n  }\n\n  render() {\n    const showClearButton = this.props.value && this.props.onClear;\n    const {typeUrl} = this.props;\n    const {validationError} = this.state;\n\n    return (<label><FormattedMessage id={this.props.titleId} />\n      <div className={`field ${typeUrl ? \"url\" : \"\"}${validationError ? \" invalid\" : \"\"}`}>\n        {this.props.loading ?\n          <div className=\"loading-container\"><div className=\"loading-animation\" /></div> :\n          showClearButton && <div className=\"icon icon-clear-input\" onClick={this.props.onClear} />}\n        <input type=\"text\"\n          value={this.props.value}\n          ref={this.onMount}\n          onChange={this.onChange}\n          placeholder={this.props.intl.formatMessage({id: this.props.placeholderId})}\n          autoFocus={this.props.shouldFocus}\n          disabled={this.props.loading} />\n        {validationError &&\n          <aside className=\"error-tooltip\">\n            <FormattedMessage id={this.props.errorMessageId} />\n          </aside>}\n      </div>\n    </label>);\n  }\n}\n\nTopSiteFormInput.defaultProps = {\n  showClearButton: false,\n  value: \"\",\n  validationError: false\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\nimport {TOP_SITES_SOURCE} from \"./TopSitesConstants\";\nimport {TopSiteFormInput} from \"./TopSiteFormInput\";\nimport {TopSiteLink} from \"./TopSite\";\n\nexport class TopSiteForm extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    const {site} = props;\n    this.state = {\n      label: site ? (site.label || site.hostname) : \"\",\n      url: site ? site.url : \"\",\n      validationError: false,\n      customScreenshotUrl: site ? site.customScreenshotURL : \"\",\n      showCustomScreenshotForm: site ? site.customScreenshotURL : false\n    };\n    this.onClearScreenshotInput = this.onClearScreenshotInput.bind(this);\n    this.onLabelChange = this.onLabelChange.bind(this);\n    this.onUrlChange = this.onUrlChange.bind(this);\n    this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\n    this.onClearUrlClick = this.onClearUrlClick.bind(this);\n    this.onDoneButtonClick = this.onDoneButtonClick.bind(this);\n    this.onCustomScreenshotUrlChange = this.onCustomScreenshotUrlChange.bind(this);\n    this.onPreviewButtonClick = this.onPreviewButtonClick.bind(this);\n    this.onEnableScreenshotUrlForm = this.onEnableScreenshotUrlForm.bind(this);\n    this.validateUrl = this.validateUrl.bind(this);\n  }\n\n  onLabelChange(event) {\n    this.setState({\"label\": event.target.value});\n  }\n\n  onUrlChange(event) {\n    this.setState({\n      url: event.target.value,\n      validationError: false\n    });\n  }\n\n  onClearUrlClick() {\n    this.setState({\n      url: \"\",\n      validationError: false\n    });\n  }\n\n  onEnableScreenshotUrlForm() {\n    this.setState({showCustomScreenshotForm: true});\n  }\n\n  _updateCustomScreenshotInput(customScreenshotUrl) {\n    this.setState({\n      customScreenshotUrl,\n      validationError: false\n    });\n    this.props.dispatch({type: at.PREVIEW_REQUEST_CANCEL});\n  }\n\n  onCustomScreenshotUrlChange(event) {\n    this._updateCustomScreenshotInput(event.target.value);\n  }\n\n  onClearScreenshotInput() {\n    this._updateCustomScreenshotInput(\"\");\n  }\n\n  onCancelButtonClick(ev) {\n    ev.preventDefault();\n    this.props.onClose();\n  }\n\n  onDoneButtonClick(ev) {\n    ev.preventDefault();\n\n    if (this.validateForm()) {\n      const site = {url: this.cleanUrl(this.state.url)};\n      const {index} = this.props;\n      if (this.state.label !== \"\") {\n        site.label = this.state.label;\n      }\n\n      if (this.state.customScreenshotUrl) {\n        site.customScreenshotURL = this.cleanUrl(this.state.customScreenshotUrl);\n      } else if (this.props.site && this.props.site.customScreenshotURL) {\n        // Used to flag that previously cached screenshot should be removed\n        site.customScreenshotURL = null;\n      }\n      this.props.dispatch(ac.AlsoToMain({\n        type: at.TOP_SITES_PIN,\n        data: {site, index}\n      }));\n      this.props.dispatch(ac.UserEvent({\n        source: TOP_SITES_SOURCE,\n        event: \"TOP_SITES_EDIT\",\n        action_position: index\n      }));\n\n      this.props.onClose();\n    }\n  }\n\n  onPreviewButtonClick(event) {\n    event.preventDefault();\n    if (this.validateForm()) {\n      this.props.dispatch(ac.AlsoToMain({\n        type: at.PREVIEW_REQUEST,\n        data: {url: this.cleanUrl(this.state.customScreenshotUrl)}\n      }));\n      this.props.dispatch(ac.UserEvent({\n        source: TOP_SITES_SOURCE,\n        event: \"PREVIEW_REQUEST\"\n      }));\n    }\n  }\n\n  cleanUrl(url) {\n    // If we are missing a protocol, prepend http://\n    if (!url.startsWith(\"http:\") && !url.startsWith(\"https:\")) {\n      return `http://${url}`;\n    }\n    return url;\n  }\n\n  _tryParseUrl(url) {\n    try {\n      return new URL(url);\n    } catch (e) {\n      return null;\n    }\n  }\n\n  validateUrl(url) {\n    const validProtocols = [\"http:\", \"https:\"];\n    const urlObj = this._tryParseUrl(url) || this._tryParseUrl(this.cleanUrl(url));\n\n    return urlObj && validProtocols.includes(urlObj.protocol);\n  }\n\n  validateCustomScreenshotUrl() {\n    const {customScreenshotUrl} = this.state;\n    return !customScreenshotUrl || this.validateUrl(customScreenshotUrl);\n  }\n\n  validateForm() {\n    const validate = this.validateUrl(this.state.url) && this.validateCustomScreenshotUrl();\n\n    if (!validate) {\n      this.setState({validationError: true});\n    }\n\n    return validate;\n  }\n\n  _renderCustomScreenshotInput() {\n    const {customScreenshotUrl} = this.state;\n    const requestFailed = this.props.previewResponse === \"\";\n    const validationError = (this.state.validationError && !this.validateCustomScreenshotUrl()) || requestFailed;\n    // Set focus on error if the url field is valid or when the input is first rendered and is empty\n    const shouldFocus = (validationError && this.validateUrl(this.state.url)) || !customScreenshotUrl;\n    const isLoading = this.props.previewResponse === null &&\n      customScreenshotUrl && this.props.previewUrl === this.cleanUrl(customScreenshotUrl);\n\n    if (!this.state.showCustomScreenshotForm) {\n      return (<a className=\"enable-custom-image-input\" onClick={this.onEnableScreenshotUrlForm}>\n        <FormattedMessage id=\"topsites_form_use_image_link\" />\n      </a>);\n    }\n    return (<div className=\"custom-image-input-container\">\n      <TopSiteFormInput\n        errorMessageId={requestFailed ? \"topsites_form_image_validation\" : \"topsites_form_url_validation\"}\n        loading={isLoading}\n        onChange={this.onCustomScreenshotUrlChange}\n        onClear={this.onClearScreenshotInput}\n        shouldFocus={shouldFocus}\n        typeUrl={true}\n        value={customScreenshotUrl}\n        validationError={validationError}\n        titleId=\"topsites_form_image_url_label\"\n        placeholderId=\"topsites_form_url_placeholder\"\n        intl={this.props.intl} />\n    </div>);\n  }\n\n  render() {\n    const {customScreenshotUrl} = this.state;\n    const requestFailed = this.props.previewResponse === \"\";\n    // For UI purposes, editing without an existing link is \"add\"\n    const showAsAdd = !this.props.site;\n    const previous = (this.props.site && this.props.site.customScreenshotURL) || \"\";\n    const changed = customScreenshotUrl && this.cleanUrl(customScreenshotUrl) !== previous;\n    // Preview mode if changes were made to the custom screenshot URL and no preview was received yet\n    // or the request failed\n    const previewMode = changed && !this.props.previewResponse;\n    const previewLink = Object.assign({}, this.props.site);\n    if (this.props.previewResponse) {\n      previewLink.screenshot = this.props.previewResponse;\n      previewLink.customScreenshotURL = this.props.previewUrl;\n    }\n    return (\n      <form className=\"topsite-form\">\n        <div className=\"form-input-container\">\n          <h3 className=\"section-title\">\n            <FormattedMessage id={showAsAdd ? \"topsites_form_add_header\" : \"topsites_form_edit_header\"} />\n          </h3>\n          <div className=\"fields-and-preview\">\n            <div className=\"form-wrapper\">\n              <TopSiteFormInput onChange={this.onLabelChange}\n                value={this.state.label}\n                titleId=\"topsites_form_title_label\"\n                placeholderId=\"topsites_form_title_placeholder\"\n                intl={this.props.intl} />\n              <TopSiteFormInput onChange={this.onUrlChange}\n                shouldFocus={this.state.validationError && !this.validateUrl(this.state.url)}\n                value={this.state.url}\n                onClear={this.onClearUrlClick}\n                validationError={this.state.validationError && !this.validateUrl(this.state.url)}\n                titleId=\"topsites_form_url_label\"\n                typeUrl={true}\n                placeholderId=\"topsites_form_url_placeholder\"\n                errorMessageId=\"topsites_form_url_validation\"\n                intl={this.props.intl} />\n              {this._renderCustomScreenshotInput()}\n            </div>\n            <TopSiteLink link={previewLink}\n              defaultStyle={requestFailed}\n              title={this.state.label} />\n          </div>\n        </div>\n        <section className=\"actions\">\n          <button className=\"cancel\" type=\"button\" onClick={this.onCancelButtonClick}>\n            <FormattedMessage id=\"topsites_form_cancel_button\" />\n          </button>\n          {previewMode ?\n            <button className=\"done preview\" type=\"submit\" onClick={this.onPreviewButtonClick}>\n              <FormattedMessage id=\"topsites_form_preview_button\" />\n            </button> :\n            <button className=\"done\" type=\"submit\" onClick={this.onDoneButtonClick}>\n              <FormattedMessage id={showAsAdd ? \"topsites_form_add_button\" : \"topsites_form_save_button\"} />\n            </button>}\n        </section>\n      </form>\n    );\n  }\n}\n\nTopSiteForm.defaultProps = {\n  site: null,\n  index: -1\n};\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./content-src/activity-stream.jsx","webpack:///(webpack)/buildin/global.js","webpack:///./common/Actions.jsm","webpack:///./content-src/lib/snippets.js","webpack:///./content-src/asrouter/asrouter-content.jsx","webpack:///external \"React\"","webpack:///external \"PropTypes\"","webpack:///./content-src/lib/init-store.js","webpack:///external \"Redux\"","webpack:///./content-src/asrouter/components/ImpressionsWrapper/ImpressionsWrapper.jsx","webpack:///external \"ReactDOM\"","webpack:///./content-src/asrouter/template-utils.js","webpack:///./content-src/components/Base/Base.jsx","webpack:///external \"ReactIntl\"","webpack:///./content-src/components/ASRouterAdmin/ASRouterAdmin.jsx","webpack:///./content-src/components/ConfirmDialog/ConfirmDialog.jsx","webpack:///external \"ReactRedux\"","webpack:///./content-src/components/ErrorBoundary/ErrorBoundary.jsx","webpack:///./content-src/components/ManualMigration/ManualMigration.jsx","webpack:///./common/PrerenderData.jsm","webpack:///./content-src/components/Search/Search.jsx","webpack:///./content-src/lib/constants.js","webpack:///./content-src/components/Sections/Sections.jsx","webpack:///./content-src/lib/link-menu-options.js","webpack:///./content-src/components/LinkMenu/LinkMenu.jsx","webpack:///./content-src/components/ContextMenu/ContextMenu.jsx","webpack:///./content-src/lib/screenshot-utils.js","webpack:///./content-src/components/CollapsibleSection/CollapsibleSection.jsx","webpack:///./content-src/components/SectionMenu/SectionMenu.jsx","webpack:///./content-src/lib/section-menu-options.js","webpack:///./content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx","webpack:///./common/PerfService.jsm","webpack:///./content-src/components/Topics/Topics.jsx","webpack:///./content-src/components/TopSites/TopSites.jsx","webpack:///./content-src/components/TopSites/TopSitesConstants.js","webpack:///./content-src/components/TopSites/TopSite.jsx","webpack:///./content-src/components/StartupOverlay/StartupOverlay.jsx","webpack:///./content-src/lib/detect-user-session-start.js","webpack:///./node_modules/fluent/src/parser.js","webpack:///./node_modules/fluent/src/types.js","webpack:///./node_modules/fluent/src/builtins.js","webpack:///./node_modules/fluent/src/resolver.js","webpack:///./node_modules/fluent/src/context.js","webpack:///./node_modules/fluent/src/cached_iterable.js","webpack:///./node_modules/fluent/src/fallback.js","webpack:///./node_modules/fluent/src/util.js","webpack:///./node_modules/fluent/src/index.js","webpack:///./node_modules/fluent-react/src/localization.js","webpack:///./node_modules/fluent-react/src/provider.js","webpack:///./node_modules/fluent-react/src/with_localization.js","webpack:///./node_modules/fluent-react/src/markup.js","webpack:///./node_modules/fluent-react/vendor/omittedCloseTags.js","webpack:///./node_modules/fluent-react/vendor/voidElementTags.js","webpack:///./node_modules/fluent-react/src/localized.js","webpack:///./node_modules/fluent-react/src/index.js","webpack:///./content-src/asrouter/components/Button/Button.jsx","webpack:///./content-src/asrouter/components/SnippetBase/SnippetBase.jsx","webpack:///./content-src/asrouter/templates/SimpleSnippet/SimpleSnippet.jsx","webpack:///./common/Dedupe.jsm","webpack:///./common/Reducers.jsm","webpack:///./content-src/asrouter/components/ModalOverlay/ModalOverlay.jsx","webpack:///./content-src/asrouter/templates/OnboardingMessage/OnboardingMessage.jsx","webpack:///./content-src/components/Card/types.js","webpack:///./content-src/components/Card/Card.jsx","webpack:///./content-src/components/TopSites/TopSiteFormInput.jsx","webpack:///./content-src/components/TopSites/TopSiteForm.jsx"],"names":["store","initStore","global","gActivityStreamPrerenderedState","sendEventOrAddListener","dispatch","ac","AlsoToMain","type","at","NEW_TAB_STATE_REQUEST","ReactDOM","hydrate","document","location","href","documentElement","lang","gActivityStreamStrings","getElementById","addSnippetsSubscriber","globalImportContext","Window","BACKGROUND_PROCESS","UI_CODE","actionTypes","ASRouterActions","_RouteMessage","action","options","meta","from","to","Error","forEach","o","fromTarget","skipLocal","CONTENT_MESSAGE_TYPE","MAIN_MESSAGE_TYPE","OnlyToMain","BroadcastToContent","AlsoToOneContent","target","skipMain","toTarget","OnlyToOneContent","AlsoToPreloaded","PRELOAD_MESSAGE_TYPE","UserEvent","data","TELEMETRY_USER_EVENT","ASRouterUserEvent","AS_ROUTER_TELEMETRY_USER_EVENT","UndesiredEvent","importContext","TELEMETRY_UNDESIRED_EVENT","PerfEvent","TELEMETRY_PERFORMANCE_EVENT","ImpressionStats","TELEMETRY_IMPRESSION_STATS","SetPref","name","value","SET_PREF","WebExtEvent","source","isSendToMain","isBroadcastToContent","isSendToOneContent","isSendToPreloaded","isFromMain","getPortIdOfSender","DATABASE_NAME","DATABASE_VERSION","SNIPPETS_OBJECTSTORE_NAME","SNIPPETS_UPDATE_INTERVAL_MS","SNIPPETS_ENABLED_EVENT","SNIPPETS_DISABLED_EVENT","SnippetsMap","Map","constructor","_db","_dispatch","set","key","_dbTransaction","db","put","delete","clear","SNIPPETS_BLOCKLIST_CLEARED","blockList","get","blockSnippetById","id","includes","push","SNIPPETS_BLOCKLIST_UPDATED","disableOnboarding","DISABLE_ONBOARDING","showFirefoxAccounts","SHOW_FIREFOX_ACCOUNTS","getTotalBookmarksCount","Promise","resolve","TOTAL_BOOKMARKS_REQUEST","RPMAddMessageListener","onMessage","TOTAL_BOOKMARKS_RESPONSE","RPMRemoveMessageListener","getAddonsInfo","ADDONS_INFO_REQUEST","ADDONS_INFO_RESPONSE","connect","_openDB","_restoreFromDb","modifier","reject","transaction","objectStore","onsuccess","event","onerror","error","openRequest","indexedDB","open","deleteDatabase","onupgradeneeded","result","objectStoreNames","contains","createObjectStore","err","console","onversionchange","versionChangeEvent","close","cursorRequest","openCursor","cursor","continue","SnippetsProvider","gSnippetsMap","_onAction","bind","snippetsMap","_refreshSnippets","cachedVersion","appData","version","lastUpdate","needsUpdate","Date","now","snippetsURL","response","fetch","status","payload","text","e","_noSnippetFallback","_forceOnboardingVisibility","shouldBeVisible","onboardingEl","style","display","_showRemoteSnippets","snippetsEl","elementId","innerHTML","scriptEl","getElementsByTagName","relocatedScript","createElement","parentNode","replaceChild","msg","SNIPPET_BLOCKED","concat","init","Object","assign","keys","window","dispatchEvent","Event","initialized","uninit","snippets","asrouterContent","initializing","subscribe","state","getState","isASRouterEnabled","Prefs","values","asrouterExperimentEnabled","asrouterOnboardingCohort","disableSnippets","Snippets","INCOMING_MESSAGE_NAME","OUTGOING_MESSAGE_NAME","ASRouterUtils","addListener","listener","removeListener","sendMessage","RPMSendAsyncMessage","blockById","blockBundle","bundle","executeAction","button_action","button_action_params","unblockById","unblockBundle","getNextMessage","overrideMessage","sendTelemetry","ping","getEndpoint","params","URLSearchParams","slice","indexOf","endpoint","URL","url","snippetId","shouldSendImpressionOnUpdate","nextProps","prevProps","message","generateMessages","content","cx","addMessages","ALLOWED_TAGS","b","i","u","strong","em","br","convertLinks","links","sendClick","reduce","acc","linkTag","safeURI","metric","RichText","props","ASRouterUISurface","React","PureComponent","onMessageFromParent","sendImpression","sendUserActionTelemetry","extraProps","message_id","eventType","provider","dataset","onBlockById","clearBundle","setState","componentWillMount","trigger","componentWillUnmount","renderSnippets","renderOnboarding","render","template","defaultProps","ASRouterContent","containerElement","_mount","_unmount","unmountComponentAtNode","MERGE_STORE_ACTION","EARLY_QUEUED_ACTIONS","SAVE_SESSION_PERF_DATA","PAGE_PRERENDERED","mergeStateReducer","mainReducer","prevState","messageMiddleware","next","au","rehydrationMiddleware","_didRehydrate","isMergeStoreAction","isRehydrationRequest","_didRequestInitialState","INIT","queueEarlyMessageMiddleware","_receivedFromMain","_earlyActionQueue","reducers","initialState","createStore","combineReducers","applyMiddleware","ex","dump","JSON","stringify","stack","VISIBLE","VISIBILITY_CHANGE_EVENT","ImpressionsWrapper","sendImpressionOrAddListener","visibilityState","_onVisibilityChange","removeEventListener","addEventListener","componentDidMount","sendOnMount","componentDidUpdate","children","protocol","isAllowed","warn","PrefsButton","injectIntl","onClick","intl","formatMessage","addLocaleDataForReactIntl","locale","addLocaleData","parentLocale","_Base","App","sendNewTabRehydrated","isFirstrun","body","classList","add","isPrerendered","updateTheme","componentWillUpdate","bodyClassName","filter","v","join","className","renderNotified","NEW_TAB_REHYDRATED","strings","prefs","hash","BaseContent","openPreferences","SETTINGS_OPEN","shouldBeFixedToTop","PrerenderData","arePrefsValid","outerClassName","showSearch","migrationExpired","Base","ASRouterAdmin","findOtherBundledMessagesOfSameTemplate","messages","bundled","handleBlock","handleUnblock","handleOverride","renderMessageItem","isCurrent","lastMessageId","isBlocked","impressions","length","itemClassName","renderMessages","map","renderProviders","providers","_ConfirmDialog","_handleCancelBtn","_handleConfirmBtn","DIALOG_CANCEL","eventSource","onConfirm","_renderModalMessage","message_body","body_string_id","visible","icon","cancel_button_string_id","confirm_button_string_id","ConfirmDialog","Dialog","ErrorBoundaryFallback","windowObj","reload","defaultClass","ErrorBoundary","hasError","componentDidCatch","info","FallbackComponent","_ManualMigration","onLaunchTour","onCancelTour","MIGRATION_START","MIGRATION_CANCEL","ManualMigration","_PrerenderData","initialPrefs","initialSections","_setValidation","validation","_validation","invalidatingPrefs","_invalidatingPrefs","oneOf","getPref","indexedDBPrefs","some","anyModifiedPrefs","prefName","pref","enabled","order","title","_Search","onInputMount","handleEvent","detail","gContentSearchController","search","input","healthReportKey","IS_NEWTAB","searchSource","ContentSearchUIController","Search","documentURI","CARDS_PER_ROW_DEFAULT","CARDS_PER_ROW_COMPACT_WIDE","getFormattedMessage","Section","numRows","rowsPref","maxRows","_dispatchImpressionStats","cardsPerRow","compactCards","matchMedia","matches","maxCards","cards","rows","needsImpressionStats","tiles","link","guid","impressionCardGuids","sendImpressionStatsOrAddListener","shouldSendImpressionStats","collapsed","isCollapsed","wasCollapsed","emptyState","contextMenuOptions","disclaimer","privacyNoticeURL","isFirst","isLast","maxCardsPerRow","maxCardsOnNarrow","shouldShowTopics","topics","realRows","shouldShowEmptyState","isWebExtension","sectionClassName","feed","padding","startsWith","read_more_endpoint","SectionIntl","_Sections","renderSections","sections","enabledSections","Sections","section","sectionOrder","showTopSites","expectedCount","sectionId","split","commonProps","find","s","_OpenInPrivateWindow","site","OPEN_PRIVATE_WINDOW","referrer","userEvent","GetPlatformString","platform","LinkMenuOptions","Separator","EmptyItem","RemoveBookmark","DELETE_BOOKMARK_BY_ID","bookmarkGuid","AddBookmark","BOOKMARK_URL","OpenInNewWindow","OPEN_NEW_WINDOW","typedBonus","BlockUrl","index","BLOCK_URL","open_url","pocket_id","impression","block","pos","WebExtDismiss","string_id","WEBEXT_DISMISS","action_position","DeleteUrl","isEnabled","siteInfo","DIALOG_OPEN","DELETE_HISTORY_URL","forceBlock","ShowFile","SHOW_DOWNLOAD_FILE","OpenFile","OPEN_DOWNLOAD_FILE","CopyDownloadLink","COPY_DOWNLOAD_LINK","GoToDownloadPage","OPEN_LINK","disabled","RemoveDownload","REMOVE_DOWNLOAD_FILE","PinTopSite","TOP_SITES_PIN","UnpinTopSite","TOP_SITES_UNPIN","SaveToPocket","SAVE_TO_POCKET","pocket","DeleteFromPocket","DELETE_FROM_POCKET","ArchiveFromPocket","ARCHIVE_FROM_POCKET","EditTopSite","TOP_SITES_EDIT","CheckBookmark","CheckPinTopSite","isPinned","CheckSavedToPocket","CheckBookmarkOrArchive","OpenInPrivateWindow","DEFAULT_SITE_MENU_OPTIONS","_LinkMenu","getOptions","isPrivateBrowsingEnabled","propOptions","isDefault","option","label","userEventData","first","last","onUpdate","LinkMenu","ContextMenu","hideContext","setTimeout","stopPropagation","ContextMenuItem","onKeyDown","shiftKey","ScreenshotUtils","isBlob","isLocal","image","path","createLocalImageObject","remoteImage","createObjectURL","maybeRevokeBlobObjectURL","localImage","revokeObjectURL","isRemoteImageLocal","Disclaimer","onAcknowledge","disclaimerPref","button","DisclaimerIntl","_CollapsibleSection","onBodyMount","onHeaderClick","onTransitionEnd","enableOrDisableAnimation","onMenuButtonClick","onMenuButtonMouseEnter","onMenuButtonMouseLeave","onMenuUpdate","enableAnimation","isAnimating","menuButtonHover","showContextMenu","sectionBody","scrollHeight","node","undefined","maxHeight","SectionMenuOptions","CheckCollapsed","currentTarget","renderIcon","backgroundImage","preventDefault","isCollapsible","extraMenuOptions","showPrefName","needsDisclaimer","active","CollapsibleSection","DEFAULT_SECTION_MENU_OPTIONS","WEBEXT_SECTION_MENU_OPTIONS","_SectionMenu","extraOptions","splice","SectionMenu","MoveUp","SECTION_MOVE","direction","MoveDown","RemoveSection","CollapseSection","UPDATE_SECTION_PREFS","ExpandSection","ManageSection","ManageWebExtension","OPEN_WEBEXT_SETTINGS","AddTopSite","PrivacyNotice","RECORDED_SECTIONS","ComponentPerfTimer","Component","perfSvc","_sendBadStateEvent","_sendPaintedEvent","_reportMissingData","_timestampHandled","_recordedFirstRender","_maybeSendPaintedEvent","_afterFramePaint","callback","requestAnimationFrame","_maybeSendBadStateEvent","_ensureFirstRenderTsRecorded","mark","dataReadyKey","firstRenderKey","parseInt","getMostRecentAbsMarkStartByName","ChromeUtils","import","usablePerfObj","Services","appShell","hiddenDOMWindow","performance","_PerfService","performanceObj","_perf","prototype","str","getEntriesByName","timeOrigin","absNow","entries","mostRecentEntry","startTime","Topic","Topics","t","topSiteIconType","customScreenshotURL","tippyTopIcon","faviconRef","faviconSize","screenshot","countTopSitesIconsTypes","topSites","countTopSitesTypes","_TopSites","onFormClose","_dispatchTopSitesStats","_getVisibleTopSites","topSitesIconsStats","topSitesPinned","topsites_icon_stats","topsites_pinned","sitesPerRow","TopSites","TopSitesRows","TOP_SITES_CANCEL_EDIT","editForm","topSitesRows","TOP_SITES_SOURCE","TOP_SITES_CONTEXT_MENU_OPTIONS","MIN_RICH_FAVICON_SIZE","MIN_CORNER_FAVICON_SIZE","TopSiteLink","screenshotImage","onDragEvent","_allowDrop","dataTransfer","types","dragged","effectAllowed","setData","blur","getNextStateFromProps","imageInState","nextState","componentWillReceiveProps","defaultStyle","isDraggable","topSiteOuterClassName","isDragged","letterFallback","imageClassName","imageStyle","showSmallFavicon","smallFaviconStyle","smallFaviconFallback","hasScreenshotImage","backgroundColor","favicon","draggableProps","onDragEnd","onDragStart","onMouseDown","TopSite","onLinkClick","_getTelemetryInfo","icon_type","iconType","card_type","altKey","ctrlKey","metaKey","onActivate","isContextMenuOpen","activeIndex","hostname","TopSitePlaceholder","onEditButtonClick","_TopSiteList","DEFAULT_STATE","draggedIndex","draggedSite","draggedTitle","topSitesPreview","prevTopSites","newTopSites","dropped","_makeTopSitesPreview","TOP_SITES_INSERT","draggedFromIndex","_getTopSites","pinnedOnly","unpinned","siteToInsert","holeIndex","indexStep","shiftingStep","nextIndex","preview","shift","topSitesUI","maxNarrowVisibleIndex","l","slotProps","TopSiteList","_StartupOverlay","onInputChange","onSubmit","clickSkip","initScene","removeOverlay","onInputInvalid","emailInput","overlayRemoved","flowId","flowBeginTime","didFetch","fxa_endpoint","json","show","remove","previousSibling","focus","termsLink","privacyLink","terms","privacy","StartupOverlay","DetectUserSessionStart","_store","_perfService","perfService","_sendEvent","visibility_event_rcvd_ts","MAX_PLACEABLES","entryIdentifierRe","identifierRe","functionIdentifierRe","RuntimeParser","getResource","string","_source","_index","_length","errors","skipWS","getEntry","SyntaxError","skipToNextEntryStart","ch","skipComment","skipSection","getMessage","skipInlineWS","getVariantName","getEntryIdentifier","val","getPattern","attrs","lineStart","getAttributes","skipBlankLines","ptr","getIdentifier","re","lastIndex","exec","toString","start","cc","charCodeAt","getString","substring","eol","firstLineContent","getComplexPattern","buffer","placeables","blankLinesStart","blankLinesEnd","ch2","getPlaceable","variants","getVariants","exp","vars","def","selector","getSelectorExpression","literal","getLiteral","getVariantKey","args","getCallArgs","test","fun","Array","isArray","lastIndexOf","getNumber","num","defaultIndex","cc0","cc1","parse","parser","FluentType","opts","valueOf","FluentNone","FluentNumber","parseFloat","ctx","nf","_memoizeIntlObject","Intl","NumberFormat","format","match","other","FluentDateTime","dtf","DateTimeFormat","FluentSymbol","pr","PluralRules","select","arg","merge","argopts","unwrapped","opt","MAX_PLACEABLE_LENGTH","FSI","PDI","DefaultMember","env","members","RangeError","MessageReference","_terms","_messages","ReferenceError","VariantExpression","keyword","Type","isVariantList","variant","variantKey","AttributeExpression","attrName","SelectExpression","keyCanMatch","expr","Pattern","ExternalArgument","FunctionReference","CallExpression","attr","member","hasOwnProperty","TypeError","_functions","func","builtins","callee","posargs","keyargs","ptn","dirty","has","useIsolating","_useIsolating","elem","part","WeakSet","locales","functions","_intls","WeakMap","Symbol","iterator","hasMessage","ctor","cache","CachedIterable","iterable","asyncIterator","seen","cur","touchNext","done","mapContextSync","ids","getContextForId","context","remainingCount","foundContexts","fill","mapContextAsync","nonBlank","line","countIndent","indent","ftl","code","lines","indents","common","Math","min","RegExp","replace","contexts","subs","Set","comp","unsubscribe","setMessages","relocalize","getMessageContext","formatCompound","mcx","fallback","isReactLocalization","propName","prop","l10n","getChildContext","Children","only","LocalizationProvider","childContextTypes","propTypes","PropTypes","element","isRequired","isIterable","componentName","withLocalization","Inner","WithLocalization","forceUpdate","displayName","contextTypes","component","TEMPLATE","parseMarkup","omittedCloseTags","area","base","col","embed","hr","img","keygen","param","track","wbr","voidElementTags","menuitem","reMarkup","toArguments","elems","propname","propval","substr","isValidElement","toLowerCase","messageValue","messageAttrs","localizedProps","cloneElement","translationNodes","childNodes","translatedChildren","childNode","nodeType","TEXT_NODE","textContent","localName","sourceChild","Localized","ALLOWED_STYLE_TAGS","Button","tag","border","onBlockClicked","UISurface","onBlock","containerClassName","DEFAULT_ICON_PATH","onButtonClick","renderTitle","renderTitleIcon","titleIcon","title_icon","renderButton","button_url","button_color","button_background_color","button_label","hasLink","button_type","hasButton","tall","richText","Dedupe","createKey","defaultCreateKey","item","group","groups","globalKeys","valueMap","m","TOP_SITES_DEFAULT_ROWS","TOP_SITES_MAX_SITES_PER_ROW","dedupe","INITIAL_STATE","insertPinned","pinned","pinnedUrls","newLinks","pinIndex","hasMatch","newRows","TOP_SITES_UPDATED","TOP_SITES_PREFS_UPDATED","previewResponse","PREVIEW_RESPONSE","previewUrl","PREVIEW_REQUEST","PREVIEW_REQUEST_CANCEL","SCREENSHOT_UPDATED","row","PLACES_BOOKMARK_ADDED","bookmarkTitle","dateAdded","bookmarkDateCreated","PLACES_BOOKMARK_REMOVED","newSite","PLACES_LINK_DELETED","newValues","PREFS_INITIAL_VALUES","PREF_CHANGED","newState","SECTION_DEREGISTER","SECTION_REGISTER","SECTION_UPDATE","card","dedupeConfigurations","dedupeConf","dedupedRows","dedupeFrom","dedupeSectionId","dedupeSection","SECTION_UPDATE_CARD","PLACES_SAVED_TO_POCKET","PLACES_LINK_BLOCKED","SNIPPETS_DATA","SNIPPETS_RESET","onDoneButton","onAction","cardContextTypes","history","intlID","bookmark","trending","download","gImageLoading","activeCard","imageLoaded","cardImage","maybeLoadImage","imageUrl","loaderPromise","loader","Image","src","catch","then","WEBEXT_CLICK","click","_Card","hasImage","placeholder","description","Card","PlaceholderCard","validationError","onChange","onMount","shouldFocus","ev","showClearButton","onClear","typeUrl","titleId","loading","placeholderId","errorMessageId","TopSiteFormInput","customScreenshotUrl","showCustomScreenshotForm","onClearScreenshotInput","onLabelChange","onUrlChange","onCancelButtonClick","onClearUrlClick","onDoneButtonClick","onCustomScreenshotUrlChange","onPreviewButtonClick","onEnableScreenshotUrlForm","validateUrl","_updateCustomScreenshotInput","onClose","validateForm","cleanUrl","_tryParseUrl","validProtocols","urlObj","validateCustomScreenshotUrl","validate","_renderCustomScreenshotInput","requestFailed","isLoading","showAsAdd","previous","changed","previewMode","previewLink","TopSiteForm"],"mappings":"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","file":"activity-stream.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addSnippetsSubscriber} from \"content-src/lib/snippets\";\nimport {Base} from \"content-src/components/Base/Base\";\nimport {DetectUserSessionStart} from \"content-src/lib/detect-user-session-start\";\nimport {initStore} from \"content-src/lib/init-store\";\nimport {Provider} from \"react-redux\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {reducers} from \"common/Reducers.jsm\";\n\nconst store = initStore(reducers, global.gActivityStreamPrerenderedState);\n\nnew DetectUserSessionStart(store).sendEventOrAddListener();\n\n// If we are starting in a prerendered state, we must wait until the first render\n// to request state rehydration (see Base.jsx). If we are NOT in a prerendered state,\n// we can request it immedately.\nif (!global.gActivityStreamPrerenderedState) {\n  store.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n}\n\nReactDOM.hydrate(<Provider store={store}>\n  <Base\n    isFirstrun={global.document.location.href === \"about:welcome\"}\n    isPrerendered={!!global.gActivityStreamPrerenderedState}\n    locale={global.document.documentElement.lang}\n    strings={global.gActivityStreamStrings} />\n</Provider>, document.getElementById(\"root\"));\n\naddSnippetsSubscriber(store);\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nthis.MAIN_MESSAGE_TYPE = \"ActivityStream:Main\";\nthis.CONTENT_MESSAGE_TYPE = \"ActivityStream:Content\";\nthis.PRELOAD_MESSAGE_TYPE = \"ActivityStream:PreloadedBrowser\";\nthis.UI_CODE = 1;\nthis.BACKGROUND_PROCESS = 2;\n\n/**\n * globalImportContext - Are we in UI code (i.e. react, a dom) or some kind of background process?\n *                       Use this in action creators if you need different logic\n *                       for ui/background processes.\n */\nconst globalImportContext = typeof Window === \"undefined\" ? BACKGROUND_PROCESS : UI_CODE;\n// Export for tests\nthis.globalImportContext = globalImportContext;\n\n// Create an object that avoids accidental differing key/value pairs:\n// {\n//   INIT: \"INIT\",\n//   UNINIT: \"UNINIT\"\n// }\nconst actionTypes = {};\nfor (const type of [\n  \"ADDONS_INFO_REQUEST\",\n  \"ADDONS_INFO_RESPONSE\",\n  \"ARCHIVE_FROM_POCKET\",\n  \"AS_ROUTER_TELEMETRY_USER_EVENT\",\n  \"BLOCK_URL\",\n  \"BOOKMARK_URL\",\n  \"COPY_DOWNLOAD_LINK\",\n  \"DELETE_BOOKMARK_BY_ID\",\n  \"DELETE_FROM_POCKET\",\n  \"DELETE_HISTORY_URL\",\n  \"DIALOG_CANCEL\",\n  \"DIALOG_OPEN\",\n  \"DISABLE_ONBOARDING\",\n  \"DOWNLOAD_CHANGED\",\n  \"INIT\",\n  \"MIGRATION_CANCEL\",\n  \"MIGRATION_COMPLETED\",\n  \"MIGRATION_START\",\n  \"NEW_TAB_INIT\",\n  \"NEW_TAB_INITIAL_STATE\",\n  \"NEW_TAB_LOAD\",\n  \"NEW_TAB_REHYDRATED\",\n  \"NEW_TAB_STATE_REQUEST\",\n  \"NEW_TAB_UNLOAD\",\n  \"OPEN_DOWNLOAD_FILE\",\n  \"OPEN_LINK\",\n  \"OPEN_NEW_WINDOW\",\n  \"OPEN_PRIVATE_WINDOW\",\n  \"OPEN_WEBEXT_SETTINGS\",\n  \"PAGE_PRERENDERED\",\n  \"PLACES_BOOKMARK_ADDED\",\n  \"PLACES_BOOKMARK_REMOVED\",\n  \"PLACES_HISTORY_CLEARED\",\n  \"PLACES_LINKS_CHANGED\",\n  \"PLACES_LINK_BLOCKED\",\n  \"PLACES_LINK_DELETED\",\n  \"PLACES_SAVED_TO_POCKET\",\n  \"PREFS_INITIAL_VALUES\",\n  \"PREF_CHANGED\",\n  \"PREVIEW_REQUEST\",\n  \"PREVIEW_REQUEST_CANCEL\",\n  \"PREVIEW_RESPONSE\",\n  \"REMOVE_DOWNLOAD_FILE\",\n  \"RICH_ICON_MISSING\",\n  \"SAVE_SESSION_PERF_DATA\",\n  \"SAVE_TO_POCKET\",\n  \"SCREENSHOT_UPDATED\",\n  \"SECTION_DEREGISTER\",\n  \"SECTION_DISABLE\",\n  \"SECTION_ENABLE\",\n  \"SECTION_MOVE\",\n  \"SECTION_OPTIONS_CHANGED\",\n  \"SECTION_REGISTER\",\n  \"SECTION_UPDATE\",\n  \"SECTION_UPDATE_CARD\",\n  \"SETTINGS_CLOSE\",\n  \"SETTINGS_OPEN\",\n  \"SET_PREF\",\n  \"SHOW_DOWNLOAD_FILE\",\n  \"SHOW_FIREFOX_ACCOUNTS\",\n  \"SKIPPED_SIGNIN\",\n  \"SNIPPETS_BLOCKLIST_CLEARED\",\n  \"SNIPPETS_BLOCKLIST_UPDATED\",\n  \"SNIPPETS_DATA\",\n  \"SNIPPETS_RESET\",\n  \"SNIPPET_BLOCKED\",\n  \"SUBMIT_EMAIL\",\n  \"SYSTEM_TICK\",\n  \"TELEMETRY_IMPRESSION_STATS\",\n  \"TELEMETRY_PERFORMANCE_EVENT\",\n  \"TELEMETRY_UNDESIRED_EVENT\",\n  \"TELEMETRY_USER_EVENT\",\n  \"TOP_SITES_CANCEL_EDIT\",\n  \"TOP_SITES_EDIT\",\n  \"TOP_SITES_INSERT\",\n  \"TOP_SITES_PIN\",\n  \"TOP_SITES_PREFS_UPDATED\",\n  \"TOP_SITES_UNPIN\",\n  \"TOP_SITES_UPDATED\",\n  \"TOTAL_BOOKMARKS_REQUEST\",\n  \"TOTAL_BOOKMARKS_RESPONSE\",\n  \"UNINIT\",\n  \"UPDATE_SECTION_PREFS\",\n  \"WEBEXT_CLICK\",\n  \"WEBEXT_DISMISS\"\n]) {\n  actionTypes[type] = type;\n}\n\n// These are acceptable actions for AS Router messages to have. They can show up\n// as call-to-action buttons in snippets, onboarding tour, etc.\nconst ASRouterActions = {};\nfor (const type of [\n  \"INSTALL_ADDON_FROM_URL\",\n  \"OPEN_PRIVATE_BROWSER_WINDOW\",\n  \"OPEN_URL\",\n  \"OPEN_ABOUT_PAGE\"\n]) {\n  ASRouterActions[type] = type;\n}\n\n// Helper function for creating routed actions between content and main\n// Not intended to be used by consumers\nfunction _RouteMessage(action, options) {\n  const meta = action.meta ? {...action.meta} : {};\n  if (!options || !options.from || !options.to) {\n    throw new Error(\"Routed Messages must have options as the second parameter, and must at least include a .from and .to property.\");\n  }\n  // For each of these fields, if they are passed as an option,\n  // add them to the action. If they are not defined, remove them.\n  [\"from\", \"to\", \"toTarget\", \"fromTarget\", \"skipMain\", \"skipLocal\"].forEach(o => {\n    if (typeof options[o] !== \"undefined\") {\n      meta[o] = options[o];\n    } else if (meta[o]) {\n      delete meta[o];\n    }\n  });\n  return {...action, meta};\n}\n\n/**\n * AlsoToMain - Creates a message that will be dispatched locally and also sent to the Main process.\n *\n * @param  {object} action Any redux action (required)\n * @param  {object} options\n * @param  {bool}   skipLocal Used by OnlyToMain to skip the main reducer\n * @param  {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToMain(action, fromTarget, skipLocal) {\n  return _RouteMessage(action, {\n    from: CONTENT_MESSAGE_TYPE,\n    to: MAIN_MESSAGE_TYPE,\n    fromTarget,\n    skipLocal\n  });\n}\n\n/**\n * OnlyToMain - Creates a message that will be sent to the Main process and skip the local reducer.\n *\n * @param  {object} action Any redux action (required)\n * @param  {object} options\n * @param  {string} fromTarget The id of the content port from which the action originated. (optional)\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToMain(action, fromTarget) {\n  return AlsoToMain(action, fromTarget, true);\n}\n\n/**\n * BroadcastToContent - Creates a message that will be dispatched to main and sent to ALL content processes.\n *\n * @param  {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction BroadcastToContent(action) {\n  return _RouteMessage(action, {\n    from: MAIN_MESSAGE_TYPE,\n    to: CONTENT_MESSAGE_TYPE\n  });\n}\n\n/**\n * AlsoToOneContent - Creates a message that will be will be dispatched to the main store\n *                    and also sent to a particular Content process.\n *\n * @param  {object} action Any redux action (required)\n * @param  {string} target The id of a content port\n * @param  {bool} skipMain Used by OnlyToOneContent to skip the main process\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToOneContent(action, target, skipMain) {\n  if (!target) {\n    throw new Error(\"You must provide a target ID as the second parameter of AlsoToOneContent. If you want to send to all content processes, use BroadcastToContent\");\n  }\n  return _RouteMessage(action, {\n    from: MAIN_MESSAGE_TYPE,\n    to: CONTENT_MESSAGE_TYPE,\n    toTarget: target,\n    skipMain\n  });\n}\n\n/**\n * OnlyToOneContent - Creates a message that will be sent to a particular Content process\n *                    and skip the main reducer.\n *\n * @param  {object} action Any redux action (required)\n * @param  {string} target The id of a content port\n * @return {object} An action with added .meta properties\n */\nfunction OnlyToOneContent(action, target) {\n  return AlsoToOneContent(action, target, true);\n}\n\n/**\n * AlsoToPreloaded - Creates a message that dispatched to the main reducer and also sent to the preloaded tab.\n *\n * @param  {object} action Any redux action (required)\n * @return {object} An action with added .meta properties\n */\nfunction AlsoToPreloaded(action) {\n  return _RouteMessage(action, {\n    from: MAIN_MESSAGE_TYPE,\n    to: PRELOAD_MESSAGE_TYPE\n  });\n}\n\n/**\n * UserEvent - A telemetry ping indicating a user action. This should only\n *                   be sent from the UI during a user session.\n *\n * @param  {object} data Fields to include in the ping (source, etc.)\n * @return {object} An AlsoToMain action\n */\nfunction UserEvent(data) {\n  return AlsoToMain({\n    type: actionTypes.TELEMETRY_USER_EVENT,\n    data\n  });\n}\n\n/**\n * ASRouterUserEvent - A telemetry ping indicating a user action from AS router. This should only\n *                     be sent from the UI during a user session.\n *\n * @param  {object} data Fields to include in the ping (source, etc.)\n * @return {object} An AlsoToMain action\n */\nfunction ASRouterUserEvent(data) {\n  return AlsoToMain({\n    type: actionTypes.AS_ROUTER_TELEMETRY_USER_EVENT,\n    data\n  });\n}\n\n/**\n * UndesiredEvent - A telemetry ping indicating an undesired state.\n *\n * @param  {object} data Fields to include in the ping (value, etc.)\n * @param  {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction UndesiredEvent(data, importContext = globalImportContext) {\n  const action = {\n    type: actionTypes.TELEMETRY_UNDESIRED_EVENT,\n    data\n  };\n  return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * PerfEvent - A telemetry ping indicating a performance-related event.\n *\n * @param  {object} data Fields to include in the ping (value, etc.)\n * @param  {int} importContext (For testing) Override the import context for testing.\n * @return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction PerfEvent(data, importContext = globalImportContext) {\n  const action = {\n    type: actionTypes.TELEMETRY_PERFORMANCE_EVENT,\n    data\n  };\n  return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\n/**\n * ImpressionStats - A telemetry ping indicating an impression stats.\n *\n * @param  {object} data Fields to include in the ping\n * @param  {int} importContext (For testing) Override the import context for testing.\n * #return {object} An action. For UI code, a AlsoToMain action.\n */\nfunction ImpressionStats(data, importContext = globalImportContext) {\n  const action = {\n    type: actionTypes.TELEMETRY_IMPRESSION_STATS,\n    data\n  };\n  return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction SetPref(name, value, importContext = globalImportContext) {\n  const action = {type: actionTypes.SET_PREF, data: {name, value}};\n  return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nfunction WebExtEvent(type, data, importContext = globalImportContext) {\n  if (!data || !data.source) {\n    throw new Error(\"WebExtEvent actions should include a property \\\"source\\\", the id of the webextension that should receive the event.\");\n  }\n  const action = {type, data};\n  return importContext === UI_CODE ? AlsoToMain(action) : action;\n}\n\nthis.actionTypes = actionTypes;\nthis.ASRouterActions = ASRouterActions;\n\nthis.actionCreators = {\n  BroadcastToContent,\n  UserEvent,\n  ASRouterUserEvent,\n  UndesiredEvent,\n  PerfEvent,\n  ImpressionStats,\n  AlsoToOneContent,\n  OnlyToOneContent,\n  AlsoToMain,\n  OnlyToMain,\n  AlsoToPreloaded,\n  SetPref,\n  WebExtEvent\n};\n\n// These are helpers to test for certain kinds of actions\nthis.actionUtils = {\n  isSendToMain(action) {\n    if (!action.meta) {\n      return false;\n    }\n    return action.meta.to === MAIN_MESSAGE_TYPE && action.meta.from === CONTENT_MESSAGE_TYPE;\n  },\n  isBroadcastToContent(action) {\n    if (!action.meta) {\n      return false;\n    }\n    if (action.meta.to === CONTENT_MESSAGE_TYPE && !action.meta.toTarget) {\n      return true;\n    }\n    return false;\n  },\n  isSendToOneContent(action) {\n    if (!action.meta) {\n      return false;\n    }\n    if (action.meta.to === CONTENT_MESSAGE_TYPE && action.meta.toTarget) {\n      return true;\n    }\n    return false;\n  },\n  isSendToPreloaded(action) {\n    if (!action.meta) {\n      return false;\n    }\n    return action.meta.to === PRELOAD_MESSAGE_TYPE &&\n      action.meta.from === MAIN_MESSAGE_TYPE;\n  },\n  isFromMain(action) {\n    if (!action.meta) {\n      return false;\n    }\n    return action.meta.from === MAIN_MESSAGE_TYPE &&\n      action.meta.to === CONTENT_MESSAGE_TYPE;\n  },\n  getPortIdOfSender(action) {\n    return (action.meta && action.meta.fromTarget) || null;\n  },\n  _RouteMessage\n};\n\nconst EXPORTED_SYMBOLS = [\n  \"actionTypes\",\n  \"actionCreators\",\n  \"actionUtils\",\n  \"ASRouterActions\",\n  \"globalImportContext\",\n  \"UI_CODE\",\n  \"BACKGROUND_PROCESS\",\n  \"MAIN_MESSAGE_TYPE\",\n  \"CONTENT_MESSAGE_TYPE\",\n  \"PRELOAD_MESSAGE_TYPE\"\n];\n","const DATABASE_NAME = \"snippets_db\";\nconst DATABASE_VERSION = 1;\nconst SNIPPETS_OBJECTSTORE_NAME = \"snippets\";\nexport const SNIPPETS_UPDATE_INTERVAL_MS = 14400000; // 4 hours.\n\nconst SNIPPETS_ENABLED_EVENT = \"Snippets:Enabled\";\nconst SNIPPETS_DISABLED_EVENT = \"Snippets:Disabled\";\n\nimport {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {ASRouterContent} from \"content-src/asrouter/asrouter-content\";\n\n/**\n * SnippetsMap - A utility for cacheing values related to the snippet. It has\n *               the same interface as a Map, but is optionally backed by\n *               indexedDB for persistent storage.\n *               Call .connect() to open a database connection and restore any\n *               previously cached data, if necessary.\n *\n */\nexport class SnippetsMap extends Map {\n  constructor(dispatch) {\n    super();\n    this._db = null;\n    this._dispatch = dispatch;\n  }\n\n  set(key, value) {\n    super.set(key, value);\n    return this._dbTransaction(db => db.put(value, key));\n  }\n\n  delete(key) {\n    super.delete(key);\n    return this._dbTransaction(db => db.delete(key));\n  }\n\n  clear() {\n    super.clear();\n    this._dispatch(ac.OnlyToMain({type: at.SNIPPETS_BLOCKLIST_CLEARED}));\n    return this._dbTransaction(db => db.clear());\n  }\n\n  get blockList() {\n    return this.get(\"blockList\") || [];\n  }\n\n  /**\n   * blockSnippetById - Blocks a snippet given an id\n   *\n   * @param  {str|int} id   The id of the snippet\n   * @return {Promise}      Resolves when the id has been written to indexedDB,\n   *                        or immediately if the snippetMap is not connected\n   */\n  async blockSnippetById(id) {\n    if (!id) {\n      return;\n    }\n    const {blockList} = this;\n    if (!blockList.includes(id)) {\n      blockList.push(id);\n      this._dispatch(ac.AlsoToMain({type: at.SNIPPETS_BLOCKLIST_UPDATED, data: id}));\n      await this.set(\"blockList\", blockList);\n    }\n  }\n\n  disableOnboarding() {\n    this._dispatch(ac.AlsoToMain({type: at.DISABLE_ONBOARDING}));\n  }\n\n  showFirefoxAccounts() {\n    this._dispatch(ac.AlsoToMain({type: at.SHOW_FIREFOX_ACCOUNTS}));\n  }\n\n  getTotalBookmarksCount() {\n    return new Promise(resolve => {\n      this._dispatch(ac.OnlyToMain({type: at.TOTAL_BOOKMARKS_REQUEST}));\n      global.RPMAddMessageListener(\"ActivityStream:MainToContent\", function onMessage({data: action}) {\n        if (action.type === at.TOTAL_BOOKMARKS_RESPONSE) {\n          resolve(action.data);\n          global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", onMessage);\n        }\n      });\n    });\n  }\n\n  getAddonsInfo() {\n    return new Promise(resolve => {\n      this._dispatch(ac.OnlyToMain({type: at.ADDONS_INFO_REQUEST}));\n      global.RPMAddMessageListener(\"ActivityStream:MainToContent\", function onMessage({data: action}) {\n        if (action.type === at.ADDONS_INFO_RESPONSE) {\n          resolve(action.data);\n          global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", onMessage);\n        }\n      });\n    });\n  }\n\n  /**\n   * connect - Attaches an indexedDB back-end to the Map so that any set values\n   *           are also cached in a store. It also restores any existing values\n   *           that are already stored in the indexedDB store.\n   *\n   * @return {type}  description\n   */\n  async connect() {\n    // Open the connection\n    const db = await this._openDB();\n\n    // Restore any existing values\n    await this._restoreFromDb(db);\n\n    // Attach a reference to the db\n    this._db = db;\n  }\n\n  /**\n   * _dbTransaction - Returns a db transaction wrapped with the given modifier\n   *                  function as a Promise. If the db has not been connected,\n   *                  it resolves immediately.\n   *\n   * @param  {func} modifier A function to call with the transaction\n   * @return {obj}           A Promise that resolves when the transaction has\n   *                         completed or errored\n   */\n  _dbTransaction(modifier) {\n    if (!this._db) {\n      return Promise.resolve();\n    }\n    return new Promise((resolve, reject) => {\n      const transaction = modifier(\n        this._db\n          .transaction(SNIPPETS_OBJECTSTORE_NAME, \"readwrite\")\n          .objectStore(SNIPPETS_OBJECTSTORE_NAME)\n      );\n      transaction.onsuccess = event => resolve();\n\n      /* istanbul ignore next */\n      transaction.onerror = event => reject(transaction.error);\n    });\n  }\n\n  _openDB() {\n    return new Promise((resolve, reject) => {\n      const openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);\n\n      /* istanbul ignore next */\n      openRequest.onerror = event => {\n        // Try to delete the old database so that we can start this process over\n        // next time.\n        indexedDB.deleteDatabase(DATABASE_NAME);\n        reject(event);\n      };\n\n      openRequest.onupgradeneeded = event => {\n        const db = event.target.result;\n        if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) {\n          db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME);\n        }\n      };\n\n      openRequest.onsuccess = event => {\n        let db = event.target.result;\n\n        /* istanbul ignore next */\n        db.onerror = err => console.error(err); // eslint-disable-line no-console\n        /* istanbul ignore next */\n        db.onversionchange = versionChangeEvent => versionChangeEvent.target.close();\n\n        resolve(db);\n      };\n    });\n  }\n\n  _restoreFromDb(db) {\n    return new Promise((resolve, reject) => {\n      let cursorRequest;\n      try {\n        cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)\n          .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();\n      } catch (err) {\n        // istanbul ignore next\n        reject(err);\n        // istanbul ignore next\n        return;\n      }\n\n      /* istanbul ignore next */\n      cursorRequest.onerror = event => reject(event);\n\n      cursorRequest.onsuccess = event => {\n        let cursor = event.target.result;\n        // Populate the cache from the persistent storage.\n        if (cursor) {\n          if (cursor.value !== \"blockList\") {\n            this.set(cursor.key, cursor.value);\n          }\n          cursor.continue();\n        } else {\n          // We are done.\n          resolve();\n        }\n      };\n    });\n  }\n}\n\n/**\n * SnippetsProvider - Initializes a SnippetsMap and loads snippets from a\n *                    remote location, or else default snippets if the remote\n *                    snippets cannot be retrieved.\n */\nexport class SnippetsProvider {\n  constructor(dispatch) {\n    // Initialize the Snippets Map and attaches it to a global so that\n    // the snippet payload can interact with it.\n    global.gSnippetsMap = new SnippetsMap(dispatch);\n    this._onAction = this._onAction.bind(this);\n  }\n\n  get snippetsMap() {\n    return global.gSnippetsMap;\n  }\n\n  async _refreshSnippets() {\n    // Check if the cached version of of the snippets in snippetsMap. If it's too\n    // old, blow away the entire snippetsMap.\n    const cachedVersion = this.snippetsMap.get(\"snippets-cached-version\");\n\n    if (cachedVersion !== this.appData.version) {\n      this.snippetsMap.clear();\n    }\n\n    // Has enough time passed for us to require an update?\n    const lastUpdate = this.snippetsMap.get(\"snippets-last-update\");\n    const needsUpdate = !(lastUpdate >= 0) || Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS;\n\n    if (needsUpdate && this.appData.snippetsURL) {\n      this.snippetsMap.set(\"snippets-last-update\", Date.now());\n      try {\n        const response = await fetch(this.appData.snippetsURL);\n        if (response.status === 200) {\n          const payload = await response.text();\n\n          this.snippetsMap.set(\"snippets\", payload);\n          this.snippetsMap.set(\"snippets-cached-version\", this.appData.version);\n        }\n      } catch (e) {\n        console.error(e); // eslint-disable-line no-console\n      }\n    }\n  }\n\n  _noSnippetFallback() {\n    // TODO\n  }\n\n  _forceOnboardingVisibility(shouldBeVisible) {\n    const onboardingEl = document.getElementById(\"onboarding-notification-bar\");\n\n    if (onboardingEl) {\n      onboardingEl.style.display = shouldBeVisible ? \"\" : \"none\";\n    }\n  }\n\n  _showRemoteSnippets() {\n    const snippetsEl = document.getElementById(this.elementId);\n    const payload = this.snippetsMap.get(\"snippets\");\n\n    if (!snippetsEl) {\n      throw new Error(`No element was found with id '${this.elementId}'.`);\n    }\n\n    // This could happen if fetching failed\n    if (!payload) {\n      throw new Error(\"No remote snippets were found in gSnippetsMap.\");\n    }\n\n    if (typeof payload !== \"string\") {\n      throw new Error(\"Snippet payload was incorrectly formatted\");\n    }\n\n    // Note that injecting snippets can throw if they're invalid XML.\n    // eslint-disable-next-line no-unsanitized/property\n    snippetsEl.innerHTML = payload;\n\n    // Scripts injected by innerHTML are inactive, so we have to relocate them\n    // through DOM manipulation to activate their contents.\n    for (const scriptEl of snippetsEl.getElementsByTagName(\"script\")) {\n      const relocatedScript = document.createElement(\"script\");\n      relocatedScript.text = scriptEl.text;\n      scriptEl.parentNode.replaceChild(relocatedScript, scriptEl);\n    }\n  }\n\n  _onAction(msg) {\n    if (msg.data.type === at.SNIPPET_BLOCKED) {\n      if (!this.snippetsMap.blockList.includes(msg.data.data)) {\n        this.snippetsMap.set(\"blockList\", this.snippetsMap.blockList.concat(msg.data.data));\n        document.getElementById(\"snippets-container\").style.display = \"none\";\n      }\n    }\n  }\n\n  /**\n   * init - Fetch the snippet payload and show snippets\n   *\n   * @param  {obj} options\n   * @param  {str} options.appData.snippetsURL  The URL from which we fetch snippets\n   * @param  {int} options.appData.version  The current snippets version\n   * @param  {str} options.elementId  The id of the element in which to inject snippets\n   * @param  {bool} options.connect  Should gSnippetsMap connect to indexedDB?\n   */\n  async init(options) {\n    Object.assign(this, {\n      appData: {},\n      elementId: \"snippets\",\n      connect: true\n    }, options);\n\n    // Add listener so we know when snippets are blocked on other pages\n    if (global.RPMAddMessageListener) {\n      global.RPMAddMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n    }\n\n    // TODO: Requires enabling indexedDB on newtab\n    // Restore the snippets map from indexedDB\n    if (this.connect) {\n      try {\n        await this.snippetsMap.connect();\n      } catch (e) {\n        console.error(e); // eslint-disable-line no-console\n      }\n    }\n\n    // Cache app data values so they can be accessible from gSnippetsMap\n    for (const key of Object.keys(this.appData)) {\n      if (key === \"blockList\") {\n        this.snippetsMap.set(\"blockList\", this.appData[key]);\n      } else {\n        this.snippetsMap.set(`appData.${key}`, this.appData[key]);\n      }\n    }\n\n    // Refresh snippets, if enough time has passed.\n    await this._refreshSnippets();\n\n    // Try showing remote snippets, falling back to defaults if necessary.\n    try {\n      this._showRemoteSnippets();\n    } catch (e) {\n      this._noSnippetFallback(e);\n    }\n\n    window.dispatchEvent(new Event(SNIPPETS_ENABLED_EVENT));\n\n    this._forceOnboardingVisibility(true);\n    this.initialized = true;\n  }\n\n  uninit() {\n    window.dispatchEvent(new Event(SNIPPETS_DISABLED_EVENT));\n    this._forceOnboardingVisibility(false);\n    if (global.RPMRemoveMessageListener) {\n      global.RPMRemoveMessageListener(\"ActivityStream:MainToContent\", this._onAction);\n    }\n    this.initialized = false;\n  }\n}\n\n/**\n * addSnippetsSubscriber - Creates a SnippetsProvider that Initializes\n *                         when the store has received the appropriate\n *                         Snippet data.\n *\n * @param  {obj} store   The redux store\n * @return {obj}         Returns the snippets instance, asrouterContent instance and unsubscribe function\n */\nexport function addSnippetsSubscriber(store) {\n  const snippets = new SnippetsProvider(store.dispatch);\n  const asrouterContent = new ASRouterContent();\n\n  let initializing = false;\n\n  store.subscribe(async () => {\n    const state = store.getState();\n    const isASRouterEnabled = state.Prefs.values.asrouterExperimentEnabled && state.Prefs.values.asrouterOnboardingCohort > 0;\n    // state.Prefs.values[\"feeds.snippets\"]:  Should snippets be shown?\n    // state.Snippets.initialized             Is the snippets data initialized?\n    // snippets.initialized:                  Is SnippetsProvider currently initialised?\n    if (state.Prefs.values[\"feeds.snippets\"] &&\n      // If the message center experiment is enabled, don't show snippets\n      !isASRouterEnabled &&\n      !state.Prefs.values.disableSnippets &&\n      state.Snippets.initialized &&\n      !snippets.initialized &&\n      // Don't call init multiple times\n      !initializing &&\n      location.href !== \"about:welcome\"\n    ) {\n      initializing = true;\n      await snippets.init({appData: state.Snippets});\n      initializing = false;\n    } else if (\n      (state.Prefs.values[\"feeds.snippets\"] === false ||\n        state.Prefs.values.disableSnippets === true) &&\n      snippets.initialized\n    ) {\n      snippets.uninit();\n    }\n\n    // Turn on AS Router snippets if the experiment is enabled and the snippets pref is on;\n    // otherwise, turn it off.\n    if (\n      (state.Prefs.values.asrouterExperimentEnabled || state.Prefs.values.asrouterOnboardingCohort > 0) &&\n      state.Prefs.values[\"feeds.snippets\"] &&\n      !asrouterContent.initialized) {\n      asrouterContent.init();\n    } else if (\n      ((!state.Prefs.values.asrouterExperimentEnabled && state.Prefs.values.asrouterOnboardingCohort === 0) || !state.Prefs.values[\"feeds.snippets\"]) &&\n      asrouterContent.initialized\n    ) {\n      asrouterContent.uninit();\n    }\n  });\n\n  // These values are returned for testing purposes\n  return {snippets, asrouterContent};\n}\n","import {actionCreators as ac, ASRouterActions as ra} from \"common/Actions.jsm\";\nimport {LocalizationProvider, Localized} from \"fluent-react\";\nimport {OUTGOING_MESSAGE_NAME as AS_GENERAL_OUTGOING_MESSAGE_NAME} from \"content-src/lib/init-store\";\nimport {ImpressionsWrapper} from \"./components/ImpressionsWrapper/ImpressionsWrapper\";\nimport {MessageContext} from \"fluent\";\nimport {OnboardingMessage} from \"./templates/OnboardingMessage/OnboardingMessage\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {safeURI} from \"./template-utils\";\nimport {SimpleSnippet} from \"./templates/SimpleSnippet/SimpleSnippet\";\n\nconst INCOMING_MESSAGE_NAME = \"ASRouter:parent-to-child\";\nconst OUTGOING_MESSAGE_NAME = \"ASRouter:child-to-parent\";\n\nexport const ASRouterUtils = {\n  addListener(listener) {\n    global.RPMAddMessageListener(INCOMING_MESSAGE_NAME, listener);\n  },\n  removeListener(listener) {\n    global.RPMRemoveMessageListener(INCOMING_MESSAGE_NAME, listener);\n  },\n  sendMessage(action) {\n    global.RPMSendAsyncMessage(OUTGOING_MESSAGE_NAME, action);\n  },\n  blockById(id) {\n    ASRouterUtils.sendMessage({type: \"BLOCK_MESSAGE_BY_ID\", data: {id}});\n  },\n  blockBundle(bundle) {\n    ASRouterUtils.sendMessage({type: \"BLOCK_BUNDLE\", data: {bundle}});\n  },\n  executeAction({button_action, button_action_params}) {\n    if (button_action in ra) {\n      ASRouterUtils.sendMessage({type: button_action, data: {button_action_params}});\n    }\n  },\n  unblockById(id) {\n    ASRouterUtils.sendMessage({type: \"UNBLOCK_MESSAGE_BY_ID\", data: {id}});\n  },\n  unblockBundle(bundle) {\n    ASRouterUtils.sendMessage({type: \"UNBLOCK_BUNDLE\", data: {bundle}});\n  },\n  getNextMessage() {\n    ASRouterUtils.sendMessage({type: \"GET_NEXT_MESSAGE\"});\n  },\n  overrideMessage(id) {\n    ASRouterUtils.sendMessage({type: \"OVERRIDE_MESSAGE\", data: {id}});\n  },\n  sendTelemetry(ping) {\n    const payload = ac.ASRouterUserEvent(ping);\n    global.RPMSendAsyncMessage(AS_GENERAL_OUTGOING_MESSAGE_NAME, payload);\n  },\n  getEndpoint() {\n    if (window.location.href.includes(\"endpoint\")) {\n      const params = new URLSearchParams(window.location.href.slice(window.location.href.indexOf(\"endpoint\")));\n      try {\n        const endpoint = new URL(params.get(\"endpoint\"));\n        return {\n          url: endpoint.href,\n          snippetId: params.get(\"snippetId\")\n        };\n      } catch (e) {}\n    }\n\n    return null;\n  }\n};\n\n// Note: nextProps/prevProps refer to props passed to <ImpressionsWrapper />, not <ASRouterUISurface />\nfunction shouldSendImpressionOnUpdate(nextProps, prevProps) {\n  return (nextProps.message.id && (!prevProps.message || prevProps.message.id !== nextProps.message.id));\n}\n\nfunction generateMessages(content) {\n  const cx = new MessageContext(\"en-US\");\n  cx.addMessages(`RichTextSnippet = ${content}`);\n  return [cx];\n}\n\n// Elements allowed in snippet content\nconst ALLOWED_TAGS = {\n  b: <b />,\n  i: <i />,\n  u: <u />,\n  strong: <strong />,\n  em: <em />,\n  br: <br />\n};\n\n/**\n * Transform an object (tag name: {url}) into (tag name: anchor) where the url\n * is used as href, in order to render links inside a Fluent.Localized component.\n */\nexport function convertLinks(links, sendClick) {\n  if (links) {\n    return Object.keys(links).reduce((acc, linkTag) => {\n      acc[linkTag] = <a href={safeURI(links[linkTag].url)} data-metric={links[linkTag].metric} onClick={sendClick} />;\n      return acc;\n    }, {});\n  }\n\n  return null;\n}\n\n/**\n * Message wrapper used to sanitize markup and render HTML.\n */\nfunction RichText(props) {\n  return (\n    <Localized id=\"RichTextSnippet\" {...ALLOWED_TAGS} {...convertLinks(props.links, props.sendClick)}>\n      <span>{props.text}</span>\n    </Localized>\n  );\n}\n\nexport class ASRouterUISurface extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onMessageFromParent = this.onMessageFromParent.bind(this);\n    this.sendClick = this.sendClick.bind(this);\n    this.sendImpression = this.sendImpression.bind(this);\n    this.sendUserActionTelemetry = this.sendUserActionTelemetry.bind(this);\n    this.state = {message: {}, bundle: {}};\n  }\n\n  sendUserActionTelemetry(extraProps = {}) {\n    const {message, bundle} = this.state;\n    if (!message && !extraProps.message_id) {\n      throw new Error(`You must provide a message_id for bundled messages`);\n    }\n    const eventType = `${message.provider || bundle.provider}_user_event`;\n    ASRouterUtils.sendTelemetry({\n      message_id: message.id || extraProps.message_id,\n      source: extraProps.id,\n      action: eventType,\n      ...extraProps\n    });\n  }\n\n  sendImpression(extraProps) {\n    ASRouterUtils.sendMessage({type: \"IMPRESSION\", data: this.state.message});\n    this.sendUserActionTelemetry({event: \"IMPRESSION\", ...extraProps});\n  }\n\n  // If link has a `metric` data attribute send it as part of the `value`\n  // telemetry field which can have arbitrary values.\n  // Used for router messages with links as part of the content.\n  sendClick(event) {\n    const metric = {\n      value: event.target.dataset.metric,\n      // Used for the `source` of the event. Needed to differentiate\n      // from other snippet or onboarding events that may occur.\n      id: \"NEWTAB_FOOTER_BAR_CONTENT\"\n    };\n    this.sendUserActionTelemetry({event: \"CLICK_BUTTON\", ...metric});\n  }\n\n  onBlockById(id) {\n    return () => ASRouterUtils.blockById(id);\n  }\n\n  clearBundle(bundle) {\n    return () => ASRouterUtils.blockBundle(bundle);\n  }\n\n  onMessageFromParent({data: action}) {\n    switch (action.type) {\n      case \"SET_MESSAGE\":\n        this.setState({message: action.data});\n        break;\n      case \"SET_BUNDLED_MESSAGES\":\n        this.setState({bundle: action.data});\n        break;\n      case \"CLEAR_MESSAGE\":\n        if (action.data.id === this.state.message.id) {\n          this.setState({message: {}});\n        }\n        break;\n      case \"CLEAR_BUNDLE\":\n        if (this.state.bundle.bundle) {\n          this.setState({bundle: {}});\n        }\n        break;\n      case \"CLEAR_ALL\":\n        this.setState({message: {}, bundle: {}});\n    }\n  }\n\n  componentWillMount() {\n    const endpoint = ASRouterUtils.getEndpoint();\n    ASRouterUtils.addListener(this.onMessageFromParent);\n\n    // If we are loading about:welcome we want to trigger the onboarding messages\n    if (this.props.document.location.href === \"about:welcome\") {\n      ASRouterUtils.sendMessage({type: \"TRIGGER\", data: {trigger: {id: \"firstRun\"}}});\n    } else {\n      ASRouterUtils.sendMessage({type: \"CONNECT_UI_REQUEST\", data: {endpoint}});\n    }\n  }\n\n  componentWillUnmount() {\n    ASRouterUtils.removeListener(this.onMessageFromParent);\n  }\n\n  renderSnippets() {\n    return (\n      <ImpressionsWrapper\n        id=\"NEWTAB_FOOTER_BAR\"\n        message={this.state.message}\n        sendImpression={this.sendImpression}\n        shouldSendImpressionOnUpdate={shouldSendImpressionOnUpdate}\n        // This helps with testing\n        document={this.props.document}>\n          <LocalizationProvider messages={generateMessages(this.state.message.content.text)}>\n            <SimpleSnippet\n              {...this.state.message}\n              richText={<RichText text={this.state.message.content.text}\n                                  links={this.state.message.content.links}\n                                  sendClick={this.sendClick} />}\n              UISurface=\"NEWTAB_FOOTER_BAR\"\n              getNextMessage={ASRouterUtils.getNextMessage}\n              onBlock={this.onBlockById(this.state.message.id)}\n              sendUserActionTelemetry={this.sendUserActionTelemetry} />\n          </LocalizationProvider>\n      </ImpressionsWrapper>);\n  }\n\n  renderOnboarding() {\n    return (\n      <OnboardingMessage\n        {...this.state.bundle}\n        UISurface=\"NEWTAB_OVERLAY\"\n        onAction={ASRouterUtils.executeAction}\n        onDoneButton={this.clearBundle(this.state.bundle.bundle)}\n        getNextMessage={ASRouterUtils.getNextMessage}\n        sendUserActionTelemetry={this.sendUserActionTelemetry} />);\n  }\n\n  render() {\n    const {message, bundle} = this.state;\n    if (!message.id && !bundle.template) { return null; }\n    if (bundle.template === \"onboarding\") { return this.renderOnboarding(); }\n    return this.renderSnippets();\n  }\n}\n\nASRouterUISurface.defaultProps = {document: global.document};\n\nexport class ASRouterContent {\n  constructor() {\n    this.initialized = false;\n    this.containerElement = null;\n  }\n\n  _mount() {\n    this.containerElement = global.document.getElementById(\"snippets-container\");\n    ReactDOM.render(<ASRouterUISurface />, this.containerElement);\n  }\n\n  _unmount() {\n    ReactDOM.unmountComponentAtNode(this.containerElement);\n  }\n\n  init() {\n    this._mount();\n    this.initialized = true;\n  }\n\n  uninit() {\n    if (this.initialized) {\n      this._unmount();\n      this.initialized = false;\n    }\n  }\n}\n","module.exports = React;","module.exports = PropTypes;","/* eslint-env mozilla/frame-script */\n\nimport {actionCreators as ac, actionTypes as at, actionUtils as au} from \"common/Actions.jsm\";\nimport {applyMiddleware, combineReducers, createStore} from \"redux\";\n\nexport const MERGE_STORE_ACTION = \"NEW_TAB_INITIAL_STATE\";\nexport const OUTGOING_MESSAGE_NAME = \"ActivityStream:ContentToMain\";\nexport const INCOMING_MESSAGE_NAME = \"ActivityStream:MainToContent\";\nexport const EARLY_QUEUED_ACTIONS = [at.SAVE_SESSION_PERF_DATA, at.PAGE_PRERENDERED];\n\n/**\n * A higher-order function which returns a reducer that, on MERGE_STORE action,\n * will return the action.data object merged into the previous state.\n *\n * For all other actions, it merely calls mainReducer.\n *\n * Because we want this to merge the entire state object, it's written as a\n * higher order function which takes the main reducer (itself often a call to\n * combineReducers) as a parameter.\n *\n * @param  {function} mainReducer reducer to call if action != MERGE_STORE_ACTION\n * @return {function}             a reducer that, on MERGE_STORE_ACTION action,\n *                                will return the action.data object merged\n *                                into the previous state, and the result\n *                                of calling mainReducer otherwise.\n */\nfunction mergeStateReducer(mainReducer) {\n  return (prevState, action) => {\n    if (action.type === MERGE_STORE_ACTION) {\n      return {...prevState, ...action.data};\n    }\n\n    return mainReducer(prevState, action);\n  };\n}\n\n/**\n * messageMiddleware - Middleware that looks for SentToMain type actions, and sends them if necessary\n */\nconst messageMiddleware = store => next => action => {\n  const skipLocal = action.meta && action.meta.skipLocal;\n  if (au.isSendToMain(action)) {\n    RPMSendAsyncMessage(OUTGOING_MESSAGE_NAME, action);\n  }\n  if (!skipLocal) {\n    next(action);\n  }\n};\n\nexport const rehydrationMiddleware = store => next => action => {\n  if (store._didRehydrate) {\n    return next(action);\n  }\n\n  const isMergeStoreAction = action.type === MERGE_STORE_ACTION;\n  const isRehydrationRequest = action.type === at.NEW_TAB_STATE_REQUEST;\n\n  if (isRehydrationRequest) {\n    store._didRequestInitialState = true;\n    return next(action);\n  }\n\n  if (isMergeStoreAction) {\n    store._didRehydrate = true;\n    return next(action);\n  }\n\n  // If init happened after our request was made, we need to re-request\n  if (store._didRequestInitialState && action.type === at.INIT) {\n    return next(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n  }\n\n  if (au.isBroadcastToContent(action) || au.isSendToOneContent(action) || au.isSendToPreloaded(action)) {\n    // Note that actions received before didRehydrate will not be dispatched\n    // because this could negatively affect preloading and the the state\n    // will be replaced by rehydration anyway.\n    return null;\n  }\n\n  return next(action);\n};\n\n/**\n * This middleware queues up all the EARLY_QUEUED_ACTIONS until it receives\n * the first action from main. This is useful for those actions for main which\n * require higher reliability, i.e. the action will not be lost in the case\n * that it gets sent before the main is ready to receive it. Conversely, any\n * actions allowed early are accepted to be ignorable or re-sendable.\n */\nexport const queueEarlyMessageMiddleware = store => next => action => {\n  if (store._receivedFromMain) {\n    next(action);\n  } else if (au.isFromMain(action)) {\n    next(action);\n    store._receivedFromMain = true;\n    // Sending out all the early actions as main is ready now\n    if (store._earlyActionQueue) {\n      store._earlyActionQueue.forEach(next);\n      store._earlyActionQueue = [];\n    }\n  } else if (EARLY_QUEUED_ACTIONS.includes(action.type)) {\n    store._earlyActionQueue = store._earlyActionQueue || [];\n    store._earlyActionQueue.push(action);\n  } else {\n    // Let any other type of action go through\n    next(action);\n  }\n};\n\n/**\n * initStore - Create a store and listen for incoming actions\n *\n * @param  {object} reducers An object containing Redux reducers\n * @param  {object} intialState (optional) The initial state of the store, if desired\n * @return {object}          A redux store\n */\nexport function initStore(reducers, initialState) {\n  const store = createStore(\n    mergeStateReducer(combineReducers(reducers)),\n    initialState,\n    global.RPMAddMessageListener && applyMiddleware(rehydrationMiddleware, queueEarlyMessageMiddleware, messageMiddleware)\n  );\n\n  store._didRehydrate = false;\n  store._didRequestInitialState = false;\n\n  if (global.RPMAddMessageListener) {\n    global.RPMAddMessageListener(INCOMING_MESSAGE_NAME, msg => {\n      try {\n        store.dispatch(msg.data);\n      } catch (ex) {\n        console.error(\"Content msg:\", msg, \"Dispatch error: \", ex); // eslint-disable-line no-console\n        dump(`Content msg: ${JSON.stringify(msg)}\\nDispatch error: ${ex}\\n${ex.stack}`);\n      }\n    });\n  }\n\n  return store;\n}\n","module.exports = Redux;","import React from \"react\";\n\nexport const VISIBLE = \"visible\";\nexport const VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\n/**\n * Component wrapper used to send telemetry pings on every impression.\n */\nexport class ImpressionsWrapper extends React.PureComponent {\n  // This sends an event when a user sees a set of new content. If content\n  // changes while the page is hidden (i.e. preloaded or on a hidden tab),\n  // only send the event if the page becomes visible again.\n  sendImpressionOrAddListener() {\n    if (this.props.document.visibilityState === VISIBLE) {\n      this.props.sendImpression({id: this.props.id});\n    } else {\n      // We should only ever send the latest impression stats ping, so remove any\n      // older listeners.\n      if (this._onVisibilityChange) {\n        this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n      }\n\n      // When the page becomes visible, send the impression stats ping if the section isn't collapsed.\n      this._onVisibilityChange = () => {\n        if (this.props.document.visibilityState === VISIBLE) {\n          this.props.sendImpression({id: this.props.id});\n          this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n        }\n      };\n      this.props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n\n  componentWillUnmount() {\n    if (this._onVisibilityChange) {\n      this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n\n  componentDidMount() {\n    if (this.props.sendOnMount) {\n      this.sendImpressionOrAddListener();\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    if (this.props.shouldSendImpressionOnUpdate(this.props, prevProps)) {\n      this.sendImpressionOrAddListener();\n    }\n  }\n\n  render() {\n    return this.props.children;\n  }\n}\n\nImpressionsWrapper.defaultProps = {\n  document: global.document,\n  sendOnMount: true\n};\n","module.exports = ReactDOM;","export function safeURI(url) {\n  if (!url) {\n    return \"\";\n  }\n  const {protocol} = new URL(url);\n  const isAllowed = [\n    \"http:\",\n    \"https:\",\n    \"data:\",\n    \"resource:\",\n    \"chrome:\"\n  ].includes(protocol);\n  if (!isAllowed) {\n    console.warn(`The protocol ${protocol} is not allowed for template URLs.`); // eslint-disable-line no-console\n  }\n  return isAllowed ? url : \"\";\n}\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {addLocaleData, injectIntl, IntlProvider} from \"react-intl\";\nimport {ASRouterAdmin} from \"content-src/components/ASRouterAdmin/ASRouterAdmin\";\nimport {ConfirmDialog} from \"content-src/components/ConfirmDialog/ConfirmDialog\";\nimport {connect} from \"react-redux\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport {ManualMigration} from \"content-src/components/ManualMigration/ManualMigration\";\nimport {PrerenderData} from \"common/PrerenderData.jsm\";\nimport React from \"react\";\nimport {Search} from \"content-src/components/Search/Search\";\nimport {Sections} from \"content-src/components/Sections/Sections\";\nimport {StartupOverlay} from \"content-src/components/StartupOverlay/StartupOverlay\";\n\nconst PrefsButton = injectIntl(props => (\n  <div className=\"prefs-button\">\n    <button className=\"icon icon-settings\" onClick={props.onClick} title={props.intl.formatMessage({id: \"settings_pane_button_label\"})} />\n  </div>\n));\n\n// Add the locale data for pluralization and relative-time formatting for now,\n// this just uses english locale data. We can make this more sophisticated if\n// more features are needed.\nfunction addLocaleDataForReactIntl(locale) {\n  addLocaleData([{locale, parentLocale: \"en\"}]);\n}\n\nexport class _Base extends React.PureComponent {\n  componentWillMount() {\n    const {App, locale} = this.props;\n    this.sendNewTabRehydrated(App);\n    addLocaleDataForReactIntl(locale);\n    if (this.props.isFirstrun) {\n      global.document.body.classList.add(\"welcome\", \"hide-main\");\n    }\n  }\n\n  componentDidMount() {\n    // Request state AFTER the first render to ensure we don't cause the\n    // prerendered DOM to be unmounted. Otherwise, NEW_TAB_STATE_REQUEST is\n    // dispatched right after the store is ready.\n    if (this.props.isPrerendered) {\n      this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_STATE_REQUEST}));\n      this.props.dispatch(ac.AlsoToMain({type: at.PAGE_PRERENDERED}));\n    }\n  }\n\n  componentWillUnmount() {\n    this.updateTheme();\n  }\n\n  componentWillUpdate({App}) {\n    this.updateTheme();\n    this.sendNewTabRehydrated(App);\n  }\n\n  updateTheme() {\n    const bodyClassName = [\n      \"activity-stream\",\n      // If we skipped the about:welcome overlay and removed the CSS classes\n      // we don't want to add them back to the Activity Stream view\n      document.body.classList.contains(\"welcome\") ? \"welcome\" : \"\",\n      document.body.classList.contains(\"hide-main\") ? \"hide-main\" : \"\"\n    ].filter(v => v).join(\" \");\n    global.document.body.className = bodyClassName;\n  }\n\n  // The NEW_TAB_REHYDRATED event is used to inform feeds that their\n  // data has been consumed e.g. for counting the number of tabs that\n  // have rendered that data.\n  sendNewTabRehydrated(App) {\n    if (App && App.initialized && !this.renderNotified) {\n      this.props.dispatch(ac.AlsoToMain({type: at.NEW_TAB_REHYDRATED, data: {}}));\n      this.renderNotified = true;\n    }\n  }\n\n  render() {\n    const {props} = this;\n    const {App, locale, strings} = props;\n    const {initialized} = App;\n\n    const prefs = props.Prefs.values;\n    if ((prefs.asrouterExperimentEnabled || prefs.asrouterOnboardingCohort > 0) && window.location.hash === \"#asrouter\") {\n      return (<ASRouterAdmin />);\n    }\n\n    if (!props.isPrerendered && !initialized) {\n      return null;\n    }\n\n    // Until we can delete the existing onboarding tour, just hide the onboarding button when users are in\n    // the new simplified onboarding experiment. CSS hacks ftw\n    if (prefs.asrouterOnboardingCohort > 0) {\n      global.document.body.classList.add(\"hide-onboarding\");\n    }\n\n    return (<IntlProvider locale={locale} messages={strings}>\n        <ErrorBoundary className=\"base-content-fallback\">\n          <BaseContent {...this.props} />\n        </ErrorBoundary>\n      </IntlProvider>);\n  }\n}\n\nexport class BaseContent extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.openPreferences = this.openPreferences.bind(this);\n  }\n\n  openPreferences() {\n    this.props.dispatch(ac.OnlyToMain({type: at.SETTINGS_OPEN}));\n    this.props.dispatch(ac.UserEvent({event: \"OPEN_NEWTAB_PREFS\"}));\n  }\n\n  render() {\n    const {props} = this;\n    const {App} = props;\n    const {initialized} = App;\n    const prefs = props.Prefs.values;\n\n    const shouldBeFixedToTop = PrerenderData.arePrefsValid(name => prefs[name]);\n\n    const outerClassName = [\n      \"outer-wrapper\",\n      shouldBeFixedToTop && \"fixed-to-top\"\n    ].filter(v => v).join(\" \");\n\n    return (\n      <div>\n        <div className={outerClassName}>\n          <main>\n            {prefs.showSearch &&\n              <div className=\"non-collapsible-section\">\n                <ErrorBoundary>\n                  <Search />\n                </ErrorBoundary>\n              </div>\n            }\n            <div className={`body-wrapper${(initialized ? \" on\" : \"\")}`}>\n              {!prefs.migrationExpired &&\n                <div className=\"non-collapsible-section\">\n                  <ManualMigration />\n                </div>\n                }\n              <Sections />\n              <PrefsButton onClick={this.openPreferences} />\n            </div>\n            <ConfirmDialog />\n          </main>\n        </div>\n        {this.props.isFirstrun && <StartupOverlay />}\n      </div>);\n  }\n}\n\nexport const Base = connect(state => ({App: state.App, Prefs: state.Prefs}))(_Base);\n","module.exports = ReactIntl;","import {ASRouterUtils} from \"../../asrouter/asrouter-content\";\nimport React from \"react\";\n\nexport class ASRouterAdmin extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onMessage = this.onMessage.bind(this);\n    this.findOtherBundledMessagesOfSameTemplate = this.findOtherBundledMessagesOfSameTemplate.bind(this);\n    this.state = {};\n  }\n\n  onMessage({data: action}) {\n    if (action.type === \"ADMIN_SET_STATE\") {\n      this.setState(action.data);\n    }\n  }\n\n  componentWillMount() {\n    const endpoint = ASRouterUtils.getEndpoint();\n    ASRouterUtils.sendMessage({type: \"ADMIN_CONNECT_STATE\", data: {endpoint}});\n    ASRouterUtils.addListener(this.onMessage);\n  }\n\n  componentWillUnmount() {\n    ASRouterUtils.removeListener(this.onMessage);\n  }\n\n  findOtherBundledMessagesOfSameTemplate(template) {\n    return this.state.messages.filter(msg => msg.template === template && msg.bundled);\n  }\n\n  handleBlock(msg) {\n    if (msg.bundled) {\n      // If we are blocking a message that belongs to a bundle, block all other messages that are bundled of that same template\n      let bundle = this.findOtherBundledMessagesOfSameTemplate(msg.template);\n      return () => ASRouterUtils.blockBundle(bundle);\n    }\n    return () => ASRouterUtils.blockById(msg.id);\n  }\n\n  handleUnblock(msg) {\n    if (msg.bundled) {\n      // If we are unblocking a message that belongs to a bundle, unblock all other messages that are bundled of that same template\n      let bundle = this.findOtherBundledMessagesOfSameTemplate(msg.template);\n      return () => ASRouterUtils.unblockBundle(bundle);\n    }\n    return () => ASRouterUtils.unblockById(msg.id);\n  }\n\n  handleOverride(id) {\n    return () => ASRouterUtils.overrideMessage(id);\n  }\n\n  renderMessageItem(msg) {\n    const isCurrent = msg.id === this.state.lastMessageId;\n    const isBlocked = this.state.blockList.includes(msg.id);\n    const impressions = this.state.impressions[msg.id] ? this.state.impressions[msg.id].length : 0;\n\n    let itemClassName = \"message-item\";\n    if (isCurrent) { itemClassName += \" current\"; }\n    if (isBlocked) { itemClassName += \" blocked\"; }\n\n    return (<tr className={itemClassName} key={msg.id}>\n      <td className=\"message-id\"><span>{msg.id} <br /></span></td>\n      <td>\n        <button className={`button ${(isBlocked ? \"\" : \" primary\")}`} onClick={isBlocked ? this.handleUnblock(msg) : this.handleBlock(msg)}>{isBlocked ? \"Unblock\" : \"Block\"}</button>\n       {isBlocked ? null : <button className=\"button\" onClick={this.handleOverride(msg.id)}>Show</button>}\n       <br />({impressions} impressions)\n      </td>\n      <td className=\"message-summary\">\n        <pre>{JSON.stringify(msg, null, 2)}</pre>\n      </td>\n    </tr>);\n  }\n\n  renderMessages() {\n    if (!this.state.messages) {\n      return null;\n    }\n    return (<table><tbody>\n      {this.state.messages.map(msg => this.renderMessageItem(msg))}\n    </tbody></table>);\n  }\n\n  renderProviders() {\n    return (<table><tbody>\n      {this.state.providers.map((provider, i) => (<tr className=\"message-item\" key={i}>\n        <td>{provider.id}</td>\n        <td>{provider.type === \"remote\" ? <a target=\"_blank\" href={provider.url}>{provider.url}</a> : \"(local)\"}</td>\n      </tr>))}\n    </tbody></table>);\n  }\n\n  render() {\n    return (<div className=\"asrouter-admin outer-wrapper\">\n      <h1>AS Router Admin</h1>\n      <button className=\"button primary\" onClick={ASRouterUtils.getNextMessage}>Refresh Current Message</button>\n      <h2>Message Providers</h2>\n      {this.state.providers ? this.renderProviders() : null}\n      <h2>Messages</h2>\n      {this.renderMessages()}\n    </div>);\n  }\n}\n","import {actionCreators as ac, actionTypes} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * ConfirmDialog component.\n * One primary action button, one cancel button.\n *\n * Content displayed is controlled by `data` prop the component receives.\n * Example:\n * data: {\n *   // Any sort of data needed to be passed around by actions.\n *   payload: site.url,\n *   // Primary button AlsoToMain action.\n *   action: \"DELETE_HISTORY_URL\",\n *   // Primary button USerEvent action.\n *   userEvent: \"DELETE\",\n *   // Array of locale ids to display.\n *   message_body: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n *   // Text for primary button.\n *   confirm_button_string_id: \"menu_action_delete\"\n * },\n */\nexport class _ConfirmDialog extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this._handleCancelBtn = this._handleCancelBtn.bind(this);\n    this._handleConfirmBtn = this._handleConfirmBtn.bind(this);\n  }\n\n  _handleCancelBtn() {\n    this.props.dispatch({type: actionTypes.DIALOG_CANCEL});\n    this.props.dispatch(ac.UserEvent({event: actionTypes.DIALOG_CANCEL, source: this.props.data.eventSource}));\n  }\n\n  _handleConfirmBtn() {\n    this.props.data.onConfirm.forEach(this.props.dispatch);\n  }\n\n  _renderModalMessage() {\n    const message_body = this.props.data.body_string_id;\n\n    if (!message_body) {\n      return null;\n    }\n\n    return (<span>\n      {message_body.map(msg => <p key={msg}><FormattedMessage id={msg} /></p>)}\n    </span>);\n  }\n\n  render() {\n    if (!this.props.visible) {\n      return null;\n    }\n\n    return (<div className=\"confirmation-dialog\">\n      <div className=\"modal-overlay\" onClick={this._handleCancelBtn} />\n      <div className=\"modal\">\n        <section className=\"modal-message\">\n          {this.props.data.icon && <span className={`icon icon-spacer icon-${this.props.data.icon}`} />}\n          {this._renderModalMessage()}\n        </section>\n        <section className=\"actions\">\n          <button onClick={this._handleCancelBtn}>\n            <FormattedMessage id={this.props.data.cancel_button_string_id} />\n          </button>\n          <button className=\"done\" onClick={this._handleConfirmBtn}>\n            <FormattedMessage id={this.props.data.confirm_button_string_id} />\n          </button>\n        </section>\n      </div>\n    </div>);\n  }\n}\n\nexport const ConfirmDialog = connect(state => state.Dialog)(_ConfirmDialog);\n","module.exports = ReactRedux;","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class ErrorBoundaryFallback extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.windowObj = this.props.windowObj || window;\n    this.onClick = this.onClick.bind(this);\n  }\n\n  /**\n   * Since we only get here if part of the page has crashed, do a\n   * forced reload to give us the best chance at recovering.\n   */\n  onClick() {\n    this.windowObj.location.reload(true);\n  }\n\n  render() {\n    const defaultClass = \"as-error-fallback\";\n    let className;\n    if (\"className\" in this.props) {\n      className = `${this.props.className} ${defaultClass}`;\n    } else {\n      className = defaultClass;\n    }\n\n    // href=\"#\" to force normal link styling stuff (eg cursor on hover)\n    return (\n      <div className={className}>\n        <div>\n          <FormattedMessage\n            defaultMessage=\"Oops, something went wrong loading this content.\"\n            id=\"error_fallback_default_info\" />\n        </div>\n        <span>\n          <a href=\"#\" className=\"reload-button\" onClick={this.onClick}>\n            <FormattedMessage\n              defaultMessage=\"Refresh page to try again.\"\n              id=\"error_fallback_default_refresh_suggestion\" />\n          </a>\n        </span>\n      </div>\n    );\n  }\n}\nErrorBoundaryFallback.defaultProps = {className: \"as-error-fallback\"};\n\nexport class ErrorBoundary extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {hasError: false};\n  }\n\n  componentDidCatch(error, info) {\n    this.setState({hasError: true});\n  }\n\n  render() {\n    if (!this.state.hasError) {\n      return (this.props.children);\n    }\n\n    return <this.props.FallbackComponent className={this.props.className} />;\n  }\n}\n\nErrorBoundary.defaultProps = {FallbackComponent: ErrorBoundaryFallback};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\n/**\n * Manual migration component used to start the profile import wizard.\n * Message is presented temporarily and will go away if:\n * 1.  User clicks \"No Thanks\"\n * 2.  User completed the data import\n * 3.  After 3 active days\n * 4.  User clicks \"Cancel\" on the import wizard (currently not implemented).\n */\nexport class _ManualMigration extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onLaunchTour = this.onLaunchTour.bind(this);\n    this.onCancelTour = this.onCancelTour.bind(this);\n  }\n\n  onLaunchTour() {\n    this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_START}));\n    this.props.dispatch(ac.UserEvent({event: at.MIGRATION_START}));\n  }\n\n  onCancelTour() {\n    this.props.dispatch(ac.AlsoToMain({type: at.MIGRATION_CANCEL}));\n    this.props.dispatch(ac.UserEvent({event: at.MIGRATION_CANCEL}));\n  }\n\n  render() {\n    return (<div className=\"manual-migration-container\">\n        <p>\n          <span className=\"icon icon-import\" />\n          <FormattedMessage id=\"manual_migration_explanation2\" />\n        </p>\n        <div className=\"manual-migration-actions actions\">\n          <button className=\"dismiss\" onClick={this.onCancelTour}>\n            <FormattedMessage id=\"manual_migration_cancel_button\" />\n          </button>\n          <button onClick={this.onLaunchTour}>\n            <FormattedMessage id=\"manual_migration_import_button\" />\n          </button>\n        </div>\n    </div>);\n  }\n}\n\nexport const ManualMigration = connect()(_ManualMigration);\n","class _PrerenderData {\n  constructor(options) {\n    this.initialPrefs = options.initialPrefs;\n    this.initialSections = options.initialSections;\n    this._setValidation(options.validation);\n  }\n\n  get validation() {\n    return this._validation;\n  }\n\n  set validation(value) {\n    this._setValidation(value);\n  }\n\n  get invalidatingPrefs() {\n    return this._invalidatingPrefs;\n  }\n\n    // This is needed so we can use it in the constructor\n  _setValidation(value = []) {\n    this._validation = value;\n    this._invalidatingPrefs = value.reduce((result, next) => {\n      if (typeof next === \"string\") {\n        result.push(next);\n        return result;\n      } else if (next && next.oneOf) {\n        return result.concat(next.oneOf);\n      } else if (next && next.indexedDB) {\n        return result.concat(next.indexedDB);\n      }\n      throw new Error(\"Your validation configuration is not properly configured\");\n    }, []);\n  }\n\n  arePrefsValid(getPref, indexedDBPrefs) {\n    for (const prefs of this.validation) {\n      // {oneOf: [\"foo\", \"bar\"]}\n      if (prefs && prefs.oneOf && !prefs.oneOf.some(name => getPref(name) === this.initialPrefs[name])) {\n        return false;\n\n        // {indexedDB: [\"foo\", \"bar\"]}\n      } else if (indexedDBPrefs && prefs && prefs.indexedDB) {\n        const anyModifiedPrefs = prefs.indexedDB.some(prefName => indexedDBPrefs.some(pref => pref && pref[prefName]));\n        if (anyModifiedPrefs) {\n          return false;\n        }\n        // \"foo\"\n      } else if (getPref(prefs) !== this.initialPrefs[prefs]) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\nthis.PrerenderData = new _PrerenderData({\n  initialPrefs: {\n    \"migrationExpired\": true,\n    \"feeds.topsites\": true,\n    \"showSearch\": true,\n    \"topSitesRows\": 1,\n    \"feeds.section.topstories\": true,\n    \"feeds.section.highlights\": true,\n    \"sectionOrder\": \"topsites,topstories,highlights\",\n    \"collapsed\": false\n  },\n  // Prefs listed as invalidating will prevent the prerendered version\n  // of AS from being used if their value is something other than what is listed\n  // here. This is required because some preferences cause the page layout to be\n  // too different for the prerendered version to be used. Unfortunately, this\n  // will result in users who have modified some of their preferences not being\n  // able to get the benefits of prerendering.\n  validation: [\n    \"feeds.topsites\",\n    \"showSearch\",\n    \"topSitesRows\",\n    \"sectionOrder\",\n    // This means if either of these are set to their default values,\n    // prerendering can be used.\n    {oneOf: [\"feeds.section.topstories\", \"feeds.section.highlights\"]},\n    // If any component has the following preference set to `true` it will\n    // invalidate the prerendered version.\n    {indexedDB: [\"collapsed\"]}\n  ],\n  initialSections: [\n    {\n      enabled: true,\n      icon: \"pocket\",\n      id: \"topstories\",\n      order: 1,\n      title: {id: \"header_recommended_by\", values: {provider: \"Pocket\"}}\n    },\n    {\n      enabled: true,\n      id: \"highlights\",\n      icon: \"highlights\",\n      order: 2,\n      title: {id: \"header_highlights\"}\n    }\n  ]\n});\n\nthis._PrerenderData = _PrerenderData;\nconst EXPORTED_SYMBOLS = [\"PrerenderData\", \"_PrerenderData\"];\n","/* globals ContentSearchUIController */\n\"use strict\";\n\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {IS_NEWTAB} from \"content-src/lib/constants\";\nimport React from \"react\";\n\nexport class _Search extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onClick = this.onClick.bind(this);\n    this.onInputMount = this.onInputMount.bind(this);\n  }\n\n  handleEvent(event) {\n    // Also track search events with our own telemetry\n    if (event.detail.type === \"Search\") {\n      this.props.dispatch(ac.UserEvent({event: \"SEARCH\"}));\n    }\n  }\n\n  onClick(event) {\n    window.gContentSearchController.search(event);\n  }\n\n  componentWillUnmount() {\n    delete window.gContentSearchController;\n  }\n\n  onInputMount(input) {\n    if (input) {\n      // The \"healthReportKey\" and needs to be \"newtab\" or \"abouthome\" so that\n      // BrowserUsageTelemetry.jsm knows to handle events with this name, and\n      // can add the appropriate telemetry probes for search. Without the correct\n      // name, certain tests like browser_UsageTelemetry_content.js will fail\n      // (See github ticket #2348 for more details)\n      const healthReportKey = IS_NEWTAB ? \"newtab\" : \"abouthome\";\n\n      // The \"searchSource\" needs to be \"newtab\" or \"homepage\" and is sent with\n      // the search data and acts as context for the search request (See\n      // nsISearchEngine.getSubmission). It is necessary so that search engine\n      // plugins can correctly atribute referrals. (See github ticket #3321 for\n      // more details)\n      const searchSource = IS_NEWTAB ? \"newtab\" : \"homepage\";\n\n      // gContentSearchController needs to exist as a global so that tests for\n      // the existing about:home can find it; and so it allows these tests to pass.\n      // In the future, when activity stream is default about:home, this can be renamed\n      window.gContentSearchController = new ContentSearchUIController(input, input.parentNode,\n        healthReportKey, searchSource);\n      addEventListener(\"ContentSearchClient\", this);\n    } else {\n      window.gContentSearchController = null;\n      removeEventListener(\"ContentSearchClient\", this);\n    }\n  }\n\n  /*\n   * Do not change the ID on the input field, as legacy newtab code\n   * specifically looks for the id 'newtab-search-text' on input fields\n   * in order to execute searches in various tests\n   */\n  render() {\n    return (<div className=\"search-wrapper\">\n      <label htmlFor=\"newtab-search-text\" className=\"search-label\">\n        <span className=\"sr-only\"><FormattedMessage id=\"search_web_placeholder\" /></span>\n      </label>\n      <input\n        id=\"newtab-search-text\"\n        maxLength=\"256\"\n        placeholder={this.props.intl.formatMessage({id: \"search_web_placeholder\"})}\n        ref={this.onInputMount}\n        title={this.props.intl.formatMessage({id: \"search_web_placeholder\"})}\n        type=\"search\" />\n      <button\n        id=\"searchSubmit\"\n        className=\"search-button\"\n        onClick={this.onClick}\n        title={this.props.intl.formatMessage({id: \"search_button\"})}>\n        <span className=\"sr-only\"><FormattedMessage id=\"search_button\" /></span>\n      </button>\n    </div>);\n  }\n}\n\nexport const Search = connect()(injectIntl(_Search));\n","export const IS_NEWTAB = global.document && global.document.documentURI === \"about:newtab\";\n","import {Card, PlaceholderCard} from \"content-src/components/Card/Card\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\nimport {Topics} from \"content-src/components/Topics/Topics\";\nimport {TopSites} from \"content-src/components/TopSites/TopSites\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\nconst CARDS_PER_ROW_DEFAULT = 3;\nconst CARDS_PER_ROW_COMPACT_WIDE = 4;\n\nfunction getFormattedMessage(message) {\n  return typeof message === \"string\" ? <span>{message}</span> : <FormattedMessage {...message} />;\n}\n\nexport class Section extends React.PureComponent {\n  get numRows() {\n    const {rowsPref, maxRows, Prefs} = this.props;\n    return rowsPref ? Prefs.values[rowsPref] : maxRows;\n  }\n\n  _dispatchImpressionStats() {\n    const {props} = this;\n    let cardsPerRow = CARDS_PER_ROW_DEFAULT;\n    if (props.compactCards && global.matchMedia(`(min-width: 1072px)`).matches) {\n      // If the section has compact cards and the viewport is wide enough, we show\n      // 4 columns instead of 3.\n      // $break-point-widest = 1072px (from _variables.scss)\n      cardsPerRow = CARDS_PER_ROW_COMPACT_WIDE;\n    }\n    const maxCards = cardsPerRow * this.numRows;\n    const cards = props.rows.slice(0, maxCards);\n\n    if (this.needsImpressionStats(cards)) {\n      props.dispatch(ac.ImpressionStats({\n        source: props.eventSource,\n        tiles: cards.map(link => ({id: link.guid}))\n      }));\n      this.impressionCardGuids = cards.map(link => link.guid);\n    }\n  }\n\n  // This sends an event when a user sees a set of new content. If content\n  // changes while the page is hidden (i.e. preloaded or on a hidden tab),\n  // only send the event if the page becomes visible again.\n  sendImpressionStatsOrAddListener() {\n    const {props} = this;\n\n    if (!props.shouldSendImpressionStats || !props.dispatch) {\n      return;\n    }\n\n    if (props.document.visibilityState === VISIBLE) {\n      this._dispatchImpressionStats();\n    } else {\n      // We should only ever send the latest impression stats ping, so remove any\n      // older listeners.\n      if (this._onVisibilityChange) {\n        props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n      }\n\n      // When the page becomes visible, send the impression stats ping if the section isn't collapsed.\n      this._onVisibilityChange = () => {\n        if (props.document.visibilityState === VISIBLE) {\n          if (!this.props.pref.collapsed) {\n            this._dispatchImpressionStats();\n          }\n          props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n        }\n      };\n      props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n\n  componentDidMount() {\n    if (this.props.rows.length && !this.props.pref.collapsed) {\n      this.sendImpressionStatsOrAddListener();\n    }\n  }\n\n  componentDidUpdate(prevProps) {\n    const {props} = this;\n    const isCollapsed = props.pref.collapsed;\n    const wasCollapsed = prevProps.pref.collapsed;\n    if (\n      // Don't send impression stats for the empty state\n      props.rows.length &&\n      (\n        // We only want to send impression stats if the content of the cards has changed\n        // and the section is not collapsed...\n        (props.rows !== prevProps.rows && !isCollapsed) ||\n        // or if we are expanding a section that was collapsed.\n        (wasCollapsed && !isCollapsed)\n      )\n    ) {\n      this.sendImpressionStatsOrAddListener();\n    }\n  }\n\n  componentWillUnmount() {\n    if (this._onVisibilityChange) {\n      this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n\n  needsImpressionStats(cards) {\n    if (!this.impressionCardGuids || (this.impressionCardGuids.length !== cards.length)) {\n      return true;\n    }\n\n    for (let i = 0; i < cards.length; i++) {\n      if (cards[i].guid !== this.impressionCardGuids[i]) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  render() {\n    const {\n      id, eventSource, title, icon, rows,\n      emptyState, dispatch, compactCards,\n      contextMenuOptions, initialized, disclaimer,\n      pref, privacyNoticeURL, isFirst, isLast\n    } = this.props;\n\n    const maxCardsPerRow = compactCards ? CARDS_PER_ROW_COMPACT_WIDE : CARDS_PER_ROW_DEFAULT;\n    const {numRows} = this;\n    const maxCards = maxCardsPerRow * numRows;\n    const maxCardsOnNarrow = CARDS_PER_ROW_DEFAULT * numRows;\n\n    // Show topics only for top stories and if it's not initialized yet (so\n    // content doesn't shift when it is loaded) or has loaded with topics\n    const shouldShowTopics = (id === \"topstories\" &&\n      (!this.props.topics || this.props.topics.length > 0));\n\n    const realRows = rows.slice(0, maxCards);\n\n    // The empty state should only be shown after we have initialized and there is no content.\n    // Otherwise, we should show placeholders.\n    const shouldShowEmptyState = initialized && !rows.length;\n\n    const cards = [];\n    if (!shouldShowEmptyState) {\n      for (let i = 0; i < maxCards; i++) {\n        const link = realRows[i];\n        // On narrow viewports, we only show 3 cards per row. We'll mark the rest as\n        // .hide-for-narrow to hide in CSS via @media query.\n        const className = (i >= maxCardsOnNarrow) ? \"hide-for-narrow\" : \"\";\n        cards.push(link ? (\n          <Card key={i}\n            index={i}\n            className={className}\n            dispatch={dispatch}\n            link={link}\n            contextMenuOptions={contextMenuOptions}\n            eventSource={eventSource}\n            shouldSendImpressionStats={this.props.shouldSendImpressionStats}\n            isWebExtension={this.props.isWebExtension} />\n        ) : (\n          <PlaceholderCard key={i} className={className} />\n        ));\n      }\n    }\n\n    const sectionClassName = [\n      \"section\",\n      compactCards ? \"compact-cards\" : \"normal-cards\"\n    ].join(\" \");\n\n    // <Section> <-- React component\n    // <section> <-- HTML5 element\n    return (<ComponentPerfTimer {...this.props}>\n      <CollapsibleSection className={sectionClassName} icon={icon}\n        title={title}\n        id={id}\n        eventSource={eventSource}\n        disclaimer={disclaimer}\n        collapsed={this.props.pref.collapsed}\n        showPrefName={(pref && pref.feed) || id}\n        privacyNoticeURL={privacyNoticeURL}\n        Prefs={this.props.Prefs}\n        isFirst={isFirst}\n        isLast={isLast}\n        dispatch={this.props.dispatch}\n        isWebExtension={this.props.isWebExtension}>\n\n        {!shouldShowEmptyState && (<ul className=\"section-list\" style={{padding: 0}}>\n          {cards}\n        </ul>)}\n        {shouldShowEmptyState &&\n          <div className=\"section-empty-state\">\n            <div className=\"empty-state\">\n              {emptyState.icon && emptyState.icon.startsWith(\"moz-extension://\") ?\n                <img className=\"empty-state-icon icon\" style={{\"background-image\": `url('${emptyState.icon}')`}} /> :\n                <img className={`empty-state-icon icon icon-${emptyState.icon}`} />}\n              <p className=\"empty-state-message\">\n                {getFormattedMessage(emptyState.message)}\n              </p>\n            </div>\n          </div>}\n        {shouldShowTopics && <Topics topics={this.props.topics} read_more_endpoint={this.props.read_more_endpoint} />}\n      </CollapsibleSection>\n    </ComponentPerfTimer>);\n  }\n}\n\nSection.defaultProps = {\n  document: global.document,\n  rows: [],\n  emptyState: {},\n  pref: {},\n  title: \"\"\n};\n\nexport const SectionIntl = connect(state => ({Prefs: state.Prefs}))(injectIntl(Section));\n\nexport class _Sections extends React.PureComponent {\n  renderSections() {\n    const sections = [];\n    const enabledSections = this.props.Sections.filter(section => section.enabled);\n    const {sectionOrder, \"feeds.topsites\": showTopSites} = this.props.Prefs.values;\n    // Enabled sections doesn't include Top Sites, so we add it if enabled.\n    const expectedCount = enabledSections.length + ~~showTopSites;\n\n    for (const sectionId of sectionOrder.split(\",\")) {\n      const commonProps = {\n        key: sectionId,\n        isFirst: sections.length === 0,\n        isLast: sections.length === expectedCount - 1\n      };\n      if (sectionId === \"topsites\" && showTopSites) {\n        sections.push(<TopSites {...commonProps} />);\n      } else {\n        const section = enabledSections.find(s => s.id === sectionId);\n        if (section) {\n          sections.push(<SectionIntl {...section} {...commonProps} />);\n        }\n      }\n    }\n    return sections;\n  }\n\n  render() {\n    return (\n      <div className=\"sections-list\">\n        {this.renderSections()}\n      </div>\n    );\n  }\n}\n\nexport const Sections = connect(state => ({Sections: state.Sections, Prefs: state.Prefs}))(_Sections);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\nconst _OpenInPrivateWindow = site => ({\n  id: \"menu_action_open_private_window\",\n  icon: \"new-window-private\",\n  action: ac.OnlyToMain({\n    type: at.OPEN_PRIVATE_WINDOW,\n    data: {url: site.url, referrer: site.referrer}\n  }),\n  userEvent: \"OPEN_PRIVATE_WINDOW\"\n});\n\nexport const GetPlatformString = platform => {\n  switch (platform) {\n    case \"win\":\n      return \"menu_action_show_file_windows\";\n    case \"macosx\":\n      return \"menu_action_show_file_mac_os\";\n    case \"linux\":\n      return \"menu_action_show_file_linux\";\n    default:\n      return \"menu_action_show_file_default\";\n  }\n};\n\n/**\n * List of functions that return items that can be included as menu options in a\n * LinkMenu. All functions take the site as the first parameter, and optionally\n * the index of the site.\n */\nexport const LinkMenuOptions = {\n  Separator: () => ({type: \"separator\"}),\n  EmptyItem: () => ({type: \"empty\"}),\n  RemoveBookmark: site => ({\n    id: \"menu_action_remove_bookmark\",\n    icon: \"bookmark-added\",\n    action: ac.AlsoToMain({\n      type: at.DELETE_BOOKMARK_BY_ID,\n      data: site.bookmarkGuid\n    }),\n    userEvent: \"BOOKMARK_DELETE\"\n  }),\n  AddBookmark: site => ({\n    id: \"menu_action_bookmark\",\n    icon: \"bookmark-hollow\",\n    action: ac.AlsoToMain({\n      type: at.BOOKMARK_URL,\n      data: {url: site.url, title: site.title, type: site.type}\n    }),\n    userEvent: \"BOOKMARK_ADD\"\n  }),\n  OpenInNewWindow: site => ({\n    id: \"menu_action_open_new_window\",\n    icon: \"new-window\",\n    action: ac.AlsoToMain({\n      type: at.OPEN_NEW_WINDOW,\n      data: {\n        referrer: site.referrer,\n        typedBonus: site.typedBonus,\n        url: site.url\n      }\n    }),\n    userEvent: \"OPEN_NEW_WINDOW\"\n  }),\n  BlockUrl: (site, index, eventSource) => ({\n    id: \"menu_action_dismiss\",\n    icon: \"dismiss\",\n    action: ac.AlsoToMain({\n      type: at.BLOCK_URL,\n      data: {url: site.open_url || site.url, pocket_id: site.pocket_id}\n    }),\n    impression: ac.ImpressionStats({\n      source: eventSource,\n      block: 0,\n      tiles: [{id: site.guid, pos: index}]\n    }),\n    userEvent: \"BLOCK\"\n  }),\n\n  // This is an option for web extentions which will result in remove items from\n  // memory and notify the web extenion, rather than using the built-in block list.\n  WebExtDismiss: (site, index, eventSource) => ({\n    id: \"menu_action_webext_dismiss\",\n    string_id: \"menu_action_dismiss\",\n    icon: \"dismiss\",\n    action: ac.WebExtEvent(at.WEBEXT_DISMISS, {\n      source: eventSource,\n      url: site.url,\n      action_position: index\n    })\n  }),\n  DeleteUrl: (site, index, eventSource, isEnabled, siteInfo) => ({\n    id: \"menu_action_delete\",\n    icon: \"delete\",\n    action: {\n      type: at.DIALOG_OPEN,\n      data: {\n        onConfirm: [\n          ac.AlsoToMain({type: at.DELETE_HISTORY_URL, data: {url: site.url, pocket_id: site.pocket_id, forceBlock: site.bookmarkGuid}}),\n          ac.UserEvent(Object.assign({event: \"DELETE\", source: eventSource, action_position: index}, siteInfo))\n        ],\n        eventSource,\n        body_string_id: [\"confirm_history_delete_p1\", \"confirm_history_delete_notice_p2\"],\n        confirm_button_string_id: \"menu_action_delete\",\n        cancel_button_string_id: \"topsites_form_cancel_button\",\n        icon: \"modal-delete\"\n      }\n    },\n    userEvent: \"DIALOG_OPEN\"\n  }),\n  ShowFile: (site, index, eventSource, isEnabled, siteInfo, platform) => ({\n    id: GetPlatformString(platform),\n    icon: \"search\",\n    action: ac.OnlyToMain({\n      type: at.SHOW_DOWNLOAD_FILE,\n      data: {url: site.url}\n    })\n  }),\n  OpenFile: site => ({\n    id: \"menu_action_open_file\",\n    icon: \"open-file\",\n    action: ac.OnlyToMain({\n      type: at.OPEN_DOWNLOAD_FILE,\n      data: {url: site.url}\n    })\n  }),\n  CopyDownloadLink: site => ({\n    id: \"menu_action_copy_download_link\",\n    icon: \"copy\",\n    action: ac.OnlyToMain({\n      type: at.COPY_DOWNLOAD_LINK,\n      data: {url: site.url}\n    })\n  }),\n  GoToDownloadPage: site => ({\n    id: \"menu_action_go_to_download_page\",\n    icon: \"download\",\n    action: ac.OnlyToMain({\n      type: at.OPEN_LINK,\n      data: {url: site.referrer}\n    }),\n    disabled: !site.referrer\n  }),\n  RemoveDownload: site => ({\n    id: \"menu_action_remove_download\",\n    icon: \"delete\",\n    action: ac.OnlyToMain({\n      type: at.REMOVE_DOWNLOAD_FILE,\n      data: {url: site.url}\n    })\n  }),\n  PinTopSite: (site, index) => ({\n    id: \"menu_action_pin\",\n    icon: \"pin\",\n    action: ac.AlsoToMain({\n      type: at.TOP_SITES_PIN,\n      data: {site: {url: site.url}, index}\n    }),\n    userEvent: \"PIN\"\n  }),\n  UnpinTopSite: site => ({\n    id: \"menu_action_unpin\",\n    icon: \"unpin\",\n    action: ac.AlsoToMain({\n      type: at.TOP_SITES_UNPIN,\n      data: {site: {url: site.url}}\n    }),\n    userEvent: \"UNPIN\"\n  }),\n  SaveToPocket: (site, index, eventSource) => ({\n    id: \"menu_action_save_to_pocket\",\n    icon: \"pocket\",\n    action: ac.AlsoToMain({\n      type: at.SAVE_TO_POCKET,\n      data: {site: {url: site.url, title: site.title}}\n    }),\n    impression: ac.ImpressionStats({\n      source: eventSource,\n      pocket: 0,\n      tiles: [{id: site.guid, pos: index}]\n    }),\n    userEvent: \"SAVE_TO_POCKET\"\n  }),\n  DeleteFromPocket: site => ({\n    id: \"menu_action_delete_pocket\",\n    icon: \"delete\",\n    action: ac.AlsoToMain({\n      type: at.DELETE_FROM_POCKET,\n      data: {pocket_id: site.pocket_id}\n    }),\n    userEvent: \"DELETE_FROM_POCKET\"\n  }),\n  ArchiveFromPocket: site => ({\n    id: \"menu_action_archive_pocket\",\n    icon: \"check\",\n    action: ac.AlsoToMain({\n      type: at.ARCHIVE_FROM_POCKET,\n      data: {pocket_id: site.pocket_id}\n    }),\n    userEvent: \"ARCHIVE_FROM_POCKET\"\n  }),\n  EditTopSite: (site, index) => ({\n    id: \"edit_topsites_button_text\",\n    icon: \"edit\",\n    action: {\n      type: at.TOP_SITES_EDIT,\n      data: {index}\n    }\n  }),\n  CheckBookmark: site => (site.bookmarkGuid ? LinkMenuOptions.RemoveBookmark(site) : LinkMenuOptions.AddBookmark(site)),\n  CheckPinTopSite: (site, index) => (site.isPinned ? LinkMenuOptions.UnpinTopSite(site) : LinkMenuOptions.PinTopSite(site, index)),\n  CheckSavedToPocket: (site, index) => (site.pocket_id ? LinkMenuOptions.DeleteFromPocket(site) : LinkMenuOptions.SaveToPocket(site, index)),\n  CheckBookmarkOrArchive: site => (site.pocket_id ? LinkMenuOptions.ArchiveFromPocket(site) : LinkMenuOptions.CheckBookmark(site)),\n  OpenInPrivateWindow: (site, index, eventSource, isEnabled) => (isEnabled ? _OpenInPrivateWindow(site) : LinkMenuOptions.EmptyItem())\n};\n","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {connect} from \"react-redux\";\nimport {ContextMenu} from \"content-src/components/ContextMenu/ContextMenu\";\nimport {injectIntl} from \"react-intl\";\nimport {LinkMenuOptions} from \"content-src/lib/link-menu-options\";\nimport React from \"react\";\n\nconst DEFAULT_SITE_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\", \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\"];\n\nexport class _LinkMenu extends React.PureComponent {\n  getOptions() {\n    const {props} = this;\n    const {site, index, source, isPrivateBrowsingEnabled, siteInfo, platform} = props;\n\n    // Handle special case of default site\n    const propOptions = !site.isDefault ? props.options : DEFAULT_SITE_MENU_OPTIONS;\n\n    const options = propOptions.map(o => LinkMenuOptions[o](site, index, source, isPrivateBrowsingEnabled, siteInfo, platform)).map(option => {\n      const {action, impression, id, string_id, type, userEvent} = option;\n      if (!type && id) {\n        option.label = props.intl.formatMessage({id: string_id || id});\n        option.onClick = () => {\n          props.dispatch(action);\n          if (userEvent) {\n            const userEventData = Object.assign({\n              event: userEvent,\n              source,\n              action_position: index\n            }, siteInfo);\n            props.dispatch(ac.UserEvent(userEventData));\n          }\n          if (impression && props.shouldSendImpressionStats) {\n            props.dispatch(impression);\n          }\n        };\n      }\n      return option;\n    });\n\n    // This is for accessibility to support making each item tabbable.\n    // We want to know which item is the first and which item\n    // is the last, so we can close the context menu accordingly.\n    options[0].first = true;\n    options[options.length - 1].last = true;\n    return options;\n  }\n\n  render() {\n    return (<ContextMenu\n      onUpdate={this.props.onUpdate}\n      options={this.getOptions()} />);\n  }\n}\n\nconst getState = state => ({isPrivateBrowsingEnabled: state.Prefs.values.isPrivateBrowsingEnabled, platform: state.Prefs.values.platform});\nexport const LinkMenu = connect(getState)(injectIntl(_LinkMenu));\n","import React from \"react\";\n\nexport class ContextMenu extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.hideContext = this.hideContext.bind(this);\n    this.onClick = this.onClick.bind(this);\n  }\n\n  hideContext() {\n    this.props.onUpdate(false);\n  }\n\n  componentDidMount() {\n    setTimeout(() => {\n      global.addEventListener(\"click\", this.hideContext);\n    }, 0);\n  }\n\n  componentWillUnmount() {\n    global.removeEventListener(\"click\", this.hideContext);\n  }\n\n  onClick(event) {\n    // Eat all clicks on the context menu so they don't bubble up to window.\n    // This prevents the context menu from closing when clicking disabled items\n    // or the separators.\n    event.stopPropagation();\n  }\n\n  render() {\n    return (<span className=\"context-menu\" onClick={this.onClick}>\n      <ul role=\"menu\" className=\"context-menu-list\">\n        {this.props.options.map((option, i) => (option.type === \"separator\" ?\n          (<li key={i} className=\"separator\" />) :\n          (option.type !== \"empty\" && <ContextMenuItem key={i} option={option} hideContext={this.hideContext} />)\n        ))}\n      </ul>\n    </span>);\n  }\n}\n\nexport class ContextMenuItem extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onClick = this.onClick.bind(this);\n    this.onKeyDown = this.onKeyDown.bind(this);\n  }\n\n  onClick() {\n    this.props.hideContext();\n    this.props.option.onClick();\n  }\n\n  onKeyDown(event) {\n    const {option} = this.props;\n    switch (event.key) {\n      case \"Tab\":\n        // tab goes down in context menu, shift + tab goes up in context menu\n        // if we're on the last item, one more tab will close the context menu\n        // similarly, if we're on the first item, one more shift + tab will close it\n        if ((event.shiftKey && option.first) || (!event.shiftKey && option.last)) {\n          this.props.hideContext();\n        }\n        break;\n      case \"Enter\":\n        this.props.hideContext();\n        option.onClick();\n        break;\n    }\n  }\n\n  render() {\n    const {option} = this.props;\n    return (\n      <li role=\"menuitem\" className=\"context-menu-item\">\n        <a onClick={this.onClick} onKeyDown={this.onKeyDown} tabIndex=\"0\" className={option.disabled ? \"disabled\" : \"\"}>\n          {option.icon && <span className={`icon icon-spacer icon-${option.icon}`} />}\n          {option.label}\n        </a>\n      </li>);\n  }\n}\n","/**\n * List of helper functions for screenshot-based images.\n *\n * There are two kinds of images:\n * 1. Remote Image: This is the image from the main process and it refers to\n *    the image in the React props. This can either be an object with the `data`\n *    and `path` properties, if it is a blob, or a string, if it is a normal image.\n * 2. Local Image: This is the image object in the content process and it refers\n *    to the image *object* in the React component's state. All local image\n *    objects have the `url` property, and an additional property `path`, if they\n *    are blobs.\n */\nexport const ScreenshotUtils = {\n  isBlob(isLocal, image) {\n    return !!(image && image.path && ((!isLocal && image.data) || (isLocal && image.url)));\n  },\n\n  // This should always be called with a remote image and not a local image.\n  createLocalImageObject(remoteImage) {\n    if (!remoteImage) {\n      return null;\n    }\n    if (this.isBlob(false, remoteImage)) {\n      return {url: global.URL.createObjectURL(remoteImage.data), path: remoteImage.path};\n    }\n    return {url: remoteImage};\n  },\n\n  // Revokes the object URL of the image if the local image is a blob.\n  // This should always be called with a local image and not a remote image.\n  maybeRevokeBlobObjectURL(localImage) {\n    if (this.isBlob(true, localImage)) {\n      global.URL.revokeObjectURL(localImage.url);\n    }\n  },\n\n  // Checks if remoteImage and localImage are the same.\n  isRemoteImageLocal(localImage, remoteImage) {\n    // Both remoteImage and localImage are present.\n    if (remoteImage && localImage) {\n      return this.isBlob(false, remoteImage) ?\n             localImage.path === remoteImage.path :\n             localImage.url === remoteImage;\n    }\n\n    // This will only handle the remaining three possible outcomes.\n    // (i.e. everything except when both image and localImage are present)\n    return !remoteImage && !localImage;\n  }\n};\n","import {FormattedMessage, injectIntl} from \"react-intl\";\nimport {actionCreators as ac} from \"common/Actions.jsm\";\nimport {ErrorBoundary} from \"content-src/components/ErrorBoundary/ErrorBoundary\";\nimport React from \"react\";\nimport {SectionMenu} from \"content-src/components/SectionMenu/SectionMenu\";\nimport {SectionMenuOptions} from \"content-src/lib/section-menu-options\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\nfunction getFormattedMessage(message) {\n  return typeof message === \"string\" ? <span>{message}</span> : <FormattedMessage {...message} />;\n}\n\nexport class Disclaimer extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onAcknowledge = this.onAcknowledge.bind(this);\n  }\n\n  onAcknowledge() {\n    this.props.dispatch(ac.SetPref(this.props.disclaimerPref, false));\n    this.props.dispatch(ac.UserEvent({event: \"DISCLAIMER_ACKED\", source: this.props.eventSource}));\n  }\n\n  render() {\n    const {disclaimer} = this.props;\n    return (\n      <div className=\"section-disclaimer\">\n          <div className=\"section-disclaimer-text\">\n            {getFormattedMessage(disclaimer.text)}\n            {disclaimer.link &&\n              <a href={disclaimer.link.href} target=\"_blank\" rel=\"noopener noreferrer\">\n                {getFormattedMessage(disclaimer.link.title || disclaimer.link)}\n              </a>\n            }\n          </div>\n\n          <button onClick={this.onAcknowledge}>\n            {getFormattedMessage(disclaimer.button)}\n          </button>\n      </div>\n    );\n  }\n}\n\nexport const DisclaimerIntl = injectIntl(Disclaimer);\n\nexport class _CollapsibleSection extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onBodyMount = this.onBodyMount.bind(this);\n    this.onHeaderClick = this.onHeaderClick.bind(this);\n    this.onTransitionEnd = this.onTransitionEnd.bind(this);\n    this.enableOrDisableAnimation = this.enableOrDisableAnimation.bind(this);\n    this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n    this.onMenuButtonMouseEnter = this.onMenuButtonMouseEnter.bind(this);\n    this.onMenuButtonMouseLeave = this.onMenuButtonMouseLeave.bind(this);\n    this.onMenuUpdate = this.onMenuUpdate.bind(this);\n    this.state = {enableAnimation: true, isAnimating: false, menuButtonHover: false, showContextMenu: false};\n  }\n\n  componentWillMount() {\n    this.props.document.addEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n  }\n\n  componentWillUpdate(nextProps) {\n    // Check if we're about to go from expanded to collapsed\n    if (!this.props.collapsed && nextProps.collapsed) {\n      // This next line forces a layout flush of the section body, which has a\n      // max-height style set, so that the upcoming collapse animation can\n      // animate from that height to the collapsed height. Without this, the\n      // update is coalesced and there's no animation from no-max-height to 0.\n      this.sectionBody.scrollHeight; // eslint-disable-line no-unused-expressions\n    }\n  }\n\n  componentWillUnmount() {\n    this.props.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this.enableOrDisableAnimation);\n  }\n\n  enableOrDisableAnimation() {\n    // Only animate the collapse/expand for visible tabs.\n    const visible = this.props.document.visibilityState === VISIBLE;\n    if (this.state.enableAnimation !== visible) {\n      this.setState({enableAnimation: visible});\n    }\n  }\n\n  onBodyMount(node) {\n    this.sectionBody = node;\n  }\n\n  onHeaderClick() {\n    // If this.sectionBody is unset, it means that we're in some sort of error\n    // state, probably displaying the error fallback, so we won't be able to\n    // compute the height, and we don't want to persist the preference.\n    // If props.collapsed is undefined handler shouldn't do anything.\n    if (!this.sectionBody || this.props.collapsed === undefined) {\n      return;\n    }\n\n    // Get the current height of the body so max-height transitions can work\n    this.setState({\n      isAnimating: true,\n      maxHeight: `${this.sectionBody.scrollHeight}px`\n    });\n    const {action, userEvent} = SectionMenuOptions.CheckCollapsed(this.props);\n    this.props.dispatch(action);\n    this.props.dispatch(ac.UserEvent({\n      event: userEvent,\n      source: this.props.source\n    }));\n  }\n\n  onTransitionEnd(event) {\n    // Only update the animating state for our own transition (not a child's)\n    if (event.target === event.currentTarget) {\n      this.setState({isAnimating: false});\n    }\n  }\n\n  renderIcon() {\n    const {icon} = this.props;\n    if (icon && icon.startsWith(\"moz-extension://\")) {\n      return <span className=\"icon icon-small-spacer\" style={{backgroundImage: `url('${icon}')`}} />;\n    }\n    return <span className={`icon icon-small-spacer icon-${icon || \"webextension\"}`} />;\n  }\n\n  onMenuButtonClick(event) {\n    event.preventDefault();\n    this.setState({showContextMenu: true});\n  }\n\n  onMenuButtonMouseEnter() {\n    this.setState({menuButtonHover: true});\n  }\n\n  onMenuButtonMouseLeave() {\n    this.setState({menuButtonHover: false});\n  }\n\n  onMenuUpdate(showContextMenu) {\n    this.setState({showContextMenu});\n  }\n\n  render() {\n    const isCollapsible = this.props.collapsed !== undefined;\n    const {enableAnimation, isAnimating, maxHeight, menuButtonHover, showContextMenu} = this.state;\n    const {id, eventSource, collapsed, disclaimer, title, extraMenuOptions, showPrefName, privacyNoticeURL, dispatch, isFirst, isLast, isWebExtension} = this.props;\n    const disclaimerPref = `section.${id}.showDisclaimer`;\n    const needsDisclaimer = disclaimer && this.props.Prefs.values[disclaimerPref];\n    const active = menuButtonHover || showContextMenu;\n    return (\n      <section\n        className={`collapsible-section ${this.props.className}${enableAnimation ? \" animation-enabled\" : \"\"}${collapsed ? \" collapsed\" : \"\"}${active ? \" active\" : \"\"}`}\n        // Note: data-section-id is used for web extension api tests in mozilla central\n        data-section-id={id}>\n        <div className=\"section-top-bar\">\n          <h3 className=\"section-title\">\n            <span className=\"click-target\" onClick={this.onHeaderClick}>\n              {this.renderIcon()}\n              {getFormattedMessage(title)}\n              {isCollapsible && <span className={`collapsible-arrow icon ${collapsed ? \"icon-arrowhead-forward-small\" : \"icon-arrowhead-down-small\"}`} />}\n            </span>\n          </h3>\n          <div>\n            <button\n              className=\"context-menu-button icon\"\n              onClick={this.onMenuButtonClick}\n              onMouseEnter={this.onMenuButtonMouseEnter}\n              onMouseLeave={this.onMenuButtonMouseLeave}>\n              <span className=\"sr-only\">\n                <FormattedMessage id=\"section_context_menu_button_sr\" />\n              </span>\n            </button>\n            {showContextMenu &&\n              <SectionMenu\n                id={id}\n                extraOptions={extraMenuOptions}\n                eventSource={eventSource}\n                showPrefName={showPrefName}\n                privacyNoticeURL={privacyNoticeURL}\n                collapsed={collapsed}\n                onUpdate={this.onMenuUpdate}\n                isFirst={isFirst}\n                isLast={isLast}\n                dispatch={dispatch}\n                isWebExtension={isWebExtension} />\n            }\n          </div>\n        </div>\n        <ErrorBoundary className=\"section-body-fallback\">\n          <div\n            className={`section-body${isAnimating ? \" animating\" : \"\"}`}\n            onTransitionEnd={this.onTransitionEnd}\n            ref={this.onBodyMount}\n            style={isAnimating && !collapsed ? {maxHeight} : null}>\n            {needsDisclaimer && <DisclaimerIntl disclaimerPref={disclaimerPref} disclaimer={disclaimer} eventSource={eventSource} dispatch={this.props.dispatch} />}\n            {this.props.children}\n          </div>\n        </ErrorBoundary>\n      </section>\n    );\n  }\n}\n\n_CollapsibleSection.defaultProps = {\n  document: global.document || {\n    addEventListener: () => {},\n    removeEventListener: () => {},\n    visibilityState: \"hidden\"\n  },\n  Prefs: {values: {}}\n};\n\nexport const CollapsibleSection = injectIntl(_CollapsibleSection);\n","import {actionCreators as ac} from \"common/Actions.jsm\";\nimport {ContextMenu} from \"content-src/components/ContextMenu/ContextMenu\";\nimport {injectIntl} from \"react-intl\";\nimport React from \"react\";\nimport {SectionMenuOptions} from \"content-src/lib/section-menu-options\";\n\nconst DEFAULT_SECTION_MENU_OPTIONS = [\"MoveUp\", \"MoveDown\", \"Separator\", \"RemoveSection\", \"CheckCollapsed\", \"Separator\", \"ManageSection\"];\nconst WEBEXT_SECTION_MENU_OPTIONS = [\"MoveUp\", \"MoveDown\", \"Separator\", \"CheckCollapsed\", \"Separator\", \"ManageWebExtension\"];\n\nexport class _SectionMenu extends React.PureComponent {\n  getOptions() {\n    const {props} = this;\n\n    const propOptions = props.isWebExtension ? [...WEBEXT_SECTION_MENU_OPTIONS] : [...DEFAULT_SECTION_MENU_OPTIONS];\n    // Prepend custom options and a separator\n    if (props.extraOptions) {\n      propOptions.splice(0, 0, ...props.extraOptions, \"Separator\");\n    }\n    // Insert privacy notice before the last option (\"ManageSection\")\n    if (props.privacyNoticeURL) {\n      propOptions.splice(-1, 0, \"PrivacyNotice\");\n    }\n\n    const options = propOptions.map(o => SectionMenuOptions[o](props)).map(option => {\n      const {action, id, type, userEvent} = option;\n      if (!type && id) {\n        option.label = props.intl.formatMessage({id});\n        option.onClick = () => {\n          props.dispatch(action);\n          if (userEvent) {\n            props.dispatch(ac.UserEvent({\n              event: userEvent,\n              source: props.source\n            }));\n          }\n        };\n      }\n      return option;\n    });\n\n    // This is for accessibility to support making each item tabbable.\n    // We want to know which item is the first and which item\n    // is the last, so we can close the context menu accordingly.\n    options[0].first = true;\n    options[options.length - 1].last = true;\n    return options;\n  }\n\n  render() {\n    return (<ContextMenu\n      onUpdate={this.props.onUpdate}\n      options={this.getOptions()} />);\n  }\n}\n\nexport const SectionMenu = injectIntl(_SectionMenu);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\n\n/**\n * List of functions that return items that can be included as menu options in a\n * SectionMenu. All functions take the section as the only parameter.\n */\nexport const SectionMenuOptions = {\n  Separator: () => ({type: \"separator\"}),\n  MoveUp: section => ({\n    id: \"section_menu_action_move_up\",\n    icon: \"arrowhead-up\",\n    action: ac.OnlyToMain({\n      type: at.SECTION_MOVE,\n      data: {id: section.id, direction: -1}\n    }),\n    userEvent: \"MENU_MOVE_UP\",\n    disabled: !!section.isFirst\n  }),\n  MoveDown: section => ({\n    id: \"section_menu_action_move_down\",\n    icon: \"arrowhead-down\",\n    action: ac.OnlyToMain({\n      type: at.SECTION_MOVE,\n      data: {id: section.id, direction: +1}\n    }),\n    userEvent: \"MENU_MOVE_DOWN\",\n    disabled: !!section.isLast\n  }),\n  RemoveSection: section => ({\n    id: \"section_menu_action_remove_section\",\n    icon: \"dismiss\",\n    action: ac.SetPref(section.showPrefName, false),\n    userEvent: \"MENU_REMOVE\"\n  }),\n  CollapseSection: section => ({\n    id: \"section_menu_action_collapse_section\",\n    icon: \"minimize\",\n    action: ac.OnlyToMain({type: at.UPDATE_SECTION_PREFS, data: {id: section.id, value: {collapsed: true}}}),\n    userEvent: \"MENU_COLLAPSE\"\n  }),\n  ExpandSection: section => ({\n    id: \"section_menu_action_expand_section\",\n    icon: \"maximize\",\n    action: ac.OnlyToMain({type: at.UPDATE_SECTION_PREFS, data: {id: section.id, value: {collapsed: false}}}),\n    userEvent: \"MENU_EXPAND\"\n  }),\n  ManageSection: section => ({\n    id: \"section_menu_action_manage_section\",\n    icon: \"settings\",\n    action: ac.OnlyToMain({type: at.SETTINGS_OPEN}),\n    userEvent: \"MENU_MANAGE\"\n  }),\n  ManageWebExtension: section => ({\n    id: \"section_menu_action_manage_webext\",\n    icon: \"settings\",\n    action: ac.OnlyToMain({type: at.OPEN_WEBEXT_SETTINGS, data: section.id})\n  }),\n  AddTopSite: section => ({\n    id: \"section_menu_action_add_topsite\",\n    icon: \"add\",\n    action: {type: at.TOP_SITES_EDIT, data: {index: -1}},\n    userEvent: \"MENU_ADD_TOPSITE\"\n  }),\n  PrivacyNotice: section => ({\n    id: \"section_menu_action_privacy_notice\",\n    icon: \"info\",\n    action: ac.OnlyToMain({\n      type: at.OPEN_LINK,\n      data: {url: section.privacyNoticeURL}\n    }),\n    userEvent: \"MENU_PRIVACY_NOTICE\"\n  }),\n  CheckCollapsed: section => (section.collapsed ? SectionMenuOptions.ExpandSection(section) : SectionMenuOptions.CollapseSection(section))\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {perfService as perfSvc} from \"common/PerfService.jsm\";\nimport React from \"react\";\n\n// Currently record only a fixed set of sections. This will prevent data\n// from custom sections from showing up or from topstories.\nconst RECORDED_SECTIONS = [\"highlights\", \"topsites\"];\n\nexport class ComponentPerfTimer extends React.Component {\n  constructor(props) {\n    super(props);\n    // Just for test dependency injection:\n    this.perfSvc = this.props.perfSvc || perfSvc;\n\n    this._sendBadStateEvent = this._sendBadStateEvent.bind(this);\n    this._sendPaintedEvent = this._sendPaintedEvent.bind(this);\n    this._reportMissingData = false;\n    this._timestampHandled = false;\n    this._recordedFirstRender = false;\n  }\n\n  componentDidMount() {\n    if (!RECORDED_SECTIONS.includes(this.props.id)) {\n      return;\n    }\n\n    this._maybeSendPaintedEvent();\n  }\n\n  componentDidUpdate() {\n    if (!RECORDED_SECTIONS.includes(this.props.id)) {\n      return;\n    }\n\n    this._maybeSendPaintedEvent();\n  }\n\n  /**\n   * Call the given callback after the upcoming frame paints.\n   *\n   * @note Both setTimeout and requestAnimationFrame are throttled when the page\n   * is hidden, so this callback may get called up to a second or so after the\n   * requestAnimationFrame \"paint\" for hidden tabs.\n   *\n   * Newtabs hidden while loading will presumably be fairly rare (other than\n   * preloaded tabs, which we will be filtering out on the server side), so such\n   * cases should get lost in the noise.\n   *\n   * If we decide that it's important to find out when something that's hidden\n   * has \"painted\", however, another option is to post a message to this window.\n   * That should happen even faster than setTimeout, and, at least as of this\n   * writing, it's not throttled in hidden windows in Firefox.\n   *\n   * @param {Function} callback\n   *\n   * @returns void\n   */\n  _afterFramePaint(callback) {\n    requestAnimationFrame(() => setTimeout(callback, 0));\n  }\n\n  _maybeSendBadStateEvent() {\n    // Follow up bugs:\n    // https://github.com/mozilla/activity-stream/issues/3691\n    if (!this.props.initialized) {\n      // Remember to report back when data is available.\n      this._reportMissingData = true;\n    } else if (this._reportMissingData) {\n      this._reportMissingData = false;\n      // Report how long it took for component to become initialized.\n      this._sendBadStateEvent();\n    }\n  }\n\n  _maybeSendPaintedEvent() {\n    // If we've already handled a timestamp, don't do it again.\n    if (this._timestampHandled || !this.props.initialized) {\n      return;\n    }\n\n    // And if we haven't, we're doing so now, so remember that. Even if\n    // something goes wrong in the callback, we can't try again, as we'd be\n    // sending back the wrong data, and we have to do it here, so that other\n    // calls to this method while waiting for the next frame won't also try to\n    // handle it.\n    this._timestampHandled = true;\n    this._afterFramePaint(this._sendPaintedEvent);\n  }\n\n  /**\n   * Triggered by call to render. Only first call goes through due to\n   * `_recordedFirstRender`.\n   */\n  _ensureFirstRenderTsRecorded() {\n    // Used as t0 for recording how long component took to initialize.\n    if (!this._recordedFirstRender) {\n      this._recordedFirstRender = true;\n      // topsites_first_render_ts, highlights_first_render_ts.\n      const key = `${this.props.id}_first_render_ts`;\n      this.perfSvc.mark(key);\n    }\n  }\n\n  /**\n   * Creates `TELEMETRY_UNDESIRED_EVENT` with timestamp in ms\n   * of how much longer the data took to be ready for display than it would\n   * have been the ideal case.\n   * https://github.com/mozilla/ping-centre/issues/98\n   */\n  _sendBadStateEvent() {\n    // highlights_data_ready_ts, topsites_data_ready_ts.\n    const dataReadyKey = `${this.props.id}_data_ready_ts`;\n    this.perfSvc.mark(dataReadyKey);\n\n    try {\n      const firstRenderKey = `${this.props.id}_first_render_ts`;\n      // value has to be Int32.\n      const value = parseInt(this.perfSvc.getMostRecentAbsMarkStartByName(dataReadyKey) -\n                             this.perfSvc.getMostRecentAbsMarkStartByName(firstRenderKey), 10);\n      this.props.dispatch(ac.OnlyToMain({\n        type: at.SAVE_SESSION_PERF_DATA,\n        // highlights_data_late_by_ms, topsites_data_late_by_ms.\n        data: {[`${this.props.id}_data_late_by_ms`]: value}\n      }));\n    } catch (ex) {\n      // If this failed, it's likely because the `privacy.resistFingerprinting`\n      // pref is true.\n    }\n  }\n\n  _sendPaintedEvent() {\n    // Record first_painted event but only send if topsites.\n    if (this.props.id !== \"topsites\") {\n      return;\n    }\n\n    // topsites_first_painted_ts.\n    const key = `${this.props.id}_first_painted_ts`;\n    this.perfSvc.mark(key);\n\n    try {\n      const data = {};\n      data[key] = this.perfSvc.getMostRecentAbsMarkStartByName(key);\n\n      this.props.dispatch(ac.OnlyToMain({\n        type: at.SAVE_SESSION_PERF_DATA,\n        data\n      }));\n    } catch (ex) {\n      // If this failed, it's likely because the `privacy.resistFingerprinting`\n      // pref is true.  We should at least not blow up, and should continue\n      // to set this._timestampHandled to avoid going through this again.\n    }\n  }\n\n  render() {\n    if (RECORDED_SECTIONS.includes(this.props.id)) {\n      this._ensureFirstRenderTsRecorded();\n      this._maybeSendBadStateEvent();\n    }\n    return this.props.children;\n  }\n}\n","/* globals Services */\n\"use strict\";\n\n/* istanbul ignore if */\nif (typeof ChromeUtils !== \"undefined\") {\n  ChromeUtils.import(\"resource://gre/modules/Services.jsm\");\n}\n\nlet usablePerfObj;\n\n/* istanbul ignore if */\n/* istanbul ignore else */\nif (typeof Services !== \"undefined\") {\n  // Borrow the high-resolution timer from the hidden window....\n  usablePerfObj = Services.appShell.hiddenDOMWindow.performance;\n} else if (typeof performance !== \"undefined\") {\n  // we must be running in content space\n  // eslint-disable-next-line no-undef\n  usablePerfObj = performance;\n} else {\n  // This is a dummy object so this file doesn't crash in the node prerendering\n  // task.\n  usablePerfObj = {\n    now() {},\n    mark() {}\n  };\n}\n\nfunction _PerfService(options) {\n  // For testing, so that we can use a fake Window.performance object with\n  // known state.\n  if (options && options.performanceObj) {\n    this._perf = options.performanceObj;\n  } else {\n    this._perf = usablePerfObj;\n  }\n}\n\n_PerfService.prototype = {\n  /**\n   * Calls the underlying mark() method on the appropriate Window.performance\n   * object to add a mark with the given name to the appropriate performance\n   * timeline.\n   *\n   * @param  {String} name  the name to give the current mark\n   * @return {void}\n   */\n  mark: function mark(str) {\n    this._perf.mark(str);\n  },\n\n  /**\n   * Calls the underlying getEntriesByName on the appropriate Window.performance\n   * object.\n   *\n   * @param  {String} name\n   * @param  {String} type eg \"mark\"\n   * @return {Array}       Performance* objects\n   */\n  getEntriesByName: function getEntriesByName(name, type) {\n    return this._perf.getEntriesByName(name, type);\n  },\n\n  /**\n   * The timeOrigin property from the appropriate performance object.\n   * Used to ensure that timestamps from the add-on code and the content code\n   * are comparable.\n   *\n   * @note If this is called from a context without a window\n   * (eg a JSM in chrome), it will return the timeOrigin of the XUL hidden\n   * window, which appears to be the first created window (and thus\n   * timeOrigin) in the browser.  Note also, however, there is also a private\n   * hidden window, presumably for private browsing, which appears to be\n   * created dynamically later.  Exactly how/when that shows up needs to be\n   * investigated.\n   *\n   * @return {Number} A double of milliseconds with a precision of 0.5us.\n   */\n  get timeOrigin() {\n    return this._perf.timeOrigin;\n  },\n\n  /**\n   * Returns the \"absolute\" version of performance.now(), i.e. one that\n   * should ([bug 1401406](https://bugzilla.mozilla.org/show_bug.cgi?id=1401406)\n   * be comparable across both chrome and content.\n   *\n   * @return {Number}\n   */\n  absNow: function absNow() {\n    return this.timeOrigin + this._perf.now();\n  },\n\n  /**\n   * This returns the absolute startTime from the most recent performance.mark()\n   * with the given name.\n   *\n   * @param  {String} name  the name to lookup the start time for\n   *\n   * @return {Number}       the returned start time, as a DOMHighResTimeStamp\n   *\n   * @throws {Error}        \"No Marks with the name ...\" if none are available\n   *\n   * @note Always surround calls to this by try/catch.  Otherwise your code\n   * may fail when the `privacy.resistFingerprinting` pref is true.  When\n   * this pref is set, all attempts to get marks will likely fail, which will\n   * cause this method to throw.\n   *\n   * See [bug 1369303](https://bugzilla.mozilla.org/show_bug.cgi?id=1369303)\n   * for more info.\n   */\n  getMostRecentAbsMarkStartByName(name) {\n    let entries = this.getEntriesByName(name, \"mark\");\n\n    if (!entries.length) {\n      throw new Error(`No marks with the name ${name}`);\n    }\n\n    let mostRecentEntry = entries[entries.length - 1];\n    return this._perf.timeOrigin + mostRecentEntry.startTime;\n  }\n};\n\nthis.perfService = new _PerfService();\nconst EXPORTED_SYMBOLS = [\"_PerfService\", \"perfService\"];\n","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class Topic extends React.PureComponent {\n  render() {\n    const {url, name} = this.props;\n    return (<li><a key={name} className=\"topic-link\" href={url}>{name}</a></li>);\n  }\n}\n\nexport class Topics extends React.PureComponent {\n  render() {\n    const {topics, read_more_endpoint} = this.props;\n    return (\n      <div className=\"topic\">\n        <span><FormattedMessage id=\"pocket_read_more\" /></span>\n        <ul>{topics && topics.map(t => <Topic key={t.name} url={t.url} name={t.name} />)}</ul>\n\n        {read_more_endpoint && <a className=\"topic-read-more\" href={read_more_endpoint}>\n          <FormattedMessage id=\"pocket_read_even_more\" />\n        </a>}\n      </div>\n    );\n  }\n}\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {MIN_CORNER_FAVICON_SIZE, MIN_RICH_FAVICON_SIZE, TOP_SITES_SOURCE} from \"./TopSitesConstants\";\nimport {CollapsibleSection} from \"content-src/components/CollapsibleSection/CollapsibleSection\";\nimport {ComponentPerfTimer} from \"content-src/components/ComponentPerfTimer/ComponentPerfTimer\";\nimport {connect} from \"react-redux\";\nimport {injectIntl} from \"react-intl\";\nimport React from \"react\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\nimport {TopSiteForm} from \"./TopSiteForm\";\nimport {TopSiteList} from \"./TopSite\";\n\nfunction topSiteIconType(link) {\n  if (link.customScreenshotURL) {\n    return \"custom_screenshot\";\n  }\n  if (link.tippyTopIcon || link.faviconRef === \"tippytop\") {\n    return \"tippytop\";\n  }\n  if (link.faviconSize >= MIN_RICH_FAVICON_SIZE) {\n    return \"rich_icon\";\n  }\n  if (link.screenshot && link.faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n    return \"screenshot_with_icon\";\n  }\n  if (link.screenshot) {\n    return \"screenshot\";\n  }\n  return \"no_image\";\n}\n\n/**\n * Iterates through TopSites and counts types of images.\n * @param acc Accumulator for reducer.\n * @param topsite Entry in TopSites.\n */\nfunction countTopSitesIconsTypes(topSites) {\n  const countTopSitesTypes = (acc, link) => {\n    acc[topSiteIconType(link)]++;\n    return acc;\n  };\n\n  return topSites.reduce(countTopSitesTypes, {\n    \"custom_screenshot\": 0,\n    \"screenshot_with_icon\": 0,\n    \"screenshot\": 0,\n    \"tippytop\": 0,\n    \"rich_icon\": 0,\n    \"no_image\": 0\n  });\n}\n\nexport class _TopSites extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onFormClose = this.onFormClose.bind(this);\n  }\n\n  /**\n   * Dispatch session statistics about the quality of TopSites icons and pinned count.\n   */\n  _dispatchTopSitesStats() {\n    const topSites = this._getVisibleTopSites();\n    const topSitesIconsStats = countTopSitesIconsTypes(topSites);\n    const topSitesPinned = topSites.filter(site => !!site.isPinned).length;\n    // Dispatch telemetry event with the count of TopSites images types.\n    this.props.dispatch(ac.AlsoToMain({\n      type: at.SAVE_SESSION_PERF_DATA,\n      data: {topsites_icon_stats: topSitesIconsStats, topsites_pinned: topSitesPinned}\n    }));\n  }\n\n  /**\n   * Return the TopSites that are visible based on prefs and window width.\n   */\n  _getVisibleTopSites() {\n    // We hide 2 sites per row when not in the wide layout.\n    let sitesPerRow = TOP_SITES_MAX_SITES_PER_ROW;\n    // $break-point-widest = 1072px (from _variables.scss)\n    if (!global.matchMedia(`(min-width: 1072px)`).matches) {\n      sitesPerRow -= 2;\n    }\n    return this.props.TopSites.rows.slice(0, this.props.TopSitesRows * sitesPerRow);\n  }\n\n  componentDidUpdate() {\n    this._dispatchTopSitesStats();\n  }\n\n  componentDidMount() {\n    this._dispatchTopSitesStats();\n  }\n\n  onFormClose() {\n    this.props.dispatch(ac.UserEvent({\n      source: TOP_SITES_SOURCE,\n      event: \"TOP_SITES_EDIT_CLOSE\"\n    }));\n    this.props.dispatch({type: at.TOP_SITES_CANCEL_EDIT});\n  }\n\n  render() {\n    const {props} = this;\n    const {editForm} = props.TopSites;\n\n    return (<ComponentPerfTimer id=\"topsites\" initialized={props.TopSites.initialized} dispatch={props.dispatch}>\n      <CollapsibleSection\n        className=\"top-sites\"\n        icon=\"topsites\"\n        id=\"topsites\"\n        title={{id: \"header_top_sites\"}}\n        extraMenuOptions={[\"AddTopSite\"]}\n        showPrefName=\"feeds.topsites\"\n        eventSource={TOP_SITES_SOURCE}\n        collapsed={props.TopSites.pref ? props.TopSites.pref.collapsed : undefined}\n        isFirst={props.isFirst}\n        isLast={props.isLast}\n        dispatch={props.dispatch}>\n        <TopSiteList TopSites={props.TopSites} TopSitesRows={props.TopSitesRows} dispatch={props.dispatch} intl={props.intl} topSiteIconType={topSiteIconType} />\n        <div className=\"edit-topsites-wrapper\">\n          {editForm &&\n            <div className=\"edit-topsites\">\n              <div className=\"modal-overlay\" onClick={this.onFormClose} />\n              <div className=\"modal\">\n                <TopSiteForm\n                  site={props.TopSites.rows[editForm.index]}\n                  onClose={this.onFormClose}\n                  dispatch={this.props.dispatch}\n                  intl={this.props.intl}\n                  {...editForm} />\n              </div>\n            </div>\n          }\n        </div>\n      </CollapsibleSection>\n    </ComponentPerfTimer>);\n  }\n}\n\nexport const TopSites = connect(state => ({\n  TopSites: state.TopSites,\n  Prefs: state.Prefs,\n  TopSitesRows: state.Prefs.values.topSitesRows\n}))(injectIntl(_TopSites));\n","export const TOP_SITES_SOURCE = \"TOP_SITES\";\nexport const TOP_SITES_CONTEXT_MENU_OPTIONS = [\"CheckPinTopSite\", \"EditTopSite\", \"Separator\",\n  \"OpenInNewWindow\", \"OpenInPrivateWindow\", \"Separator\", \"BlockUrl\", \"DeleteUrl\"];\n// minimum size necessary to show a rich icon instead of a screenshot\nexport const MIN_RICH_FAVICON_SIZE = 96;\n// minimum size necessary to show any icon in the top left corner with a screenshot\nexport const MIN_CORNER_FAVICON_SIZE = 16;\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {\n  MIN_CORNER_FAVICON_SIZE,\n  MIN_RICH_FAVICON_SIZE,\n  TOP_SITES_CONTEXT_MENU_OPTIONS,\n  TOP_SITES_SOURCE\n} from \"./TopSitesConstants\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\nimport {ScreenshotUtils} from \"content-src/lib/screenshot-utils\";\nimport {TOP_SITES_MAX_SITES_PER_ROW} from \"common/Reducers.jsm\";\n\nexport class TopSiteLink extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {screenshotImage: null};\n    this.onDragEvent = this.onDragEvent.bind(this);\n  }\n\n  /*\n   * Helper to determine whether the drop zone should allow a drop. We only allow\n   * dropping top sites for now.\n   */\n  _allowDrop(e) {\n    return e.dataTransfer.types.includes(\"text/topsite-index\");\n  }\n\n  onDragEvent(event) {\n    switch (event.type) {\n      case \"click\":\n        // Stop any link clicks if we started any dragging\n        if (this.dragged) {\n          event.preventDefault();\n        }\n        break;\n      case \"dragstart\":\n        this.dragged = true;\n        event.dataTransfer.effectAllowed = \"move\";\n        event.dataTransfer.setData(\"text/topsite-index\", this.props.index);\n        event.target.blur();\n        this.props.onDragEvent(event, this.props.index, this.props.link, this.props.title);\n        break;\n      case \"dragend\":\n        this.props.onDragEvent(event);\n        break;\n      case \"dragenter\":\n      case \"dragover\":\n      case \"drop\":\n        if (this._allowDrop(event)) {\n          event.preventDefault();\n          this.props.onDragEvent(event, this.props.index);\n        }\n        break;\n      case \"mousedown\":\n        // Reset at the first mouse event of a potential drag\n        this.dragged = false;\n        break;\n    }\n  }\n\n  /**\n   * Helper to obtain the next state based on nextProps and prevState.\n   *\n   * NOTE: Rename this method to getDerivedStateFromProps when we update React\n   *       to >= 16.3. We will need to update tests as well. We cannot rename this\n   *       method to getDerivedStateFromProps now because there is a mismatch in\n   *       the React version that we are using for both testing and production.\n   *       (i.e. react-test-render => \"16.3.2\", react => \"16.2.0\").\n   *\n   * See https://github.com/airbnb/enzyme/blob/master/packages/enzyme-adapter-react-16/package.json#L43.\n   */\n  static getNextStateFromProps(nextProps, prevState) {\n    const {screenshot} = nextProps.link;\n    const imageInState = ScreenshotUtils.isRemoteImageLocal(prevState.screenshotImage, screenshot);\n    if (imageInState) {\n      return null;\n    }\n\n    // Since image was updated, attempt to revoke old image blob URL, if it exists.\n    ScreenshotUtils.maybeRevokeBlobObjectURL(prevState.screenshotImage);\n\n    return {screenshotImage: ScreenshotUtils.createLocalImageObject(screenshot)};\n  }\n\n  // NOTE: Remove this function when we update React to >= 16.3 since React will\n  //       call getDerivedStateFromProps automatically. We will also need to\n  //       rename getNextStateFromProps to getDerivedStateFromProps.\n  componentWillMount() {\n    const nextState = TopSiteLink.getNextStateFromProps(this.props, this.state);\n    if (nextState) {\n      this.setState(nextState);\n    }\n  }\n\n  // NOTE: Remove this function when we update React to >= 16.3 since React will\n  //       call getDerivedStateFromProps automatically. We will also need to\n  //       rename getNextStateFromProps to getDerivedStateFromProps.\n  componentWillReceiveProps(nextProps) {\n    const nextState = TopSiteLink.getNextStateFromProps(nextProps, this.state);\n    if (nextState) {\n      this.setState(nextState);\n    }\n  }\n\n  componentWillUnmount() {\n    ScreenshotUtils.maybeRevokeBlobObjectURL(this.state.screenshotImage);\n  }\n\n  render() {\n    const {children, className, defaultStyle, isDraggable, link, onClick, title} = this.props;\n    const topSiteOuterClassName = `top-site-outer${className ? ` ${className}` : \"\"}${link.isDragged ? \" dragged\" : \"\"}`;\n    const {tippyTopIcon, faviconSize} = link;\n    const [letterFallback] = title;\n    let imageClassName;\n    let imageStyle;\n    let showSmallFavicon = false;\n    let smallFaviconStyle;\n    let smallFaviconFallback;\n    let hasScreenshotImage = this.state.screenshotImage && this.state.screenshotImage.url;\n    if (defaultStyle) { // force no styles (letter fallback) even if the link has imagery\n      smallFaviconFallback = false;\n    } else if (link.customScreenshotURL) {\n      // assume high quality custom screenshot and use rich icon styles and class names\n      imageClassName = \"top-site-icon rich-icon\";\n      imageStyle = {\n        backgroundColor: link.backgroundColor,\n        backgroundImage: hasScreenshotImage ? `url(${this.state.screenshotImage.url})` : \"none\"\n      };\n    } else if (tippyTopIcon || faviconSize >= MIN_RICH_FAVICON_SIZE) {\n      // styles and class names for top sites with rich icons\n      imageClassName = \"top-site-icon rich-icon\";\n      imageStyle = {\n        backgroundColor: link.backgroundColor,\n        backgroundImage: `url(${tippyTopIcon || link.favicon})`\n      };\n    } else {\n      // styles and class names for top sites with screenshot + small icon in top left corner\n      imageClassName = `screenshot${hasScreenshotImage ? \" active\" : \"\"}`;\n      imageStyle = {backgroundImage: hasScreenshotImage ? `url(${this.state.screenshotImage.url})` : \"none\"};\n\n      // only show a favicon in top left if it's greater than 16x16\n      if (faviconSize >= MIN_CORNER_FAVICON_SIZE) {\n        showSmallFavicon = true;\n        smallFaviconStyle = {backgroundImage:  `url(${link.favicon})`};\n      } else if (hasScreenshotImage) {\n        // Don't show a small favicon if there is no screenshot, because that\n        // would result in two fallback icons\n        showSmallFavicon = true;\n        smallFaviconFallback = true;\n      }\n    }\n    let draggableProps = {};\n    if (isDraggable) {\n      draggableProps = {\n        onClick: this.onDragEvent,\n        onDragEnd: this.onDragEvent,\n        onDragStart: this.onDragEvent,\n        onMouseDown: this.onDragEvent\n      };\n    }\n    return (<li className={topSiteOuterClassName} onDrop={this.onDragEvent} onDragOver={this.onDragEvent} onDragEnter={this.onDragEvent} onDragLeave={this.onDragEvent} {...draggableProps}>\n      <div className=\"top-site-inner\">\n         <a href={link.url} onClick={onClick}>\n            <div className=\"tile\" aria-hidden={true} data-fallback={letterFallback}>\n              <div className={imageClassName} style={imageStyle} />\n              {showSmallFavicon && <div\n                className=\"top-site-icon default-icon\"\n                data-fallback={smallFaviconFallback && letterFallback}\n                style={smallFaviconStyle} />}\n           </div>\n           <div className={`title ${link.isPinned ? \"pinned\" : \"\"}`}>\n             {link.isPinned && <div className=\"icon icon-pin-small\" />}\n              <span dir=\"auto\">{title}</span>\n           </div>\n         </a>\n         {children}\n      </div>\n    </li>);\n  }\n}\nTopSiteLink.defaultProps = {\n  title: \"\",\n  link: {},\n  isDraggable: true\n};\n\nexport class TopSite extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {showContextMenu: false};\n    this.onLinkClick = this.onLinkClick.bind(this);\n    this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n    this.onMenuUpdate = this.onMenuUpdate.bind(this);\n  }\n\n  /**\n   * Report to telemetry additional information about the item.\n   */\n  _getTelemetryInfo() {\n    const value = {icon_type: this.props.link.iconType};\n    // Filter out \"not_pinned\" type for being the default\n    if (this.props.link.isPinned) {\n      value.card_type = \"pinned\";\n    }\n    return {value};\n  }\n\n  userEvent(event) {\n    this.props.dispatch(ac.UserEvent(Object.assign({\n      event,\n      source: TOP_SITES_SOURCE,\n      action_position: this.props.index\n    }, this._getTelemetryInfo())));\n  }\n\n  onLinkClick(event) {\n    this.userEvent(\"CLICK\");\n\n    // Specially handle a top site link click for \"typed\" frecency bonus as\n    // specified as a property on the link.\n    event.preventDefault();\n    const {altKey, button, ctrlKey, metaKey, shiftKey} = event;\n    this.props.dispatch(ac.OnlyToMain({\n      type: at.OPEN_LINK,\n      data: Object.assign(this.props.link, {event: {altKey, button, ctrlKey, metaKey, shiftKey}})\n    }));\n  }\n\n  onMenuButtonClick(event) {\n    event.preventDefault();\n    this.props.onActivate(this.props.index);\n    this.setState({showContextMenu: true});\n  }\n\n  onMenuUpdate(showContextMenu) {\n    this.setState({showContextMenu});\n  }\n\n  render() {\n    const {props} = this;\n    const {link} = props;\n    const isContextMenuOpen = this.state.showContextMenu && props.activeIndex === props.index;\n    const title = link.label || link.hostname;\n    return (<TopSiteLink {...props} onClick={this.onLinkClick} onDragEvent={this.props.onDragEvent} className={`${props.className || \"\"}${isContextMenuOpen ? \" active\" : \"\"}`} title={title}>\n        <div>\n          <button className=\"context-menu-button icon\" onClick={this.onMenuButtonClick}>\n            <span className=\"sr-only\">\n              <FormattedMessage id=\"context_menu_button_sr\" values={{title}} />\n            </span>\n          </button>\n          {isContextMenuOpen &&\n            <LinkMenu\n              dispatch={props.dispatch}\n              index={props.index}\n              onUpdate={this.onMenuUpdate}\n              options={TOP_SITES_CONTEXT_MENU_OPTIONS}\n              site={link}\n              siteInfo={this._getTelemetryInfo()}\n              source={TOP_SITES_SOURCE} />\n          }\n        </div>\n    </TopSiteLink>);\n  }\n}\nTopSite.defaultProps = {\n  link: {},\n  onActivate() {}\n};\n\nexport class TopSitePlaceholder extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onEditButtonClick = this.onEditButtonClick.bind(this);\n  }\n\n  onEditButtonClick() {\n    this.props.dispatch(\n      {type: at.TOP_SITES_EDIT, data: {index: this.props.index}});\n  }\n\n  render() {\n    return (<TopSiteLink {...this.props} className={`placeholder ${this.props.className || \"\"}`} isDraggable={false}>\n      <button className=\"context-menu-button edit-button icon\"\n       title={this.props.intl.formatMessage({id: \"edit_topsites_edit_button\"})}\n       onClick={this.onEditButtonClick} />\n    </TopSiteLink>);\n  }\n}\n\nexport class _TopSiteList extends React.PureComponent {\n  static get DEFAULT_STATE() {\n    return {\n      activeIndex: null,\n      draggedIndex: null,\n      draggedSite: null,\n      draggedTitle: null,\n      topSitesPreview: null\n    };\n  }\n\n  constructor(props) {\n    super(props);\n    this.state = _TopSiteList.DEFAULT_STATE;\n    this.onDragEvent = this.onDragEvent.bind(this);\n    this.onActivate = this.onActivate.bind(this);\n  }\n\n  componentWillReceiveProps(nextProps) {\n    if (this.state.draggedSite) {\n      const prevTopSites = this.props.TopSites && this.props.TopSites.rows;\n      const newTopSites = nextProps.TopSites && nextProps.TopSites.rows;\n      if (prevTopSites && prevTopSites[this.state.draggedIndex] &&\n        prevTopSites[this.state.draggedIndex].url === this.state.draggedSite.url &&\n        (!newTopSites[this.state.draggedIndex] || newTopSites[this.state.draggedIndex].url !== this.state.draggedSite.url)) {\n        // We got the new order from the redux store via props. We can clear state now.\n        this.setState(_TopSiteList.DEFAULT_STATE);\n      }\n    }\n  }\n\n  userEvent(event, index) {\n    this.props.dispatch(ac.UserEvent({\n      event,\n      source: TOP_SITES_SOURCE,\n      action_position: index\n    }));\n  }\n\n  onDragEvent(event, index, link, title) {\n    switch (event.type) {\n      case \"dragstart\":\n        this.dropped = false;\n        this.setState({\n          draggedIndex: index,\n          draggedSite: link,\n          draggedTitle: title,\n          activeIndex: null\n        });\n        this.userEvent(\"DRAG\", index);\n        break;\n      case \"dragend\":\n        if (!this.dropped) {\n          // If there was no drop event, reset the state to the default.\n          this.setState(_TopSiteList.DEFAULT_STATE);\n        }\n        break;\n      case \"dragenter\":\n        if (index === this.state.draggedIndex) {\n          this.setState({topSitesPreview: null});\n        } else {\n          this.setState({topSitesPreview: this._makeTopSitesPreview(index)});\n        }\n        break;\n      case \"drop\":\n        if (index !== this.state.draggedIndex) {\n          this.dropped = true;\n          this.props.dispatch(ac.AlsoToMain({\n            type: at.TOP_SITES_INSERT,\n            data: {\n              site: {\n                url: this.state.draggedSite.url,\n                label: this.state.draggedTitle,\n                customScreenshotURL: this.state.draggedSite.customScreenshotURL\n              },\n              index,\n              draggedFromIndex: this.state.draggedIndex\n            }\n          }));\n          this.userEvent(\"DROP\", index);\n        }\n        break;\n    }\n  }\n\n  _getTopSites() {\n    // Make a copy of the sites to truncate or extend to desired length\n    let topSites = this.props.TopSites.rows.slice();\n    topSites.length = this.props.TopSitesRows * TOP_SITES_MAX_SITES_PER_ROW;\n    return topSites;\n  }\n\n  /**\n   * Make a preview of the topsites that will be the result of dropping the currently\n   * dragged site at the specified index.\n   */\n  _makeTopSitesPreview(index) {\n    const topSites = this._getTopSites();\n    topSites[this.state.draggedIndex] = null;\n    const pinnedOnly = topSites.map(site => ((site && site.isPinned) ? site : null));\n    const unpinned = topSites.filter(site => site && !site.isPinned);\n    const siteToInsert = Object.assign({}, this.state.draggedSite, {isPinned: true, isDragged: true});\n    if (!pinnedOnly[index]) {\n      pinnedOnly[index] = siteToInsert;\n    } else {\n      // Find the hole to shift the pinned site(s) towards. We shift towards the\n      // hole left by the site being dragged.\n      let holeIndex = index;\n      const indexStep = index > this.state.draggedIndex ? -1 : 1;\n      while (pinnedOnly[holeIndex]) {\n        holeIndex += indexStep;\n      }\n\n      // Shift towards the hole.\n      const shiftingStep = index > this.state.draggedIndex ? 1 : -1;\n      while (holeIndex !== index) {\n        const nextIndex = holeIndex + shiftingStep;\n        pinnedOnly[holeIndex] = pinnedOnly[nextIndex];\n        holeIndex = nextIndex;\n      }\n      pinnedOnly[index] = siteToInsert;\n    }\n\n    // Fill in the remaining holes with unpinned sites.\n    const preview = pinnedOnly;\n    for (let i = 0; i < preview.length; i++) {\n      if (!preview[i]) {\n        preview[i] = unpinned.shift() || null;\n      }\n    }\n\n    return preview;\n  }\n\n  onActivate(index) {\n    this.setState({activeIndex: index});\n  }\n\n  render() {\n    const {props} = this;\n    const topSites = this.state.topSitesPreview || this._getTopSites();\n    const topSitesUI = [];\n    const commonProps = {\n      onDragEvent: this.onDragEvent,\n      dispatch: props.dispatch,\n      intl: props.intl\n    };\n    // We assign a key to each placeholder slot. We need it to be independent\n    // of the slot index (i below) so that the keys used stay the same during\n    // drag and drop reordering and the underlying DOM nodes are reused.\n    // This mostly (only?) affects linux so be sure to test on linux before changing.\n    let holeIndex = 0;\n\n    // On narrow viewports, we only show 6 sites per row. We'll mark the rest as\n    // .hide-for-narrow to hide in CSS via @media query.\n    const maxNarrowVisibleIndex = props.TopSitesRows * 6;\n\n    for (let i = 0, l = topSites.length; i < l; i++) {\n      const link = topSites[i] && Object.assign({}, topSites[i], {iconType: this.props.topSiteIconType(topSites[i])});\n      const slotProps = {\n        key: link ? link.url : holeIndex++,\n        index: i\n      };\n      if (i >= maxNarrowVisibleIndex) {\n        slotProps.className = \"hide-for-narrow\";\n      }\n      topSitesUI.push(!link ? (\n        <TopSitePlaceholder\n          {...slotProps}\n          {...commonProps} />\n      ) : (\n        <TopSite\n          link={link}\n          activeIndex={this.state.activeIndex}\n          onActivate={this.onActivate}\n          {...slotProps}\n          {...commonProps} />\n      ));\n    }\n    return (<ul className={`top-sites-list${this.state.draggedSite ? \" dnd-active\" : \"\"}`}>\n      {topSitesUI}\n    </ul>);\n  }\n}\n\nexport const TopSiteList = injectIntl(_TopSiteList);\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage, injectIntl} from \"react-intl\";\nimport {connect} from \"react-redux\";\nimport React from \"react\";\n\nexport class _StartupOverlay extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onInputChange = this.onInputChange.bind(this);\n    this.onSubmit = this.onSubmit.bind(this);\n    this.clickSkip = this.clickSkip.bind(this);\n    this.initScene = this.initScene.bind(this);\n    this.removeOverlay = this.removeOverlay.bind(this);\n    this.onInputInvalid = this.onInputInvalid.bind(this);\n\n    this.state = {\n      emailInput: \"\",\n      overlayRemoved: false,\n      flowId: \"\",\n      flowBeginTime: 0\n    };\n    this.didFetch = false;\n  }\n\n  async componentWillUpdate() {\n    if (this.props.fxa_endpoint && !this.didFetch) {\n      try {\n        this.didFetch = true;\n        const response = await fetch(`${this.props.fxa_endpoint}/metrics-flow`);\n        if (response.status === 200) {\n          const {flowId, flowBeginTime} = await response.json();\n          this.setState({flowId, flowBeginTime});\n        }\n      } catch (error) {\n        this.props.dispatch(ac.OnlyToMain({type: at.TELEMETRY_UNDESIRED_EVENT, data: {value: \"FXA_METRICS_ERROR\"}}));\n      }\n    }\n  }\n\n  componentDidMount() {\n    this.initScene();\n  }\n\n  initScene() {\n    // Timeout to allow the scene to render once before attaching the attribute\n    // to trigger the animation.\n    setTimeout(() => {\n      this.setState({show: true});\n    }, 10);\n  }\n\n  removeOverlay() {\n    window.removeEventListener(\"visibilitychange\", this.removeOverlay);\n    document.body.classList.remove(\"hide-main\");\n    this.setState({show: false});\n    setTimeout(() => {\n      // Allow scrolling and fully remove overlay after animation finishes.\n      document.body.classList.remove(\"welcome\");\n      this.setState({overlayRemoved: true});\n    }, 400);\n  }\n\n  onInputChange(e) {\n    let error = e.target.previousSibling;\n    this.setState({emailInput: e.target.value});\n    error.classList.remove(\"active\");\n    e.target.classList.remove(\"invalid\");\n  }\n\n  onSubmit() {\n    this.props.dispatch(ac.UserEvent({event: \"SUBMIT_EMAIL\"}));\n    window.addEventListener(\"visibilitychange\", this.removeOverlay);\n  }\n\n  clickSkip() {\n    this.props.dispatch(ac.UserEvent({event: \"SKIPPED_SIGNIN\"}));\n    this.removeOverlay();\n  }\n\n  onInputInvalid(e) {\n    let error = e.target.previousSibling;\n    error.classList.add(\"active\");\n    e.target.classList.add(\"invalid\");\n    e.preventDefault(); // Override built-in form validation popup\n    e.target.focus();\n  }\n\n  render() {\n    // When skipping the onboarding tour we show AS but we are still on\n    // about:welcome, prop.isFirstrun is true and StartupOverlay is rendered\n    if (this.state.overlayRemoved) {\n      return null;\n    }\n\n    let termsLink = (<a href={`${this.props.fxa_endpoint}/legal/terms`} target=\"_blank\" rel=\"noopener noreferrer\"><FormattedMessage id=\"firstrun_terms_of_service\" /></a>);\n    let privacyLink = (<a href={`${this.props.fxa_endpoint}/legal/privacy`} target=\"_blank\" rel=\"noopener noreferrer\"><FormattedMessage id=\"firstrun_privacy_notice\" /></a>);\n\n    return (\n      <div className={`overlay-wrapper ${this.state.show ? \"show\" : \"\"}`}>\n        <div className=\"background\" />\n        <div className=\"firstrun-scene\">\n          <div className=\"fxaccounts-container\">\n            <div className=\"firstrun-left-divider\">\n              <h1 className=\"firstrun-title\"><FormattedMessage id=\"firstrun_title\" /></h1>\n              <p className=\"firstrun-content\"><FormattedMessage id=\"firstrun_content\" /></p>\n              <a className=\"firstrun-link\" href=\"https://www.mozilla.org/firefox/features/sync/\" target=\"_blank\" rel=\"noopener noreferrer\"><FormattedMessage id=\"firstrun_learn_more_link\" /></a>\n            </div>\n            <div className=\"firstrun-sign-in\">\n              <p className=\"form-header\"><FormattedMessage id=\"firstrun_form_header\" /><span className=\"sub-header\"><FormattedMessage id=\"firstrun_form_sub_header\" /></span></p>\n              <form method=\"get\" action={this.props.fxa_endpoint} target=\"_blank\" rel=\"noopener noreferrer\" onSubmit={this.onSubmit}>\n                <input name=\"service\" type=\"hidden\" value=\"sync\" />\n                <input name=\"action\" type=\"hidden\" value=\"email\" />\n                <input name=\"context\" type=\"hidden\" value=\"fx_desktop_v3\" />\n                <input name=\"entrypoint\" type=\"hidden\" value=\"activity-stream-firstrun\" />\n                <input name=\"utm_source\" type=\"hidden\" value=\"activity-stream\" />\n                <input name=\"utm_campaign\" type=\"hidden\" value=\"firstrun\" />\n                <input name=\"flow_id\" type=\"hidden\" value={this.state.flowId} />\n                <input name=\"flow_begin_time\" type=\"hidden\" value={this.state.flowBeginTime} />\n                <span className=\"error\">{this.props.intl.formatMessage({id: \"firstrun_invalid_input\"})}</span>\n                <input className=\"email-input\" name=\"email\" type=\"email\" required=\"true\" onInvalid={this.onInputInvalid} placeholder={this.props.intl.formatMessage({id: \"firstrun_email_input_placeholder\"})} onChange={this.onInputChange} />\n                <div className=\"extra-links\">\n                  <FormattedMessage\n                    id=\"firstrun_extra_legal_links\"\n                    values={{\n                      terms: termsLink,\n                      privacy: privacyLink\n                    }} />\n                </div>\n                <button className=\"continue-button\" type=\"submit\"><FormattedMessage id=\"firstrun_continue_to_login\" /></button>\n              </form>\n              <button className=\"skip-button\" disabled={!!this.state.emailInput} onClick={this.clickSkip}><FormattedMessage id=\"firstrun_skip_login\" /></button>\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n\nconst getState = state => ({fxa_endpoint: state.Prefs.values.fxa_endpoint});\nexport const StartupOverlay = connect(getState)(injectIntl(_StartupOverlay));\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {perfService as perfSvc} from \"common/PerfService.jsm\";\n\nconst VISIBLE = \"visible\";\nconst VISIBILITY_CHANGE_EVENT = \"visibilitychange\";\n\nexport class DetectUserSessionStart {\n  constructor(store, options = {}) {\n    this._store = store;\n    // Overrides for testing\n    this.document = options.document || global.document;\n    this._perfService = options.perfService || perfSvc;\n    this._onVisibilityChange = this._onVisibilityChange.bind(this);\n  }\n\n  /**\n   * sendEventOrAddListener - Notify immediately if the page is already visible,\n   *                    or else set up a listener for when visibility changes.\n   *                    This is needed for accurate session tracking for telemetry,\n   *                    because tabs are pre-loaded.\n   */\n  sendEventOrAddListener() {\n    if (this.document.visibilityState === VISIBLE) {\n      // If the document is already visible, to the user, send a notification\n      // immediately that a session has started.\n      this._sendEvent();\n    } else {\n      // If the document is not visible, listen for when it does become visible.\n      this.document.addEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n\n  /**\n   * _sendEvent - Sends a message to the main process to indicate the current\n   *              tab is now visible to the user, includes the\n   *              visibility_event_rcvd_ts time in ms from the UNIX epoch.\n   */\n  _sendEvent() {\n    this._perfService.mark(\"visibility_event_rcvd_ts\");\n\n    try {\n      let visibility_event_rcvd_ts = this._perfService\n        .getMostRecentAbsMarkStartByName(\"visibility_event_rcvd_ts\");\n\n      this._store.dispatch(ac.AlsoToMain({\n        type: at.SAVE_SESSION_PERF_DATA,\n        data: {visibility_event_rcvd_ts}\n      }));\n    } catch (ex) {\n      // If this failed, it's likely because the `privacy.resistFingerprinting`\n      // pref is true.  We should at least not blow up.\n    }\n  }\n\n  /**\n   * _onVisibilityChange - If the visibility has changed to visible, sends a notification\n   *                      and removes the event listener. This should only be called once per tab.\n   */\n  _onVisibilityChange() {\n    if (this.document.visibilityState === VISIBLE) {\n      this._sendEvent();\n      this.document.removeEventListener(VISIBILITY_CHANGE_EVENT, this._onVisibilityChange);\n    }\n  }\n}\n","/*  eslint no-magic-numbers: [0]  */\n\nconst MAX_PLACEABLES = 100;\n\nconst entryIdentifierRe = /-?[a-zA-Z][a-zA-Z0-9_-]*/y;\nconst identifierRe = /[a-zA-Z][a-zA-Z0-9_-]*/y;\nconst functionIdentifierRe = /^[A-Z][A-Z_?-]*$/;\n\n/**\n * The `Parser` class is responsible for parsing FTL resources.\n *\n * It's only public method is `getResource(source)` which takes an FTL string\n * and returns a two element Array with an Object of entries generated from the\n * source as the first element and an array of SyntaxError objects as the\n * second.\n *\n * This parser is optimized for runtime performance.\n *\n * There is an equivalent of this parser in syntax/parser which is\n * generating full AST which is useful for FTL tools.\n */\nclass RuntimeParser {\n  /**\n   * Parse FTL code into entries formattable by the MessageContext.\n   *\n   * Given a string of FTL syntax, return a map of entries that can be passed\n   * to MessageContext.format and a list of errors encountered during parsing.\n   *\n   * @param {String} string\n   * @returns {Array<Object, Array>}\n   */\n  getResource(string) {\n    this._source = string;\n    this._index = 0;\n    this._length = string.length;\n    this.entries = {};\n\n    const errors = [];\n\n    this.skipWS();\n    while (this._index < this._length) {\n      try {\n        this.getEntry();\n      } catch (e) {\n        if (e instanceof SyntaxError) {\n          errors.push(e);\n\n          this.skipToNextEntryStart();\n        } else {\n          throw e;\n        }\n      }\n      this.skipWS();\n    }\n\n    return [this.entries, errors];\n  }\n\n  /**\n   * Parse the source string from the current index as an FTL entry\n   * and add it to object's entries property.\n   *\n   * @private\n   */\n  getEntry() {\n    // The index here should either be at the beginning of the file\n    // or right after new line.\n    if (this._index !== 0 &&\n        this._source[this._index - 1] !== \"\\n\") {\n      throw this.error(`Expected an entry to start\n        at the beginning of the file or on a new line.`);\n    }\n\n    const ch = this._source[this._index];\n\n    // We don't care about comments or sections at runtime\n    if (ch === \"/\" ||\n      (ch === \"#\" &&\n        [\" \", \"#\", \"\\n\"].includes(this._source[this._index + 1]))) {\n      this.skipComment();\n      return;\n    }\n\n    if (ch === \"[\") {\n      this.skipSection();\n      return;\n    }\n\n    this.getMessage();\n  }\n\n  /**\n   * Skip the section entry from the current index.\n   *\n   * @private\n   */\n  skipSection() {\n    this._index += 1;\n    if (this._source[this._index] !== \"[\") {\n      throw this.error('Expected \"[[\" to open a section');\n    }\n\n    this._index += 1;\n\n    this.skipInlineWS();\n    this.getVariantName();\n    this.skipInlineWS();\n\n    if (this._source[this._index] !== \"]\" ||\n        this._source[this._index + 1] !== \"]\") {\n      throw this.error('Expected \"]]\" to close a section');\n    }\n\n    this._index += 2;\n  }\n\n  /**\n   * Parse the source string from the current index as an FTL message\n   * and add it to the entries property on the Parser.\n   *\n   * @private\n   */\n  getMessage() {\n    const id = this.getEntryIdentifier();\n\n    this.skipInlineWS();\n\n    if (this._source[this._index] === \"=\") {\n      this._index++;\n    }\n\n    this.skipInlineWS();\n\n    const val = this.getPattern();\n\n    if (id.startsWith(\"-\") && val === null) {\n      throw this.error(\"Expected term to have a value\");\n    }\n\n    let attrs = null;\n\n    if (this._source[this._index] === \" \") {\n      const lineStart = this._index;\n      this.skipInlineWS();\n\n      if (this._source[this._index] === \".\") {\n        this._index = lineStart;\n        attrs = this.getAttributes();\n      }\n    }\n\n    if (attrs === null && typeof val === \"string\") {\n      this.entries[id] = val;\n    } else {\n      if (val === null && attrs === null) {\n        throw this.error(\"Expected message to have a value or attributes\");\n      }\n\n      this.entries[id] = {};\n\n      if (val !== null) {\n        this.entries[id].val = val;\n      }\n\n      if (attrs !== null) {\n        this.entries[id].attrs = attrs;\n      }\n    }\n  }\n\n  /**\n   * Skip whitespace.\n   *\n   * @private\n   */\n  skipWS() {\n    let ch = this._source[this._index];\n    while (ch === \" \" || ch === \"\\n\" || ch === \"\\t\" || ch === \"\\r\") {\n      ch = this._source[++this._index];\n    }\n  }\n\n  /**\n   * Skip inline whitespace (space and \\t).\n   *\n   * @private\n   */\n  skipInlineWS() {\n    let ch = this._source[this._index];\n    while (ch === \" \" || ch === \"\\t\") {\n      ch = this._source[++this._index];\n    }\n  }\n\n  /**\n   * Skip blank lines.\n   *\n   * @private\n   */\n  skipBlankLines() {\n    while (true) {\n      const ptr = this._index;\n\n      this.skipInlineWS();\n\n      if (this._source[this._index] === \"\\n\") {\n        this._index += 1;\n      } else {\n        this._index = ptr;\n        break;\n      }\n    }\n  }\n\n  /**\n   * Get identifier using the provided regex.\n   *\n   * By default this will get identifiers of public messages, attributes and\n   * external arguments (without the $).\n   *\n   * @returns {String}\n   * @private\n   */\n  getIdentifier(re = identifierRe) {\n    re.lastIndex = this._index;\n    const result = re.exec(this._source);\n\n    if (result === null) {\n      this._index += 1;\n      throw this.error(`Expected an identifier [${re.toString()}]`);\n    }\n\n    this._index = re.lastIndex;\n    return result[0];\n  }\n\n  /**\n   * Get identifier of a Message or a Term (staring with a dash).\n   *\n   * @returns {String}\n   * @private\n   */\n  getEntryIdentifier() {\n    return this.getIdentifier(entryIdentifierRe);\n  }\n\n  /**\n   * Get Variant name.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getVariantName() {\n    let name = \"\";\n\n    const start = this._index;\n    let cc = this._source.charCodeAt(this._index);\n\n    if ((cc >= 97 && cc <= 122) || // a-z\n        (cc >= 65 && cc <= 90) || // A-Z\n        cc === 95 || cc === 32) { // _ <space>\n      cc = this._source.charCodeAt(++this._index);\n    } else {\n      throw this.error(\"Expected a keyword (starting with [a-zA-Z_])\");\n    }\n\n    while ((cc >= 97 && cc <= 122) || // a-z\n           (cc >= 65 && cc <= 90) || // A-Z\n           (cc >= 48 && cc <= 57) || // 0-9\n           cc === 95 || cc === 45 || cc === 32) { // _- <space>\n      cc = this._source.charCodeAt(++this._index);\n    }\n\n    // If we encountered the end of name, we want to test if the last\n    // collected character is a space.\n    // If it is, we will backtrack to the last non-space character because\n    // the keyword cannot end with a space character.\n    while (this._source.charCodeAt(this._index - 1) === 32) {\n      this._index--;\n    }\n\n    name += this._source.slice(start, this._index);\n\n    return { type: \"varname\", name };\n  }\n\n  /**\n   * Get simple string argument enclosed in `\"`.\n   *\n   * @returns {String}\n   * @private\n   */\n  getString() {\n    const start = this._index + 1;\n\n    while (++this._index < this._length) {\n      const ch = this._source[this._index];\n\n      if (ch === '\"') {\n        break;\n      }\n\n      if (ch === \"\\n\") {\n        throw this.error(\"Unterminated string expression\");\n      }\n    }\n\n    return this._source.substring(start, this._index++);\n  }\n\n  /**\n   * Parses a Message pattern.\n   * Message Pattern may be a simple string or an array of strings\n   * and placeable expressions.\n   *\n   * @returns {String|Array}\n   * @private\n   */\n  getPattern() {\n    // We're going to first try to see if the pattern is simple.\n    // If it is we can just look for the end of the line and read the string.\n    //\n    // Then, if either the line contains a placeable opening `{` or the\n    // next line starts an indentation, we switch to complex pattern.\n    const start = this._index;\n    let eol = this._source.indexOf(\"\\n\", this._index);\n\n    if (eol === -1) {\n      eol = this._length;\n    }\n\n    const firstLineContent = start !== eol ?\n      this._source.slice(start, eol) : null;\n\n    if (firstLineContent && firstLineContent.includes(\"{\")) {\n      return this.getComplexPattern();\n    }\n\n    this._index = eol + 1;\n\n    this.skipBlankLines();\n\n    if (this._source[this._index] !== \" \") {\n      // No indentation means we're done with this message. Callers should check\n      // if the return value here is null. It may be OK for messages, but not OK\n      // for terms, attributes and variants.\n      return firstLineContent;\n    }\n\n    const lineStart = this._index;\n\n    this.skipInlineWS();\n\n    if (this._source[this._index] === \".\") {\n      // The pattern is followed by an attribute. Rewind _index to the first\n      // column of the current line as expected by getAttributes.\n      this._index = lineStart;\n      return firstLineContent;\n    }\n\n    if (firstLineContent) {\n      // It's a multiline pattern which started on the same line as the\n      // identifier. Reparse the whole pattern to make sure we get all of it.\n      this._index = start;\n    }\n\n    return this.getComplexPattern();\n  }\n\n  /**\n   * Parses a complex Message pattern.\n   * This function is called by getPattern when the message is multiline,\n   * or contains escape chars or placeables.\n   * It does full parsing of complex patterns.\n   *\n   * @returns {Array}\n   * @private\n   */\n  /* eslint-disable complexity */\n  getComplexPattern() {\n    let buffer = \"\";\n    const content = [];\n    let placeables = 0;\n\n    let ch = this._source[this._index];\n\n    while (this._index < this._length) {\n      // This block handles multi-line strings combining strings separated\n      // by new line.\n      if (ch === \"\\n\") {\n        this._index++;\n\n        // We want to capture the start and end pointers\n        // around blank lines and add them to the buffer\n        // but only if the blank lines are in the middle\n        // of the string.\n        const blankLinesStart = this._index;\n        this.skipBlankLines();\n        const blankLinesEnd = this._index;\n\n\n        if (this._source[this._index] !== \" \") {\n          break;\n        }\n        this.skipInlineWS();\n\n        if (this._source[this._index] === \"}\" ||\n            this._source[this._index] === \"[\" ||\n            this._source[this._index] === \"*\" ||\n            this._source[this._index] === \".\") {\n          this._index = blankLinesEnd;\n          break;\n        }\n\n        buffer += this._source.substring(blankLinesStart, blankLinesEnd);\n\n        if (buffer.length || content.length) {\n          buffer += \"\\n\";\n        }\n        ch = this._source[this._index];\n        continue;\n      } else if (ch === \"\\\\\") {\n        const ch2 = this._source[this._index + 1];\n        if (ch2 === '\"' || ch2 === \"{\" || ch2 === \"\\\\\") {\n          ch = ch2;\n          this._index++;\n        }\n      } else if (ch === \"{\") {\n        // Push the buffer to content array right before placeable\n        if (buffer.length) {\n          content.push(buffer);\n        }\n        if (placeables > MAX_PLACEABLES - 1) {\n          throw this.error(\n            `Too many placeables, maximum allowed is ${MAX_PLACEABLES}`);\n        }\n        buffer = \"\";\n        content.push(this.getPlaceable());\n\n        this._index++;\n\n        ch = this._source[this._index];\n        placeables++;\n        continue;\n      }\n\n      if (ch) {\n        buffer += ch;\n      }\n      this._index++;\n      ch = this._source[this._index];\n    }\n\n    if (content.length === 0) {\n      return buffer.length ? buffer : null;\n    }\n\n    if (buffer.length) {\n      content.push(buffer);\n    }\n\n    return content;\n  }\n  /* eslint-enable complexity */\n\n  /**\n   * Parses a single placeable in a Message pattern and returns its\n   * expression.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getPlaceable() {\n    const start = ++this._index;\n\n    this.skipWS();\n\n    if (this._source[this._index] === \"*\" ||\n       (this._source[this._index] === \"[\" &&\n        this._source[this._index + 1] !== \"]\")) {\n      const variants = this.getVariants();\n\n      return {\n        type: \"sel\",\n        exp: null,\n        vars: variants[0],\n        def: variants[1]\n      };\n    }\n\n    // Rewind the index and only support in-line white-space now.\n    this._index = start;\n    this.skipInlineWS();\n\n    const selector = this.getSelectorExpression();\n\n    this.skipWS();\n\n    const ch = this._source[this._index];\n\n    if (ch === \"}\") {\n      if (selector.type === \"attr\" && selector.id.name.startsWith(\"-\")) {\n        throw this.error(\n          \"Attributes of private messages cannot be interpolated.\"\n        );\n      }\n\n      return selector;\n    }\n\n    if (ch !== \"-\" || this._source[this._index + 1] !== \">\") {\n      throw this.error('Expected \"}\" or \"->\"');\n    }\n\n    if (selector.type === \"ref\") {\n      throw this.error(\"Message references cannot be used as selectors.\");\n    }\n\n    if (selector.type === \"var\") {\n      throw this.error(\"Variants cannot be used as selectors.\");\n    }\n\n    if (selector.type === \"attr\" && !selector.id.name.startsWith(\"-\")) {\n      throw this.error(\n        \"Attributes of public messages cannot be used as selectors.\"\n      );\n    }\n\n\n    this._index += 2; // ->\n\n    this.skipInlineWS();\n\n    if (this._source[this._index] !== \"\\n\") {\n      throw this.error(\"Variants should be listed in a new line\");\n    }\n\n    this.skipWS();\n\n    const variants = this.getVariants();\n\n    if (variants[0].length === 0) {\n      throw this.error(\"Expected members for the select expression\");\n    }\n\n    return {\n      type: \"sel\",\n      exp: selector,\n      vars: variants[0],\n      def: variants[1]\n    };\n  }\n\n  /**\n   * Parses a selector expression.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getSelectorExpression() {\n    const literal = this.getLiteral();\n\n    if (literal.type !== \"ref\") {\n      return literal;\n    }\n\n    if (this._source[this._index] === \".\") {\n      this._index++;\n\n      const name = this.getIdentifier();\n      this._index++;\n      return {\n        type: \"attr\",\n        id: literal,\n        name\n      };\n    }\n\n    if (this._source[this._index] === \"[\") {\n      this._index++;\n\n      const key = this.getVariantKey();\n      this._index++;\n      return {\n        type: \"var\",\n        id: literal,\n        key\n      };\n    }\n\n    if (this._source[this._index] === \"(\") {\n      this._index++;\n      const args = this.getCallArgs();\n\n      if (!functionIdentifierRe.test(literal.name)) {\n        throw this.error(\"Function names must be all upper-case\");\n      }\n\n      this._index++;\n\n      literal.type = \"fun\";\n\n      return {\n        type: \"call\",\n        fun: literal,\n        args\n      };\n    }\n\n    return literal;\n  }\n\n  /**\n   * Parses call arguments for a CallExpression.\n   *\n   * @returns {Array}\n   * @private\n   */\n  getCallArgs() {\n    const args = [];\n\n    while (this._index < this._length) {\n      this.skipInlineWS();\n\n      if (this._source[this._index] === \")\") {\n        return args;\n      }\n\n      const exp = this.getSelectorExpression();\n\n      // MessageReference in this place may be an entity reference, like:\n      // `call(foo)`, or, if it's followed by `:` it will be a key-value pair.\n      if (exp.type !== \"ref\") {\n        args.push(exp);\n      } else {\n        this.skipInlineWS();\n\n        if (this._source[this._index] === \":\") {\n          this._index++;\n          this.skipInlineWS();\n\n          const val = this.getSelectorExpression();\n\n          // If the expression returned as a value of the argument\n          // is not a quote delimited string or number, throw.\n          //\n          // We don't have to check here if the pattern is quote delimited\n          // because that's the only type of string allowed in expressions.\n          if (typeof val === \"string\" ||\n              Array.isArray(val) ||\n              val.type === \"num\") {\n            args.push({\n              type: \"narg\",\n              name: exp.name,\n              val\n            });\n          } else {\n            this._index = this._source.lastIndexOf(\":\", this._index) + 1;\n            throw this.error(\n              \"Expected string in quotes, number.\");\n          }\n\n        } else {\n          args.push(exp);\n        }\n      }\n\n      this.skipInlineWS();\n\n      if (this._source[this._index] === \")\") {\n        break;\n      } else if (this._source[this._index] === \",\") {\n        this._index++;\n      } else {\n        throw this.error('Expected \",\" or \")\"');\n      }\n    }\n\n    return args;\n  }\n\n  /**\n   * Parses an FTL Number.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getNumber() {\n    let num = \"\";\n    let cc = this._source.charCodeAt(this._index);\n\n    // The number literal may start with negative sign `-`.\n    if (cc === 45) {\n      num += \"-\";\n      cc = this._source.charCodeAt(++this._index);\n    }\n\n    // next, we expect at least one digit\n    if (cc < 48 || cc > 57) {\n      throw this.error(`Unknown literal \"${num}\"`);\n    }\n\n    // followed by potentially more digits\n    while (cc >= 48 && cc <= 57) {\n      num += this._source[this._index++];\n      cc = this._source.charCodeAt(this._index);\n    }\n\n    // followed by an optional decimal separator `.`\n    if (cc === 46) {\n      num += this._source[this._index++];\n      cc = this._source.charCodeAt(this._index);\n\n      // followed by at least one digit\n      if (cc < 48 || cc > 57) {\n        throw this.error(`Unknown literal \"${num}\"`);\n      }\n\n      // and optionally more digits\n      while (cc >= 48 && cc <= 57) {\n        num += this._source[this._index++];\n        cc = this._source.charCodeAt(this._index);\n      }\n    }\n\n    return {\n      type: \"num\",\n      val: num\n    };\n  }\n\n  /**\n   * Parses a list of Message attributes.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getAttributes() {\n    const attrs = {};\n\n    while (this._index < this._length) {\n      if (this._source[this._index] !== \" \") {\n        break;\n      }\n      this.skipInlineWS();\n\n      if (this._source[this._index] !== \".\") {\n        break;\n      }\n      this._index++;\n\n      const key = this.getIdentifier();\n\n      this.skipInlineWS();\n\n      if (this._source[this._index] !== \"=\") {\n        throw this.error('Expected \"=\"');\n      }\n      this._index++;\n\n      this.skipInlineWS();\n\n      const val = this.getPattern();\n\n      if (val === null) {\n        throw this.error(\"Expected attribute to have a value\");\n      }\n\n      if (typeof val === \"string\") {\n        attrs[key] = val;\n      } else {\n        attrs[key] = {\n          val\n        };\n      }\n\n      this.skipBlankLines();\n    }\n\n    return attrs;\n  }\n\n  /**\n   * Parses a list of Selector variants.\n   *\n   * @returns {Array}\n   * @private\n   */\n  getVariants() {\n    const variants = [];\n    let index = 0;\n    let defaultIndex;\n\n    while (this._index < this._length) {\n      const ch = this._source[this._index];\n\n      if ((ch !== \"[\" || this._source[this._index + 1] === \"[\") &&\n          ch !== \"*\") {\n        break;\n      }\n      if (ch === \"*\") {\n        this._index++;\n        defaultIndex = index;\n      }\n\n      if (this._source[this._index] !== \"[\") {\n        throw this.error('Expected \"[\"');\n      }\n\n      this._index++;\n\n      const key = this.getVariantKey();\n\n      this.skipInlineWS();\n\n      const val = this.getPattern();\n\n      if (val === null) {\n        throw this.error(\"Expected variant to have a value\");\n      }\n\n      variants[index++] = {key, val};\n\n      this.skipWS();\n    }\n\n    return [variants, defaultIndex];\n  }\n\n  /**\n   * Parses a Variant key.\n   *\n   * @returns {String}\n   * @private\n   */\n  getVariantKey() {\n    // VariantKey may be a Keyword or Number\n\n    const cc = this._source.charCodeAt(this._index);\n    let literal;\n\n    if ((cc >= 48 && cc <= 57) || cc === 45) {\n      literal = this.getNumber();\n    } else {\n      literal = this.getVariantName();\n    }\n\n    if (this._source[this._index] !== \"]\") {\n      throw this.error('Expected \"]\"');\n    }\n\n    this._index++;\n    return literal;\n  }\n\n  /**\n   * Parses an FTL literal.\n   *\n   * @returns {Object}\n   * @private\n   */\n  getLiteral() {\n    const cc0 = this._source.charCodeAt(this._index);\n\n    if (cc0 === 36) { // $\n      this._index++;\n      return {\n        type: \"ext\",\n        name: this.getIdentifier()\n      };\n    }\n\n    const cc1 = cc0 === 45 // -\n      // Peek at the next character after the dash.\n      ? this._source.charCodeAt(this._index + 1)\n      // Or keep using the character at the current index.\n      : cc0;\n\n    if ((cc1 >= 97 && cc1 <= 122) || // a-z\n        (cc1 >= 65 && cc1 <= 90)) { // A-Z\n      return {\n        type: \"ref\",\n        name: this.getEntryIdentifier()\n      };\n    }\n\n    if ((cc1 >= 48 && cc1 <= 57)) { // 0-9\n      return this.getNumber();\n    }\n\n    if (cc0 === 34) { // \"\n      return this.getString();\n    }\n\n    throw this.error(\"Expected literal\");\n  }\n\n  /**\n   * Skips an FTL comment.\n   *\n   * @private\n   */\n  skipComment() {\n    // At runtime, we don't care about comments so we just have\n    // to parse them properly and skip their content.\n    let eol = this._source.indexOf(\"\\n\", this._index);\n\n    while (eol !== -1 &&\n      ((this._source[eol + 1] === \"/\" && this._source[eol + 2] === \"/\") ||\n       (this._source[eol + 1] === \"#\" &&\n         [\" \", \"#\"].includes(this._source[eol + 2])))) {\n      this._index = eol + 3;\n\n      eol = this._source.indexOf(\"\\n\", this._index);\n\n      if (eol === -1) {\n        break;\n      }\n    }\n\n    if (eol === -1) {\n      this._index = this._length;\n    } else {\n      this._index = eol + 1;\n    }\n  }\n\n  /**\n   * Creates a new SyntaxError object with a given message.\n   *\n   * @param {String} message\n   * @returns {Object}\n   * @private\n   */\n  error(message) {\n    return new SyntaxError(message);\n  }\n\n  /**\n   * Skips to the beginning of a next entry after the current position.\n   * This is used to mark the boundary of junk entry in case of error,\n   * and recover from the returned position.\n   *\n   * @private\n   */\n  skipToNextEntryStart() {\n    let start = this._index;\n\n    while (true) {\n      if (start === 0 || this._source[start - 1] === \"\\n\") {\n        const cc = this._source.charCodeAt(start);\n\n        if ((cc >= 97 && cc <= 122) || // a-z\n            (cc >= 65 && cc <= 90) || // A-Z\n             cc === 47 || cc === 91) { // /[\n          this._index = start;\n          return;\n        }\n      }\n\n      start = this._source.indexOf(\"\\n\", start);\n\n      if (start === -1) {\n        this._index = this._length;\n        return;\n      }\n      start++;\n    }\n  }\n}\n\n/**\n * Parses an FTL string using RuntimeParser and returns the generated\n * object with entries and a list of errors.\n *\n * @param {String} string\n * @returns {Array<Object, Array>}\n */\nexport default function parse(string) {\n  const parser = new RuntimeParser();\n  return parser.getResource(string);\n}\n","/* global Intl */\n\n/**\n * The `FluentType` class is the base of Fluent's type system.\n *\n * Fluent types wrap JavaScript values and store additional configuration for\n * them, which can then be used in the `toString` method together with a proper\n * `Intl` formatter.\n */\nexport class FluentType {\n\n  /**\n   * Create an `FluentType` instance.\n   *\n   * @param   {Any}    value - JavaScript value to wrap.\n   * @param   {Object} opts  - Configuration.\n   * @returns {FluentType}\n   */\n  constructor(value, opts) {\n    this.value = value;\n    this.opts = opts;\n  }\n\n  /**\n   * Unwrap the raw value stored by this `FluentType`.\n   *\n   * @returns {Any}\n   */\n  valueOf() {\n    return this.value;\n  }\n\n  /**\n   * Format this instance of `FluentType` to a string.\n   *\n   * Formatted values are suitable for use outside of the `MessageContext`.\n   * This method can use `Intl` formatters memoized by the `MessageContext`\n   * instance passed as an argument.\n   *\n   * @param   {MessageContext} [ctx]\n   * @returns {string}\n   */\n  toString() {\n    throw new Error(\"Subclasses of FluentType must implement toString.\");\n  }\n}\n\nexport class FluentNone extends FluentType {\n  toString() {\n    return this.value || \"???\";\n  }\n}\n\nexport class FluentNumber extends FluentType {\n  constructor(value, opts) {\n    super(parseFloat(value), opts);\n  }\n\n  toString(ctx) {\n    try {\n      const nf = ctx._memoizeIntlObject(\n        Intl.NumberFormat, this.opts\n      );\n      return nf.format(this.value);\n    } catch (e) {\n      // XXX Report the error.\n      return this.value;\n    }\n  }\n\n  /**\n   * Compare the object with another instance of a FluentType.\n   *\n   * @param   {MessageContext} ctx\n   * @param   {FluentType}     other\n   * @returns {bool}\n   */\n  match(ctx, other) {\n    if (other instanceof FluentNumber) {\n      return this.value === other.value;\n    }\n    return false;\n  }\n}\n\nexport class FluentDateTime extends FluentType {\n  constructor(value, opts) {\n    super(new Date(value), opts);\n  }\n\n  toString(ctx) {\n    try {\n      const dtf = ctx._memoizeIntlObject(\n        Intl.DateTimeFormat, this.opts\n      );\n      return dtf.format(this.value);\n    } catch (e) {\n      // XXX Report the error.\n      return this.value;\n    }\n  }\n}\n\nexport class FluentSymbol extends FluentType {\n  toString() {\n    return this.value;\n  }\n\n  /**\n   * Compare the object with another instance of a FluentType.\n   *\n   * @param   {MessageContext} ctx\n   * @param   {FluentType}     other\n   * @returns {bool}\n   */\n  match(ctx, other) {\n    if (other instanceof FluentSymbol) {\n      return this.value === other.value;\n    } else if (typeof other === \"string\") {\n      return this.value === other;\n    } else if (other instanceof FluentNumber) {\n      const pr = ctx._memoizeIntlObject(\n        Intl.PluralRules, other.opts\n      );\n      return this.value === pr.select(other.value);\n    }\n    return false;\n  }\n}\n","/**\n * @overview\n *\n * The FTL resolver ships with a number of functions built-in.\n *\n * Each function take two arguments:\n *   - args - an array of positional args\n *   - opts - an object of key-value args\n *\n * Arguments to functions are guaranteed to already be instances of\n * `FluentType`.  Functions must return `FluentType` objects as well.\n */\n\nimport { FluentNumber, FluentDateTime } from \"./types\";\n\nexport default {\n  \"NUMBER\": ([arg], opts) =>\n    new FluentNumber(arg.valueOf(), merge(arg.opts, opts)),\n  \"DATETIME\": ([arg], opts) =>\n    new FluentDateTime(arg.valueOf(), merge(arg.opts, opts)),\n};\n\nfunction merge(argopts, opts) {\n  return Object.assign({}, argopts, values(opts));\n}\n\nfunction values(opts) {\n  const unwrapped = {};\n  for (const [name, opt] of Object.entries(opts)) {\n    unwrapped[name] = opt.valueOf();\n  }\n  return unwrapped;\n}\n","/**\n * @overview\n *\n * The role of the Fluent resolver is to format a translation object to an\n * instance of `FluentType` or an array of instances.\n *\n * Translations can contain references to other messages or external arguments,\n * conditional logic in form of select expressions, traits which describe their\n * grammatical features, and can use Fluent builtins which make use of the\n * `Intl` formatters to format numbers, dates, lists and more into the\n * context's language.  See the documentation of the Fluent syntax for more\n * information.\n *\n * In case of errors the resolver will try to salvage as much of the\n * translation as possible.  In rare situations where the resolver didn't know\n * how to recover from an error it will return an instance of `FluentNone`.\n *\n * `MessageReference`, `VariantExpression`, `AttributeExpression` and\n * `SelectExpression` resolve to raw Runtime Entries objects and the result of\n * the resolution needs to be passed into `Type` to get their real value.\n * This is useful for composing expressions.  Consider:\n *\n *     brand-name[nominative]\n *\n * which is a `VariantExpression` with properties `id: MessageReference` and\n * `key: Keyword`.  If `MessageReference` was resolved eagerly, it would\n * instantly resolve to the value of the `brand-name` message.  Instead, we\n * want to get the message object and look for its `nominative` variant.\n *\n * All other expressions (except for `FunctionReference` which is only used in\n * `CallExpression`) resolve to an instance of `FluentType`.  The caller should\n * use the `toString` method to convert the instance to a native value.\n *\n *\n * All functions in this file pass around a special object called `env`.\n * This object stores a set of elements used by all resolve functions:\n *\n *  * {MessageContext} ctx\n *      context for which the given resolution is happening\n *  * {Object} args\n *      list of developer provided arguments that can be used\n *  * {Array} errors\n *      list of errors collected while resolving\n *  * {WeakSet} dirty\n *      Set of patterns already encountered during this resolution.\n *      This is used to prevent cyclic resolutions.\n */\n\n\nimport { FluentType, FluentNone, FluentNumber, FluentDateTime, FluentSymbol }\n  from \"./types\";\nimport builtins from \"./builtins\";\n\n// Prevent expansion of too long placeables.\nconst MAX_PLACEABLE_LENGTH = 2500;\n\n// Unicode bidi isolation characters.\nconst FSI = \"\\u2068\";\nconst PDI = \"\\u2069\";\n\n\n/**\n * Helper for choosing the default value from a set of members.\n *\n * Used in SelectExpressions and Type.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} members\n *    Hash map of variants from which the default value is to be selected.\n * @param   {Number} def\n *    The index of the default variant.\n * @returns {FluentType}\n * @private\n */\nfunction DefaultMember(env, members, def) {\n  if (members[def]) {\n    return members[def];\n  }\n\n  const { errors } = env;\n  errors.push(new RangeError(\"No default\"));\n  return new FluentNone();\n}\n\n\n/**\n * Resolve a reference to another message.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} id\n *    The identifier of the message to be resolved.\n * @param   {String} id.name\n *    The name of the identifier.\n * @returns {FluentType}\n * @private\n */\nfunction MessageReference(env, {name}) {\n  const { ctx, errors } = env;\n  const message = name.startsWith(\"-\")\n    ? ctx._terms.get(name)\n    : ctx._messages.get(name);\n\n  if (!message) {\n    const err = name.startsWith(\"-\")\n      ? new ReferenceError(`Unknown term: ${name}`)\n      : new ReferenceError(`Unknown message: ${name}`);\n    errors.push(err);\n    return new FluentNone(name);\n  }\n\n  return message;\n}\n\n/**\n * Resolve a variant expression to the variant object.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {Object} expr.id\n *    An Identifier of a message for which the variant is resolved.\n * @param   {Object} expr.id.name\n *    Name a message for which the variant is resolved.\n * @param   {Object} expr.key\n *    Variant key to be resolved.\n * @returns {FluentType}\n * @private\n */\nfunction VariantExpression(env, {id, key}) {\n  const message = MessageReference(env, id);\n  if (message instanceof FluentNone) {\n    return message;\n  }\n\n  const { ctx, errors } = env;\n  const keyword = Type(env, key);\n\n  function isVariantList(node) {\n    return Array.isArray(node) &&\n      node[0].type === \"sel\" &&\n      node[0].exp === null;\n  }\n\n  if (isVariantList(message.val)) {\n    // Match the specified key against keys of each variant, in order.\n    for (const variant of message.val[0].vars) {\n      const variantKey = Type(env, variant.key);\n      if (keyword.match(ctx, variantKey)) {\n        return variant;\n      }\n    }\n  }\n\n  errors.push(new ReferenceError(`Unknown variant: ${keyword.toString(ctx)}`));\n  return Type(env, message);\n}\n\n\n/**\n * Resolve an attribute expression to the attribute object.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {String} expr.id\n *    An ID of a message for which the attribute is resolved.\n * @param   {String} expr.name\n *    Name of the attribute to be resolved.\n * @returns {FluentType}\n * @private\n */\nfunction AttributeExpression(env, {id, name}) {\n  const message = MessageReference(env, id);\n  if (message instanceof FluentNone) {\n    return message;\n  }\n\n  if (message.attrs) {\n    // Match the specified name against keys of each attribute.\n    for (const attrName in message.attrs) {\n      if (name === attrName) {\n        return message.attrs[name];\n      }\n    }\n  }\n\n  const { errors } = env;\n  errors.push(new ReferenceError(`Unknown attribute: ${name}`));\n  return Type(env, message);\n}\n\n/**\n * Resolve a select expression to the member object.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {String} expr.exp\n *    Selector expression\n * @param   {Array} expr.vars\n *    List of variants for the select expression.\n * @param   {Number} expr.def\n *    Index of the default variant.\n * @returns {FluentType}\n * @private\n */\nfunction SelectExpression(env, {exp, vars, def}) {\n  if (exp === null) {\n    return DefaultMember(env, vars, def);\n  }\n\n  const selector = Type(env, exp);\n  if (selector instanceof FluentNone) {\n    return DefaultMember(env, vars, def);\n  }\n\n  // Match the selector against keys of each variant, in order.\n  for (const variant of vars) {\n    const key = Type(env, variant.key);\n    const keyCanMatch =\n      key instanceof FluentNumber || key instanceof FluentSymbol;\n\n    if (!keyCanMatch) {\n      continue;\n    }\n\n    const { ctx } = env;\n\n    if (key.match(ctx, selector)) {\n      return variant;\n    }\n  }\n\n  return DefaultMember(env, vars, def);\n}\n\n\n/**\n * Resolve expression to a Fluent type.\n *\n * JavaScript strings are a special case.  Since they natively have the\n * `toString` method they can be used as if they were a Fluent type without\n * paying the cost of creating a instance of one.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression object to be resolved into a Fluent type.\n * @returns {FluentType}\n * @private\n */\nfunction Type(env, expr) {\n  // A fast-path for strings which are the most common case, and for\n  // `FluentNone` which doesn't require any additional logic.\n  if (typeof expr === \"string\" || expr instanceof FluentNone) {\n    return expr;\n  }\n\n  // The Runtime AST (Entries) encodes patterns (complex strings with\n  // placeables) as Arrays.\n  if (Array.isArray(expr)) {\n    return Pattern(env, expr);\n  }\n\n\n  switch (expr.type) {\n    case \"varname\":\n      return new FluentSymbol(expr.name);\n    case \"num\":\n      return new FluentNumber(expr.val);\n    case \"ext\":\n      return ExternalArgument(env, expr);\n    case \"fun\":\n      return FunctionReference(env, expr);\n    case \"call\":\n      return CallExpression(env, expr);\n    case \"ref\": {\n      const message = MessageReference(env, expr);\n      return Type(env, message);\n    }\n    case \"attr\": {\n      const attr = AttributeExpression(env, expr);\n      return Type(env, attr);\n    }\n    case \"var\": {\n      const variant = VariantExpression(env, expr);\n      return Type(env, variant);\n    }\n    case \"sel\": {\n      const member = SelectExpression(env, expr);\n      return Type(env, member);\n    }\n    case undefined: {\n      // If it's a node with a value, resolve the value.\n      if (expr.val !== null && expr.val !== undefined) {\n        return Type(env, expr.val);\n      }\n\n      const { errors } = env;\n      errors.push(new RangeError(\"No value\"));\n      return new FluentNone();\n    }\n    default:\n      return new FluentNone();\n  }\n}\n\n/**\n * Resolve a reference to an external argument.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {String} expr.name\n *    Name of an argument to be returned.\n * @returns {FluentType}\n * @private\n */\nfunction ExternalArgument(env, {name}) {\n  const { args, errors } = env;\n\n  if (!args || !args.hasOwnProperty(name)) {\n    errors.push(new ReferenceError(`Unknown external: ${name}`));\n    return new FluentNone(name);\n  }\n\n  const arg = args[name];\n\n  // Return early if the argument already is an instance of FluentType.\n  if (arg instanceof FluentType) {\n    return arg;\n  }\n\n  // Convert the argument to a Fluent type.\n  switch (typeof arg) {\n    case \"string\":\n      return arg;\n    case \"number\":\n      return new FluentNumber(arg);\n    case \"object\":\n      if (arg instanceof Date) {\n        return new FluentDateTime(arg);\n      }\n    default:\n      errors.push(\n        new TypeError(`Unsupported external type: ${name}, ${typeof arg}`)\n      );\n      return new FluentNone(name);\n  }\n}\n\n/**\n * Resolve a reference to a function.\n *\n * @param   {Object}  env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {String} expr.name\n *    Name of the function to be returned.\n * @returns {Function}\n * @private\n */\nfunction FunctionReference(env, {name}) {\n  // Some functions are built-in.  Others may be provided by the runtime via\n  // the `MessageContext` constructor.\n  const { ctx: { _functions }, errors } = env;\n  const func = _functions[name] || builtins[name];\n\n  if (!func) {\n    errors.push(new ReferenceError(`Unknown function: ${name}()`));\n    return new FluentNone(`${name}()`);\n  }\n\n  if (typeof func !== \"function\") {\n    errors.push(new TypeError(`Function ${name}() is not callable`));\n    return new FluentNone(`${name}()`);\n  }\n\n  return func;\n}\n\n/**\n * Resolve a call to a Function with positional and key-value arguments.\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Object} expr\n *    An expression to be resolved.\n * @param   {Object} expr.fun\n *    FTL Function object.\n * @param   {Array} expr.args\n *    FTL Function argument list.\n * @returns {FluentType}\n * @private\n */\nfunction CallExpression(env, {fun, args}) {\n  const callee = FunctionReference(env, fun);\n\n  if (callee instanceof FluentNone) {\n    return callee;\n  }\n\n  const posargs = [];\n  const keyargs = {};\n\n  for (const arg of args) {\n    if (arg.type === \"narg\") {\n      keyargs[arg.name] = Type(env, arg.val);\n    } else {\n      posargs.push(Type(env, arg));\n    }\n  }\n\n  try {\n    return callee(posargs, keyargs);\n  } catch (e) {\n    // XXX Report errors.\n    return new FluentNone();\n  }\n}\n\n/**\n * Resolve a pattern (a complex string with placeables).\n *\n * @param   {Object} env\n *    Resolver environment object.\n * @param   {Array} ptn\n *    Array of pattern elements.\n * @returns {Array}\n * @private\n */\nfunction Pattern(env, ptn) {\n  const { ctx, dirty, errors } = env;\n\n  if (dirty.has(ptn)) {\n    errors.push(new RangeError(\"Cyclic reference\"));\n    return new FluentNone();\n  }\n\n  // Tag the pattern as dirty for the purpose of the current resolution.\n  dirty.add(ptn);\n  const result = [];\n\n  // Wrap interpolations with Directional Isolate Formatting characters\n  // only when the pattern has more than one element.\n  const useIsolating = ctx._useIsolating && ptn.length > 1;\n\n  for (const elem of ptn) {\n    if (typeof elem === \"string\") {\n      result.push(elem);\n      continue;\n    }\n\n    const part = Type(env, elem).toString(ctx);\n\n    if (useIsolating) {\n      result.push(FSI);\n    }\n\n    if (part.length > MAX_PLACEABLE_LENGTH) {\n      errors.push(\n        new RangeError(\n          \"Too many characters in placeable \" +\n          `(${part.length}, max allowed is ${MAX_PLACEABLE_LENGTH})`\n        )\n      );\n      result.push(part.slice(MAX_PLACEABLE_LENGTH));\n    } else {\n      result.push(part);\n    }\n\n    if (useIsolating) {\n      result.push(PDI);\n    }\n  }\n\n  dirty.delete(ptn);\n  return result.join(\"\");\n}\n\n/**\n * Format a translation into a string.\n *\n * @param   {MessageContext} ctx\n *    A MessageContext instance which will be used to resolve the\n *    contextual information of the message.\n * @param   {Object}         args\n *    List of arguments provided by the developer which can be accessed\n *    from the message.\n * @param   {Object}         message\n *    An object with the Message to be resolved.\n * @param   {Array}          errors\n *    An error array that any encountered errors will be appended to.\n * @returns {FluentType}\n */\nexport default function resolve(ctx, args, message, errors = []) {\n  const env = {\n    ctx, args, errors, dirty: new WeakSet()\n  };\n  return Type(env, message).toString(ctx);\n}\n","import resolve from \"./resolver\";\nimport parse from \"./parser\";\n\n/**\n * Message contexts are single-language stores of translations.  They are\n * responsible for parsing translation resources in the Fluent syntax and can\n * format translation units (entities) to strings.\n *\n * Always use `MessageContext.format` to retrieve translation units from\n * a context.  Translations can contain references to other entities or\n * external arguments, conditional logic in form of select expressions, traits\n * which describe their grammatical features, and can use Fluent builtins which\n * make use of the `Intl` formatters to format numbers, dates, lists and more\n * into the context's language.  See the documentation of the Fluent syntax for\n * more information.\n */\nexport class MessageContext {\n\n  /**\n   * Create an instance of `MessageContext`.\n   *\n   * The `locales` argument is used to instantiate `Intl` formatters used by\n   * translations.  The `options` object can be used to configure the context.\n   *\n   * Examples:\n   *\n   *     const ctx = new MessageContext(locales);\n   *\n   *     const ctx = new MessageContext(locales, { useIsolating: false });\n   *\n   *     const ctx = new MessageContext(locales, {\n   *       useIsolating: true,\n   *       functions: {\n   *         NODE_ENV: () => process.env.NODE_ENV\n   *       }\n   *     });\n   *\n   * Available options:\n   *\n   *   - `functions` - an object of additional functions available to\n   *                   translations as builtins.\n   *\n   *   - `useIsolating` - boolean specifying whether to use Unicode isolation\n   *                    marks (FSI, PDI) for bidi interpolations.\n   *\n   * @param   {string|Array<string>} locales - Locale or locales of the context\n   * @param   {Object} [options]\n   * @returns {MessageContext}\n   */\n  constructor(locales, { functions = {}, useIsolating = true } = {}) {\n    this.locales = Array.isArray(locales) ? locales : [locales];\n\n    this._terms = new Map();\n    this._messages = new Map();\n    this._functions = functions;\n    this._useIsolating = useIsolating;\n    this._intls = new WeakMap();\n  }\n\n  /*\n   * Return an iterator over public `[id, message]` pairs.\n   *\n   * @returns {Iterator}\n   */\n  get messages() {\n    return this._messages[Symbol.iterator]();\n  }\n\n  /*\n   * Check if a message is present in the context.\n   *\n   * @param {string} id - The identifier of the message to check.\n   * @returns {bool}\n   */\n  hasMessage(id) {\n    return this._messages.has(id);\n  }\n\n  /*\n   * Return the internal representation of a message.\n   *\n   * The internal representation should only be used as an argument to\n   * `MessageContext.format`.\n   *\n   * @param {string} id - The identifier of the message to check.\n   * @returns {Any}\n   */\n  getMessage(id) {\n    return this._messages.get(id);\n  }\n\n  /**\n   * Add a translation resource to the context.\n   *\n   * The translation resource must use the Fluent syntax.  It will be parsed by\n   * the context and each translation unit (message) will be available in the\n   * context by its identifier.\n   *\n   *     ctx.addMessages('foo = Foo');\n   *     ctx.getMessage('foo');\n   *\n   *     // Returns a raw representation of the 'foo' message.\n   *\n   * Parsed entities should be formatted with the `format` method in case they\n   * contain logic (references, select expressions etc.).\n   *\n   * @param   {string} source - Text resource with translations.\n   * @returns {Array<Error>}\n   */\n  addMessages(source) {\n    const [entries, errors] = parse(source);\n    for (const id in entries) {\n      if (id.startsWith(\"-\")) {\n        // Identifiers starting with a dash (-) define terms. Terms are private\n        // and cannot be retrieved from MessageContext.\n        if (this._terms.has(id)) {\n          errors.push(`Attempt to override an existing term: \"${id}\"`);\n          continue;\n        }\n        this._terms.set(id, entries[id]);\n      } else {\n        if (this._messages.has(id)) {\n          errors.push(`Attempt to override an existing message: \"${id}\"`);\n          continue;\n        }\n        this._messages.set(id, entries[id]);\n      }\n    }\n\n    return errors;\n  }\n\n  /**\n   * Format a message to a string or null.\n   *\n   * Format a raw `message` from the context into a string (or a null if it has\n   * a null value).  `args` will be used to resolve references to external\n   * arguments inside of the translation.\n   *\n   * In case of errors `format` will try to salvage as much of the translation\n   * as possible and will still return a string.  For performance reasons, the\n   * encountered errors are not returned but instead are appended to the\n   * `errors` array passed as the third argument.\n   *\n   *     const errors = [];\n   *     ctx.addMessages('hello = Hello, { $name }!');\n   *     const hello = ctx.getMessage('hello');\n   *     ctx.format(hello, { name: 'Jane' }, errors);\n   *\n   *     // Returns 'Hello, Jane!' and `errors` is empty.\n   *\n   *     ctx.format(hello, undefined, errors);\n   *\n   *     // Returns 'Hello, name!' and `errors` is now:\n   *\n   *     [<ReferenceError: Unknown external: name>]\n   *\n   * @param   {Object | string}    message\n   * @param   {Object | undefined} args\n   * @param   {Array}              errors\n   * @returns {?string}\n   */\n  format(message, args, errors) {\n    // optimize entities which are simple strings with no attributes\n    if (typeof message === \"string\") {\n      return message;\n    }\n\n    // optimize simple-string entities with attributes\n    if (typeof message.val === \"string\") {\n      return message.val;\n    }\n\n    // optimize entities with null values\n    if (message.val === undefined) {\n      return null;\n    }\n\n    return resolve(this, args, message, errors);\n  }\n\n  _memoizeIntlObject(ctor, opts) {\n    const cache = this._intls.get(ctor) || {};\n    const id = JSON.stringify(opts);\n\n    if (!cache[id]) {\n      cache[id] = new ctor(this.locales, opts);\n      this._intls.set(ctor, cache);\n    }\n\n    return cache[id];\n  }\n}\n","/*\n * CachedIterable caches the elements yielded by an iterable.\n *\n * It can be used to iterate over an iterable many times without depleting the\n * iterable.\n */\nexport default class CachedIterable {\n  /**\n   * Create an `CachedIterable` instance.\n   *\n   * @param {Iterable} iterable\n   * @returns {CachedIterable}\n   */\n  constructor(iterable) {\n    if (Symbol.asyncIterator in Object(iterable)) {\n      this.iterator = iterable[Symbol.asyncIterator]();\n    } else if (Symbol.iterator in Object(iterable)) {\n      this.iterator = iterable[Symbol.iterator]();\n    } else {\n      throw new TypeError(\"Argument must implement the iteration protocol.\");\n    }\n\n    this.seen = [];\n  }\n\n  [Symbol.iterator]() {\n    const { seen, iterator } = this;\n    let cur = 0;\n\n    return {\n      next() {\n        if (seen.length <= cur) {\n          seen.push(iterator.next());\n        }\n        return seen[cur++];\n      }\n    };\n  }\n\n  [Symbol.asyncIterator]() {\n    const { seen, iterator } = this;\n    let cur = 0;\n\n    return {\n      async next() {\n        if (seen.length <= cur) {\n          seen.push(await iterator.next());\n        }\n        return seen[cur++];\n      }\n    };\n  }\n\n  /**\n   * This method allows user to consume the next element from the iterator\n   * into the cache.\n   */\n  touchNext() {\n    const { seen, iterator } = this;\n    if (seen.length === 0 || seen[seen.length - 1].done === false) {\n      seen.push(iterator.next());\n    }\n  }\n}\n","/*\n * @overview\n *\n * Functions for managing ordered sequences of MessageContexts.\n *\n * An ordered iterable of MessageContext instances can represent the current\n * negotiated fallback chain of languages.  This iterable can be used to find\n * the best existing translation for a given identifier.\n *\n * The mapContext* methods can be used to find the first MessageContext in the\n * given iterable which contains the translation with the given identifier.  If\n * the iterable is ordered according to the result of a language negotiation\n * the returned MessageContext contains the best available translation.\n *\n * A simple function which formats translations based on the identifier might\n * be implemented as follows:\n *\n *     formatString(id, args) {\n *         const ctx = mapContextSync(contexts, id);\n *\n *         if (ctx === null) {\n *             return id;\n *         }\n *\n *         const msg = ctx.getMessage(id);\n *         return ctx.format(msg, args);\n *     }\n *\n * In order to pass an iterator to mapContext*, wrap it in CachedIterable.\n * This allows multiple calls to mapContext* without advancing and eventually\n * depleting the iterator.\n *\n *     function *generateMessages() {\n *         // Some lazy logic for yielding MessageContexts.\n *         yield *[ctx1, ctx2];\n *     }\n *\n *     const contexts = new CachedIterable(generateMessages());\n *     const ctx = mapContextSync(contexts, id);\n *\n */\n\n/*\n * Synchronously map an identifier or an array of identifiers to the best\n * `MessageContext` instance(s).\n *\n * @param {Iterable} iterable\n * @param {string|Array<string>} ids\n * @returns {MessageContext|Array<MessageContext>}\n */\nexport function mapContextSync(iterable, ids) {\n  if (!Array.isArray(ids)) {\n    return getContextForId(iterable, ids);\n  }\n\n  return ids.map(\n    id => getContextForId(iterable, id)\n  );\n}\n\n/*\n * Find the best `MessageContext` with the translation for `id`.\n */\nfunction getContextForId(iterable, id) {\n  for (const context of iterable) {\n    if (context.hasMessage(id)) {\n      return context;\n    }\n  }\n\n  return null;\n}\n\n/*\n * Asynchronously map an identifier or an array of identifiers to the best\n * `MessageContext` instance(s).\n *\n * @param {AsyncIterable} iterable\n * @param {string|Array<string>} ids\n * @returns {Promise<MessageContext|Array<MessageContext>>}\n */\nexport async function mapContextAsync(iterable, ids) {\n  if (!Array.isArray(ids)) {\n    for await (const context of iterable) {\n      if (context.hasMessage(ids)) {\n        return context;\n      }\n    }\n  }\n\n  let remainingCount = ids.length;\n  const foundContexts = new Array(remainingCount).fill(null);\n\n  for await (const context of iterable) {\n    // XXX Switch to const [index, id] of id.entries() when we move to Babel 7.\n    // See https://github.com/babel/babel/issues/5880.\n    for (let index = 0; index < ids.length; index++) {\n      const id = ids[index];\n      if (!foundContexts[index] && context.hasMessage(id)) {\n        foundContexts[index] = context;\n        remainingCount--;\n      }\n\n      // Return early when all ids have been mapped to contexts.\n      if (remainingCount === 0) {\n        return foundContexts;\n      }\n    }\n  }\n\n  return foundContexts;\n}\n","function nonBlank(line) {\n  return !/^\\s*$/.test(line);\n}\n\nfunction countIndent(line) {\n  const [indent] = line.match(/^\\s*/);\n  return indent.length;\n}\n\n/**\n * Template literal tag for dedenting FTL code.\n *\n * Strip the common indent of non-blank lines. Remove blank lines.\n *\n * @param {Array<string>} strings\n */\nexport function ftl(strings) {\n  const [code] = strings;\n  const lines = code.split(\"\\n\").filter(nonBlank);\n  const indents = lines.map(countIndent);\n  const common = Math.min(...indents);\n  const indent = new RegExp(`^\\\\s{${common}}`);\n\n  return lines.map(\n    line => line.replace(indent, \"\")\n  ).join(\"\\n\");\n}\n","/*\n * @module fluent\n * @overview\n *\n * `fluent` is a JavaScript implementation of Project Fluent, a localization\n * framework designed to unleash the expressive power of the natural language.\n *\n */\n\nexport { default as _parse } from \"./parser\";\n\nexport { MessageContext } from \"./context\";\nexport {\n  FluentType as MessageArgument,\n  FluentNumber as MessageNumberArgument,\n  FluentDateTime as MessageDateTimeArgument,\n} from \"./types\";\n\nexport { default as CachedIterable } from \"./cached_iterable\";\nexport { mapContextSync, mapContextAsync } from \"./fallback\";\n\nexport { ftl } from \"./util\";\n","import { CachedIterable, mapContextSync } from \"fluent\";\n\n/*\n * `ReactLocalization` handles translation formatting and fallback.\n *\n * The current negotiated fallback chain of languages is stored in the\n * `ReactLocalization` instance in form of an iterable of `MessageContext`\n * instances.  This iterable is used to find the best existing translation for\n * a given identifier.\n *\n * `Localized` components must subscribe to the changes of the\n * `ReactLocalization`'s fallback chain.  When the fallback chain changes (the\n * `messages` iterable is set anew), all subscribed compontent must relocalize.\n *\n * The `ReactLocalization` class instances are exposed to `Localized` elements\n * via the `LocalizationProvider` component.\n */\nexport default class ReactLocalization {\n  constructor(messages) {\n    this.contexts = new CachedIterable(messages);\n    this.subs = new Set();\n  }\n\n  /*\n   * Subscribe a `Localized` component to changes of `messages`.\n   */\n  subscribe(comp) {\n    this.subs.add(comp);\n  }\n\n  /*\n   * Unsubscribe a `Localized` component from `messages` changes.\n   */\n  unsubscribe(comp) {\n    this.subs.delete(comp);\n  }\n\n  /*\n   * Set a new `messages` iterable and trigger the retranslation.\n   */\n  setMessages(messages) {\n    this.contexts = new CachedIterable(messages);\n\n    // Update all subscribed Localized components.\n    this.subs.forEach(comp => comp.relocalize());\n  }\n\n  getMessageContext(id) {\n    return mapContextSync(this.contexts, id);\n  }\n\n  formatCompound(mcx, msg, args) {\n    const value = mcx.format(msg, args);\n\n    if (msg.attrs) {\n      var attrs = {};\n      for (const name of Object.keys(msg.attrs)) {\n        attrs[name] = mcx.format(msg.attrs[name], args);\n      }\n    }\n\n    return { value, attrs };\n  }\n\n  /*\n   * Find a translation by `id` and format it to a string using `args`.\n   */\n  getString(id, args, fallback) {\n    const mcx = this.getMessageContext(id);\n\n    if (mcx === null) {\n      return fallback || id;\n    }\n\n    const msg = mcx.getMessage(id);\n    return mcx.format(msg, args);\n  }\n}\n\nexport function isReactLocalization(props, propName) {\n  const prop = props[propName];\n\n  if (prop instanceof ReactLocalization) {\n    return null;\n  }\n\n  return new Error(\n    `The ${propName} context field must be an instance of ReactLocalization.`\n  );\n}\n","import { Component, Children } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport ReactLocalization, { isReactLocalization} from \"./localization\";\n\n/*\n * The Provider component for the `ReactLocalization` class.\n *\n * Exposes a `ReactLocalization` instance to all descendants via React's\n * context feature.  It makes translations available to all localizable\n * elements in the descendant's render tree without the need to pass them\n * explicitly.\n *\n *     <LocalizationProvider messages={…}>\n *         …\n *     </LocalizationProvider>\n *\n * The `LocalizationProvider` component takes one prop: `messages`.  It should\n * be an iterable of `MessageContext` instances in order of the user's\n * preferred languages.  The `MessageContext` instances will be used by\n * `ReactLocalization` to format translations.  If a translation is missing in\n * one instance, `ReactLocalization` will fall back to the next one.\n */\nexport default class LocalizationProvider extends Component {\n  constructor(props) {\n    super(props);\n    const { messages } = props;\n\n    if (messages === undefined) {\n      throw new Error(\"LocalizationProvider must receive the messages prop.\");\n    }\n\n    if (!messages[Symbol.iterator]) {\n      throw new Error(\"The messages prop must be an iterable.\");\n    }\n\n    this.l10n = new ReactLocalization(messages);\n  }\n\n  getChildContext() {\n    return {\n      l10n: this.l10n\n    };\n  }\n\n  componentWillReceiveProps(next) {\n    const { messages } = next;\n\n    if (messages !== this.props.messages) {\n      this.l10n.setMessages(messages);\n    }\n  }\n\n  render() {\n    return Children.only(this.props.children);\n  }\n}\n\nLocalizationProvider.childContextTypes = {\n  l10n: isReactLocalization\n};\n\nLocalizationProvider.propTypes = {\n  children: PropTypes.element.isRequired,\n  messages: isIterable\n};\n\nfunction isIterable(props, propName, componentName) {\n  const prop = props[propName];\n\n  if (Symbol.iterator in Object(prop)) {\n    return null;\n  }\n\n  return new Error(\n    `The ${propName} prop supplied to ${componentName} must be an iterable.`\n  );\n}\n","import { createElement, Component } from \"react\";\n\nimport { isReactLocalization } from \"./localization\";\n\nexport default function withLocalization(Inner) {\n  class WithLocalization extends Component {\n    componentDidMount() {\n      const { l10n } = this.context;\n\n      if (l10n) {\n        l10n.subscribe(this);\n      }\n    }\n\n    componentWillUnmount() {\n      const { l10n } = this.context;\n\n      if (l10n) {\n        l10n.unsubscribe(this);\n      }\n    }\n\n    /*\n     * Rerender this component in a new language.\n     */\n    relocalize() {\n      // When the `ReactLocalization`'s fallback chain changes, update the\n      // component.\n      this.forceUpdate();\n    }\n\n    /*\n     * Find a translation by `id` and format it to a string using `args`.\n     */\n    getString(id, args, fallback) {\n      const { l10n } = this.context;\n\n      if (!l10n) {\n        return fallback || id;\n      }\n\n      return l10n.getString(id, args, fallback);\n    }\n\n    render() {\n      return createElement(\n        Inner,\n        Object.assign(\n          // getString needs to be re-bound on updates to trigger a re-render\n          { getString: (...args) => this.getString(...args) },\n          this.props\n        )\n      );\n    }\n  }\n\n  WithLocalization.displayName = `WithLocalization(${displayName(Inner)})`;\n\n  WithLocalization.contextTypes = {\n    l10n: isReactLocalization\n  };\n\n  return WithLocalization;\n}\n\nfunction displayName(component) {\n  return component.displayName || component.name || \"Component\";\n}\n","/* eslint-env browser */\n\nconst TEMPLATE = document.createElement(\"template\");\n\nexport function parseMarkup(str) {\n  TEMPLATE.innerHTML = str;\n  return TEMPLATE.content;\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in this directory.\n */\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n  area: true,\n  base: true,\n  br: true,\n  col: true,\n  embed: true,\n  hr: true,\n  img: true,\n  input: true,\n  keygen: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true,\n  // NOTE: menuitem's close tag should be omitted, but that causes problems.\n};\n\nexport default omittedCloseTags;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in this directory.\n */\n\nimport omittedCloseTags from './omittedCloseTags';\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = {\n  menuitem: true,\n  ...omittedCloseTags,\n};\n\nexport default voidElementTags;\n","import { isValidElement, cloneElement, Component, Children } from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { isReactLocalization } from \"./localization\";\nimport { parseMarkup } from \"./markup\";\nimport VOID_ELEMENTS from \"../vendor/voidElementTags\";\n\n// Match the opening angle bracket (<) in HTML tags, and HTML entities like\n// &amp;, &#0038;, &#x0026;.\nconst reMarkup = /<|&#?\\w+;/;\n\n/*\n * Prepare props passed to `Localized` for formatting.\n */\nfunction toArguments(props) {\n  const args = {};\n  const elems = {};\n\n  for (const [propname, propval] of Object.entries(props)) {\n    if (propname.startsWith(\"$\")) {\n      const name = propname.substr(1);\n      args[name] = propval;\n    } else if (isValidElement(propval)) {\n      // We'll try to match localNames of elements found in the translation with\n      // names of elements passed as props. localNames are always lowercase.\n      const name = propname.toLowerCase();\n      elems[name] = propval;\n    }\n  }\n\n  return [args, elems];\n}\n\n/*\n * The `Localized` class renders its child with translated props and children.\n *\n *     <Localized id=\"hello-world\">\n *         <p>{'Hello, world!'}</p>\n *     </Localized>\n *\n * The `id` prop should be the unique identifier of the translation.  Any\n * attributes found in the translation will be applied to the wrapped element.\n *\n * Arguments to the translation can be passed as `$`-prefixed props on\n * `Localized`.\n *\n *     <Localized id=\"hello-world\" $username={name}>\n *         <p>{'Hello, { $username }!'}</p>\n *     </Localized>\n *\n *  It's recommended that the contents of the wrapped component be a string\n *  expression.  The string will be used as the ultimate fallback if no\n *  translation is available.  It also makes it easy to grep for strings in the\n *  source code.\n */\nexport default class Localized extends Component {\n  componentDidMount() {\n    const { l10n } = this.context;\n\n    if (l10n) {\n      l10n.subscribe(this);\n    }\n  }\n\n  componentWillUnmount() {\n    const { l10n } = this.context;\n\n    if (l10n) {\n      l10n.unsubscribe(this);\n    }\n  }\n\n  /*\n   * Rerender this component in a new language.\n   */\n  relocalize() {\n    // When the `ReactLocalization`'s fallback chain changes, update the\n    // component.\n    this.forceUpdate();\n  }\n\n  render() {\n    const { l10n } = this.context;\n    const { id, attrs, children } = this.props;\n    const elem = Children.only(children);\n\n    if (!l10n) {\n      // Use the wrapped component as fallback.\n      return elem;\n    }\n\n    const mcx = l10n.getMessageContext(id);\n\n    if (mcx === null) {\n      // Use the wrapped component as fallback.\n      return elem;\n    }\n\n    const msg = mcx.getMessage(id);\n    const [args, elems] = toArguments(this.props);\n    const {\n      value: messageValue,\n      attrs: messageAttrs\n    } = l10n.formatCompound(mcx, msg, args);\n\n    // The default is to forbid all message attributes. If the attrs prop exists\n    // on the Localized instance, only set message attributes which have been\n    // explicitly allowed by the developer.\n    if (attrs && messageAttrs) {\n      var localizedProps = {};\n\n      for (const [name, value] of Object.entries(messageAttrs)) {\n        if (attrs[name]) {\n          localizedProps[name] = value;\n        }\n      }\n    }\n\n    // If the wrapped component is a known void element, explicitly dismiss the\n    // message value and do not pass it to cloneElement in order to avoid the\n    // \"void element tags must neither have `children` nor use\n    // `dangerouslySetInnerHTML`\" error.\n    if (elem.type in VOID_ELEMENTS) {\n      return cloneElement(elem, localizedProps);\n    }\n\n    // If the message has a null value, we're only interested in its attributes.\n    // Do not pass the null value to cloneElement as it would nuke all children\n    // of the wrapped component.\n    if (messageValue === null) {\n      return cloneElement(elem, localizedProps);\n    }\n\n    // If the message value doesn't contain any markup nor any HTML entities,\n    // insert it as the only child of the wrapped component.\n    if (!reMarkup.test(messageValue)) {\n      return cloneElement(elem, localizedProps, messageValue);\n    }\n\n    // If the message contains markup, parse it and try to match the children\n    // found in the translation with the props passed to this Localized.\n    const translationNodes = Array.from(parseMarkup(messageValue).childNodes);\n    const translatedChildren = translationNodes.map(childNode => {\n      if (childNode.nodeType === childNode.TEXT_NODE) {\n        return childNode.textContent;\n      }\n\n      // If the child is not expected just take its textContent.\n      if (!elems.hasOwnProperty(childNode.localName)) {\n        return childNode.textContent;\n      }\n\n      const sourceChild = elems[childNode.localName];\n\n      // If the element passed as a prop to <Localized> is a known void element,\n      // explicitly dismiss any textContent which might have accidentally been\n      // defined in the translation to prevent the \"void element tags must not\n      // have children\" error.\n      if (sourceChild.type in VOID_ELEMENTS) {\n        return sourceChild;\n      }\n\n      // TODO Protect contents of elements wrapped in <Localized>\n      // https://github.com/projectfluent/fluent.js/issues/184\n      // TODO  Control localizable attributes on elements passed as props\n      // https://github.com/projectfluent/fluent.js/issues/185\n      return cloneElement(sourceChild, null, childNode.textContent);\n    });\n\n    return cloneElement(elem, localizedProps, ...translatedChildren);\n  }\n}\n\nLocalized.contextTypes = {\n  l10n: isReactLocalization\n};\n\nLocalized.propTypes = {\n  children: PropTypes.element.isRequired,\n};\n","/*\n * @module fluent-react\n * @overview\n *\n\n * `fluent-react` provides React bindings for Fluent.  It takes advantage of\n * React's Components system and the virtual DOM.  Translations are exposed to\n * components via the provider pattern.\n *\n *     <LocalizationProvider messages={…}>\n *         <Localized id=\"hello-world\">\n *             <p>{'Hello, world!'}</p>\n *         </Localized>\n *     </LocalizationProvider>\n *\n * Consult the documentation of the `LocalizationProvider` and the `Localized`\n * components for more information.\n */\n\nexport { default as LocalizationProvider } from \"./provider\";\nexport { default as withLocalization } from \"./with_localization\";\nexport { default as Localized } from \"./localized\";\nexport { default as ReactLocalization, isReactLocalization }\n  from \"./localization\";\n","import React from \"react\";\nimport {safeURI} from \"../../template-utils\";\n\nconst ALLOWED_STYLE_TAGS = [\"color\", \"backgroundColor\"];\n\nexport const Button = props => {\n  const style = {};\n\n  // Add allowed style tags from props, e.g. props.color becomes style={color: props.color}\n  for (const tag of ALLOWED_STYLE_TAGS) {\n    if (typeof props[tag] !== \"undefined\") {\n      style[tag] = props[tag];\n    }\n  }\n  // remove border if bg is set to something custom\n  if (style.backgroundColor) {\n    style.border = \"0\";\n  }\n\n  return (<a href={safeURI(props.url)}\n    onClick={props.onClick}\n    className={props.className || \"ASRouterButton\"}\n    style={style}>\n    {props.children}\n  </a>);\n};\n","import React from \"react\";\n\nexport class SnippetBase extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onBlockClicked = this.onBlockClicked.bind(this);\n  }\n\n  onBlockClicked() {\n    this.props.sendUserActionTelemetry({event: \"BLOCK\", id: this.props.UISurface});\n    this.props.onBlock();\n  }\n\n  render() {\n    const {props} = this;\n\n    const containerClassName = `SnippetBaseContainer${props.className ? ` ${props.className}` : \"\"}`;\n\n    return (<div className={containerClassName}>\n      <div className=\"innerWrapper\">\n        {props.children}\n      </div>\n      <button className=\"blockButton\" onClick={this.onBlockClicked} />\n    </div>);\n  }\n}\n","import {Button} from \"../../components/Button/Button\";\nimport React from \"react\";\nimport {safeURI} from \"../../template-utils\";\nimport {SnippetBase} from \"../../components/SnippetBase/SnippetBase\";\n\nconst DEFAULT_ICON_PATH = \"chrome://branding/content/icon64.png\";\n\nexport class SimpleSnippet extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onButtonClick = this.onButtonClick.bind(this);\n  }\n\n  onButtonClick() {\n    this.props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", id: this.props.UISurface});\n  }\n\n  renderTitle() {\n    const {title} = this.props.content;\n    return title ? <h3 className=\"title\">{title}</h3> : null;\n  }\n\n  renderTitleIcon() {\n    const titleIcon = safeURI(this.props.content.title_icon);\n    return titleIcon ? <span className=\"titleIcon\" style={{backgroundImage: `url(\"${titleIcon}\")`}} /> : null;\n  }\n\n  renderButton(className) {\n    const {props} = this;\n    return (<Button\n      className={className}\n      onClick={this.onButtonClick}\n      url={props.content.button_url}\n      color={props.content.button_color}\n      backgroundColor={props.content.button_background_color}>\n      {props.content.button_label}\n    </Button>);\n  }\n\n  render() {\n    const {props} = this;\n    const hasLink = props.content.button_url && props.content.button_type === \"anchor\";\n    const hasButton = props.content.button_url && !props.content.button_type;\n    const className = `SimpleSnippet${props.content.tall ? \" tall\" : \"\"}`;\n    return (<SnippetBase {...props} className={className}>\n      <img src={safeURI(props.content.icon) || DEFAULT_ICON_PATH} className=\"icon\" />\n      <div>\n        {this.renderTitleIcon()} {this.renderTitle()} <p className=\"body\">{props.richText || props.content.text}</p> {hasLink ? this.renderButton(\"ASRouterAnchor\") : null}\n      </div>\n      {hasButton ? <div>{this.renderButton()}</div> : null}\n    </SnippetBase>);\n  }\n}\n","this.Dedupe = class Dedupe {\n  constructor(createKey) {\n    this.createKey = createKey || this.defaultCreateKey;\n  }\n\n  defaultCreateKey(item) {\n    return item;\n  }\n\n  /**\n   * Dedupe any number of grouped elements favoring those from earlier groups.\n   *\n   * @param {Array} groups Contains an arbitrary number of arrays of elements.\n   * @returns {Array} A matching array of each provided group deduped.\n   */\n  group(...groups) {\n    const globalKeys = new Set();\n    const result = [];\n    for (const values of groups) {\n      const valueMap = new Map();\n      for (const value of values) {\n        const key = this.createKey(value);\n        if (!globalKeys.has(key) && !valueMap.has(key)) {\n          valueMap.set(key, value);\n        }\n      }\n      result.push(valueMap);\n      valueMap.forEach((value, key) => globalKeys.add(key));\n    }\n    return result.map(m => Array.from(m.values()));\n  }\n};\n\nconst EXPORTED_SYMBOLS = [\"Dedupe\"];\n","/* This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\n\"use strict\";\n\nconst {actionTypes: at} = ChromeUtils.import(\"resource://activity-stream/common/Actions.jsm\", {});\nconst {Dedupe} = ChromeUtils.import(\"resource://activity-stream/common/Dedupe.jsm\", {});\n\nconst TOP_SITES_DEFAULT_ROWS = 1;\nconst TOP_SITES_MAX_SITES_PER_ROW = 8;\n\nconst dedupe = new Dedupe(site => site && site.url);\n\nconst INITIAL_STATE = {\n  App: {\n    // Have we received real data from the app yet?\n    initialized: false\n  },\n  Snippets: {initialized: false},\n  TopSites: {\n    // Have we received real data from history yet?\n    initialized: false,\n    // The history (and possibly default) links\n    rows: [],\n    // Used in content only to dispatch action to TopSiteForm.\n    editForm: null\n  },\n  Prefs: {\n    initialized: false,\n    values: {}\n  },\n  Dialog: {\n    visible: false,\n    data: {}\n  },\n  Sections: []\n};\n\nfunction App(prevState = INITIAL_STATE.App, action) {\n  switch (action.type) {\n    case at.INIT:\n      return Object.assign({}, prevState, action.data || {}, {initialized: true});\n    default:\n      return prevState;\n  }\n}\n\n/**\n * insertPinned - Inserts pinned links in their specified slots\n *\n * @param {array} a list of links\n * @param {array} a list of pinned links\n * @return {array} resulting list of links with pinned links inserted\n */\nfunction insertPinned(links, pinned) {\n  // Remove any pinned links\n  const pinnedUrls = pinned.map(link => link && link.url);\n  let newLinks = links.filter(link => (link ? !pinnedUrls.includes(link.url) : false));\n  newLinks = newLinks.map(link => {\n    if (link && link.isPinned) {\n      delete link.isPinned;\n      delete link.pinIndex;\n    }\n    return link;\n  });\n\n  // Then insert them in their specified location\n  pinned.forEach((val, index) => {\n    if (!val) { return; }\n    let link = Object.assign({}, val, {isPinned: true, pinIndex: index});\n    if (index > newLinks.length) {\n      newLinks[index] = link;\n    } else {\n      newLinks.splice(index, 0, link);\n    }\n  });\n\n  return newLinks;\n}\n\nfunction TopSites(prevState = INITIAL_STATE.TopSites, action) {\n  let hasMatch;\n  let newRows;\n  switch (action.type) {\n    case at.TOP_SITES_UPDATED:\n      if (!action.data || !action.data.links) {\n        return prevState;\n      }\n      return Object.assign({}, prevState, {initialized: true, rows: action.data.links}, action.data.pref ? {pref: action.data.pref} : {});\n    case at.TOP_SITES_PREFS_UPDATED:\n      return Object.assign({}, prevState, {pref: action.data.pref});\n    case at.TOP_SITES_EDIT:\n      return Object.assign({}, prevState, {\n        editForm: {\n          index: action.data.index,\n          previewResponse: null\n        }\n      });\n    case at.TOP_SITES_CANCEL_EDIT:\n      return Object.assign({}, prevState, {editForm: null});\n    case at.PREVIEW_RESPONSE:\n      if (!prevState.editForm || action.data.url !== prevState.editForm.previewUrl) {\n        return prevState;\n      }\n      return Object.assign({}, prevState, {\n        editForm: {\n          index: prevState.editForm.index,\n          previewResponse: action.data.preview,\n          previewUrl: action.data.url\n        }\n      });\n    case at.PREVIEW_REQUEST:\n      if (!prevState.editForm) {\n        return prevState;\n      }\n      return Object.assign({}, prevState, {\n        editForm: {\n          index: prevState.editForm.index,\n          previewResponse: null,\n          previewUrl: action.data.url\n        }\n      });\n    case at.PREVIEW_REQUEST_CANCEL:\n      if (!prevState.editForm) {\n        return prevState;\n      }\n      return Object.assign({}, prevState, {\n        editForm: {\n          index: prevState.editForm.index,\n          previewResponse: null\n        }\n      });\n    case at.SCREENSHOT_UPDATED:\n      newRows = prevState.rows.map(row => {\n        if (row && row.url === action.data.url) {\n          hasMatch = true;\n          return Object.assign({}, row, {screenshot: action.data.screenshot});\n        }\n        return row;\n      });\n      return hasMatch ? Object.assign({}, prevState, {rows: newRows}) : prevState;\n    case at.PLACES_BOOKMARK_ADDED:\n      if (!action.data) {\n        return prevState;\n      }\n      newRows = prevState.rows.map(site => {\n        if (site && site.url === action.data.url) {\n          const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n          return Object.assign({}, site, {bookmarkGuid, bookmarkTitle, bookmarkDateCreated: dateAdded});\n        }\n        return site;\n      });\n      return Object.assign({}, prevState, {rows: newRows});\n    case at.PLACES_BOOKMARK_REMOVED:\n      if (!action.data) {\n        return prevState;\n      }\n      newRows = prevState.rows.map(site => {\n        if (site && site.url === action.data.url) {\n          const newSite = Object.assign({}, site);\n          delete newSite.bookmarkGuid;\n          delete newSite.bookmarkTitle;\n          delete newSite.bookmarkDateCreated;\n          return newSite;\n        }\n        return site;\n      });\n      return Object.assign({}, prevState, {rows: newRows});\n    case at.PLACES_LINK_DELETED:\n      if (!action.data) {\n        return prevState;\n      }\n      newRows = prevState.rows.filter(site => action.data.url !== site.url);\n      return Object.assign({}, prevState, {rows: newRows});\n    default:\n      return prevState;\n  }\n}\n\nfunction Dialog(prevState = INITIAL_STATE.Dialog, action) {\n  switch (action.type) {\n    case at.DIALOG_OPEN:\n      return Object.assign({}, prevState, {visible: true, data: action.data});\n    case at.DIALOG_CANCEL:\n      return Object.assign({}, prevState, {visible: false});\n    case at.DELETE_HISTORY_URL:\n      return Object.assign({}, INITIAL_STATE.Dialog);\n    default:\n      return prevState;\n  }\n}\n\nfunction Prefs(prevState = INITIAL_STATE.Prefs, action) {\n  let newValues;\n  switch (action.type) {\n    case at.PREFS_INITIAL_VALUES:\n      return Object.assign({}, prevState, {initialized: true, values: action.data});\n    case at.PREF_CHANGED:\n      newValues = Object.assign({}, prevState.values);\n      newValues[action.data.name] = action.data.value;\n      return Object.assign({}, prevState, {values: newValues});\n    default:\n      return prevState;\n  }\n}\n\nfunction Sections(prevState = INITIAL_STATE.Sections, action) {\n  let hasMatch;\n  let newState;\n  switch (action.type) {\n    case at.SECTION_DEREGISTER:\n      return prevState.filter(section => section.id !== action.data);\n    case at.SECTION_REGISTER:\n      // If section exists in prevState, update it\n      newState = prevState.map(section => {\n        if (section && section.id === action.data.id) {\n          hasMatch = true;\n          return Object.assign({}, section, action.data);\n        }\n        return section;\n      });\n      // Otherwise, append it\n      if (!hasMatch) {\n        const initialized = !!(action.data.rows && action.data.rows.length > 0);\n        const section = Object.assign({title: \"\", rows: [], enabled: false}, action.data, {initialized});\n        newState.push(section);\n      }\n      return newState;\n    case at.SECTION_UPDATE:\n      newState = prevState.map(section => {\n        if (section && section.id === action.data.id) {\n          // If the action is updating rows, we should consider initialized to be true.\n          // This can be overridden if initialized is defined in the action.data\n          const initialized = action.data.rows ? {initialized: true} : {};\n\n          // Make sure pinned cards stay at their current position when rows are updated.\n          // Disabling a section (SECTION_UPDATE with empty rows) does not retain pinned cards.\n          if (action.data.rows && action.data.rows.length > 0 && section.rows.find(card => card.pinned)) {\n            const rows = Array.from(action.data.rows);\n            section.rows.forEach((card, index) => {\n              if (card.pinned) {\n                rows.splice(index, 0, card);\n              }\n            });\n            return Object.assign({}, section, initialized, Object.assign({}, action.data, {rows}));\n          }\n\n          return Object.assign({}, section, initialized, action.data);\n        }\n        return section;\n      });\n\n      if (!action.data.dedupeConfigurations) {\n        return newState;\n      }\n\n      action.data.dedupeConfigurations.forEach(dedupeConf => {\n        newState = newState.map(section => {\n          if (section.id === dedupeConf.id) {\n            const dedupedRows = dedupeConf.dedupeFrom.reduce((rows, dedupeSectionId) => {\n              const dedupeSection = newState.find(s => s.id === dedupeSectionId);\n              const [, newRows] = dedupe.group(dedupeSection.rows, rows);\n              return newRows;\n            }, section.rows);\n\n            return Object.assign({}, section, {rows: dedupedRows});\n          }\n\n          return section;\n        });\n      });\n\n      return newState;\n    case at.SECTION_UPDATE_CARD:\n      return prevState.map(section => {\n        if (section && section.id === action.data.id && section.rows) {\n          const newRows = section.rows.map(card => {\n            if (card.url === action.data.url) {\n              return Object.assign({}, card, action.data.options);\n            }\n            return card;\n          });\n          return Object.assign({}, section, {rows: newRows});\n        }\n        return section;\n      });\n    case at.PLACES_BOOKMARK_ADDED:\n      if (!action.data) {\n        return prevState;\n      }\n      return prevState.map(section => Object.assign({}, section, {\n        rows: section.rows.map(item => {\n          // find the item within the rows that is attempted to be bookmarked\n          if (item.url === action.data.url) {\n            const {bookmarkGuid, bookmarkTitle, dateAdded} = action.data;\n            return Object.assign({}, item, {\n              bookmarkGuid,\n              bookmarkTitle,\n              bookmarkDateCreated: dateAdded,\n              type: \"bookmark\"\n            });\n          }\n          return item;\n        })\n      }));\n    case at.PLACES_SAVED_TO_POCKET:\n      if (!action.data) {\n        return prevState;\n      }\n      return prevState.map(section => Object.assign({}, section, {\n        rows: section.rows.map(item => {\n          if (item.url === action.data.url) {\n            return Object.assign({}, item, {\n              open_url: action.data.open_url,\n              pocket_id: action.data.pocket_id,\n              title: action.data.title,\n              type: \"pocket\"\n            });\n          }\n          return item;\n        })\n      }));\n    case at.PLACES_BOOKMARK_REMOVED:\n      if (!action.data) {\n        return prevState;\n      }\n      return prevState.map(section => Object.assign({}, section, {\n        rows: section.rows.map(item => {\n          // find the bookmark within the rows that is attempted to be removed\n          if (item.url === action.data.url) {\n            const newSite = Object.assign({}, item);\n            delete newSite.bookmarkGuid;\n            delete newSite.bookmarkTitle;\n            delete newSite.bookmarkDateCreated;\n            if (!newSite.type || newSite.type === \"bookmark\") {\n              newSite.type = \"history\";\n            }\n            return newSite;\n          }\n          return item;\n        })\n      }));\n    case at.PLACES_LINK_DELETED:\n    case at.PLACES_LINK_BLOCKED:\n      if (!action.data) {\n        return prevState;\n      }\n      return prevState.map(section =>\n        Object.assign({}, section, {rows: section.rows.filter(site => site.url !== action.data.url)}));\n    case at.DELETE_FROM_POCKET:\n    case at.ARCHIVE_FROM_POCKET:\n      return prevState.map(section =>\n        Object.assign({}, section, {rows: section.rows.filter(site => site.pocket_id !== action.data.pocket_id)}));\n    default:\n      return prevState;\n  }\n}\n\nfunction Snippets(prevState = INITIAL_STATE.Snippets, action) {\n  switch (action.type) {\n    case at.SNIPPETS_DATA:\n      return Object.assign({}, prevState, {initialized: true}, action.data);\n    case at.SNIPPET_BLOCKED:\n      return Object.assign({}, prevState, {blockList: prevState.blockList.concat(action.data)});\n    case at.SNIPPETS_BLOCKLIST_CLEARED:\n      return Object.assign({}, prevState, {blockList: []});\n    case at.SNIPPETS_RESET:\n      return INITIAL_STATE.Snippets;\n    default:\n      return prevState;\n  }\n}\n\nthis.INITIAL_STATE = INITIAL_STATE;\nthis.TOP_SITES_DEFAULT_ROWS = TOP_SITES_DEFAULT_ROWS;\nthis.TOP_SITES_MAX_SITES_PER_ROW = TOP_SITES_MAX_SITES_PER_ROW;\n\nthis.reducers = {TopSites, App, Snippets, Prefs, Dialog, Sections};\n\nconst EXPORTED_SYMBOLS = [\"reducers\", \"INITIAL_STATE\", \"insertPinned\", \"TOP_SITES_DEFAULT_ROWS\", \"TOP_SITES_MAX_SITES_PER_ROW\"];\n","import React from \"react\";\n\nexport class ModalOverlay extends React.PureComponent {\n  componentWillMount() {\n    this.setState({active: true});\n    document.body.classList.add(\"modal-open\");\n  }\n\n  componentWillUnmount() {\n    document.body.classList.remove(\"modal-open\");\n    this.setState({active: false});\n  }\n\n  render() {\n    const {active} = this.state;\n    const {title, button_label} = this.props;\n    return (\n      <div>\n        <div className={`modalOverlayOuter ${active ? \"active\" : \"\"}`} />\n        <div className={`modalOverlayInner ${active ? \"active\" : \"\"}`}>\n          <h2> {title} </h2>\n          {this.props.children}\n          <div className=\"footer\">\n            <button tabIndex=\"2\" onClick={this.props.onDoneButton} className=\"button primary modalButton\"> {button_label} </button>\n          </div>\n        </div>\n      </div>\n    );\n  }\n}\n","import {ModalOverlay} from \"../../components/ModalOverlay/ModalOverlay\";\nimport React from \"react\";\n\nclass OnboardingCard extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.onClick = this.onClick.bind(this);\n  }\n\n  onClick() {\n    const {props} = this;\n    props.sendUserActionTelemetry({event: \"CLICK_BUTTON\", message_id: props.id, id: props.UISurface});\n    props.onAction(props.content);\n  }\n\n  render() {\n    const {content} = this.props;\n    return (\n      <div className=\"onboardingMessage\">\n        <div className={`onboardingMessageImage ${content.icon}`} />\n        <div className=\"onboardingContent\">\n          <span>\n            <h3> {content.title} </h3>\n            <p> {content.text} </p>\n          </span>\n          <span>\n            <button tabIndex=\"1\" className=\"button onboardingButton\" onClick={this.onClick}> {content.button_label} </button>\n          </span>\n        </div>\n      </div>\n    );\n  }\n}\n\nexport class OnboardingMessage extends React.PureComponent {\n  render() {\n    const {props} = this;\n    return (\n      <ModalOverlay {...props} button_label={\"Start Browsing\"} title={\"Welcome to Firefox\"}>\n        <div className=\"onboardingMessageContainer\">\n          {props.bundle.map(message => (\n            <OnboardingCard key={message.id}\n              sendUserActionTelemetry={props.sendUserActionTelemetry}\n              onAction={props.onAction}\n              UISurface={props.UISurface}\n              {...message} />\n          ))}\n        </div>\n      </ModalOverlay>\n    );\n  }\n}\n","export const cardContextTypes = {\n  history: {\n    intlID: \"type_label_visited\",\n    icon: \"history-item\"\n  },\n  bookmark: {\n    intlID: \"type_label_bookmarked\",\n    icon: \"bookmark-added\"\n  },\n  trending: {\n    intlID: \"type_label_recommended\",\n    icon: \"trending\"\n  },\n  now: {\n    intlID: \"type_label_now\",\n    icon: \"now\"\n  },\n  pocket: {\n    intlID: \"type_label_pocket\",\n    icon: \"pocket\"\n  },\n  download: {\n    intlID: \"type_label_downloaded\",\n    icon: \"download\"\n  }\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {cardContextTypes} from \"./types\";\nimport {connect} from \"react-redux\";\nimport {FormattedMessage} from \"react-intl\";\nimport {GetPlatformString} from \"content-src/lib/link-menu-options\";\nimport {LinkMenu} from \"content-src/components/LinkMenu/LinkMenu\";\nimport React from \"react\";\nimport {ScreenshotUtils} from \"content-src/lib/screenshot-utils\";\n\n// Keep track of pending image loads to only request once\nconst gImageLoading = new Map();\n\n/**\n * Card component.\n * Cards are found within a Section component and contain information about a link such\n * as preview image, page title, page description, and some context about if the page\n * was visited, bookmarked, trending etc...\n * Each Section can make an unordered list of Cards which will create one instane of\n * this class. Each card will then get a context menu which reflects the actions that\n * can be done on this Card.\n */\nexport class _Card extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {\n      activeCard: null,\n      imageLoaded: false,\n      showContextMenu: false,\n      cardImage: null\n    };\n    this.onMenuButtonClick = this.onMenuButtonClick.bind(this);\n    this.onMenuUpdate = this.onMenuUpdate.bind(this);\n    this.onLinkClick = this.onLinkClick.bind(this);\n  }\n\n  /**\n   * Helper to conditionally load an image and update state when it loads.\n   */\n  async maybeLoadImage() {\n    // No need to load if it's already loaded or no image\n    const {cardImage} = this.state;\n    if (!cardImage) {\n      return;\n    }\n\n    const imageUrl = cardImage.url;\n    if (!this.state.imageLoaded) {\n      // Initialize a promise to share a load across multiple card updates\n      if (!gImageLoading.has(imageUrl)) {\n        const loaderPromise = new Promise((resolve, reject) => {\n          const loader = new Image();\n          loader.addEventListener(\"load\", resolve);\n          loader.addEventListener(\"error\", reject);\n          loader.src = imageUrl;\n        });\n\n        // Save and remove the promise only while it's pending\n        gImageLoading.set(imageUrl, loaderPromise);\n        loaderPromise.catch(ex => ex).then(() => gImageLoading.delete(imageUrl)).catch();\n      }\n\n      // Wait for the image whether just started loading or reused promise\n      await gImageLoading.get(imageUrl);\n\n      // Only update state if we're still waiting to load the original image\n      if (ScreenshotUtils.isRemoteImageLocal(this.state.cardImage, this.props.link.image) &&\n          !this.state.imageLoaded) {\n        this.setState({imageLoaded: true});\n      }\n    }\n  }\n\n  /**\n   * Helper to obtain the next state based on nextProps and prevState.\n   *\n   * NOTE: Rename this method to getDerivedStateFromProps when we update React\n   *       to >= 16.3. We will need to update tests as well. We cannot rename this\n   *       method to getDerivedStateFromProps now because there is a mismatch in\n   *       the React version that we are using for both testing and production.\n   *       (i.e. react-test-render => \"16.3.2\", react => \"16.2.0\").\n   *\n   * See https://github.com/airbnb/enzyme/blob/master/packages/enzyme-adapter-react-16/package.json#L43.\n   */\n  static getNextStateFromProps(nextProps, prevState) {\n    const {image} = nextProps.link;\n    const imageInState = ScreenshotUtils.isRemoteImageLocal(prevState.cardImage, image);\n    let nextState = null;\n\n    // Image is updating.\n    if (!imageInState && nextProps.link) {\n      nextState = {imageLoaded: false};\n    }\n\n    if (imageInState) {\n      return nextState;\n    }\n\n    // Since image was updated, attempt to revoke old image blob URL, if it exists.\n    ScreenshotUtils.maybeRevokeBlobObjectURL(prevState.cardImage);\n\n    nextState = nextState || {};\n    nextState.cardImage = ScreenshotUtils.createLocalImageObject(image);\n\n    return nextState;\n  }\n\n  onMenuButtonClick(event) {\n    event.preventDefault();\n    this.setState({\n      activeCard: this.props.index,\n      showContextMenu: true\n    });\n  }\n\n  /**\n   * Report to telemetry additional information about the item.\n   */\n  _getTelemetryInfo() {\n    // Filter out \"history\" type for being the default\n    if (this.props.link.type !== \"history\") {\n      return {value: {card_type: this.props.link.type}};\n    }\n\n    return null;\n  }\n\n  onLinkClick(event) {\n    event.preventDefault();\n    if (this.props.link.type === \"download\") {\n      this.props.dispatch(ac.OnlyToMain({\n        type: at.SHOW_DOWNLOAD_FILE,\n        data: this.props.link\n      }));\n    } else {\n      const {altKey, button, ctrlKey, metaKey, shiftKey} = event;\n      this.props.dispatch(ac.OnlyToMain({\n        type: at.OPEN_LINK,\n        data: Object.assign(this.props.link, {event: {altKey, button, ctrlKey, metaKey, shiftKey}})\n      }));\n    }\n    if (this.props.isWebExtension) {\n      this.props.dispatch(ac.WebExtEvent(at.WEBEXT_CLICK, {\n        source: this.props.eventSource,\n        url: this.props.link.url,\n        action_position: this.props.index\n      }));\n    } else {\n      this.props.dispatch(ac.UserEvent(Object.assign({\n        event: \"CLICK\",\n        source: this.props.eventSource,\n        action_position: this.props.index\n      }, this._getTelemetryInfo())));\n\n      if (this.props.shouldSendImpressionStats) {\n        this.props.dispatch(ac.ImpressionStats({\n          source: this.props.eventSource,\n          click: 0,\n          tiles: [{id: this.props.link.guid, pos: this.props.index}]\n        }));\n      }\n    }\n  }\n\n  onMenuUpdate(showContextMenu) {\n    this.setState({showContextMenu});\n  }\n\n  componentDidMount() {\n    this.maybeLoadImage();\n  }\n\n  componentDidUpdate() {\n    this.maybeLoadImage();\n  }\n\n  // NOTE: Remove this function when we update React to >= 16.3 since React will\n  //       call getDerivedStateFromProps automatically. We will also need to\n  //       rename getNextStateFromProps to getDerivedStateFromProps.\n  componentWillMount() {\n    const nextState = _Card.getNextStateFromProps(this.props, this.state);\n    if (nextState) {\n      this.setState(nextState);\n    }\n  }\n\n  // NOTE: Remove this function when we update React to >= 16.3 since React will\n  //       call getDerivedStateFromProps automatically. We will also need to\n  //       rename getNextStateFromProps to getDerivedStateFromProps.\n  componentWillReceiveProps(nextProps) {\n    const nextState = _Card.getNextStateFromProps(nextProps, this.state);\n    if (nextState) {\n      this.setState(nextState);\n    }\n  }\n\n  componentWillUnmount() {\n    ScreenshotUtils.maybeRevokeBlobObjectURL(this.state.cardImage);\n  }\n\n  render() {\n    const {index, className, link, dispatch, contextMenuOptions, eventSource, shouldSendImpressionStats} = this.props;\n    const {props} = this;\n    const isContextMenuOpen = this.state.showContextMenu && this.state.activeCard === index;\n    // Display \"now\" as \"trending\" until we have new strings #3402\n    const {icon, intlID} = cardContextTypes[link.type === \"now\" ? \"trending\" : link.type] || {};\n    const hasImage = this.state.cardImage || link.hasImage;\n    const imageStyle = {backgroundImage: this.state.cardImage ? `url(${this.state.cardImage.url})` : \"none\"};\n    const outerClassName = [\n      \"card-outer\",\n      className,\n      isContextMenuOpen && \"active\",\n      props.placeholder && \"placeholder\"\n    ].filter(v => v).join(\" \");\n\n    return (<li className={outerClassName}>\n      <a href={link.type === \"pocket\" ? link.open_url : link.url} onClick={!props.placeholder ? this.onLinkClick : undefined}>\n        <div className=\"card\">\n          <div className=\"card-preview-image-outer\">\n            {hasImage &&\n              <div className={`card-preview-image${this.state.imageLoaded ? \" loaded\" : \"\"}`} style={imageStyle} />\n            }\n          </div>\n          <div className=\"card-details\">\n            {link.type === \"download\" && <div className=\"card-host-name alternate\"><FormattedMessage id={GetPlatformString(this.props.platform)} /></div>}\n            {link.hostname &&\n              <div className=\"card-host-name\">\n                {link.hostname.slice(0, 100)}{link.type === \"download\" && `  \\u2014 ${link.description}`}\n              </div>\n            }\n            <div className={[\n              \"card-text\",\n              icon ? \"\" : \"no-context\",\n              link.description ? \"\" : \"no-description\",\n              link.hostname ? \"\" : \"no-host-name\"\n            ].join(\" \")}>\n              <h4 className=\"card-title\" dir=\"auto\">{link.title}</h4>\n              <p className=\"card-description\" dir=\"auto\">{link.description}</p>\n            </div>\n            <div className=\"card-context\">\n              {icon && !link.context && <span className={`card-context-icon icon icon-${icon}`} />}\n              {link.icon && link.context && <span className=\"card-context-icon icon\" style={{backgroundImage: `url('${link.icon}')`}} />}\n              {intlID && !link.context && <div className=\"card-context-label\"><FormattedMessage id={intlID} defaultMessage=\"Visited\" /></div>}\n              {link.context && <div className=\"card-context-label\">{link.context}</div>}\n            </div>\n          </div>\n        </div>\n      </a>\n      {!props.placeholder && <button className=\"context-menu-button icon\"\n        onClick={this.onMenuButtonClick}>\n        <span className=\"sr-only\">{`Open context menu for ${link.title}`}</span>\n      </button>}\n      {isContextMenuOpen &&\n        <LinkMenu\n          dispatch={dispatch}\n          index={index}\n          source={eventSource}\n          onUpdate={this.onMenuUpdate}\n          options={link.contextMenuOptions || contextMenuOptions}\n          site={link}\n          siteInfo={this._getTelemetryInfo()}\n          shouldSendImpressionStats={shouldSendImpressionStats} />\n      }\n   </li>);\n  }\n}\n_Card.defaultProps = {link: {}};\nexport const Card = connect(state => ({platform: state.Prefs.values.platform}))(_Card);\nexport const PlaceholderCard = props => <Card placeholder={true} className={props.className} />;\n","import {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\n\nexport class TopSiteFormInput extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    this.state = {validationError: this.props.validationError};\n    this.onChange = this.onChange.bind(this);\n    this.onMount = this.onMount.bind(this);\n  }\n\n  componentWillReceiveProps(nextProps) {\n    if (nextProps.shouldFocus && !this.props.shouldFocus) {\n      this.input.focus();\n    }\n    if (nextProps.validationError && !this.props.validationError) {\n      this.setState({validationError: true});\n    }\n    // If the component is in an error state but the value was cleared by the parent\n    if (this.state.validationError && !nextProps.value) {\n      this.setState({validationError: false});\n    }\n  }\n\n  onChange(ev) {\n    if (this.state.validationError) {\n      this.setState({validationError: false});\n    }\n    this.props.onChange(ev);\n  }\n\n  onMount(input) {\n    this.input = input;\n  }\n\n  render() {\n    const showClearButton = this.props.value && this.props.onClear;\n    const {typeUrl} = this.props;\n    const {validationError} = this.state;\n\n    return (<label><FormattedMessage id={this.props.titleId} />\n      <div className={`field ${typeUrl ? \"url\" : \"\"}${validationError ? \" invalid\" : \"\"}`}>\n        {this.props.loading ?\n          <div className=\"loading-container\"><div className=\"loading-animation\" /></div> :\n          showClearButton && <div className=\"icon icon-clear-input\" onClick={this.props.onClear} />}\n        <input type=\"text\"\n          value={this.props.value}\n          ref={this.onMount}\n          onChange={this.onChange}\n          placeholder={this.props.intl.formatMessage({id: this.props.placeholderId})}\n          autoFocus={this.props.shouldFocus}\n          disabled={this.props.loading} />\n        {validationError &&\n          <aside className=\"error-tooltip\">\n            <FormattedMessage id={this.props.errorMessageId} />\n          </aside>}\n      </div>\n    </label>);\n  }\n}\n\nTopSiteFormInput.defaultProps = {\n  showClearButton: false,\n  value: \"\",\n  validationError: false\n};\n","import {actionCreators as ac, actionTypes as at} from \"common/Actions.jsm\";\nimport {FormattedMessage} from \"react-intl\";\nimport React from \"react\";\nimport {TOP_SITES_SOURCE} from \"./TopSitesConstants\";\nimport {TopSiteFormInput} from \"./TopSiteFormInput\";\nimport {TopSiteLink} from \"./TopSite\";\n\nexport class TopSiteForm extends React.PureComponent {\n  constructor(props) {\n    super(props);\n    const {site} = props;\n    this.state = {\n      label: site ? (site.label || site.hostname) : \"\",\n      url: site ? site.url : \"\",\n      validationError: false,\n      customScreenshotUrl: site ? site.customScreenshotURL : \"\",\n      showCustomScreenshotForm: site ? site.customScreenshotURL : false\n    };\n    this.onClearScreenshotInput = this.onClearScreenshotInput.bind(this);\n    this.onLabelChange = this.onLabelChange.bind(this);\n    this.onUrlChange = this.onUrlChange.bind(this);\n    this.onCancelButtonClick = this.onCancelButtonClick.bind(this);\n    this.onClearUrlClick = this.onClearUrlClick.bind(this);\n    this.onDoneButtonClick = this.onDoneButtonClick.bind(this);\n    this.onCustomScreenshotUrlChange = this.onCustomScreenshotUrlChange.bind(this);\n    this.onPreviewButtonClick = this.onPreviewButtonClick.bind(this);\n    this.onEnableScreenshotUrlForm = this.onEnableScreenshotUrlForm.bind(this);\n    this.validateUrl = this.validateUrl.bind(this);\n  }\n\n  onLabelChange(event) {\n    this.setState({\"label\": event.target.value});\n  }\n\n  onUrlChange(event) {\n    this.setState({\n      url: event.target.value,\n      validationError: false\n    });\n  }\n\n  onClearUrlClick() {\n    this.setState({\n      url: \"\",\n      validationError: false\n    });\n  }\n\n  onEnableScreenshotUrlForm() {\n    this.setState({showCustomScreenshotForm: true});\n  }\n\n  _updateCustomScreenshotInput(customScreenshotUrl) {\n    this.setState({\n      customScreenshotUrl,\n      validationError: false\n    });\n    this.props.dispatch({type: at.PREVIEW_REQUEST_CANCEL});\n  }\n\n  onCustomScreenshotUrlChange(event) {\n    this._updateCustomScreenshotInput(event.target.value);\n  }\n\n  onClearScreenshotInput() {\n    this._updateCustomScreenshotInput(\"\");\n  }\n\n  onCancelButtonClick(ev) {\n    ev.preventDefault();\n    this.props.onClose();\n  }\n\n  onDoneButtonClick(ev) {\n    ev.preventDefault();\n\n    if (this.validateForm()) {\n      const site = {url: this.cleanUrl(this.state.url)};\n      const {index} = this.props;\n      if (this.state.label !== \"\") {\n        site.label = this.state.label;\n      }\n\n      if (this.state.customScreenshotUrl) {\n        site.customScreenshotURL = this.cleanUrl(this.state.customScreenshotUrl);\n      } else if (this.props.site && this.props.site.customScreenshotURL) {\n        // Used to flag that previously cached screenshot should be removed\n        site.customScreenshotURL = null;\n      }\n      this.props.dispatch(ac.AlsoToMain({\n        type: at.TOP_SITES_PIN,\n        data: {site, index}\n      }));\n      this.props.dispatch(ac.UserEvent({\n        source: TOP_SITES_SOURCE,\n        event: \"TOP_SITES_EDIT\",\n        action_position: index\n      }));\n\n      this.props.onClose();\n    }\n  }\n\n  onPreviewButtonClick(event) {\n    event.preventDefault();\n    if (this.validateForm()) {\n      this.props.dispatch(ac.AlsoToMain({\n        type: at.PREVIEW_REQUEST,\n        data: {url: this.cleanUrl(this.state.customScreenshotUrl)}\n      }));\n      this.props.dispatch(ac.UserEvent({\n        source: TOP_SITES_SOURCE,\n        event: \"PREVIEW_REQUEST\"\n      }));\n    }\n  }\n\n  cleanUrl(url) {\n    // If we are missing a protocol, prepend http://\n    if (!url.startsWith(\"http:\") && !url.startsWith(\"https:\")) {\n      return `http://${url}`;\n    }\n    return url;\n  }\n\n  _tryParseUrl(url) {\n    try {\n      return new URL(url);\n    } catch (e) {\n      return null;\n    }\n  }\n\n  validateUrl(url) {\n    const validProtocols = [\"http:\", \"https:\"];\n    const urlObj = this._tryParseUrl(url) || this._tryParseUrl(this.cleanUrl(url));\n\n    return urlObj && validProtocols.includes(urlObj.protocol);\n  }\n\n  validateCustomScreenshotUrl() {\n    const {customScreenshotUrl} = this.state;\n    return !customScreenshotUrl || this.validateUrl(customScreenshotUrl);\n  }\n\n  validateForm() {\n    const validate = this.validateUrl(this.state.url) && this.validateCustomScreenshotUrl();\n\n    if (!validate) {\n      this.setState({validationError: true});\n    }\n\n    return validate;\n  }\n\n  _renderCustomScreenshotInput() {\n    const {customScreenshotUrl} = this.state;\n    const requestFailed = this.props.previewResponse === \"\";\n    const validationError = (this.state.validationError && !this.validateCustomScreenshotUrl()) || requestFailed;\n    // Set focus on error if the url field is valid or when the input is first rendered and is empty\n    const shouldFocus = (validationError && this.validateUrl(this.state.url)) || !customScreenshotUrl;\n    const isLoading = this.props.previewResponse === null &&\n      customScreenshotUrl && this.props.previewUrl === this.cleanUrl(customScreenshotUrl);\n\n    if (!this.state.showCustomScreenshotForm) {\n      return (<a className=\"enable-custom-image-input\" onClick={this.onEnableScreenshotUrlForm}>\n        <FormattedMessage id=\"topsites_form_use_image_link\" />\n      </a>);\n    }\n    return (<div className=\"custom-image-input-container\">\n      <TopSiteFormInput\n        errorMessageId={requestFailed ? \"topsites_form_image_validation\" : \"topsites_form_url_validation\"}\n        loading={isLoading}\n        onChange={this.onCustomScreenshotUrlChange}\n        onClear={this.onClearScreenshotInput}\n        shouldFocus={shouldFocus}\n        typeUrl={true}\n        value={customScreenshotUrl}\n        validationError={validationError}\n        titleId=\"topsites_form_image_url_label\"\n        placeholderId=\"topsites_form_url_placeholder\"\n        intl={this.props.intl} />\n    </div>);\n  }\n\n  render() {\n    const {customScreenshotUrl} = this.state;\n    const requestFailed = this.props.previewResponse === \"\";\n    // For UI purposes, editing without an existing link is \"add\"\n    const showAsAdd = !this.props.site;\n    const previous = (this.props.site && this.props.site.customScreenshotURL) || \"\";\n    const changed = customScreenshotUrl && this.cleanUrl(customScreenshotUrl) !== previous;\n    // Preview mode if changes were made to the custom screenshot URL and no preview was received yet\n    // or the request failed\n    const previewMode = changed && !this.props.previewResponse;\n    const previewLink = Object.assign({}, this.props.site);\n    if (this.props.previewResponse) {\n      previewLink.screenshot = this.props.previewResponse;\n      previewLink.customScreenshotURL = this.props.previewUrl;\n    }\n    return (\n      <form className=\"topsite-form\">\n        <div className=\"form-input-container\">\n          <h3 className=\"section-title\">\n            <FormattedMessage id={showAsAdd ? \"topsites_form_add_header\" : \"topsites_form_edit_header\"} />\n          </h3>\n          <div className=\"fields-and-preview\">\n            <div className=\"form-wrapper\">\n              <TopSiteFormInput onChange={this.onLabelChange}\n                value={this.state.label}\n                titleId=\"topsites_form_title_label\"\n                placeholderId=\"topsites_form_title_placeholder\"\n                intl={this.props.intl} />\n              <TopSiteFormInput onChange={this.onUrlChange}\n                shouldFocus={this.state.validationError && !this.validateUrl(this.state.url)}\n                value={this.state.url}\n                onClear={this.onClearUrlClick}\n                validationError={this.state.validationError && !this.validateUrl(this.state.url)}\n                titleId=\"topsites_form_url_label\"\n                typeUrl={true}\n                placeholderId=\"topsites_form_url_placeholder\"\n                errorMessageId=\"topsites_form_url_validation\"\n                intl={this.props.intl} />\n              {this._renderCustomScreenshotInput()}\n            </div>\n            <TopSiteLink link={previewLink}\n              defaultStyle={requestFailed}\n              title={this.state.label} />\n          </div>\n        </div>\n        <section className=\"actions\">\n          <button className=\"cancel\" type=\"button\" onClick={this.onCancelButtonClick}>\n            <FormattedMessage id=\"topsites_form_cancel_button\" />\n          </button>\n          {previewMode ?\n            <button className=\"done preview\" type=\"submit\" onClick={this.onPreviewButtonClick}>\n              <FormattedMessage id=\"topsites_form_preview_button\" />\n            </button> :\n            <button className=\"done\" type=\"submit\" onClick={this.onDoneButtonClick}>\n              <FormattedMessage id={showAsAdd ? \"topsites_form_add_button\" : \"topsites_form_save_button\"} />\n            </button>}\n        </section>\n      </form>\n    );\n  }\n}\n\nTopSiteForm.defaultProps = {\n  site: null,\n  index: -1\n};\n"],"sourceRoot":""}
\ No newline at end of file
--- a/browser/components/newtab/docs/v2-system-addon/data_events.md
+++ b/browser/components/newtab/docs/v2-system-addon/data_events.md
@@ -534,8 +534,25 @@ This reports the user's interaction with
   "addon_version": "20180710100040",
   "impression_id": "{005deed0-e3e4-4c02-a041-17405fd703f6}",
   "locale": "en-US",
   "source": "NEWTAB_FOOTER_BAR",
   "message_id": "some_snippet_id",
   "event": ["CLICK_BUTTION" | "BLOCK"]
 }
 ```
+
+### Targeting error pings
+
+This reports when an error has occurred when parsing/evaluating a JEXL targeting string in a message.
+
+```js
+{
+  "client_id": "n/a",
+  "action": "asrouter_undesired_event",
+  "addon_version": "20180710100040",
+  "impression_id": "{005deed0-e3e4-4c02-a041-17405fd703f6}",
+  "locale": "en-US",
+  "message_id": "some_message_id",
+  "event": "TARGETING_EXPRESSION_ERROR",
+  "value": ["MALFORMED_EXPRESSION" | "OTHER_ERROR"]
+}
+```
--- a/browser/components/newtab/karma.mc.config.js
+++ b/browser/components/newtab/karma.mc.config.js
@@ -135,17 +135,18 @@ module.exports = function(config) {
             include: [
               path.resolve("content-src"),
               path.resolve("lib"),
               path.resolve("common")
             ],
             exclude: [
               path.resolve("test"),
               path.resolve("vendor"),
-              path.resolve("lib/ASRouterTargeting.jsm")
+              path.resolve("lib/ASRouterTargeting.jsm"),
+              path.resolve("lib/ASRouterTriggerListeners.jsm")
             ]
           }
         ]
       }
     },
     // Silences some overly-verbose logging of individual module builds
     webpackMiddleware: {noInfo: true}
   });
--- a/browser/components/newtab/lib/ASRouter.jsm
+++ b/browser/components/newtab/lib/ASRouter.jsm
@@ -1,21 +1,24 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+ChromeUtils.import("resource://gre/modules/AddonManager.jsm");
 XPCOMUtils.defineLazyGlobalGetters(this, ["fetch"]);
-const {ASRouterActions: ra} = ChromeUtils.import("resource://activity-stream/common/Actions.jsm", {});
+const {ASRouterActions: ra, actionCreators: ac} = ChromeUtils.import("resource://activity-stream/common/Actions.jsm", {});
 const {OnboardingMessageProvider} = ChromeUtils.import("resource://activity-stream/lib/OnboardingMessageProvider.jsm", {});
 
 ChromeUtils.defineModuleGetter(this, "ASRouterTargeting",
   "resource://activity-stream/lib/ASRouterTargeting.jsm");
+ChromeUtils.defineModuleGetter(this, "ASRouterTriggerListeners",
+  "resource://activity-stream/lib/ASRouterTriggerListeners.jsm");
 
 const INCOMING_MESSAGE_NAME = "ASRouter:child-to-parent";
 const OUTGOING_MESSAGE_NAME = "ASRouter:parent-to-child";
 const ONE_HOUR_IN_MS = 60 * 60 * 1000;
 const SNIPPETS_ENDPOINT_PREF = "browser.newtabpage.activity-stream.asrouter.snippetsUrl";
 // List of hosts for endpoints that serve router messages.
 // Key is allowed host, value is a name for the endpoint host.
 const DEFAULT_WHITELIST_HOSTS = {
@@ -100,16 +103,26 @@ const MessageLoaderUtils = {
    * @param {string} provider.type An AS Router provider type (defaults to "local")
    * @returns {obj} Returns an object with .messages (an array of messages) and .lastUpdated (the time the messages were updated)
    */
   async loadMessagesForProvider(provider) {
     const messages = (await this._getMessageLoader(provider)(provider))
         .map(msg => ({...msg, provider: provider.id}));
     const lastUpdated = Date.now();
     return {messages, lastUpdated};
+  },
+
+  async installAddonFromURL(browser, url) {
+    try {
+      const aUri = Services.io.newURI(url);
+      const systemPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
+      const install = await AddonManager.getInstallForURL(aUri.spec, "application/x-xpinstall");
+      await AddonManager.installAddonFromWebpage("application/x-xpinstall", browser,
+        systemPrincipal, install);
+    } catch (e) {}
   }
 };
 
 this.MessageLoaderUtils = MessageLoaderUtils;
 
 /**
  * @class _ASRouter - Keeps track of all messages, UI surfaces, and
  * handles blocking, rotation, etc. Inspecting ASRouter.state will
@@ -117,27 +130,30 @@ this.MessageLoaderUtils = MessageLoaderU
  *
  * Note: This is written as a constructor rather than just a plain object
  * so that it can be more easily unit tested.
  */
 class _ASRouter {
   constructor(initialState = {}) {
     this.initialized = false;
     this.messageChannel = null;
+    this.dispatchToAS = null;
     this._storage = null;
     this._resetInitialization();
     this._state = {
       lastMessageId: null,
       providers: [],
       blockList: [],
       impressions: {},
       messages: [],
       ...initialState
     };
+    this._triggerHandler = this._triggerHandler.bind(this);
     this.onMessage = this.onMessage.bind(this);
+    this._handleTargetingError = this._handleTargetingError.bind(this);
   }
 
   _addASRouterPrefListener() {
     this.state.providers.forEach(provider => {
       if (provider.endpointPref) {
         Services.prefs.addObserver(provider.endpointPref, this);
       }
     });
@@ -207,54 +223,77 @@ class _ASRouter {
           newState.messages = [...newState.messages, ...messages];
         } else {
           // Skip updating this provider's messages if no update is required
           let messages = this.state.messages.filter(msg => msg.provider === provider.id);
           newState.providers.push(provider);
           newState.messages = [...newState.messages, ...messages];
         }
       }
-      await this.setState(newState);
+
+      // Some messages have triggers that require us to initalise trigger listeners
+      const unseenListeners = new Set(ASRouterTriggerListeners.keys());
+      for (const {trigger} of newState.messages) {
+        if (trigger && ASRouterTriggerListeners.has(trigger.id)) {
+          ASRouterTriggerListeners.get(trigger.id).init(this._triggerHandler, trigger.params);
+          unseenListeners.delete(trigger.id);
+        }
+      }
+      // We don't need these listeners, but they may have previously been
+      // initialised, so uninitialise them
+      for (const triggerID of unseenListeners) {
+        ASRouterTriggerListeners.get(triggerID).uninit();
+      }
+
+      // We don't want to cache preview endpoints, remove them after messages are fetched
+      await this.setState(this._removePreviewEndpoint(newState));
       await this.cleanupImpressions();
     }
   }
 
   /**
    * init - Initializes the MessageRouter.
    * It is ready when it has been connected to a RemotePageManager instance.
    *
    * @param {RemotePageManager} channel a RemotePageManager instance
    * @param {obj} storage an AS storage instance
+   * @param {func} dispatchToAS dispatch an action the main AS Store
    * @memberof _ASRouter
    */
-  async init(channel, storage) {
+  async init(channel, storage, dispatchToAS) {
     this.messageChannel = channel;
     this.messageChannel.addMessageListener(INCOMING_MESSAGE_NAME, this.onMessage);
     this._addASRouterPrefListener();
     this._storage = storage;
     this.WHITELIST_HOSTS = this._loadSnippetsWhitelistHosts();
+    this.dispatchToAS = dispatchToAS;
 
     const blockList = await this._storage.get("blockList") || [];
     const impressions = await this._storage.get("impressions") || {};
     await this.setState({blockList, impressions});
     await this.loadMessagesFromAllProviders();
 
     // sets .initialized to true and resolves .waitForInitialized promise
     this._finishInitializing();
   }
 
   uninit() {
     this.messageChannel.sendAsyncMessage(OUTGOING_MESSAGE_NAME, {type: "CLEAR_ALL"});
     this.messageChannel.removeMessageListener(INCOMING_MESSAGE_NAME, this.onMessage);
     this.messageChannel = null;
+    this.dispatchToAS = null;
     this.state.providers.forEach(provider => {
       if (provider.endpointPref) {
         Services.prefs.removeObserver(provider.endpointPref, this);
       }
     });
+    // Uninitialise all trigger listeners
+    for (const listener of ASRouterTriggerListeners.values()) {
+      listener.uninit();
+    }
     this._resetInitialization();
   }
 
   setState(callbackOrObj) {
     const newState = (typeof callbackOrObj === "function") ? callbackOrObj(this.state) : callbackOrObj;
     this._state = {...this.state, ...newState};
     return new Promise(resolve => {
       this._onStateChanged(this.state);
@@ -265,36 +304,41 @@ class _ASRouter {
   getMessageById(id) {
     return this.state.messages.find(message => message.id === id);
   }
 
   _onStateChanged(state) {
     this.messageChannel.sendAsyncMessage(OUTGOING_MESSAGE_NAME, {type: "ADMIN_SET_STATE", data: state});
   }
 
-  async _findMessage(messages, target, data = {}) {
-    let message;
-    const {trigger} = data;
+  _handleTargetingError(type, error, message) {
+    Cu.reportError(error);
+    if (this.dispatchToAS) {
+      this.dispatchToAS(ac.ASRouterUserEvent({
+        message_id: message.id,
+        action: "asrouter_undesired_event",
+        event: "TARGETING_EXPRESSION_ERROR",
+        value: type
+      }));
+    }
+  }
+
+  _findMessage(messages, target, trigger) {
     const {impressions} = this.state;
-    if (trigger) {
-      // Find a message that matches the targeting context as well as the trigger context
-      message = await ASRouterTargeting.findMatchingMessageWithTrigger({messages, impressions, target, trigger});
-    }
-    if (!message) {
-      // If there was no messages with this trigger, try finding a regular targeted message
-      message = await ASRouterTargeting.findMatchingMessage({messages, impressions, target});
-    }
-    return message;
+
+     // Find a message that matches the targeting context as well as the trigger context (if one is provided)
+     // If no trigger is provided, we should find a message WITHOUT a trigger property defined.
+    return ASRouterTargeting.findMatchingMessage({messages, impressions, trigger, onError: this._handleTargetingError});
   }
 
   _orderBundle(bundle) {
     return bundle.sort((a, b) => a.order - b.order);
   }
 
-  async _getBundledMessages(originalMessage, target, data, force = false) {
+  async _getBundledMessages(originalMessage, target, trigger, force = false) {
     let result = [{content: originalMessage.content, id: originalMessage.id, order: originalMessage.order || 0}];
 
     // First, find all messages of same template. These are potential matching targeting candidates
     let bundledMessagesOfSameTemplate = this._getUnblockedMessages()
                                           .filter(msg => msg.bundled && msg.template === originalMessage.template && msg.id !== originalMessage.id);
 
     if (force) {
       // Forcefully show the messages without targeting matching - this is for about:newtab#asrouter to show the messages
@@ -303,17 +347,17 @@ class _ASRouter {
         // Stop once we have enough messages to fill a bundle
         if (result.length === originalMessage.bundled) {
           break;
         }
       }
     } else {
       while (bundledMessagesOfSameTemplate.length) {
         // Find a message that matches the targeting context - or break if there are no matching messages
-        const message = await this._findMessage(bundledMessagesOfSameTemplate, target, data);
+        const message = await this._findMessage(bundledMessagesOfSameTemplate, target, trigger);
         if (!message) {
           /* istanbul ignore next */ // Code coverage in mochitests
           break;
         }
         // Only copy the content of the message (that's what the UI cares about)
         // Also delete the message we picked so we don't pick it again
         result.push({content: message.content, id: message.id, order: message.order || 0});
         bundledMessagesOfSameTemplate.splice(bundledMessagesOfSameTemplate.findIndex(msg => msg.id === message.id), 1);
@@ -332,21 +376,21 @@ class _ASRouter {
     return {bundle: this._orderBundle(result), provider: originalMessage.provider, template: originalMessage.template};
   }
 
   _getUnblockedMessages() {
     let {state} = this;
     return state.messages.filter(item => !state.blockList.includes(item.id));
   }
 
-  async _sendMessageToTarget(message, target, data, force = false) {
+  async _sendMessageToTarget(message, target, trigger, force = false) {
     let bundledMessages;
     // If this message needs to be bundled with other messages of the same template, find them and bundle them together
     if (message && message.bundled) {
-      bundledMessages = await this._getBundledMessages(message, target, data, force);
+      bundledMessages = await this._getBundledMessages(message, target, trigger, force);
     }
     if (message && !message.bundled) {
       // If we only need to send 1 message, send the message
       target.sendAsyncMessage(OUTGOING_MESSAGE_NAME, {type: "SET_MESSAGE", data: message});
     } else if (bundledMessages) {
       // If the message we want is bundled with other messages, send the entire bundle
       target.sendAsyncMessage(OUTGOING_MESSAGE_NAME, {type: "SET_BUNDLED_MESSAGES", data: bundledMessages});
     } else {
@@ -418,30 +462,37 @@ class _ASRouter {
       });
       if (needsUpdate) {
         this._storage.set("impressions", impressions);
       }
       return {impressions};
     });
   }
 
-  async sendNextMessage(target, action = {}) {
-    let {data} = action;
+  async sendNextMessage(target, trigger) {
     const msgs = this._getUnblockedMessages();
     let message = null;
     const previewMsgs = this.state.messages.filter(item => item.provider === "preview");
     // Always send preview messages when available
     if (previewMsgs.length) {
       [message] = previewMsgs;
     } else {
-      message = await this._findMessage(msgs, target, data);
+      message = await this._findMessage(msgs, target, trigger);
     }
 
-    await this.setState({lastMessageId: message ? message.id : null});
-    await this._sendMessageToTarget(message, target, data);
+    if (previewMsgs.length) {
+      // We don't want to cache preview messages, remove them after we selected the message to show
+      await this.setState(state => ({
+        lastMessageId: message.id,
+        messages: state.messages.filter(m => m.id !== message.id)
+      }));
+    } else {
+      await this.setState({lastMessageId: message ? message.id : null});
+    }
+    await this._sendMessageToTarget(message, target, trigger);
   }
 
   async setMessageById(id, target, force = true, action = {}) {
     await this.setState({lastMessageId: id});
     const newMessage = this.getMessageById(id);
 
     await this._sendMessageToTarget(newMessage, target, force, action.data);
   }
@@ -506,20 +557,29 @@ class _ASRouter {
     // `preview` so that the updateCycle is 0
     return additionalHosts.reduce((whitelist_hosts, host) => {
       whitelist_hosts[host] = "preview";
       Services.console.logStringMessage(`Adding ${host} to whitelist hosts.`);
       return whitelist_hosts;
     }, {...DEFAULT_WHITELIST_HOSTS});
   }
 
+  // To be passed to ASRouterTriggerListeners
+  async _triggerHandler(target, trigger) {
+    await this.onMessage({target, data: {type: "TRIGGER", trigger}});
+  }
+
+  _removePreviewEndpoint(state) {
+    state.providers = state.providers.filter(p => p.id !== "preview");
+    return state;
+  }
+
   async _addPreviewEndpoint(url) {
     const providers = [...this.state.providers];
     if (this._validPreviewEndpoint(url) && !providers.find(p => p.url === url)) {
-      // Set update cycle to 0 to fetch new content on every page refresh
       providers.push({id: "preview", type: "remote", url, updateCycleInMs: 0});
       await this.setState({providers});
     }
   }
 
   async onMessage({data: action, target}) {
     switch (action.type) {
       case "CONNECT_UI_REQUEST":
@@ -527,17 +587,17 @@ class _ASRouter {
       case "TRIGGER":
         // Wait for our initial message loading to be done before responding to any UI requests
         await this.waitForInitialized;
         if (action.data && action.data.endpoint) {
           await this._addPreviewEndpoint(action.data.endpoint.url);
         }
         // Check if any updates are needed first
         await this.loadMessagesFromAllProviders();
-        await this.sendNextMessage(target, action);
+        await this.sendNextMessage(target, (action.data && action.data.trigger) || {});
         break;
       case ra.OPEN_PRIVATE_BROWSER_WINDOW:
         // Forcefully open about:privatebrowsing
         target.browser.ownerGlobal.OpenBrowserWindow({private: true});
         break;
       case ra.OPEN_URL:
         this.openLinkIn(action.data.button_action_params, target, {isPrivate: false, where: "tabshifted"});
         break;
@@ -579,16 +639,19 @@ class _ASRouter {
           await this.loadMessagesFromAllProviders();
         } else {
           target.sendAsyncMessage(OUTGOING_MESSAGE_NAME, {type: "ADMIN_SET_STATE", data: this.state});
         }
         break;
       case "IMPRESSION":
         this.addImpression(action.data);
         break;
+      case ra.INSTALL_ADDON_FROM_URL:
+        await MessageLoaderUtils.installAddonFromURL(target.browser, action.data.url);
+        break;
     }
   }
 }
 this._ASRouter = _ASRouter;
 
 /**
  * ASRouter - singleton instance of _ASRouter that controls all messages
  * in the new tab page.
--- a/browser/components/newtab/lib/ASRouterFeed.jsm
+++ b/browser/components/newtab/lib/ASRouterFeed.jsm
@@ -9,18 +9,21 @@ const ONBOARDING_FINISHED_PREF = "browse
  * store so that it can use the RemotePageManager.
  */
 class ASRouterFeed {
   constructor(options = {}) {
     this.router = options.router || ASRouter;
   }
 
   async enable() {
-    await this.router.init(this.store._messageChannel.channel,
-      this.store.dbStorage.getDbTable("snippets"));
+    await this.router.init(
+      this.store._messageChannel.channel,
+      this.store.dbStorage.getDbTable("snippets"),
+      this.store.dispatch
+    );
     // Disable onboarding
     Services.prefs.setBoolPref(ONBOARDING_FINISHED_PREF, true);
   }
 
   disable() {
     if (this.router.initialized) {
       this.router.uninit();
       // Re-enable onboarding
--- a/browser/components/newtab/lib/ASRouterTargeting.jsm
+++ b/browser/components/newtab/lib/ASRouterTargeting.jsm
@@ -6,16 +6,18 @@ ChromeUtils.defineModuleGetter(this, "Ne
   "resource://gre/modules/NewTabUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "ProfileAge",
   "resource://gre/modules/ProfileAge.jsm");
 ChromeUtils.defineModuleGetter(this, "ShellService",
   "resource:///modules/ShellService.jsm");
 
 const FXA_USERNAME_PREF = "services.sync.username";
 const ONBOARDING_EXPERIMENT_PREF = "browser.newtabpage.activity-stream.asrouterOnboardingCohort";
+const MOZ_JEXL_FILEPATH = "mozjexl";
+
 // Max possible cap for any message
 const MAX_LIFETIME_CAP = 100;
 const ONE_DAY = 24 * 60 * 60 * 1000;
 
 const {activityStreamProvider: asProvider} = NewTabUtils;
 
 const FRECENT_SITES_UPDATE_INTERVAL = 6 * 60 * 60 * 1000; // Six hours
 const FRECENT_SITES_IGNORE_BLOCKED = true;
@@ -136,20 +138,34 @@ const TargetingGetters = {
   get isInExperimentCohort() {
     return Services.prefs.getIntPref(ONBOARDING_EXPERIMENT_PREF, 0);
   }
 };
 
 this.ASRouterTargeting = {
   Environment: TargetingGetters,
 
-  isMatch(filterExpression, target, context = this.Environment) {
+  ERROR_TYPES: {
+    MALFORMED_EXPRESSION: "MALFORMED_EXPRESSION",
+    OTHER_ERROR: "OTHER_ERROR"
+  },
+
+  isMatch(filterExpression, context = this.Environment) {
     return FilterExpressions.eval(filterExpression, context);
   },
 
+  isTriggerMatch(trigger = {}, candidateMessageTrigger = {}) {
+    if (trigger.id !== candidateMessageTrigger.id) {
+      return false;
+    } else if (!candidateMessageTrigger.params) {
+      return true;
+    }
+    return candidateMessageTrigger.params.includes(trigger.param);
+  },
+
   isBelowFrequencyCap(message, impressionsForMessage) {
     if (!message.frequency || !impressionsForMessage || !impressionsForMessage.length) {
       return true;
     }
 
     if (
       message.frequency.lifetime &&
       impressionsForMessage.length >= Math.min(message.frequency.lifetime, MAX_LIFETIME_CAP)
@@ -170,53 +186,67 @@ this.ASRouterTargeting = {
         }
       }
     }
 
     return true;
   },
 
   /**
+   * checkMessageTargeting - Checks is a message's targeting parameters are satisfied
+   *
+   * @param {*} message An AS router message
+   * @param {obj} context A FilterExpression context
+   * @param {func} onError A function to handle errors (takes two params; error, message)
+   * @returns
+   */
+  async checkMessageTargeting(message, context, onError) {
+    // If no targeting is specified,
+    if (!message.targeting) {
+      return true;
+    }
+    let result;
+    try {
+      result = await this.isMatch(message.targeting, context);
+    } catch (error) {
+      Cu.reportError(error);
+      if (onError) {
+        const type = error.fileName.includes(MOZ_JEXL_FILEPATH) ? this.ERROR_TYPES.MALFORMED_EXPRESSION : this.ERROR_TYPES.OTHER_ERROR;
+        onError(type, error, message);
+      }
+      result = false;
+    }
+    return result;
+  },
+
+  /**
    * findMatchingMessage - Given an array of messages, returns one message
    *                       whos targeting expression evaluates to true
    *
    * @param {Array} messages An array of AS router messages
+   * @param {obj} impressions An object containing impressions, where keys are message ids
+   * @param {trigger} string A trigger expression if a message for that trigger is desired
    * @param {obj|null} context A FilterExpression context. Defaults to TargetingGetters above.
    * @returns {obj} an AS router message
    */
-  async findMatchingMessage({messages, impressions = {}, target, context}) {
+  async findMatchingMessage({messages, impressions = {}, trigger, context, onError}) {
     const arrayOfItems = [...messages];
     let match;
     let candidate;
 
     while (!match && arrayOfItems.length) {
       candidate = removeRandomItemFromArray(arrayOfItems);
+
       if (
         candidate &&
+        (trigger ? this.isTriggerMatch(trigger, candidate.trigger) : !candidate.trigger) &&
         this.isBelowFrequencyCap(candidate, impressions[candidate.id]) &&
-        !candidate.trigger &&
-        (!candidate.targeting || await this.isMatch(candidate.targeting, target, context))
-      ) {
-        match = candidate;
-      }
-    }
-    return match;
-  },
-
-  async findMatchingMessageWithTrigger({messages, impressions = {}, target, trigger, context}) {
-    const arrayOfItems = [...messages];
-    let match;
-    let candidate;
-    while (!match && arrayOfItems.length) {
-      candidate = removeRandomItemFromArray(arrayOfItems);
-      if (
-        candidate &&
-        this.isBelowFrequencyCap(candidate, impressions[candidate.id]) &&
-        candidate.trigger === trigger &&
-        (!candidate.targeting || await this.isMatch(candidate.targeting, target, context))
+        // If a trigger expression was passed to this function, the message should match it.
+        // Otherwise, we should choose a message with no trigger property (i.e. a message that can show up at any time)
+        await this.checkMessageTargeting(candidate, context, onError)
       ) {
         match = candidate;
       }
     }
     return match;
   }
 };
 
new file mode 100644
--- /dev/null
+++ b/browser/components/newtab/lib/ASRouterTriggerListeners.jsm
@@ -0,0 +1,118 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+"use strict";
+
+ChromeUtils.import("resource://gre/modules/Services.jsm");
+
+ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils",
+  "resource://gre/modules/PrivateBrowsingUtils.jsm");
+
+/**
+ * A Map from trigger IDs to singleton trigger listeners. Each listener must
+ * have idempotent `init` and `uninit` methods.
+ */
+this.ASRouterTriggerListeners = new Map([
+
+  /**
+   * Attach listeners to every browser window to detect location changes, and
+   * notify the trigger handler whenever we navigate to a URL with a hostname
+   * we're looking for.
+   */
+  ["openURL", {
+    _initialized: false,
+    _triggerHandler: null,
+    _hosts: null,
+
+    /*
+     * If the listener is already initialised, `init` will replace the trigger
+     * handler and add any new hosts to `this._hosts`.
+     */
+    init(triggerHandler, hosts = []) {
+      if (!this._initialized) {
+        this.onLocationChange = this.onLocationChange.bind(this);
+
+        // Listen for new windows being opened
+        Services.ww.registerNotification(this);
+
+        // Add listeners to all existing browser windows
+        const winEnum = Services.wm.getEnumerator("navigator:browser");
+        while (winEnum.hasMoreElements()) {
+          let win = winEnum.getNext();
+          if (win.closed || PrivateBrowsingUtils.isWindowPrivate(win)) {
+            continue;
+          }
+          win.gBrowser.addTabsProgressListener(this);
+        }
+
+        this._initialized = true;
+      }
+      this._triggerHandler = triggerHandler;
+      if (this._hosts) {
+        hosts.forEach(h => this._hosts.add(h));
+      } else {
+        this._hosts = new Set(hosts); // Clone the hosts to avoid unexpected behaviour
+      }
+    },
+
+    uninit() {
+      if (this._initialized) {
+        Services.ww.unregisterNotification(this);
+
+        const winEnum = Services.wm.getEnumerator("navigator:browser");
+        while (winEnum.hasMoreElements()) {
+          let win = winEnum.getNext();
+          if (win.closed || PrivateBrowsingUtils.isWindowPrivate(win)) {
+            continue;
+          }
+
+          win.gBrowser.removeTabsProgressListener(this);
+        }
+
+        this._initialized = false;
+        this._triggerHandler = null;
+        this._hosts = null;
+      }
+    },
+
+    onLocationChange(aBrowser, aWebProgress, aRequest, aLocationURI, aFlags) {
+      const location = aLocationURI ? aLocationURI.spec : "";
+      if (location && aWebProgress.isTopLevel) {
+        try {
+          const host = (new URL(location)).hostname;
+          if (this._hosts.has(host)) {
+            this._triggerHandler(aBrowser.messageManager, {id: "openURL", param: host});
+          }
+        } catch (e) {} // Couldn't parse location URL
+      }
+    },
+
+    observe(win, topic, data) {
+      let onLoad;
+
+      switch (topic) {
+        case "domwindowopened":
+          if (!(win instanceof Ci.nsIDOMWindow) || win.closed || PrivateBrowsingUtils.isWindowPrivate(win)) {
+            break;
+          }
+          onLoad = () => {
+            // Ignore non-browser windows.
+            if (win.document.documentElement.getAttribute("windowtype") === "navigator:browser") {
+              win.gBrowser.addTabsProgressListener(this);
+            }
+          };
+          win.addEventListener("load", onLoad, {once: true});
+          break;
+
+        case "domwindowclosed":
+          if ((win instanceof Ci.nsIDOMWindow) &&
+              win.document.documentElement.getAttribute("windowtype") === "navigator:browser") {
+            win.gBrowser.removeTabsProgressListener(this);
+          }
+          break;
+      }
+    }
+  }]
+]);
+
+const EXPORTED_SYMBOLS = ["ASRouterTriggerListeners"];
--- a/browser/components/newtab/lib/ActivityStream.jsm
+++ b/browser/components/newtab/lib/ActivityStream.jsm
@@ -148,16 +148,20 @@ const PREFS_CONFIG = new Map([
   ["section.topstories.rows", {
     title: "Number of rows of Top Stories to display",
     value: 1
   }],
   ["sectionOrder", {
     title: "The rendering order for the sections",
     value: "topsites,topstories,highlights"
   }],
+  ["improvesearch.noDefaultSearchTile", {
+    title: "Experiment to remove tiles that are the same as the default search",
+    value: false
+  }],
   ["asrouterExperimentEnabled", {
     title: "Is the message center experiment on?",
     value: false
   }],
   ["asrouterOnboardingCohort", {
     title: "What cohort is the user in?",
     value: 0
   }],
--- a/browser/components/newtab/lib/OnboardingMessageProvider.jsm
+++ b/browser/components/newtab/lib/OnboardingMessageProvider.jsm
@@ -11,64 +11,64 @@ const ONBOARDING_MESSAGES = [
     order: 2,
     content: {
       title: "Private Browsing",
       text: "Browse by yourself. Private Browsing with Tracking Protection blocks online trackers that follow you around the web.",
       icon: "privatebrowsing",
       button_label: "Try It Now",
       button_action: "OPEN_PRIVATE_BROWSER_WINDOW"
     },
-    trigger: "firstRun"
+    trigger: {id: "firstRun"}
   },
   {
     id: "ONBOARDING_2",
     template: "onboarding",
     bundled: 3,
     order: 3,
     content: {
       title: "Screenshots",
       text: "Take, save and share screenshots - without leaving Firefox. Capture a region or an entire page as you browse. Then save to the web for easy access and sharing.",
       icon: "screenshots",
       button_label: "Try It Now",
       button_action: "OPEN_URL",
       button_action_params: "https://screenshots.firefox.com/#tour"
     },
-    trigger: "firstRun"
+    trigger: {id: "firstRun"}
   },
   {
     id: "ONBOARDING_3",
     template: "onboarding",
     bundled: 3,
     order: 1,
     content: {
       title: "Add-ons",
       text: "Add even more features that make Firefox work harder for you. Compare prices, check the weather or express your personality with a custom theme.",
       icon: "addons",
       button_label: "Try It Now",
       button_action: "OPEN_ABOUT_PAGE",
       button_action_params: "addons"
     },
     targeting: "isInExperimentCohort == 1",
-    trigger: "firstRun"
+    trigger: {id: "firstRun"}
   },
   {
     id: "ONBOARDING_4",
     template: "onboarding",
     bundled: 3,
     order: 1,
     content: {
       title: "Block Ads with Ghostery",
       text: "Browse faster, smarter, or safer with extensions like Ghostery, which lets you block annoying ads.",
       icon: "gift",
       button_label: "Try It Now",
       button_action: "OPEN_URL",
       button_action_params: "https://addons.mozilla.org/en-US/firefox/addon/ghostery/"
     },
     targeting: "isInExperimentCohort == 2",
-    trigger: "firstRun"
+    trigger: {id: "firstRun"}
   }
 ];
 
 const OnboardingMessageProvider = {
   getMessages() {
     return ONBOARDING_MESSAGES;
   }
 };
--- a/browser/components/newtab/lib/TopSitesFeed.jsm
+++ b/browser/components/newtab/lib/TopSitesFeed.jsm
@@ -1,14 +1,14 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
-ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const {actionCreators: ac, actionTypes: at} = ChromeUtils.import("resource://activity-stream/common/Actions.jsm", {});
 const {TippyTopProvider} = ChromeUtils.import("resource://activity-stream/lib/TippyTopProvider.jsm", {});
 const {insertPinned, TOP_SITES_MAX_SITES_PER_ROW} = ChromeUtils.import("resource://activity-stream/common/Reducers.jsm", {});
 const {Dedupe} = ChromeUtils.import("resource://activity-stream/common/Dedupe.jsm", {});
 const {shortURL} = ChromeUtils.import("resource://activity-stream/lib/ShortURL.jsm", {});
 const {getDefaultOptions} = ChromeUtils.import("resource://activity-stream/lib/ActivityStreamStorage.jsm", {});
 
@@ -27,16 +27,41 @@ const DEFAULT_SITES_PREF = "default.site
 const DEFAULT_TOP_SITES = [];
 const FRECENCY_THRESHOLD = 100 + 1; // 1 visit (skip first-run/one-time pages)
 const MIN_FAVICON_SIZE = 96;
 const CACHED_LINK_PROPS_TO_MIGRATE = ["screenshot", "customScreenshot"];
 const PINNED_FAVICON_PROPS_TO_MIGRATE = ["favicon", "faviconRef", "faviconSize"];
 const SECTION_ID = "topsites";
 const ROWS_PREF = "topSitesRows";
 
+// Search experiment stuff
+const NO_DEFAULT_SEARCH_TILE_EXP_PREF = "improvesearch.noDefaultSearchTile";
+const SEARCH_HOST_FILTERS = [
+  {hostname: "google", identifierPattern: /^google/},
+  {hostname: "amazon", identifierPattern: /^amazon/}
+];
+
+/**
+ * isLinkDefaultSearch - does a given hostname match the user's default search engine?
+ *
+ * @param {string} hostname a top site hostname, such as "amazon" or "foo"
+ * @returns {bool}
+ */
+function isLinkDefaultSearch(hostname) {
+  for (const searchProvider of SEARCH_HOST_FILTERS) {
+    if (
+      hostname === searchProvider.hostname &&
+      String(Services.search.defaultEngine.identifier).match(searchProvider.identifierPattern)
+    ) {
+      return true;
+    }
+  }
+  return false;
+}
+
 this.TopSitesFeed = class TopSitesFeed {
   constructor() {
     this._tippyTopProvider = new TippyTopProvider();
     this.dedupe = new Dedupe(this._dedupeKey);
     this.frecentCache = new LinksCache(NewTabUtils.activityStreamLinks,
       "getTopSites", CACHED_LINK_PROPS_TO_MIGRATE, (oldOptions, newOptions) =>
         // Refresh if no old options or requesting more items
         !(oldOptions.numItems >= newOptions.numItems));
@@ -45,20 +70,30 @@ this.TopSitesFeed = class TopSitesFeed {
     PageThumbs.addExpirationFilter(this);
   }
 
   init() {
     // If the feed was previously disabled PREFS_INITIAL_VALUES was never received
     this.refreshDefaults(this.store.getState().Prefs.values[DEFAULT_SITES_PREF]);
     this._storage = this.store.dbStorage.getDbTable("sectionPrefs");
     this.refresh({broadcast: true});
+    Services.obs.addObserver(this, "browser-search-engine-modified");
   }
 
   uninit() {
     PageThumbs.removeExpirationFilter(this);
+    Services.obs.removeObserver(this, "browser-search-engine-modified");
+  }
+
+  observe(subj, topic, data) {
+    // We should update the current top sites if the search engine has been changed since
+    // the search engine that gets filtered out of top sites has changed.
+    if (topic === "browser-search-engine-modified" && data === "engine-default" && this.store.getState().Prefs.values[NO_DEFAULT_SEARCH_TILE_EXP_PREF]) {
+      this.refresh({broadcast: true});
+    }
   }
 
   _dedupeKey(site) {
     return site && site.hostname;
   }
 
   refreshDefaults(sites) {
     // Clear out the array of any previous defaults
@@ -84,25 +119,42 @@ this.TopSitesFeed = class TopSitesFeed {
       if (site.customScreenshotURL) {
         acc.push(site.customScreenshotURL);
       }
       return acc;
     }, []));
   }
 
   async getLinksWithDefaults() {
+    const isExperimentOn = this.store.getState().Prefs.values[NO_DEFAULT_SEARCH_TILE_EXP_PREF];
     const numItems = this.store.getState().Prefs.values[ROWS_PREF] * TOP_SITES_MAX_SITES_PER_ROW;
+
+    // Get all frecent sites from history
     const frecent = (await this.frecentCache.request({
       numItems,
       topsiteFrecency: FRECENCY_THRESHOLD
-    })).map(link => Object.assign({}, link, {hostname: shortURL(link)}));
+    }))
+    .reduce((validLinks, link) => {
+      const hostname = shortURL(link);
+      if (!(isExperimentOn && isLinkDefaultSearch(hostname))) {
+        validLinks.push({...link, hostname});
+      }
+      return validLinks;
+    }, []);
 
     // Remove any defaults that have been blocked
-    const notBlockedDefaultSites = DEFAULT_TOP_SITES.filter(link =>
-      !NewTabUtils.blockedLinks.isBlocked({url: link.url}));
+    const notBlockedDefaultSites = DEFAULT_TOP_SITES
+      .filter(link => {
+        if (NewTabUtils.blockedLinks.isBlocked({url: link.url})) {
+          return false;
+        } else if (isExperimentOn && isLinkDefaultSearch(link.hostname)) {
+          return false;
+        }
+        return true;
+      });
 
     // Get pinned links augmented with desired properties
     const plainPinned = await this.pinnedCache.request();
     const pinned = await Promise.all(plainPinned.map(async link => {
       if (!link) {
         return link;
       }
 
@@ -413,17 +465,17 @@ this.TopSitesFeed = class TopSitesFeed {
       case at.PLACES_LINK_BLOCKED:
         this.frecentCache.expire();
         this.pinnedCache.expire();
         this.refresh({broadcast: true});
         break;
       case at.PREF_CHANGED:
         if (action.data.name === DEFAULT_SITES_PREF) {
           this.refreshDefaults(action.data.value);
-        } else if (action.data.name === ROWS_PREF) {
+        } else if ([ROWS_PREF, NO_DEFAULT_SEARCH_TILE_EXP_PREF].includes(action.data.name)) {
           this.refresh({broadcast: true});
         }
         break;
       case at.UPDATE_SECTION_PREFS:
         if (action.data.id === SECTION_ID) {
           this.updateSectionPrefs(action.data.value);
         }
         break;
--- a/browser/components/newtab/locales/cak/strings.properties
+++ b/browser/components/newtab/locales/cak/strings.properties
@@ -89,17 +89,17 @@ section_disclaimer_topstories_buttontext=Ütz, xno' pa nuwi'
 # in English, while "Home" should be localized matching the about:preferences
 # sidebar mozilla-central string for the panel that has preferences related to
 # what is shown for the homepage, new windows, and new tabs.
 prefs_home_header=Etamab'äl pa ri Rutikirib'al Firefox
 prefs_home_description=Tacha' achike etamab'äl nawajo' pa ri Rutikirib'al Firefox ruwäch.
 # LOCALIZATION NOTE (prefs_section_rows_option): This is a semi-colon list of
 # plural forms used in a drop down of multiple row options (1 row, 2 rows).
 # See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
-prefs_section_rows_option={num} cholaj:{num} taq cholaj
+prefs_section_rows_option={num} cholaj;{num} taq cholaj
 prefs_search_header=Ajk'amaya'l Kanoxïk
 prefs_topsites_description=Taq ruxaq yalan ye'atz'ët
 prefs_topstories_description2=Nïm rupam chijun ri ajk'amaya'l, ichinan awuma rat
 prefs_topstories_options_sponsored_label=To'on taq B'anob'äl
 prefs_topstories_sponsored_learn_more=Tetamäx ch'aqa' chik
 prefs_highlights_description=Jun rucha'onem ruxaq, ri xayäk o xatz'ët
 prefs_highlights_options_visited_label=Taq Ruxaq Etz'eton
 prefs_highlights_options_download_label=K'a B'a' Keqasäx
--- a/browser/components/newtab/locales/cy/strings.properties
+++ b/browser/components/newtab/locales/cy/strings.properties
@@ -182,17 +182,17 @@ section_menu_action_privacy_notice=Hysby
 firstrun_title=Mynd â Firefox gyda Chi
 firstrun_content=Cewch eich nodau tudalen, hanes, cyfrineiriau a gosodiadau eraill ar eich holl ddyfeisiau.
 firstrun_learn_more_link=Dysgu rhagor am Gyfrif Firefox
 
 # LOCALIZATION NOTE (firstrun_form_header and firstrun_form_sub_header):
 # firstrun_form_sub_header is a continuation of firstrun_form_header, they are one sentence.
 # firstrun_form_header is displayed more boldly as the call to action.
 firstrun_form_header=Rhowch eich e-bost
-firstrun_form_sub_header=i barhau i Firefox Sync.
+firstrun_form_sub_header=i barhau i Firefox Sync
 
 firstrun_email_input_placeholder=E-bost
 
 firstrun_invalid_input=Mae angen e-bost dilys
 
 # LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
 # {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
 firstrun_extra_legal_links=Gan barhau, rydych yn cytuno i delerau'r {terms} a'r {privacy}.
--- a/browser/components/newtab/locales/ff/strings.properties
+++ b/browser/components/newtab/locales/ff/strings.properties
@@ -190,14 +190,13 @@ firstrun_form_header=Naatnu iimeel maa
 firstrun_form_sub_header=ngam jokkude to Firefox Sync
 
 firstrun_email_input_placeholder=Iimeel
 
 firstrun_invalid_input=Iimeel gollotooɗo hatojinaa
 
 # LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
 # {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
-firstrun_extra_legal_links=Fuɗɗaade, woni a jaɓii {kuule} ɗee kam e {suturo}oo.
 firstrun_terms_of_service=Laabi Carwol
 firstrun_privacy_notice=Tintinol Suturo
 
 firstrun_continue_to_login=Jokku
 firstrun_skip_login=Diw ngal daawal
--- a/browser/components/newtab/locales/lv/strings.properties
+++ b/browser/components/newtab/locales/lv/strings.properties
@@ -186,16 +186,18 @@ firstrun_learn_more_link=Uzzini vairāk par Firefox kontiem
 # LOCALIZATION NOTE (firstrun_form_header and firstrun_form_sub_header):
 # firstrun_form_sub_header is a continuation of firstrun_form_header, they are one sentence.
 # firstrun_form_header is displayed more boldly as the call to action.
 firstrun_form_header=Ievadiet savu epastu
 firstrun_form_sub_header=lai turpinātu Firefox Sync.
 
 firstrun_email_input_placeholder=Epasts
 
+firstrun_invalid_input=Nepieciešams derīgs epasts
+
 # LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
 # {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
 firstrun_extra_legal_links=Turpinot jūs piekrītat {terms} un {privacy}.
 firstrun_terms_of_service=Lietošanas noteikumiem
 firstrun_privacy_notice=Privātuma politikai
 
 firstrun_continue_to_login=Turpināt
 firstrun_skip_login=Izlaist šo soli
--- a/browser/components/newtab/locales/mr/strings.properties
+++ b/browser/components/newtab/locales/mr/strings.properties
@@ -45,20 +45,24 @@ menu_action_save_to_pocket=Pocket मध्ये जतन करा
 menu_action_delete_pocket=Pocket मधून हटवा
 menu_action_archive_pocket=Pocket मध्ये संग्रहित करा
 
 # LOCALIZATION NOTE (menu_action_show_file_*): These are platform specific strings
 # found in the context menu of an item that has been downloaded. The intention behind
 # "this action" is that it will show where the downloaded file exists on the file system
 # for each operating system.
 menu_action_show_file_mac_os=Finder मध्ये दर्शवा
+menu_action_open_file=फाइल उघडा
 
 # LOCALIZATION NOTE (menu_action_copy_download_link, menu_action_go_to_download_page):
 # "Download" here, in both cases, is not a verb, it is a noun. As in, "Copy the
 # link that belongs to this downloaded item"
+menu_action_copy_download_link=डाउनलोड दुव्याची प्रत बनवा
+menu_action_go_to_download_page=डाउनलोड पृष्ठावर जा
+menu_action_remove_download=इतिहासातून काढून टाका
 
 # LOCALIZATION NOTE (search_button): This is screenreader only text for the
 # search button.
 search_button=शोधा
 
 # LOCALIZATION NOTE (search_header): Displayed at the top of the panel
 # showing search suggestions. {search_engine_name} is replaced with the name of
 # the current default search engine. e.g. 'Google Search'
@@ -82,21 +86,23 @@ section_disclaimer_topstories_buttontext=ठीक आहे, समजले
 # in English, while "Home" should be localized matching the about:preferences
 # sidebar mozilla-central string for the panel that has preferences related to
 # what is shown for the homepage, new windows, and new tabs.
 prefs_home_header=फायरफॉक्स होम वरील मजकूर
 prefs_home_description=आपल्या फायरफॉक्सचा मुख्यपृष्ठवर आपल्याला कोणती माहिती पाहिजे ते निवडा.
 # LOCALIZATION NOTE (prefs_section_rows_option): This is a semi-colon list of
 # plural forms used in a drop down of multiple row options (1 row, 2 rows).
 # See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+prefs_section_rows_option={num} ओळ;{num} ओळी
 prefs_search_header=वेब शोध
 prefs_topsites_description=आपण सर्वाधिक भेट देता त्या साइट
 prefs_topstories_description2=आपल्यासाठी वैयक्तिकीकृत केलेल्या वेबवरील छान सामग्री
 prefs_topstories_sponsored_learn_more=अधिक जाणून घ्या
 prefs_highlights_description=आपण जतन केलेल्या किंवा भेट दिलेल्या साइट्सचा एक निवडक साठा
+prefs_highlights_options_visited_label=भेट दिलेली पृष्ठे
 prefs_snippets_description=Mozilla आणि Firefox कडून अद्यतने
 settings_pane_button_label=आपले नवीन टॅब पृष्ठ सानुकूलित करा
 settings_pane_topsites_header=शीर्ष साइट्स
 settings_pane_highlights_header=ठळक
 settings_pane_highlights_options_bookmarks=वाचनखुणा
 # LOCALIZATION NOTE(settings_pane_snippets_header): For the "Snippets" feature
 # traditionally on about:home. Alternative translation options: "Small Note" or
 # something that expresses the idea of "a small message, shortened from
@@ -108,16 +114,17 @@ settings_pane_snippets_header=कात्रणे
 edit_topsites_button_text=संपादित करा
 edit_topsites_edit_button=ही साइट संपादित करा
 
 # LOCALIZATION NOTE (topsites_form_*): This is shown in the New/Edit Topsite modal.
 topsites_form_add_header=नवीन खास साइट
 topsites_form_edit_header=खास साईट संपादित करा
 topsites_form_title_label=शिर्षक
 topsites_form_title_placeholder=शिर्षक प्रविष्ट करा
+topsites_form_url_label=URL
 topsites_form_url_placeholder=URL चिकटवा किंवा टाईप करा
 # LOCALIZATION NOTE (topsites_form_*_button): These are verbs/actions.
 topsites_form_preview_button=पूर्वावलोकन
 topsites_form_add_button=समाविष्ट करा
 topsites_form_save_button=जतन करा
 topsites_form_cancel_button=रद्द करा
 topsites_form_url_validation=वैध URL आवश्यक
 
@@ -144,24 +151,35 @@ manual_migration_cancel_button=नाही धन्यवाद
 # of importing another browser’s profile profile into Firefox.
 manual_migration_import_button=आता आयात करा
 
 # LOCALIZATION NOTE (error_fallback_default_*): This message and suggested
 # action link are shown in each section of UI that fails to render
 
 # LOCALIZATION NOTE (section_menu_action_*).  These strings are displayed in the section
 # context menu and are meant as a call to action for the given section.
+section_menu_action_remove_section=विभाग काढा
+section_menu_action_collapse_section=विभाग ढासळा
+section_menu_action_manage_webext=एक्सटेन्शन व्यवस्थापित करा
 section_menu_action_move_up=वर जा
 section_menu_action_move_down=खाली जा
 section_menu_action_privacy_notice=गोपनीयता सूचना
 
 # LOCALIZATION NOTE (firstrun_*). These strings are displayed only once, on the
 # firstrun of the browser, they give an introduction to Firefox and Sync.
+firstrun_title=Firefox सोबत न्या
+firstrun_learn_more_link=Firefox खात्यांविषयी अधिक जाणून घ्या
 
 # LOCALIZATION NOTE (firstrun_form_header and firstrun_form_sub_header):
 # firstrun_form_sub_header is a continuation of firstrun_form_header, they are one sentence.
 # firstrun_form_header is displayed more boldly as the call to action.
+firstrun_form_header=ईमेल प्रविष्ट करा
 
+firstrun_email_input_placeholder=ईमेल
 
 
 # LOCALIZATION NOTE (firstrun_extra_legal_links): {terms} is equal to firstrun_terms_of_service, and
 # {privacy} is equal to firstrun_privacy_notice. {terms} and {privacy} are clickable links.
+firstrun_terms_of_service=सेवा अटी
+firstrun_privacy_notice=गोपनीयता सूचना
 
+firstrun_continue_to_login=पुढे चला
+firstrun_skip_login=ही पायरी वगळा
--- a/browser/components/newtab/prerendered/locales/cak/activity-stream-strings.js
+++ b/browser/components/newtab/prerendered/locales/cak/activity-stream-strings.js
@@ -35,17 +35,17 @@ window.gActivityStreamStrings = {
   "search_button": "Tikanöx",
   "search_header": "{search_engine_name} Tikanöx",
   "search_web_placeholder": "Tikanöx pa Ajk'amaya'l",
   "section_disclaimer_topstories": "Ri nimaläj taq b'anob'äl pan ajk'amaya'l, cha'on rik'in ri ruxe'el ri nasik'ij. Matyox chi re ri Pocket, wakami k'o rik'in ri Mozilla.",
   "section_disclaimer_topstories_linktext": "Tetamäx rub'eyal nisamäj.",
   "section_disclaimer_topstories_buttontext": "Ütz, xno' pa nuwi'",
   "prefs_home_header": "Etamab'äl pa ri Rutikirib'al Firefox",
   "prefs_home_description": "Tacha' achike etamab'äl nawajo' pa ri Rutikirib'al Firefox ruwäch.",
-  "prefs_section_rows_option": "{num} cholaj:{num} taq cholaj",
+  "prefs_section_rows_option": "{num} cholaj;{num} taq cholaj",
   "prefs_search_header": "Ajk'amaya'l Kanoxïk",
   "prefs_topsites_description": "Taq ruxaq yalan ye'atz'ët",
   "prefs_topstories_description2": "Nïm rupam chijun ri ajk'amaya'l, ichinan awuma rat",
   "prefs_topstories_options_sponsored_label": "To'on taq B'anob'äl",
   "prefs_topstories_sponsored_learn_more": "Tetamäx ch'aqa' chik",
   "prefs_highlights_description": "Jun rucha'onem ruxaq, ri xayäk o xatz'ët",
   "prefs_highlights_options_visited_label": "Taq Ruxaq Etz'eton",
   "prefs_highlights_options_download_label": "K'a B'a' Keqasäx",
--- a/browser/components/newtab/prerendered/locales/cy/activity-stream-strings.js
+++ b/browser/components/newtab/prerendered/locales/cy/activity-stream-strings.js
@@ -89,17 +89,17 @@ window.gActivityStreamStrings = {
   "section_menu_action_add_topsite": "Ychwanegu Hoff Wefan",
   "section_menu_action_move_up": "Symud i Fyny",
   "section_menu_action_move_down": "Symud i Lawr",
   "section_menu_action_privacy_notice": "Hysbysiad Preifatrwydd",
   "firstrun_title": "Mynd â Firefox gyda Chi",
   "firstrun_content": "Cewch eich nodau tudalen, hanes, cyfrineiriau a gosodiadau eraill ar eich holl ddyfeisiau.",
   "firstrun_learn_more_link": "Dysgu rhagor am Gyfrif Firefox",
   "firstrun_form_header": "Rhowch eich e-bost",
-  "firstrun_form_sub_header": "i barhau i Firefox Sync.",
+  "firstrun_form_sub_header": "i barhau i Firefox Sync",
   "firstrun_email_input_placeholder": "E-bost",
   "firstrun_invalid_input": "Mae angen e-bost dilys",
   "firstrun_extra_legal_links": "Gan barhau, rydych yn cytuno i delerau'r {terms} a'r {privacy}.",
   "firstrun_terms_of_service": "Amodau Gwasanaeth",
   "firstrun_privacy_notice": "Hysbysiad Preifatrwydd",
   "firstrun_continue_to_login": "Parhau",
   "firstrun_skip_login": "Hepgor y cam hwn"
 };
--- a/browser/components/newtab/prerendered/locales/ff/activity-stream-strings.js
+++ b/browser/components/newtab/prerendered/locales/ff/activity-stream-strings.js
@@ -92,14 +92,14 @@ window.gActivityStreamStrings = {
   "section_menu_action_privacy_notice": "Tintinal sirlu",
   "firstrun_title": "Nawor Firefox",
   "firstrun_content": "Heɓ maantore maa, aslol maa, finndeeji maa kam e teelte goɗɗe e masiŋon maa fof.",
   "firstrun_learn_more_link": "Ɓeydu humpito baɗte Konte Firefox",
   "firstrun_form_header": "Naatnu iimeel maa",
   "firstrun_form_sub_header": "ngam jokkude to Firefox Sync",
   "firstrun_email_input_placeholder": "Iimeel",
   "firstrun_invalid_input": "Iimeel gollotooɗo hatojinaa",
-  "firstrun_extra_legal_links": "Fuɗɗaade, woni a jaɓii {kuule} ɗee kam e {suturo}oo.",
+  "firstrun_extra_legal_links": "By proceeding, you agree to the {terms} and {privacy}.",
   "firstrun_terms_of_service": "Laabi Carwol",
   "firstrun_privacy_notice": "Tintinol Suturo",
   "firstrun_continue_to_login": "Jokku",
   "firstrun_skip_login": "Diw ngal daawal"
 };
--- a/browser/components/newtab/prerendered/locales/lv/activity-stream-strings.js
+++ b/browser/components/newtab/prerendered/locales/lv/activity-stream-strings.js
@@ -91,15 +91,15 @@ window.gActivityStreamStrings = {
   "section_menu_action_move_down": "Pārvietot lejup",
   "section_menu_action_privacy_notice": "Privātuma politika",
   "firstrun_title": "Paņemiet Firefox sev līdz",
   "firstrun_content": "Izmantojiet grāmatzīmes, vēsturi, saglabātās paroles un citus iestatījumus visās savās ierīcēs.",
   "firstrun_learn_more_link": "Uzzini vairāk par Firefox kontiem",
   "firstrun_form_header": "Ievadiet savu epastu",
   "firstrun_form_sub_header": "lai turpinātu Firefox Sync.",
   "firstrun_email_input_placeholder": "Epasts",
-  "firstrun_invalid_input": "Valid email required",
+  "firstrun_invalid_input": "Nepieciešams derīgs epasts",
   "firstrun_extra_legal_links": "Turpinot jūs piekrītat {terms} un {privacy}.",
   "firstrun_terms_of_service": "Lietošanas noteikumiem",
   "firstrun_privacy_notice": "Privātuma politikai",
   "firstrun_continue_to_login": "Turpināt",
   "firstrun_skip_login": "Izlaist šo soli"
 };
--- a/browser/components/newtab/prerendered/locales/mr/activity-stream-strings.js
+++ b/browser/components/newtab/prerendered/locales/mr/activity-stream-strings.js
@@ -23,36 +23,36 @@ window.gActivityStreamStrings = {
   "confirm_history_delete_notice_p2": "ही क्रिया पूर्ववत केली जाऊ शकत नाही.",
   "menu_action_save_to_pocket": "Pocket मध्ये जतन करा",
   "menu_action_delete_pocket": "Pocket मधून हटवा",
   "menu_action_archive_pocket": "Pocket मध्ये संग्रहित करा",
   "menu_action_show_file_mac_os": "Finder मध्ये दर्शवा",
   "menu_action_show_file_windows": "Open Containing Folder",
   "menu_action_show_file_linux": "Open Containing Folder",
   "menu_action_show_file_default": "Show File",
-  "menu_action_open_file": "Open File",
-  "menu_action_copy_download_link": "Copy Download Link",
-  "menu_action_go_to_download_page": "Go to Download Page",
-  "menu_action_remove_download": "Remove from History",
+  "menu_action_open_file": "फाइल उघडा",
+  "menu_action_copy_download_link": "डाउनलोड दुव्याची प्रत बनवा",
+  "menu_action_go_to_download_page": "डाउनलोड पृष्ठावर जा",
+  "menu_action_remove_download": "इतिहासातून काढून टाका",
   "search_button": "शोधा",
   "search_header": "{search_engine_name} शोध",
   "search_web_placeholder": "वेबवर शोधा",
   "section_disclaimer_topstories": "आपण जे वाचतो त्यानुसार निवडलेल्या, वेबवरील सर्वात मनोरंजक कथा. Pocket कडून, आता Mozilla चा भाग.",
   "section_disclaimer_topstories_linktext": "कसे कार्य करते ते जाणून घ्या.",
   "section_disclaimer_topstories_buttontext": "ठीक आहे, समजले",
   "prefs_home_header": "फायरफॉक्स होम वरील मजकूर",
   "prefs_home_description": "आपल्या फायरफॉक्सचा मुख्यपृष्ठवर आपल्याला कोणती माहिती पाहिजे ते निवडा.",
-  "prefs_section_rows_option": "{num} row;{num} rows",
+  "prefs_section_rows_option": "{num} ओळ;{num} ओळी",
   "prefs_search_header": "वेब शोध",
   "prefs_topsites_description": "आपण सर्वाधिक भेट देता त्या साइट",
   "prefs_topstories_description2": "आपल्यासाठी वैयक्तिकीकृत केलेल्या वेबवरील छान सामग्री",
   "prefs_topstories_options_sponsored_label": "Sponsored Stories",
   "prefs_topstories_sponsored_learn_more": "अधिक जाणून घ्या",
   "prefs_highlights_description": "आपण जतन केलेल्या किंवा भेट दिलेल्या साइट्सचा एक निवडक साठा",
-  "prefs_highlights_options_visited_label": "Visited Pages",
+  "prefs_highlights_options_visited_label": "भेट दिलेली पृष्ठे",
   "prefs_highlights_options_download_label": "Most Recent Download",
   "prefs_highlights_options_pocket_label": "Pages Saved to Pocket",
   "prefs_snippets_description": "Mozilla आणि Firefox कडून अद्यतने",
   "settings_pane_button_label": "आपले नवीन टॅब पृष्ठ सानुकूलित करा",
   "settings_pane_topsites_header": "शीर्ष साइट्स",
   "settings_pane_highlights_header": "ठळक",
   "settings_pane_highlights_options_bookmarks": "वाचनखुणा",
   "settings_pane_snippets_header": "कात्रणे",
@@ -76,30 +76,30 @@ window.gActivityStreamStrings = {
   "pocket_read_even_more": "अधिक कथा पहा",
   "highlights_empty_state": "ब्राउझिंग सुरू करा, आणि आम्ही आपल्याला इथे आपण अलीकडील भेट दिलेले किंवा वाचनखूण लावलेले उत्कृष्ठ लेख, व्हिडिओ, आणि इतर पृष्ठांपैकी काही दाखवू.",
   "topstories_empty_state": "तुम्ही सर्व बघितले. {provider} कडून आणखी महत्वाच्या गोष्टी बघण्यासाठी नंतर परत तपासा. प्रतीक्षा करू शकत नाही? वेबवरील छान गोष्टी शोधण्यासाठी लोकप्रिय विषय निवडा.",
   "manual_migration_explanation2": "दुसऱ्या ब्राऊझरमधील वाचनखूणा, इतिहास आणि पासवर्ड सोबत Firefox ला वापरून पहा.",
   "manual_migration_cancel_button": "नाही धन्यवाद",
   "manual_migration_import_button": "आता आयात करा",
   "error_fallback_default_info": "Oops, something went wrong loading this content.",
   "error_fallback_default_refresh_suggestion": "Refresh page to try again.",
-  "section_menu_action_remove_section": "Remove Section",
-  "section_menu_action_collapse_section": "Collapse Section",
+  "section_menu_action_remove_section": "विभाग काढा",
+  "section_menu_action_collapse_section": "विभाग ढासळा",
   "section_menu_action_expand_section": "Expand Section",
   "section_menu_action_manage_section": "Manage Section",
-  "section_menu_action_manage_webext": "Manage Extension",
+  "section_menu_action_manage_webext": "एक्सटेन्शन व्यवस्थापित करा",
   "section_menu_action_add_topsite": "Add Top Site",
   "section_menu_action_move_up": "वर जा",
   "section_menu_action_move_down": "खाली जा",
   "section_menu_action_privacy_notice": "गोपनीयता सूचना",
-  "firstrun_title": "Take Firefox with You",
+  "firstrun_title": "Firefox सोबत न्या",
   "firstrun_content": "Get your bookmarks, history, passwords and other settings on all your devices.",
-  "firstrun_learn_more_link": "Learn more about Firefox Accounts",
-  "firstrun_form_header": "Enter your email",
+  "firstrun_learn_more_link": "Firefox खात्यांविषयी अधिक जाणून घ्या",
+  "firstrun_form_header": "ईमेल प्रविष्ट करा",
   "firstrun_form_sub_header": "to continue to Firefox Sync",
-  "firstrun_email_input_placeholder": "Email",
+  "firstrun_email_input_placeholder": "ईमेल",
   "firstrun_invalid_input": "Valid email required",
   "firstrun_extra_legal_links": "By proceeding, you agree to the {terms} and {privacy}.",
-  "firstrun_terms_of_service": "Terms of Service",
-  "firstrun_privacy_notice": "Privacy Notice",
-  "firstrun_continue_to_login": "Continue",
-  "firstrun_skip_login": "Skip this step"
+  "firstrun_terms_of_service": "सेवा अटी",
+  "firstrun_privacy_notice": "गोपनीयता सूचना",
+  "firstrun_continue_to_login": "पुढे चला",
+  "firstrun_skip_login": "ही पायरी वगळा"
 };
--- a/browser/components/newtab/test/browser/browser.ini
+++ b/browser/components/newtab/test/browser/browser.ini
@@ -1,18 +1,20 @@
 [DEFAULT]
 support-files =
   blue_page.html
+  red_page.html
   head.js
 prefs =
   browser.newtabpage.activity-stream.debug=false
 
 [browser_activity_stream_strings.js]
 [browser_as_load_location.js]
 [browser_as_render.js]
 [browser_asrouter_targeting.js]
+[browser_asrouter_trigger_listeners.js]
 [browser_enabled_newtabpage.js]
 [browser_highlights_section.js]
 [browser_getScreenshots.js]
 [browser_newtab_overrides.js]
 [browser_packaged_as_locales.js]
 [browser_topsites_contextMenu_options.js]
 [browser_topsites_section.js]
--- a/browser/components/newtab/test/browser/browser_asrouter_targeting.js
+++ b/browser/components/newtab/test/browser/browser_asrouter_targeting.js
@@ -10,75 +10,116 @@ ChromeUtils.defineModuleGetter(this, "Sh
   "resource:///modules/ShellService.jsm");
 ChromeUtils.defineModuleGetter(this, "NewTabUtils",
   "resource://gre/modules/NewTabUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "PlacesTestUtils",
   "resource://testing-common/PlacesTestUtils.jsm");
 
 // ASRouterTargeting.isMatch
 add_task(async function should_do_correct_targeting() {
-  is(await ASRouterTargeting.isMatch("FOO", {}, {FOO: true}), true, "should return true for a matching value");
-  is(await ASRouterTargeting.isMatch("!FOO", {}, {FOO: true}), false, "should return false for a non-matching value");
+  is(await ASRouterTargeting.isMatch("FOO", {FOO: true}), true, "should return true for a matching value");
+  is(await ASRouterTargeting.isMatch("!FOO", {FOO: true}), false, "should return false for a non-matching value");
 });
 
 add_task(async function should_handle_async_getters() {
   const context = {get FOO() { return Promise.resolve(true); }};
-  is(await ASRouterTargeting.isMatch("FOO", {}, context), true, "should return true for a matching async value");
+  is(await ASRouterTargeting.isMatch("FOO", context), true, "should return true for a matching async value");
 });
 
 // ASRouterTargeting.findMatchingMessage
 add_task(async function find_matching_message() {
   const messages = [
     {id: "foo", targeting: "FOO"},
     {id: "bar", targeting: "!FOO"}
   ];
   const context = {FOO: true};
 
-  const match = await ASRouterTargeting.findMatchingMessage({messages, target: {}, context});
+  const match = await ASRouterTargeting.findMatchingMessage({messages, context});
 
   is(match, messages[0], "should match and return the correct message");
 });
 
 add_task(async function return_nothing_for_no_matching_message() {
   const messages = [{id: "bar", targeting: "!FOO"}];
   const context = {FOO: true};
 
-  const match = await ASRouterTargeting.findMatchingMessage({messages, target: {}, context});
+  const match = await ASRouterTargeting.findMatchingMessage({messages, context});
 
   is(match, undefined, "should return nothing since no matching message exists");
 });
 
+add_task(async function check_syntax_error_handling() {
+  let result;
+  function onError(...args) {
+    result = args;
+  }
+
+  const messages = [{id: "foo", targeting: "foo === 0"}];
+  const match = await ASRouterTargeting.findMatchingMessage({messages, onError});
+
+  is(match, undefined, "should return nothing since no valid matching message exists");
+  // Note that in order for the following test to pass, we are expecting a particular filepath for mozjexl.
+  // If the location of this file has changed, the MOZ_JEXL_FILEPATH constant should be updated om ASRouterTargeting.jsm
+  is(result[0], ASRouterTargeting.ERROR_TYPES.MALFORMED_EXPRESSION,
+    "should recognize the error as coming from mozjexl and call onError with the MALFORMED_EXPRESSION error type");
+  ok(result[1].message,
+    "should call onError with the error from mozjexl");
+  is(result[2], messages[0],
+    "should call onError with the invalid message");
+});
+
+add_task(async function check_other_error_handling() {
+  let result;
+  function onError(...args) {
+    result = args;
+  }
+
+  const messages = [{id: "foo", targeting: "foo"}];
+  const context = {get foo() { throw new Error("test error"); }};
+  const match = await ASRouterTargeting.findMatchingMessage({messages, context, onError});
+
+  is(match, undefined, "should return nothing since no valid matching message exists");
+  // Note that in order for the following test to pass, we are expecting a particular filepath for mozjexl.
+  // If the location of this file has changed, the MOZ_JEXL_FILEPATH constant should be updated om ASRouterTargeting.jsm
+  is(result[0], ASRouterTargeting.ERROR_TYPES.OTHER_ERROR,
+    "should not recognize the error as being an other error, not a mozjexl one");
+  is(result[1].message, "test error",
+    "should call onError with the error thrown in the context");
+  is(result[2], messages[0],
+    "should call onError with the invalid message");
+});
+
 // ASRouterTargeting.Environment
 add_task(async function checkProfileAgeCreated() {
   let profileAccessor = new ProfileAge();
   is(await ASRouterTargeting.Environment.profileAgeCreated, await profileAccessor.created,
     "should return correct profile age creation date");
 
   const message = {id: "foo", targeting: `profileAgeCreated > ${await profileAccessor.created - 100}`};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), message,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), message,
     "should select correct item by profile age created");
 });
 
 add_task(async function checkProfileAgeReset() {
   let profileAccessor = new ProfileAge();
   is(await ASRouterTargeting.Environment.profileAgeReset, await profileAccessor.reset,
     "should return correct profile age reset");
 
   const message = {id: "foo", targeting: `profileAgeReset == ${await profileAccessor.reset}`};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), message,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), message,
     "should select correct item by profile age reset");
 });
 
 add_task(async function checkhasFxAccount() {
   await pushPrefs(["services.sync.username", "someone@foo.com"]);
   is(await ASRouterTargeting.Environment.hasFxAccount, true,
     "should return true if a fx account is set");
 
   const message = {id: "foo", targeting: "hasFxAccount"};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), message,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), message,
     "should select correct item by hasFxAccount");
 });
 
 add_task(async function checksearchEngines() {
   const result = await ASRouterTargeting.Environment.searchEngines;
   const expectedInstalled = Services.search.getVisibleEngines()
     .map(engine => engine.identifier)
     .sort()
@@ -88,42 +129,42 @@ add_task(async function checksearchEngin
   is(result.installed.sort().join(","), expectedInstalled,
     "searchEngines.installed should be an array of visible search engines");
   ok(result.current && typeof result.current === "string",
     "searchEngines.current should be a truthy string");
   is(result.current, Services.search.currentEngine.identifier,
     "searchEngines.current should be the current engine name");
 
   const message = {id: "foo", targeting: `searchEngines[.current == ${Services.search.currentEngine.identifier}]`};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), message,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), message,
     "should select correct item by searchEngines.current");
 
   const message2 = {id: "foo", targeting: `searchEngines[${Services.search.getVisibleEngines()[0].identifier} in .installed]`};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message2], target: {}}), message2,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message2]}), message2,
     "should select correct item by searchEngines.installed");
 });
 
 add_task(async function checkisDefaultBrowser() {
   const expected = ShellService.isDefaultBrowser();
   const result = ASRouterTargeting.Environment.isDefaultBrowser;
   is(typeof result, "boolean",
     "isDefaultBrowser should be a boolean value");
   is(result, expected,
     "isDefaultBrowser should be equal to ShellService.isDefaultBrowser()");
   const message = {id: "foo", targeting: `isDefaultBrowser == ${expected.toString()}`};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), message,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), message,
     "should select correct item by isDefaultBrowser");
 });
 
 add_task(async function checkdevToolsOpenedCount() {
   await pushPrefs(["devtools.selfxss.count", 5]);
   is(ASRouterTargeting.Environment.devToolsOpenedCount, 5,
     "devToolsOpenedCount should be equal to devtools.selfxss.count pref value");
   const message = {id: "foo", targeting: "devToolsOpenedCount >= 5"};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), message,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), message,
     "should select correct item by devToolsOpenedCount");
 });
 
 AddonTestUtils.initMochitest(this);
 
 add_task(async function checkAddonsInfo() {
   const FAKE_ID = "testaddon@tests.mozilla.org";
   const FAKE_NAME = "Test Addon";
@@ -195,39 +236,39 @@ add_task(async function checkFrecentSite
       uri,
       visitDate: visitDate * 1000 // Places expects microseconds
     }));
   }
 
   await PlacesTestUtils.addVisits(visits);
 
   let message = {id: "foo", targeting: "'mozilla3.com' in topFrecentSites|mapToProperty('host')"};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), message,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), message,
     "should select correct item by host in topFrecentSites");
 
   message = {id: "foo", targeting: "'non-existent.com' in topFrecentSites|mapToProperty('host')"};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), undefined,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), undefined,
     "should not select incorrect item by host in topFrecentSites");
 
   message = {id: "foo", targeting: "'mozilla2.com' in topFrecentSites[.frecency >= 400]|mapToProperty('host')"};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), message,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), message,
     "should select correct item when filtering by frecency");
 
   message = {id: "foo", targeting: "'mozilla2.com' in topFrecentSites[.frecency >= 600]|mapToProperty('host')"};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), undefined,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), undefined,
     "should not select incorrect item when filtering by frecency");
 
   message = {id: "foo", targeting: `'mozilla2.com' in topFrecentSites[.lastVisitDate >= ${timeDaysAgo(1) - 1}]|mapToProperty('host')`};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), message,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), message,
     "should select correct item when filtering by lastVisitDate");
 
   message = {id: "foo", targeting: `'mozilla2.com' in topFrecentSites[.lastVisitDate >= ${timeDaysAgo(0) - 1}]|mapToProperty('host')`};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), undefined,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), undefined,
     "should not select incorrect item when filtering by lastVisitDate");
 
   message = {id: "foo", targeting: `(topFrecentSites[.frecency >= 900 && .lastVisitDate >= ${timeDaysAgo(1) - 1}]|mapToProperty('host') intersect ['mozilla3.com', 'mozilla2.com', 'mozilla1.com'])|length > 0`};
-  is(await ASRouterTargeting.findMatchingMessage({messages: [message], target: {}}), message,
+  is(await ASRouterTargeting.findMatchingMessage({messages: [message]}), message,
     "should select correct item when filtering by frecency and lastVisitDate with multiple candidate domains");
 
   // Cleanup
   await clearHistoryAndBookmarks();
   TopFrecentSitesCache.expire();
 });
new file mode 100644
--- /dev/null
+++ b/browser/components/newtab/test/browser/browser_asrouter_trigger_listeners.js
@@ -0,0 +1,58 @@
+ChromeUtils.defineModuleGetter(this, "ASRouterTriggerListeners",
+  "resource://activity-stream/lib/ASRouterTriggerListeners.jsm");
+ChromeUtils.import("resource://gre/modules/Services.jsm");
+ChromeUtils.defineModuleGetter(this, "TestUtils",
+  "resource://testing-common/TestUtils.jsm");
+ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils",
+  "resource://gre/modules/PrivateBrowsingUtils.jsm");
+
+async function openURLInWindow(window, url) {
+  const {selectedBrowser} = window.gBrowser;
+  await BrowserTestUtils.loadURI(selectedBrowser, url);
+  await BrowserTestUtils.browserLoaded(selectedBrowser);
+}
+
+add_task(async function check_openURL_listener() {
+  const TEST_URL = "https://example.com/browser/browser/components/newtab/test/browser/red_page.html";
+
+  let urlVisitCount = 0;
+  const triggerHandler = () => urlVisitCount++;
+
+  const normalWindow = await BrowserTestUtils.openNewBrowserWindow();
+  const privateWindow = await BrowserTestUtils.openNewBrowserWindow({private: true});
+
+  // Initialise listener
+  const openURLListener = ASRouterTriggerListeners.get("openURL");
+  openURLListener.init(triggerHandler, ["example.com"]);
+
+  await openURLInWindow(normalWindow, TEST_URL);
+  is(urlVisitCount, 1, "should receive page visits from existing windows");
+
+  await openURLInWindow(normalWindow, "http://www.example.com/abc");
+  is(urlVisitCount, 1, "should not receive page visits for different domains");
+
+  await openURLInWindow(privateWindow, TEST_URL);
+  is(urlVisitCount, 1, "should not receive page visits from existing private windows");
+
+  const secondNormalWindow = await BrowserTestUtils.openNewBrowserWindow();
+  await openURLInWindow(secondNormalWindow, TEST_URL);
+  is(urlVisitCount, 2, "should receive page visits from newly opened windows");
+
+  const secondPrivateWindow = await BrowserTestUtils.openNewBrowserWindow({private: true});
+  await openURLInWindow(secondPrivateWindow, TEST_URL);
+  is(urlVisitCount, 2, "should not receive page visits from newly opened private windows");
+
+  // Uninitialise listener
+  openURLListener.uninit();
+
+  await openURLInWindow(normalWindow, TEST_URL);
+  is(urlVisitCount, 2, "should now not receive page visits from existing windows");
+
+  const thirdNormalWindow = await BrowserTestUtils.openNewBrowserWindow();
+  await openURLInWindow(thirdNormalWindow, TEST_URL);
+  is(urlVisitCount, 2, "should now not receive page visits from newly opened windows");
+
+  // Cleanup
+  const windows = [normalWindow, privateWindow, secondNormalWindow, secondPrivateWindow, thirdNormalWindow];
+  await Promise.all(windows.map(win => BrowserTestUtils.closeWindow(win)));
+});
new file mode 100644
--- /dev/null
+++ b/browser/components/newtab/test/browser/red_page.html
@@ -0,0 +1,6 @@
+<html>
+  <head>
+    <meta charset="utf-8">
+  </head>
+  <body style="background-color: red" />
+</html>
--- a/browser/components/newtab/test/unit/asrouter/ASRouter.test.js
+++ b/browser/components/newtab/test/unit/asrouter/ASRouter.test.js
@@ -1,18 +1,19 @@
+import {_ASRouter, MessageLoaderUtils} from "lib/ASRouter.jsm";
 import {
   CHILD_TO_PARENT_MESSAGE_NAME,
   FAKE_LOCAL_MESSAGES,
   FAKE_LOCAL_PROVIDER,
   FAKE_REMOTE_MESSAGES,
   FAKE_REMOTE_PROVIDER,
   FakeRemotePageManager,
   PARENT_TO_CHILD_MESSAGE_NAME
 } from "./constants";
-import {_ASRouter} from "lib/ASRouter.jsm";
+import {ASRouterTriggerListeners} from "lib/ASRouterTriggerListeners.jsm";
 
 const FAKE_PROVIDERS = [FAKE_LOCAL_PROVIDER, FAKE_REMOTE_PROVIDER];
 const ALL_MESSAGE_IDS = [...FAKE_LOCAL_MESSAGES, ...FAKE_REMOTE_MESSAGES].map(message => message.id);
 const FAKE_BUNDLE = [FAKE_LOCAL_MESSAGES[1], FAKE_LOCAL_MESSAGES[2]];
 const ONE_DAY = 24 * 60 * 60 * 1000;
 
 // Creates a message object that looks like messages returned by
 // RemotePageManager listeners
@@ -25,31 +26,33 @@ describe("ASRouter", () => {
   let channel;
   let sandbox;
   let blockList;
   let impressions;
   let fetchStub;
   let clock;
   let getStringPrefStub;
   let addObserverStub;
+  let dispatchStub;
 
   function createFakeStorage() {
     const getStub = sandbox.stub();
     getStub.withArgs("blockList").returns(Promise.resolve(blockList));
     getStub.withArgs("impressions").returns(Promise.resolve(impressions));
     return {
       get: getStub,
       set: sandbox.stub().returns(Promise.resolve())
     };
   }
 
   async function createRouterAndInit(providers = FAKE_PROVIDERS) {
     channel = new FakeRemotePageManager();
     Router = new _ASRouter({providers});
-    await Router.init(channel, createFakeStorage());
+    dispatchStub = sandbox.stub();
+    await Router.init(channel, createFakeStorage(), dispatchStub);
   }
 
   beforeEach(async () => {
     blockList = [];
     impressions = {};
     sandbox = sinon.sandbox.create();
     clock = sandbox.useFakeTimers();
     fetchStub = sandbox.stub(global, "fetch")
@@ -81,36 +84,36 @@ describe("ASRouter", () => {
     });
     it("should add an observer for each provider with a defined endpointPref", () => {
       assert.calledOnce(addObserverStub);
       assert.calledWith(addObserverStub, "remotePref");
     });
     it("should set state.blockList to the block list in persistent storage", async () => {
       blockList = ["foo"];
       Router = new _ASRouter({providers: FAKE_PROVIDERS});
-      await Router.init(channel, createFakeStorage());
+      await Router.init(channel, createFakeStorage(), dispatchStub);
 
       assert.deepEqual(Router.state.blockList, ["foo"]);
     });
     it("should set state.impressions to the impressions object in persistent storage", async () => {
       // Note that impressions are only kept if a message exists in router and has a .frequency property,
       // otherwise they will be cleaned up by .cleanupImpressions()
       const testMessage = {id: "foo", frequency: {lifetimeCap: 10}};
       impressions = {foo: [0, 1, 2]};
 
       Router = new _ASRouter({providers: [{id: "onboarding", type: "local", messages: [testMessage]}]});
-      await Router.init(channel, createFakeStorage());
+      await Router.init(channel, createFakeStorage(), dispatchStub);
 
       assert.deepEqual(Router.state.impressions, impressions);
     });
     it("should await .loadMessagesFromAllProviders() and add messages from providers to state.messages", async () => {
       Router = new _ASRouter({providers: FAKE_PROVIDERS});
 
       const loadMessagesSpy = sandbox.spy(Router, "loadMessagesFromAllProviders");
-      await Router.init(channel, createFakeStorage());
+      await Router.init(channel, createFakeStorage(), dispatchStub);
 
       assert.calledOnce(loadMessagesSpy);
       assert.isArray(Router.state.messages);
       assert.lengthOf(Router.state.messages, FAKE_LOCAL_MESSAGES.length + FAKE_REMOTE_MESSAGES.length);
     });
     it("should call loadMessagesFromAllProviders on pref endpoint change", async () => {
       sandbox.spy(Router, "loadMessagesFromAllProviders");
 
@@ -139,16 +142,19 @@ describe("ASRouter", () => {
     it("should fallback to defaults if pref parsing fails", async () => {
       getStringPrefStub.returns("err");
       await createRouterAndInit();
 
       assert.lengthOf(Object.keys(Router.WHITELIST_HOSTS), 2);
       assert.propertyVal(Router.WHITELIST_HOSTS, "snippets-admin.mozilla.org", "preview");
       assert.propertyVal(Router.WHITELIST_HOSTS, "activity-stream-icons.services.mozilla.com", "production");
     });
+    it("should set this.dispatchToAS to the third parameter passed to .init()", async () => {
+      assert.equal(Router.dispatchToAS, dispatchStub);
+    });
   });
 
   describe("#loadMessagesFromAllProviders", () => {
     function assertRouterContainsMessages(messages) {
       const messageIdsInRouter = Router.state.messages.map(m => m.id);
       for (const message of messages) {
         assert.include(messageIdsInRouter, message.id);
       }
@@ -202,16 +208,35 @@ describe("ASRouter", () => {
       clock.tick(301);
       await Router.loadMessagesFromAllProviders();
 
       // These are the new messages
       assertRouterContainsMessages(NEW_MESSAGES);
       // These are the local messages that should not have been deleted
       assertRouterContainsMessages(FAKE_LOCAL_MESSAGES);
     });
+    it("should parse the triggers in the messages and register the trigger listeners", async () => {
+      sandbox.spy(ASRouterTriggerListeners.get("openURL"), "init");
+
+      /* eslint-disable object-curly-newline */ /* eslint-disable object-property-newline */
+      await createRouterAndInit([
+        {id: "foo", type: "local", messages: [
+          {id: "foo", template: "simple_template", trigger: {id: "firstRun"}, content: {title: "Foo", body: "Foo123"}},
+          {id: "bar1", template: "simple_template", trigger: {id: "openURL", params: ["www.mozilla.org", "www.mozilla.com"]}, content: {title: "Bar1", body: "Bar123"}},
+          {id: "bar2", template: "simple_template", trigger: {id: "openURL", params: ["www.example.com"]}, content: {title: "Bar2", body: "Bar123"}}
+        ]}
+      ]);
+      /* eslint-enable object-curly-newline */ /* eslint-enable object-property-newline */
+
+      assert.calledTwice(ASRouterTriggerListeners.get("openURL").init);
+      assert.calledWithExactly(ASRouterTriggerListeners.get("openURL").init,
+        Router._triggerHandler, ["www.mozilla.org", "www.mozilla.com"]);
+      assert.calledWithExactly(ASRouterTriggerListeners.get("openURL").init,
+        Router._triggerHandler, ["www.example.com"]);
+    });
   });
 
   describe("blocking", () => {
     it("should not return a blocked message", async () => {
       // Block all messages except the first
       await Router.setState(() => ({blockList: ALL_MESSAGE_IDS.slice(1)}));
       const targetStub = {sendAsyncMessage: sandbox.stub()};
 
@@ -235,16 +260,31 @@ describe("ASRouter", () => {
     it("should remove the message listener on the RemotePageManager", () => {
       const [, listenerAdded] = channel.addMessageListener.firstCall.args;
       assert.isFunction(listenerAdded);
 
       Router.uninit();
 
       assert.calledWith(channel.removeMessageListener, CHILD_TO_PARENT_MESSAGE_NAME, listenerAdded);
     });
+    it("should unregister the trigger listeners", () => {
+      for (const listener of ASRouterTriggerListeners.values()) {
+        sandbox.spy(listener, "uninit");
+      }
+
+      Router.uninit();
+
+      for (const listener of ASRouterTriggerListeners.values()) {
+        assert.calledOnce(listener.uninit);
+      }
+    });
+    it("should set .dispatchToAS to null", () => {
+      Router.uninit();
+      assert.isNull(Router.dispatchToAS);
+    });
   });
 
   describe("#onMessage: CONNECT_UI_REQUEST", () => {
     it("should set state.lastMessageId to a message id", async () => {
       await Router.onMessage(fakeAsyncMessage({type: "CONNECT_UI_REQUEST"}));
 
       assert.include(ALL_MESSAGE_IDS, Router.state.lastMessageId);
     });
@@ -293,37 +333,31 @@ describe("ASRouter", () => {
     });
     it("should send a CLEAR_ALL message if no messages are available", async () => {
       await Router.setState({messages: []});
       const msg = fakeAsyncMessage({type: "CONNECT_UI_REQUEST"});
       await Router.onMessage(msg);
 
       assert.calledWith(msg.target.sendAsyncMessage, PARENT_TO_CHILD_MESSAGE_NAME, {type: "CLEAR_ALL"});
     });
-    it("should add the endpoint provided on CONNECT_UI_REQUEST", async () => {
+    it("should make a request to the provided endpoint on CONNECT_UI_REQUEST", async () => {
       const url = "https://snippets-admin.mozilla.org/foo";
       const msg = fakeAsyncMessage({type: "CONNECT_UI_REQUEST", data: {endpoint: {url}}});
       await Router.onMessage(msg);
 
-      assert.isDefined(Router.state.providers.find(p => p.url === url));
+      assert.calledWith(global.fetch, url);
+      assert.lengthOf(Router.state.providers.filter(p => p.url === url), 0);
     });
-    it("should add the endpoint provided on ADMIN_CONNECT_STATE", async () => {
+    it("should make a request to the provided endpoint on ADMIN_CONNECT_STATE and remove the endpoint", async () => {
       const url = "https://snippets-admin.mozilla.org/foo";
       const msg = fakeAsyncMessage({type: "ADMIN_CONNECT_STATE", data: {endpoint: {url}}});
       await Router.onMessage(msg);
 
-      assert.isDefined(Router.state.providers.find(p => p.url === url));
-    });
-    it("should not add the same endpoint twice", async () => {
-      const url = "https://snippets-admin.mozilla.org/foo";
-      const msg = fakeAsyncMessage({type: "CONNECT_UI_REQUEST", data: {endpoint: {url}}});
-      await Router.onMessage(msg);
-      await Router.onMessage(msg);
-
-      assert.lengthOf(Router.state.providers.filter(p => p.url === url), 1);
+      assert.calledWith(global.fetch, url);
+      assert.lengthOf(Router.state.providers.filter(p => p.url === url), 0);
     });
     it("should not add a url that is not from a whitelisted host", async () => {
       const url = "https://mozilla.org";
       const msg = fakeAsyncMessage({type: "CONNECT_UI_REQUEST", data: {endpoint: {url}}});
       await Router.onMessage(msg);
 
       assert.lengthOf(Router.state.providers.filter(p => p.url === url), 0);
     });
@@ -405,34 +439,35 @@ describe("ASRouter", () => {
   describe("#onMessage: CONNECT_UI_REQUEST GET_NEXT_MESSAGE", () => {
     it("should call sendNextMessage on CONNECT_UI_REQUEST", async () => {
       sandbox.stub(Router, "sendNextMessage").resolves();
       const msg = fakeAsyncMessage({type: "CONNECT_UI_REQUEST"});
 
       await Router.onMessage(msg);
 
       assert.calledOnce(Router.sendNextMessage);
-      assert.calledWithExactly(Router.sendNextMessage, sinon.match.instanceOf(FakeRemotePageManager), {type: "CONNECT_UI_REQUEST"});
+      assert.calledWithExactly(Router.sendNextMessage, sinon.match.instanceOf(FakeRemotePageManager), {});
     });
     it("should call sendNextMessage on GET_NEXT_MESSAGE", async () => {
       sandbox.stub(Router, "sendNextMessage").resolves();
       const msg = fakeAsyncMessage({type: "GET_NEXT_MESSAGE"});
 
       await Router.onMessage(msg);
 
       assert.calledOnce(Router.sendNextMessage);
-      assert.calledWithExactly(Router.sendNextMessage, sinon.match.instanceOf(FakeRemotePageManager), {type: "GET_NEXT_MESSAGE"});
+      assert.calledWithExactly(Router.sendNextMessage, sinon.match.instanceOf(FakeRemotePageManager), {});
     });
-    it("should return the preview message if that's available", async () => {
+    it("should return the preview message if that's available and remove it from Router.state", async () => {
       const expectedObj = {provider: "preview"};
       Router.setState({messages: [expectedObj]});
 
       await Router.sendNextMessage(channel);
 
       assert.calledWith(channel.sendAsyncMessage, PARENT_TO_CHILD_MESSAGE_NAME, {type: "SET_MESSAGE", data: expectedObj});
+      assert.isUndefined(Router.state.messages.find(m => m.provider === "preview"));
     });
     it("should call _getBundledMessages if we request a message that needs to be bundled", async () => {
       sandbox.stub(Router, "_getBundledMessages").resolves();
       // forcefully pick a message which needs to be bundled (the second message in FAKE_LOCAL_MESSAGES)
       const [, testMessage] = Router.state.messages;
       const msg = fakeAsyncMessage({type: "OVERRIDE_MESSAGE", data: {id: testMessage.id}});
       await Router.onMessage(msg);
 
@@ -475,40 +510,40 @@ describe("ASRouter", () => {
       await Router.onMessage(msg);
       assert.calledOnce(Router.sendNextMessage);
     });
   });
 
   describe("#onMessage: TRIGGER", () => {
     it("should pass the trigger to ASRouterTargeting on TRIGGER message", async () => {
       sandbox.stub(Router, "_findMessage").resolves();
-      const msg = fakeAsyncMessage({type: "TRIGGER", data: {trigger: "firstRun"}});
+      const msg = fakeAsyncMessage({type: "TRIGGER", data: {trigger: {id: "firstRun"}}});
       await Router.onMessage(msg);
 
       assert.calledOnce(Router._findMessage);
-      assert.deepEqual(Router._findMessage.firstCall.args[2], {trigger: "firstRun"});
+      assert.deepEqual(Router._findMessage.firstCall.args[2], {id: "firstRun"});
     });
     it("consider the trigger when picking a message", async () => {
       let messages = [
-        {id: "foo1", template: "simple_template", bundled: 1, trigger: "foo", content: {title: "Foo1", body: "Foo123-1"}}
+        {id: "foo1", template: "simple_template", bundled: 1, trigger: {id: "foo"}, content: {title: "Foo1", body: "Foo123-1"}}
       ];
 
-      const {target, data} = fakeAsyncMessage({type: "TRIGGER", data: {trigger: "foo"}});
-      let message = await Router._findMessage(messages, target, data.data);
+      const {target, data} = fakeAsyncMessage({type: "TRIGGER", data: {trigger: {id: "foo"}}});
+      let message = await Router._findMessage(messages, target, data.data.trigger);
       assert.equal(message, messages[0]);
     });
     it("should pick a message with the right targeting and trigger", async () => {
       let messages = [
-        {id: "foo1", template: "simple_template", bundled: 2, trigger: "foo", content: {title: "Foo1", body: "Foo123-1"}},
-        {id: "foo2", template: "simple_template", bundled: 2, trigger: "bar", content: {title: "Foo2", body: "Foo123-2"}},
-        {id: "foo3", template: "simple_template", bundled: 2, trigger: "foo", content: {title: "Foo3", body: "Foo123-3"}}
+        {id: "foo1", template: "simple_template", bundled: 2, trigger: {id: "foo"}, content: {title: "Foo1", body: "Foo123-1"}},
+        {id: "foo2", template: "simple_template", bundled: 2, trigger: {id: "bar"}, content: {title: "Foo2", body: "Foo123-2"}},
+        {id: "foo3", template: "simple_template", bundled: 2, trigger: {id: "foo"}, content: {title: "Foo3", body: "Foo123-3"}}
       ];
       await Router.setState({messages});
-      const {target, data} = fakeAsyncMessage({type: "TRIGGER", data: {trigger: "foo"}});
-      let {bundle} = await Router._getBundledMessages(messages[0], target, data.data);
+      const {target, data} = fakeAsyncMessage({type: "TRIGGER", data: {trigger: {id: "foo"}}});
+      let {bundle} = await Router._getBundledMessages(messages[0], target, data.data.trigger);
       assert.equal(bundle.length, 2);
       // it should have picked foo1 and foo3 only
       assert.isTrue(bundle.every(elem => elem.id === "foo1" || elem.id === "foo3"));
     });
   });
 
   describe("#onMessage: OVERRIDE_MESSAGE", () => {
     it("should broadcast a SET_MESSAGE message to all clients with a particular id", async () => {
@@ -552,16 +587,39 @@ describe("ASRouter", () => {
       const msg = fakeAsyncMessage({type: "OPEN_ABOUT_PAGE", data: testMessage});
       await Router.onMessage(msg);
 
       assert.calledWith(Router.openLinkIn, `about:${testMessage.button_action_params}`, msg.target, {isPrivate: false, trusted: true, where: "tab"});
       assert.calledOnce(msg.target.browser.ownerGlobal.openTrustedLinkIn);
     });
   });
 
+  describe("#onMessage: INSTALL_ADDON_FROM_URL", () => {
+    it("should call installAddonFromURL with correct arguments", async () => {
+      sandbox.stub(MessageLoaderUtils, "installAddonFromURL").resolves(null);
+      const msg = fakeAsyncMessage({type: "INSTALL_ADDON_FROM_URL", data: {url: "foo.com"}});
+
+      await Router.onMessage(msg);
+
+      assert.calledOnce(MessageLoaderUtils.installAddonFromURL);
+      assert.calledWithExactly(MessageLoaderUtils.installAddonFromURL, msg.target.browser, "foo.com");
+    });
+  });
+
+  describe("_triggerHandler", () => {
+    it("should call #onMessage with the correct trigger", () => {
+      sinon.spy(Router, "onMessage");
+      const target = {};
+      const trigger = {id: "FAKE_TRIGGER", param: "some fake param"};
+      Router._triggerHandler(target, trigger);
+      assert.calledOnce(Router.onMessage);
+      assert.calledWithExactly(Router.onMessage, {target, data: {type: "TRIGGER", trigger}});
+    });
+  });
+
   describe("valid preview endpoint", () => {
     it("should report an error if url protocol is not https", () => {
       sandbox.stub(Cu, "reportError");
 
       assert.equal(false, Router._validPreviewEndpoint("http://foo.com"));
       assert.calledTwice(Cu.reportError);
     });
   });
@@ -654,9 +712,23 @@ describe("ASRouter", () => {
         impressions = {foo: [0], bar: []};
 
         await createRouterAndInit([{id: "onboarding", type: "local", messages}]);
         assert.notCalled(Router._storage.set);
         assert.deepEqual(Router.state.impressions, impressions);
       });
     });
   });
+
+  describe("handle targeting errors", () => {
+    it("should dispatch an event when a targeting expression throws an error", async () => {
+      sandbox.stub(global.FilterExpressions, "eval").returns(Promise.reject(new Error("fake error")));
+      await Router.setState({messages: [{id: "foo", targeting: "foo2.[[("}]});
+      const msg = fakeAsyncMessage({type: "GET_NEXT_MESSAGE"});
+      await Router.onMessage(msg);
+
+      assert.calledOnce(dispatchStub);
+      const [action] = dispatchStub.firstCall.args;
+      assert.equal(action.type, "AS_ROUTER_TELEMETRY_USER_EVENT");
+      assert.equal(action.data.message_id, "foo");
+    });
+  });
 });
--- a/browser/components/newtab/test/unit/asrouter/ASRouterFeed.test.js
+++ b/browser/components/newtab/test/unit/asrouter/ASRouterFeed.test.js
@@ -63,53 +63,53 @@ describe("ASRouterFeed", () => {
 
       assert.calledWith(Router.init, channel);
       assert.calledOnce(feed.store.dbStorage.getDbTable);
       assert.calledWithExactly(feed.store.dbStorage.getDbTable, "snippets");
       assert.calledWith(global.Services.prefs.setBoolPref, ONBOARDING_FINISHED_PREF, true);
     });
     it("should not re-initialize the ASRouter if it is already initialized", async () => {
       // Router starts initialized
-      await Router.init(new FakeRemotePageManager(), storage);
+      await Router.init(new FakeRemotePageManager(), storage, () => {});
       sinon.stub(Router, "init");
       prefs[EXPERIMENT_PREF] = true;
 
       // call .onAction with INIT
       feed.onAction({type: at.INIT, data: {name: EXPERIMENT_PREF}});
 
       assert.notCalled(Router.init);
     });
   });
   describe("#onAction: PREF_CHANGE", () => {
     it("should return early if the pref changed does not enable/disable the router", async () => {
       // Router starts initialized
-      await Router.init(new FakeRemotePageManager(), storage);
+      await Router.init(new FakeRemotePageManager(), storage, () => {});
       sinon.stub(Router, "uninit");
       prefs[EXPERIMENT_PREF] = false;
 
       // call .onAction with INIT
       feed.onAction({type: at.PREF_CHANGED, data: {name: "someOtherPref"}});
 
       assert.notCalled(Router.uninit);
     });
     it("should uninitialize the ASRouter if it is already initialized and the experiment pref is false", async () => {
       // Router starts initialized
-      await Router.init(new FakeRemotePageManager(), storage);
+      await Router.init(new FakeRemotePageManager(), storage, () => {});
       sinon.stub(Router, "uninit");
       prefs[EXPERIMENT_PREF] = false;
 
       // call .onAction with INIT
       feed.onAction({type: at.PREF_CHANGED, data: {name: EXPERIMENT_PREF}});
 
       assert.calledOnce(Router.uninit);
     });
   });
   describe("#onAction: UNINIT", () => {
     it("should uninitialize the ASRouter and restore onboarding", async () => {
-      await Router.init(new FakeRemotePageManager(), storage);
+      await Router.init(new FakeRemotePageManager(), storage, () => {});
       sinon.stub(Router, "uninit");
 
       feed.onAction({type: at.UNINIT});
 
       assert.calledOnce(Router.uninit);
       assert.calledWith(global.Services.prefs.setBoolPref, ONBOARDING_FINISHED_PREF, false);
     });
   });
new file mode 100644
--- /dev/null
+++ b/browser/components/newtab/test/unit/asrouter/ASRouterTriggerListeners.test.js
@@ -0,0 +1,133 @@
+import {ASRouterTriggerListeners} from "lib/ASRouterTriggerListeners.jsm";
+
+describe("ASRouterTriggerListeners", () => {
+  let sandbox;
+  let registerWindowNotificationStub;
+  let unregisterWindoNotificationStub;
+  let windowEnumeratorStub;
+  let existingWindow;
+  const triggerHandler = () => {};
+  const openURLListener = ASRouterTriggerListeners.get("openURL");
+  const hosts = ["www.mozilla.com", "www.mozilla.org"];
+
+  function resetEnumeratorStub(windows) {
+    windowEnumeratorStub
+      .withArgs("navigator:browser")
+      .returns({
+        _count: -1,
+        hasMoreElements() { this._count++; return this._count < windows.length; },
+        getNext() { return windows[this._count]; }
+      });
+  }
+
+  beforeEach(async () => {
+    sandbox = sinon.sandbox.create();
+    registerWindowNotificationStub = sandbox.stub(global.Services.ww, "registerNotification");
+    unregisterWindoNotificationStub = sandbox.stub(global.Services.ww, "unregisterNotification");
+    existingWindow = {gBrowser: {addTabsProgressListener: sandbox.stub(), removeTabsProgressListener: sandbox.stub()}};
+    windowEnumeratorStub = sandbox.stub(global.Services.wm, "getEnumerator");
+    resetEnumeratorStub([existingWindow]);
+    sandbox.spy(openURLListener, "init");
+    sandbox.spy(openURLListener, "uninit");
+  });
+  afterEach(() => {
+    sandbox.restore();
+  });
+
+  describe("openURL listener", () => {
+    it("should exist and initially be uninitialised", () => {
+      assert.ok(openURLListener);
+      assert.notOk(openURLListener._initialized);
+    });
+
+    describe("#init", () => {
+      beforeEach(() => {
+        openURLListener.init(triggerHandler, hosts);
+      });
+      afterEach(() => {
+        openURLListener.uninit();
+      });
+
+      it("should set ._initialized to true and save the triggerHandler and hosts", () => {
+        assert.ok(openURLListener._initialized);
+        assert.deepEqual(openURLListener._hosts, new Set(hosts));
+        assert.equal(openURLListener._triggerHandler, triggerHandler);
+      });
+
+      it("should register an open-window notification", () => {
+        assert.calledOnce(registerWindowNotificationStub);
+        assert.calledWith(registerWindowNotificationStub, openURLListener);
+      });
+
+      it("should add tab progress listeners to all existing browser windows", () => {
+        assert.calledOnce(existingWindow.gBrowser.addTabsProgressListener);
+        assert.calledWithExactly(existingWindow.gBrowser.addTabsProgressListener, openURLListener);
+      });
+
+      it("if already initialised, should only update the trigger handler and add the new hosts", () => {
+        const newHosts = ["www.example.com"];
+        const newTriggerHandler = () => {};
+        resetEnumeratorStub([existingWindow]);
+        registerWindowNotificationStub.reset();
+        existingWindow.gBrowser.addTabsProgressListener.reset();
+
+        openURLListener.init(newTriggerHandler, newHosts);
+        assert.ok(openURLListener._initialized);
+        assert.deepEqual(openURLListener._hosts, new Set([...hosts, ...newHosts]));
+        assert.equal(openURLListener._triggerHandler, newTriggerHandler);
+        assert.notCalled(registerWindowNotificationStub);
+        assert.notCalled(existingWindow.gBrowser.addTabsProgressListener);
+      });
+    });
+
+    describe("#uninit", () => {
+      beforeEach(() => {
+        openURLListener.init(triggerHandler, hosts);
+        // Ensure that the window enumerator will return the existing window for uninit as well
+        resetEnumeratorStub([existingWindow]);
+        openURLListener.uninit();
+      });
+
+      it("should set ._initialized to false and clear the triggerHandler and hosts", () => {
+        assert.notOk(openURLListener._initialized);
+        assert.equal(openURLListener._hosts, null);
+        assert.equal(openURLListener._triggerHandler, null);
+      });
+
+      it("should remove an open-window notification", () => {
+        assert.calledOnce(unregisterWindoNotificationStub);
+        assert.calledWith(unregisterWindoNotificationStub, openURLListener);
+      });
+
+      it("should remove tab progress listeners from all existing browser windows", () => {
+        assert.calledOnce(existingWindow.gBrowser.removeTabsProgressListener);
+        assert.calledWithExactly(existingWindow.gBrowser.removeTabsProgressListener, openURLListener);
+      });
+
+      it("should do nothing if already uninitialised", () => {
+        unregisterWindoNotificationStub.reset();
+        existingWindow.gBrowser.removeTabsProgressListener.reset();
+        resetEnumeratorStub([existingWindow]);
+
+        openURLListener.uninit();
+        assert.notOk(openURLListener._initialized);
+        assert.notCalled(unregisterWindoNotificationStub);
+        assert.notCalled(existingWindow.gBrowser.removeTabsProgressListener);
+      });
+    });
+
+    describe("#onLocationChange", () => {
+      it("should call the ._triggerHandler with the right arguments", () => {
+        const newTriggerHandler = sinon.stub();
+        openURLListener.init(newTriggerHandler, hosts);
+
+        const browser = {messageManager: {}};
+        const webProgress = {isTopLevel: true};
+        const location = "https://www.mozilla.org/something";
+        openURLListener.onLocationChange(browser, webProgress, undefined, {spec: location});
+        assert.calledOnce(newTriggerHandler);
+        assert.calledWithExactly(newTriggerHandler, browser.messageManager, {id: "openURL", param: "www.mozilla.org"});
+      });
+    });
+  });
+});
--- a/browser/components/newtab/test/unit/asrouter/MessageLoaderUtils.test.js
+++ b/browser/components/newtab/test/unit/asrouter/MessageLoaderUtils.test.js
@@ -1,8 +1,9 @@
+import {GlobalOverrider} from "test/unit/utils";
 import {MessageLoaderUtils} from "lib/ASRouter.jsm";
 
 describe("MessageLoaderUtils", () => {
   let fetchStub;
   let clock;
 
   beforeEach(() => {
     clock = sinon.useFakeTimers();
@@ -130,9 +131,47 @@ describe("MessageLoaderUtils", () => {
       clock.tick(301);
       assert.isTrue(MessageLoaderUtils.shouldProviderUpdate({id: "foo", lastUpdated: 0, updateCycleInMs: 300}));
     });
     it("should return false if the time since .lastUpdated is less than .updateCycleInMs", () => {
       clock.tick(299);
       assert.isFalse(MessageLoaderUtils.shouldProviderUpdate({id: "foo", lastUpdated: 0,  updateCycleInMs: 300}));
     });
   });
+
+  describe("#installAddonFromURL", () => {
+    let globals;
+    let sandbox;
+    let getInstallStub;
+    let installAddonStub;
+    beforeEach(() => {
+      globals = new GlobalOverrider();
+      sandbox = sinon.sandbox.create();
+      getInstallStub = sandbox.stub();
+      installAddonStub = sandbox.stub();
+      globals.set("AddonManager", {
+        getInstallForURL: getInstallStub,
+        installAddonFromWebpage: installAddonStub
+      });
+    });
+    afterEach(() => {
+      sandbox.restore();
+      globals.restore();
+    });
+    it("should call the Addons API when passed a valid URL", async () => {
+      getInstallStub.resolves(null);
+      installAddonStub.resolves(null);
+
+      await MessageLoaderUtils.installAddonFromURL({}, "foo.com");
+
+      assert.calledOnce(getInstallStub);
+      assert.calledOnce(installAddonStub);
+    });
+    it("should not call the Addons API on invalid URLs", async () => {
+      sandbox.stub(global.Services.scriptSecurityManager, "getSystemPrincipal").throws();
+
+      await MessageLoaderUtils.installAddonFromURL({}, "https://foo.com");
+
+      assert.notCalled(getInstallStub);
+      assert.notCalled(installAddonStub);
+    });
+  });
 });
--- a/browser/components/newtab/test/unit/lib/TopSitesFeed.test.js
+++ b/browser/components/newtab/test/unit/lib/TopSitesFeed.test.js
@@ -61,17 +61,17 @@ describe("Top Sites Feed", () => {
       }
     };
     fakeScreenshot = {
       getScreenshotForURL: sandbox.spy(() => Promise.resolve(FAKE_SCREENSHOT)),
       maybeCacheScreenshot: sandbox.spy(Screenshots.maybeCacheScreenshot),
       _shouldGetScreenshots: sinon.stub().returns(true)
     };
     filterAdultStub = sinon.stub().returns([]);
-    shortURLStub = sinon.stub().callsFake(site => site.url);
+    shortURLStub = sinon.stub().callsFake(site => site.url.replace(".com", ""));
     const fakeDedupe = function() {};
     fakePageThumbs = {
       addExpirationFilter: sinon.stub(),
       removeExpirationFilter: sinon.stub()
     };
     globals.set("PageThumbs", fakePageThumbs);
     globals.set("NewTabUtils", fakeNewTabUtils);
     FakePrefs.prototype.prefs["default.sites"] = "https://foo.com/";
@@ -1078,9 +1078,54 @@ describe("Top Sites Feed", () => {
       fakeNewTabUtils.pinnedLinks.links.pop();
       await forDispatch({type: at.PLACES_LINK_BLOCKED});
 
       assert.calledTwice(feed.store.dispatch);
       assert.equal(feed.store.dispatch.firstCall.args[0].data.links[0].url, url);
       assert.equal(feed.store.dispatch.secondCall.args[0].data.links[0].url, FAKE_LINKS[0].url);
     });
   });
+
+  describe("improvesearch.noDefaultSearchTile experiment", () => {
+    const NO_DEFAULT_SEARCH_TILE_PREF = "improvesearch.noDefaultSearchTile";
+    let cachedDefaultSearch;
+    beforeEach(() => {
+      cachedDefaultSearch = global.Services.search.defaultEngine;
+      global.Services.search.defaultEngine = {identifier: "google"};
+      feed.store.state.Prefs.values[NO_DEFAULT_SEARCH_TILE_PREF] = true;
+    });
+    afterEach(() => {
+      global.Services.search.defaultEngine = cachedDefaultSearch;
+    });
+    it("should not filter out google from the query results if the experiment pref is off", async () => {
+      links = [{url: "google.com"}, {url: "foo.com"}];
+      feed.store.state.Prefs.values[NO_DEFAULT_SEARCH_TILE_PREF] = false;
+      const urlsReturned = (await feed.getLinksWithDefaults()).map(link => link.url);
+      assert.include(urlsReturned, "google.com");
+    });
+    it("should filter out google from the default sites if it matches the current default search", async () => {
+      feed.onAction({type: at.PREFS_INITIAL_VALUES, data: {"default.sites": "google.com,amazon.com"}});
+      links = [{url: "foo.com"}];
+      const urlsReturned = (await feed.getLinksWithDefaults()).map(link => link.url);
+      assert.include(urlsReturned, "amazon.com");
+      assert.notInclude(urlsReturned, "google.com");
+    });
+    it("should not filter out google from pinned sites even if it matches the current default search", async () => {
+      links = [{url: "foo.com"}];
+      fakeNewTabUtils.pinnedLinks.links = [{url: "google.com"}];
+      const urlsReturned = (await feed.getLinksWithDefaults()).map(link => link.url);
+      assert.include(urlsReturned, "google.com");
+    });
+    it("should call refresh when the the default search engine has been set", () => {
+      sinon.stub(feed, "refresh");
+      feed.observe(null, "browser-search-engine-modified", "engine-default");
+    });
+    it("should call refresh when the experiment pref has changed", () => {
+      sinon.stub(feed, "refresh");
+
+      feed.onAction({type: at.PREF_CHANGED, data: {name: NO_DEFAULT_SEARCH_TILE_PREF, value: true}});
+      assert.calledOnce(feed.refresh);
+
+      feed.onAction({type: at.PREF_CHANGED, data: {name: NO_DEFAULT_SEARCH_TILE_PREF, value: false}});
+      assert.calledTwice(feed.refresh);
+    });
+  });
 });
--- a/browser/components/newtab/test/unit/unit-entry.js
+++ b/browser/components/newtab/test/unit/unit-entry.js
@@ -97,16 +97,17 @@ const TEST_GLOBAL = {
       return TEST_GLOBAL.Cc["@mozilla.org/browser/nav-bookmarks-service;1"];
     },
     get history() {
       return TEST_GLOBAL.Cc["@mozilla.org/browser/nav-history-service;1"];
     }
   },
   PluralForm: {get() {}},
   Preferences: FakePrefs,
+  PrivateBrowsingUtils: {isWindowPrivate: () => false},
   DownloadsViewUI: {DownloadElementShell},
   Services: {
     locale: {
       getAppLocaleAsLangTag() { return "en-US"; },
       getAppLocalesAsLangTags() {},
       negotiateLanguages() {}
     },
     urlFormatter: {formatURL: str => str},
@@ -173,17 +174,18 @@ const TEST_GLOBAL = {
       init(cb) { cb(); },
       getVisibleEngines: () => [{identifier: "google"}, {identifier: "bing"}],
       defaultEngine: {identifier: "google"}
     },
     scriptSecurityManager: {
       createNullPrincipal() {},
       getSystemPrincipal() {}
     },
-    wm: {getMostRecentWindow: () => window},
+    wm: {getMostRecentWindow: () => window, getEnumerator: () => ({hasMoreElements: () => false})},
+    ww: {registerNotification() {}, unregisterNotification() {}},
     appinfo: {appBuildID: "20180710100040"}
   },
   XPCOMUtils: {
     defineLazyGetter(_1, _2, f) { f(); },
     defineLazyGlobalGetters() {},
     defineLazyModuleGetter() {},
     defineLazyServiceGetter() {},
     generateQI() { return {}; }