Bug 1338567 - Update debugger frontend (2/10/2017) r=jdescottes.
☠☠ backed out by df4752809a83 ☠ ☠
authorJason Laster <jason.laster.11@gmail.com>
Wed, 01 Mar 2017 12:01:37 +0100
changeset 374315 e9dcba1a87af814aa7bb81f8233bb5461f8b84a1
parent 374314 6d0ac4c74fd5a4e2f53e83c00ff8ca24abe5e1d7
child 374316 c594a1353f5dca6f24b45cfc5fd979d3bae837bd
push id10863
push userjlorenzo@mozilla.com
push dateMon, 06 Mar 2017 23:02:23 +0000
treeherdermozilla-aurora@0931190cd725 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjdescottes
bugs1338567
milestone54.0a1
Bug 1338567 - Update debugger frontend (2/10/2017) r=jdescottes. MozReview-Commit-ID: 1Sl9jB0M0af
devtools/client/debugger/new/debugger.css
devtools/client/debugger/new/debugger.js
devtools/client/debugger/new/index.html
devtools/client/debugger/new/integration-tests.js
devtools/client/debugger/new/moz.build
devtools/client/debugger/new/pretty-print-worker.js
devtools/client/debugger/new/source-map-worker.js
devtools/client/debugger/new/test/mochitest/browser.ini
devtools/client/debugger/new/test/mochitest/browser_dbg-asm.js
devtools/client/debugger/new/test/mochitest/browser_dbg-breaking-from-console.js
devtools/client/debugger/new/test/mochitest/browser_dbg-breaking.js
devtools/client/debugger/new/test/mochitest/browser_dbg-breakpoints-cond.js
devtools/client/debugger/new/test/mochitest/browser_dbg-breakpoints.js
devtools/client/debugger/new/test/mochitest/browser_dbg-call-stack.js
devtools/client/debugger/new/test/mochitest/browser_dbg-chrome-create.js
devtools/client/debugger/new/test/mochitest/browser_dbg-chrome-debugging.js
devtools/client/debugger/new/test/mochitest/browser_dbg-console.js
devtools/client/debugger/new/test/mochitest/browser_dbg-debugger-buttons.js
devtools/client/debugger/new/test/mochitest/browser_dbg-editor-gutter.js
devtools/client/debugger/new/test/mochitest/browser_dbg-editor-highlight.js
devtools/client/debugger/new/test/mochitest/browser_dbg-editor-select.js
devtools/client/debugger/new/test/mochitest/browser_dbg-expressions.js
devtools/client/debugger/new/test/mochitest/browser_dbg-iframes.js
devtools/client/debugger/new/test/mochitest/browser_dbg-navigation.js
devtools/client/debugger/new/test/mochitest/browser_dbg-pause-exceptions.js
devtools/client/debugger/new/test/mochitest/browser_dbg-pretty-print-paused.js
devtools/client/debugger/new/test/mochitest/browser_dbg-pretty-print.js
devtools/client/debugger/new/test/mochitest/browser_dbg-returnvalues.js
devtools/client/debugger/new/test/mochitest/browser_dbg-scopes.js
devtools/client/debugger/new/test/mochitest/browser_dbg-searching.js
devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemaps-bogus.js
devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemaps.js
devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemaps2.js
devtools/client/debugger/new/test/mochitest/browser_dbg-sources.js
devtools/client/debugger/new/test/mochitest/browser_dbg_keyboard-shortcuts.js
devtools/client/debugger/new/test/mochitest/browser_dbg_keyboard_navigation.js
devtools/client/debugger/new/test/mochitest/examples/asm.js
devtools/client/debugger/new/test/mochitest/examples/doc-asm.html
devtools/client/debugger/new/test/mochitest/examples/doc-frames.html
devtools/client/debugger/new/test/mochitest/examples/doc-return-values.html
devtools/client/debugger/new/test/mochitest/examples/doc-script-switching.html
devtools/client/debugger/new/test/mochitest/examples/doc-sources.html
devtools/client/debugger/new/test/mochitest/examples/frames.js
devtools/client/debugger/new/test/mochitest/examples/script-switching-01.js
devtools/client/debugger/new/test/mochitest/head.js
devtools/client/locales/en-US/debugger.properties
--- a/devtools/client/debugger/new/debugger.css
+++ b/devtools/client/debugger/new/debugger.css
@@ -1,65 +1,159 @@
-:root.theme-light,
-:root .theme-light {
-  --theme-search-overlays-semitransparent: rgba(221, 225, 228, 0.66);
-}
-
-* {
-  box-sizing: border-box;
-}
-
-html,
-body {
-  height: 100%;
-  margin: 0;
-  padding: 0;
-  width: 100%;
-}
-
-#mount {
-  display: flex;
-  height: 100%;
-}
-
-::-webkit-scrollbar {
-  width: 8px;
-  height: 8px;
-  background: transparent;
-}
-
-::-webkit-scrollbar-track {
-  border-radius: 8px;
-  background: transparent;
-}
-
-::-webkit-scrollbar-thumb {
-  border-radius: 8px;
-  background: rgba(113, 113, 113, 0.5);
-}
-
-:root.theme-dark .CodeMirror-scrollbar-filler {
-  background: transparent;
-}
 .landing-page {
   flex: 1;
   display: flex;
   width: 100vw;
   height: 100vh;
   flex-direction: row;
   align-items: stretch;
   /* Customs properties */
   --title-font-size: 24px;
   --ui-element-font-size: 16px;
   --primary-line-height: 30px;
   --secondary-line-height: 25px;
   --base-spacing: 20px;
   --base-transition: all 0.25s ease;
 }
 
+.landing-popup {
+  min-width: 0;
+}
+
+.landing-page .panel {
+  display: flex;
+  flex: 1;
+  flex-direction: column;
+  justify-content: space-between;
+}
+
+.landing-page .panel header {
+  display: flex;
+  align-items: baseline;
+  margin: calc(2 * var(--base-spacing)) 0 0;
+  padding-bottom: var(--base-spacing);
+}
+
+.landing-page .panel header input[type=search] {
+  flex: 1;
+  background-color: var(--theme-tab-toolbar-background);
+  color: var(--theme-comment);
+  font-size: var(--ui-element-font-size);
+  border: 1px solid var(--theme-splitter-color);
+  padding: calc(var(--base-spacing) / 2);
+  margin: 0 var(--base-spacing);
+  transition: var(--base-transition);
+}
+
+.landing-page .panel header input[type=button] {
+  background-color: var(--theme-tab-toolbar-background);
+  color: var(--theme-comment);
+  font-size: var(--ui-element-font-size);
+  border: 1px solid var(--theme-splitter-color);
+  padding: calc(var(--base-spacing) / 2);
+  margin: 0 var(--base-spacing);
+  transition: var(--base-transition);
+}
+
+.landing-page .panel header h1 {
+  color: var(--theme-body-color);
+  font-size: var(--title-font-size);
+  margin: 0;
+  line-height: var(--primary-line-height);
+  font-weight: normal;
+  padding-left: calc(2 * var(--base-spacing));
+}
+
+.landing-page .panel h3 {
+  padding-left: calc(2 * var(--base-spacing));
+}
+
+.landing-page .panel header input::placeholder {
+  color: var(--theme-body-color-inactive);
+}
+
+.landing-page .panel header input:focus {
+  border: 1px solid var(--theme-selection-background);
+}
+
+.landing-page .panel .center-message {
+  font-size: var(--ui-element-font-size);
+  line-height: var(--secondary-line-height);
+  padding: calc(var(--base-spacing) / 2);
+}
+
+.landing-page .center a {
+  color: var(--theme-highlight-bluegrey);
+  text-decoration: none;
+}
+
+.landing-page .panel .footer-note {
+  padding: var(--base-spacing) 0;
+  text-align: center;
+  font-size: 14px;
+  color: var(--theme-comment);
+}
+.landing-page .tab-group {
+  flex: 1;
+  overflow-y: auto;
+}
+
+.landing-page .tab-list {
+  list-style: none;
+  padding: 0;
+  margin: 0;
+}
+
+.landing-page .tab {
+  border-bottom: 1px solid var(--theme-splitter-color);
+  padding: calc(var(--base-spacing) / 2) var(--base-spacing);
+  font-family: sans-serif;
+}
+
+.landing-page .tab-sides {
+  display: flex;
+  justify-content: space-between;
+  margin: 0 calc(var(--base-spacing) * 2);
+}
+
+.landing-page .tab-title {
+  line-height: var(--secondary-line-height);
+  font-size: var(--ui-element-font-size);
+  color: var(--theme-highlight-bluegrey);
+  word-break: break-all;
+}
+
+.landing-page .tab-url {
+  color: var(--theme-comment);
+  word-break: break-all;
+}
+
+.landing-page .tab-value {
+  color: var(--theme-comment);
+  line-height: var(--secondary-line-height);
+  font-size: var(--ui-element-font-size);
+}
+
+.landing-page .tab:focus,
+.landing-page .tab.active {
+  background: var(--theme-selection-background);
+  color: var(--theme-selection-color);
+  cursor: pointer;
+  transition: var(--base-transition);
+}
+
+.landing-page .tab:focus .tab-title,
+.landing-page .tab.active .tab-title {
+  color: inherit;
+}
+
+.landing-page .tab:focus .tab-url,
+.landing-page .tab.active .tab-url {
+  color: var(--theme-highlight-gray);
+}
 .landing-page .sidebar {
   display: flex;
   background-color: var(--theme-tab-toolbar-background);
   width: 200px;
   flex-direction: column;
   border-right: 1px solid var(--theme-splitter-color);
 }
 
@@ -103,834 +197,56 @@ body {
   color: var(--theme-selection-color);
   cursor: pointer;
 }
 
 .landing-page .sidebar li:hover a,
 .landing-page .sidebar li:focus a {
   color: inherit;
 }
-
-.landing-page .panel {
-  display: flex;
-  flex: 1;
-  flex-direction: column;
-  justify-content: space-between;
-}
-
-.landing-page .panel header {
-  display: flex;
-  align-items: baseline;
-  margin: calc(2 * var(--base-spacing)) 0 0;
-  padding-bottom: var(--base-spacing);
-}
-
-.landing-page .panel header input {
-  flex: 1;
-  background-color: var(--theme-tab-toolbar-background);
-  color: var(--theme-comment);
-  font-size: var(--ui-element-font-size);
-  border: 1px solid var(--theme-splitter-color);
-  padding: calc(var(--base-spacing) / 2);
-  margin: 0 var(--base-spacing);
-  transition: var(--base-transition);
-}
-
-.landing-page .panel header input::placeholder {
-  color: var(--theme-body-color-inactive);
-}
-
-.landing-page .panel header input:focus {
-  border: 1px solid var(--theme-selection-background);
-}
-
-.landing-page .panel .center-message {
-  font-size: var(--ui-element-font-size);
-  line-height: var(--secondary-line-height);
-  padding: calc(var(--base-spacing) / 2);
-}
-
-.landing-page .center a {
-  color: var(--theme-highlight-bluegrey);
-  text-decoration: none;
-}
-
-.landing-page .tab-group {
-  flex: 1;
-  overflow-y: auto;
-}
-
-.landing-page .tab-list {
-  list-style: none;
-  padding: 0;
-  margin: 0;
-}
-
-.landing-page .tab {
-  border-bottom: 1px solid var(--theme-splitter-color);
-  padding: calc(var(--base-spacing) / 2) var(--base-spacing);
-  font-family: sans-serif;
-}
-
-.landing-page .tab-title {
-  line-height: var(--secondary-line-height);
-  font-size: var(--ui-element-font-size);
-  color: var(--theme-highlight-bluegrey);
-  word-break: break-all;
-}
-
-.landing-page .tab-url {
-  color: var(--theme-comment);
-  word-break: break-all;
-}
-
-.landing-page .tab:focus,
-.landing-page .tab.active {
-  background: var(--theme-selection-background);
-  color: var(--theme-selection-color);
-  cursor: pointer;
-  transition: var(--base-transition);
-}
-
-.landing-page .tab:focus .tab-title,
-.landing-page .tab.active .tab-title {
-  color: inherit;
-}
-
-.landing-page .tab:focus .tab-url,
-.landing-page .tab.active .tab-url {
-  color: var(--theme-highlight-gray);
-}
-
-.landing-page .panel .footer-note {
-  padding: var(--base-spacing) 0;
-  text-align: center;
-  font-size: 14px;
-  color: var(--theme-comment);
-}
-.debugger {
-  display: flex;
-  flex: 1;
-  height: 100%;
-}
-
-.editor-pane {
-  display: flex;
-  position: relative;
-  flex: 1;
-  background-color: var(--theme-tab-toolbar-background);
-  height: calc(100% - 1px);
-  overflow: hidden;
-}
-
-.editor-container {
-  display: flex;
-  flex: 1;
-}
-
-.subsettings:hover {
-  cursor: pointer;
-}
-
-.search-container {
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  display: flex;
-  z-index: 200;
-  background-color: var(--theme-search-overlays-semitransparent);
-}
-
-.search-container .autocomplete {
-  flex: 1;
-}
-
-.search-container .close-button {
-  width: 16px;
-  margin-top: 25px;
-  margin-right: 20px;
-}
-menupopup {
-  position: fixed;
-  z-index: 10000;
-  background: white;
-  border: 1px solid #cccccc;
-  padding: 5px 0;
-  background: #f2f2f2;
-  border-radius: 5px;
-  color: #585858;
-  box-shadow: 0 0 4px 0 rgba(190, 190, 190, 0.8);
-  min-width: 130px;
-}
-
-menuitem {
-  display: block;
-  padding: 0 20px;
-  line-height: 20px;
-  font-weight: 500;
-  font-size: 13px;
-  -moz-user-select: none;
-  user-select: none;
-}
-
-menuitem:hover {
-  background: #3780fb;
-  color: white;
-  cursor: pointer;
-}
-
-menuitem[disabled=true] {
-  color: #cccccc;
-}
-
-menuitem[disabled=true]:hover {
-  background-color: transparent;
-  cursor: default;
-}
-
-menuseparator {
-  border-bottom: 1px solid #cacdd3;
-  width: 100%;
-  height: 5px;
-  display: block;
-  margin-bottom: 5px;
-}
-
-#contextmenu-mask.show {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  z-index: 999;
-}
-/* vim:set ts=2 sw=2 sts=2 et: */
-/* 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/. */
-
-.split-box {
-  display: flex;
-  flex: 1;
-  min-width: 0;
-  height: 100%;
-  width: 100%;
-}
-
-.split-box.vert {
-  flex-direction: row;
-}
-
-.split-box.horz {
-  flex-direction: column;
-}
-
-.split-box > .uncontrolled {
-  display: flex;
-  flex: 1;
-  min-width: 0;
-  overflow: auto;
-}
-
-.split-box > .controlled {
-  display: flex;
-  overflow: auto;
-}
-
-.split-box > .splitter {
-  background-image: none;
-  border: 0;
-  border-style: solid;
-  border-color: transparent;
-  background-color: var(--theme-splitter-color);
-  background-clip: content-box;
-  position: relative;
-
+:root.theme-light,
+:root .theme-light {
+  --theme-search-overlays-semitransparent: rgba(221, 225, 228, 0.66);
+}
+
+* {
   box-sizing: border-box;
-
-  /* Positive z-index positions the splitter on top of its siblings and makes
-     it clickable on both sides. */
-  z-index: 1;
-}
-
-.split-box.vert > .splitter {
-  min-width: calc(var(--devtools-splitter-inline-start-width) +
-    var(--devtools-splitter-inline-end-width) + 1px);
-
-  border-left-width: var(--devtools-splitter-inline-start-width);
-  border-right-width: var(--devtools-splitter-inline-end-width);
-
-  margin-left: calc(-1 * var(--devtools-splitter-inline-start-width) - 1px);
-  margin-right: calc(-1 * var(--devtools-splitter-inline-end-width));
-
-  cursor: ew-resize;
-}
-
-.split-box.horz > .splitter {
-  min-height: calc(var(--devtools-splitter-top-width) +
-    var(--devtools-splitter-bottom-width) + 1px);
-
-  border-top-width: var(--devtools-splitter-top-width);
-  border-bottom-width: var(--devtools-splitter-bottom-width);
-
-  margin-top: calc(-1 * var(--devtools-splitter-top-width) - 1px);
-  margin-bottom: calc(-1 * var(--devtools-splitter-bottom-width));
-
-  cursor: ns-resize;
-}
-
-.split-box.disabled {
-  pointer-events: none;
-}
-
-/**
- * Make sure splitter panels are not processing any mouse
- * events. This is good for performance during splitter
- * bar dragging.
- */
-.split-box.dragging > .controlled,
-.split-box.dragging > .uncontrolled {
-  pointer-events: none;
-}
-/* vim:set ts=2 sw=2 sts=2 et: */
-/* 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/. */
-
-.theme-dark,
-.theme-light {
-  --number-color: var(--theme-highlight-green);
-  --string-color: var(--theme-highlight-orange);
-  --null-color: var(--theme-comment);
-  --object-color: var(--theme-body-color);
-  --caption-color: var(--theme-highlight-blue);
-  --location-color: var(--theme-content-color1);
-  --source-link-color: var(--theme-highlight-blue);
-  --node-color: var(--theme-highlight-bluegrey);
-  --reference-color: var(--theme-highlight-purple);
-}
-
-.theme-firebug {
-  --number-color: #000088;
-  --string-color: #FF0000;
-  --null-color: #787878;
-  --object-color: DarkGreen;
-  --caption-color: #444444;
-  --location-color: #555555;
-  --source-link-color: blue;
-  --node-color: rgb(0, 0, 136);
-  --reference-color: rgb(102, 102, 255);
-}
-
-/******************************************************************************/
-
-.objectLink:hover {
-  cursor: pointer;
-  text-decoration: underline;
-}
-
-.inline {
-  display: inline;
-  white-space: normal;
-}
-
-.objectBox-object {
-  font-weight: bold;
-  color: var(--object-color);
-  white-space: pre-wrap;
-}
-
-.objectBox-string,
-.objectBox-text,
-.objectLink-textNode,
-.objectBox-table {
-  white-space: pre-wrap;
-}
-
-.objectBox-number,
-.objectLink-styleRule,
-.objectLink-element,
-.objectLink-textNode,
-.objectBox-array > .length {
-  color: var(--number-color);
-}
-
-.objectBox-string {
-  color: var(--string-color);
-}
-
-.objectLink-function,
-.objectBox-stackTrace,
-.objectLink-profile {
-  color: var(--object-color);
-}
-
-.objectLink-Location {
-  font-style: italic;
-  color: var(--location-color);
-}
-
-.objectBox-null,
-.objectBox-undefined,
-.objectBox-hint,
-.logRowHint {
-  font-style: italic;
-  color: var(--null-color);
-}
-
-.objectLink-sourceLink {
-  position: absolute;
-  right: 4px;
-  top: 2px;
-  padding-left: 8px;
-  font-weight: bold;
-  color: var(--source-link-color);
-}
-
-/******************************************************************************/
-
-.objectLink-event,
-.objectLink-eventLog,
-.objectLink-regexp,
-.objectLink-object,
-.objectLink-Date {
-  font-weight: bold;
-  color: var(--object-color);
-  white-space: pre-wrap;
-}
-
-/******************************************************************************/
-
-.objectLink-object .nodeName,
-.objectLink-NamedNodeMap .nodeName,
-.objectLink-NamedNodeMap .objectEqual,
-.objectLink-NamedNodeMap .arrayLeftBracket,
-.objectLink-NamedNodeMap .arrayRightBracket,
-.objectLink-Attr .attrEqual,
-.objectLink-Attr .attrTitle {
-  color: var(--node-color);
-}
-
-.objectLink-object .nodeName {
-  font-weight: normal;
-}
-
-/******************************************************************************/
-
-.objectLeftBrace,
-.objectRightBrace,
-.arrayLeftBracket,
-.arrayRightBracket {
-  cursor: pointer;
-  font-weight: bold;
-}
-
-.objectLeftBrace,
-.arrayLeftBracket {
-  margin-right: 4px;
-}
-
-.objectRightBrace,
-.arrayRightBracket {
-  margin-left: 4px;
-}
-
-/******************************************************************************/
-/* Cycle reference*/
-
-.objectLink-Reference {
-  font-weight: bold;
-  color: var(--reference-color);
-}
-
-.objectBox-array > .objectTitle {
-  font-weight: bold;
-  color: var(--object-color);
-}
-
-.caption {
-  font-weight: bold;
-  color:  var(--caption-color);
-}
-
-/******************************************************************************/
-/* Themes */
-
-.theme-dark .objectBox-null,
-.theme-dark .objectBox-undefined,
-.theme-light .objectBox-null,
-.theme-light .objectBox-undefined {
-  font-style: normal;
-}
-
-.theme-dark .objectBox-object,
-.theme-light .objectBox-object {
-  font-weight: normal;
-  white-space: pre-wrap;
-}
-
-.theme-dark .caption,
-.theme-light .caption {
-  font-weight: normal;
-}
-/* vim:set ts=2 sw=2 sts=2 et: */
-
-/* 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/. */
-
-.search-container {
-  position: absolute;
-  top: 30px;
-  left: 0;
-  width: calc(100% - 1px);
-  height: calc(100% - 31px);
-  display: flex;
-  z-index: 200;
-  background-color: var(--theme-body-background);
-}
-
-.search-container .autocomplete {
-  flex: 1;
-}
-
-.searchinput-container {
+}
+
+html,
+body {
+  height: 100%;
+  margin: 0;
+  padding: 0;
+  width: 100%;
+}
+
+#mount {
   display: flex;
-}
-
-.searchinput-container .close-btn-big {
-  border-bottom: 1px solid var(--theme-splitter-color);
-}
-
-.arrow,
-.folder,
-.domain,
-.file,
-.worker,
-.refresh,
-.add-button {
-  fill: var(--theme-splitter-color);
-}
-
-.worker,
-.folder {
-  position: relative;
-  top: 2px;
-}
-
-.domain,
-.file,
-.worker,
-.refresh,
-.add-button {
-  position: relative;
-  top: 1px;
-}
-
-.domain svg,
-.folder svg,
-.worker svg,
-.refresh svg,
-.add-button svg {
-  width: 15px;
-}
-
-.file svg {
-  width: 13px;
-}
-
-.file svg,
-.domain svg,
-.folder svg,
-.refresh svg,
-.worker svg {
-  margin-inline-end: 5px;
-}
-
-.arrow svg {
-  fill: var(--theme-splitter-color);
-  margin-top: 3px;
-  transition: transform 0.25s ease;
-  width: 10px;
-}
-
-html:not([dir="rtl"]) .arrow svg {
-  margin-right: 5px;
-  transform: rotate(-90deg);
-}
-
-html[dir="rtl"] .arrow svg {
-  margin-left: 5px;
-  transform: rotate(90deg);
-}
-
-/* TODO (Amit): html is just for specificity. keep it like this? */
-html .arrow.expanded svg {
-  transform: rotate(0deg);
-}
-
-.arrow.hidden {
-  visibility: hidden;
-}
-.close-btn path {
-  fill: var(--theme-body-color);
-}
-
-.close-btn .close {
-  cursor: pointer;
-  width: 12px;
-  height: 12px;
-  padding: 2px;
-  text-align: center;
-  margin-top: 2px;
-  line-height: 5px;
-  transition: all 0.25s easeinout;
-}
-
-.close-btn .close svg {
-  width: 6px;
-}
-
-.close-btn .close:hover {
-  background: var(--theme-selection-background);
-  border-radius: 2px;
-}
-
-.close-btn .close:hover path {
-  fill: white;
-}
-
-.close-btn-big {
-  padding: 13px;
-  width: 40px;
-  height: 40px;
-}
-
-.close-btn-big path {
-  fill: var(--theme-body-color);
-}
-
-.close-btn-big .close {
-  cursor: pointer;
-  display: inline-block;
-  padding: 2px;
-  text-align: center;
-  transition: all 0.25s easeinout;
-  line-height: 100%;
-  width: 16px;
-  height: 16px;
-}
-
-.close-btn-big .close svg {
-  width: 9px;
-  height: 9px;
-}
-
-.close-btn-big .close:hover {
-  background: var(--theme-selection-background);
-  border-radius: 2px;
-}
-
-.close-btn-big .close:hover path {
-  fill: white;
-}
-
-.autocomplete {
-  width: 100%;
-}
-
-.autocomplete .results * {
-  -moz-user-select: none;
-  user-select: none;
-}
-
-.autocomplete .results-summary {
-  margin: 10px;
-  text-align: start;
-}
-
-.autocomplete ul {
-  list-style: none;
-  width: 100%;
-  max-height: calc(100% - 32px);
-  margin: 0px;
-  padding: 0px;
-  overflow: auto;
-}
-
-.autocomplete li {
-  border: 2px solid var(--theme-splitter-color);
-  background-color: var(--theme-tab-toolbar-background);
-  padding: 10px;
-  margin: 10px;
-}
-
-.autocomplete li:hover {
-  background: var(--theme-tab-toolbar-background);
-  cursor: pointer;
-}
-
-.autocomplete li.selected {
-  border: 2px solid var(--theme-selection-background);
-}
-
-.autocomplete li .title {
-  line-height: 1.5em;
-  word-break: break-all;
-}
-
-.autocomplete li .subtitle {
-  line-height: 1.5em;
-  color: grey;
-  word-break: break-all;
-}
-
-.autocomplete input {
-  width: 100%;
-  border: none;
-  background-color: var(--theme-body-background);
-  color: var(--theme-comment);
-  border-bottom: 1px solid var(--theme-splitter-color);
-  outline: none;
-  line-height: 30px;
-  font-size: 14px;
-  height: 40px;
-  padding-inline-start: 30px;
-}
-
-.autocomplete input::placeholder {
-  color: var(--theme-body-color-inactive);
-}
-
-.autocomplete .magnifying-glass svg {
-  width: 16px;
-  position: absolute;
-  top: 12px;
-  offset-inline-start: 10px;
-}
-
-.autocomplete.focused .magnifying-glass path,
-.autocomplete.focused .magnifying-glass ellipse {
-  stroke: var(--theme-highlight-blue);
-}
-
-.autocomplete .magnifying-glass path,
-.autocomplete .magnifying-glass ellipse {
-  stroke: var(--theme-splitter-color);
-}
-
-.autocomplete .no-result-msg {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  width: 100%;
   height: 100%;
-  color: var(--theme-graphs-full-red);
-  font-size: 24px;
-  padding: 4px;
-  word-break: break-all;
-}
-
-.autocomplete .no-result-msg .sad-face {
-  width: 24px;
-  margin: 0 4px;
-  line-height: 0;
-  flex-shrink: 0;
-}
-
-.autocomplete .no-result-msg .sad-face svg {
-  fill: var(--theme-graphs-full-red);
-}
-.tree {
-  -webkit-user-select: none;
-  -moz-user-select: none;
-  -ms-user-select: none;
-  -o-user-select: none;
-  user-select: none;
-
-  flex: 1;
-  white-space: nowrap;
-  overflow: auto;
-}
-
-.tree button {
-  display: block;
-}
-
-.tree .node {
-  padding: 2px 5px;
-  position: relative;
-  cursor: pointer;
-}
-
-.tree .node.focused {
-  color: white;
-  background-color: var(--theme-selection-background);
-}
-
-html:not([dir="rtl"]) .tree .node > div {
-  margin-left: 10px;
-}
-
-html[dir="rtl"] .tree .node > div {
-  margin-right: 10px;
-}
-
-.tree .node.focused svg {
-  fill: white;
-}
-
-.tree-node button {
-  position: fixed;
-}
-.sources-panel {
-  flex: 1;
-  display: flex;
-  flex-direction: column;
-  overflow: hidden;
-}
-
-.sources-panel * {
-  -moz-user-select: none;
-  user-select: none;
-}
-
-.sources-header {
-  height: 30px;
-  border-bottom: 1px solid var(--theme-splitter-color);
-  padding-top: 0px;
-  padding-bottom: 0px;
-  line-height: 30px;
-  font-size: 1.2em;
-  display: flex;
-  align-items: baseline;
-  -moz-user-select: none;
-  user-select: none;
-  justify-content: flex-end;
-}
-
-.sources-header {
-  padding-inline-start: 10px;
-}
-
-.sources-header-info {
-  font-size: 12px;
-  color: var(--theme-comment-alt);
-  font-weight: lighter;
-  white-space: nowrap;
-  padding-inline-end: 10px;
-  cursor: pointer;
-}
-
-.sources-list {
-  flex: 1;
-  display: flex;
-  overflow: hidden;
+}
+
+::-webkit-scrollbar {
+  width: 8px;
+  height: 8px;
+  background: transparent;
+}
+
+::-webkit-scrollbar-track {
+  border-radius: 8px;
+  background: transparent;
+}
+
+::-webkit-scrollbar-thumb {
+  border-radius: 8px;
+  background: rgba(113, 113, 113, 0.5);
+}
+
+:root.theme-dark .CodeMirror-scrollbar-filler {
+  background: transparent;
 }
 /* BASICS */
 
 .CodeMirror {
   /* Set height, width, borders, and global font properties here */
   font-family: monospace;
   height: 300px;
   color: black;
@@ -1570,178 +886,996 @@ selector in floating-scrollbar-light.css
 
 .CodeMirror-Tern-farg-current {
   text-decoration: underline;
 }
 
 .CodeMirror-Tern-fhint-guess {
   opacity: .7;
 }
+.debugger {
+  display: flex;
+  flex: 1;
+  height: 100%;
+}
+
+.editor-pane {
+  display: flex;
+  position: relative;
+  flex: 1;
+  background-color: var(--theme-tab-toolbar-background);
+  height: calc(100% - 1px);
+  overflow: hidden;
+}
+
+.editor-container {
+  width: 100%;
+}
+
+.subsettings:hover {
+  cursor: pointer;
+}
+
+.search-container {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  display: flex;
+  z-index: 200;
+  background-color: var(--theme-search-overlays-semitransparent);
+}
+
+.search-container .close-button {
+  width: 16px;
+  margin-top: 25px;
+  margin-right: 20px;
+}
+menupopup {
+  position: fixed;
+  z-index: 10000;
+  background: white;
+  border: 1px solid #cccccc;
+  padding: 5px 0;
+  background: #f2f2f2;
+  border-radius: 5px;
+  color: #585858;
+  box-shadow: 0 0 4px 0 rgba(190, 190, 190, 0.8);
+  min-width: 130px;
+}
+
+menuitem {
+  display: block;
+  padding: 0 20px;
+  line-height: 20px;
+  font-weight: 500;
+  font-size: 13px;
+  -moz-user-select: none;
+  user-select: none;
+}
+
+menuitem:hover {
+  background: #3780fb;
+  color: white;
+  cursor: pointer;
+}
+
+menuitem[disabled=true] {
+  color: #cccccc;
+}
+
+menuitem[disabled=true]:hover {
+  background-color: transparent;
+  cursor: default;
+}
+
+menuseparator {
+  border-bottom: 1px solid #cacdd3;
+  width: 100%;
+  height: 5px;
+  display: block;
+  margin-bottom: 5px;
+}
+
+#contextmenu-mask.show {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 999;
+}
+/* vim:set ts=2 sw=2 sts=2 et: */
+/* 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/. */
+
+.split-box {
+  display: flex;
+  flex: 1;
+  min-width: 0;
+  height: 100%;
+  width: 100%;
+}
+
+.split-box.vert {
+  flex-direction: row;
+}
+
+.split-box.horz {
+  flex-direction: column;
+}
+
+.split-box > .uncontrolled {
+  display: flex;
+  flex: 1;
+  min-width: 0;
+  overflow: auto;
+}
+
+.split-box > .controlled {
+  display: flex;
+  overflow: auto;
+}
+
+.split-box > .splitter {
+  background-image: none;
+  border: 0;
+  border-style: solid;
+  border-color: transparent;
+  background-color: var(--theme-splitter-color);
+  background-clip: content-box;
+  position: relative;
+
+  box-sizing: border-box;
+
+  /* Positive z-index positions the splitter on top of its siblings and makes
+     it clickable on both sides. */
+  z-index: 1;
+}
+
+.split-box.vert > .splitter {
+  min-width: calc(var(--devtools-splitter-inline-start-width) +
+    var(--devtools-splitter-inline-end-width) + 1px);
+
+  border-left-width: var(--devtools-splitter-inline-start-width);
+  border-right-width: var(--devtools-splitter-inline-end-width);
+
+  margin-left: calc(-1 * var(--devtools-splitter-inline-start-width) - 1px);
+  margin-right: calc(-1 * var(--devtools-splitter-inline-end-width));
+
+  cursor: ew-resize;
+}
+
+.split-box.horz > .splitter {
+  min-height: calc(var(--devtools-splitter-top-width) +
+    var(--devtools-splitter-bottom-width) + 1px);
+
+  border-top-width: var(--devtools-splitter-top-width);
+  border-bottom-width: var(--devtools-splitter-bottom-width);
+
+  margin-top: calc(-1 * var(--devtools-splitter-top-width) - 1px);
+  margin-bottom: calc(-1 * var(--devtools-splitter-bottom-width));
+
+  cursor: ns-resize;
+}
+
+.split-box.disabled {
+  pointer-events: none;
+}
+
+/**
+ * Make sure splitter panels are not processing any mouse
+ * events. This is good for performance during splitter
+ * bar dragging.
+ */
+.split-box.dragging > .controlled,
+.split-box.dragging > .uncontrolled {
+  pointer-events: none;
+}
+/* vim:set ts=2 sw=2 sts=2 et: */
+/* 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/. */
+
+.theme-dark,
+.theme-light {
+  --number-color: var(--theme-highlight-green);
+  --string-color: var(--theme-highlight-orange);
+  --null-color: var(--theme-comment);
+  --object-color: var(--theme-body-color);
+  --caption-color: var(--theme-highlight-blue);
+  --location-color: var(--theme-content-color1);
+  --source-link-color: var(--theme-highlight-blue);
+  --node-color: var(--theme-highlight-bluegrey);
+  --reference-color: var(--theme-highlight-purple);
+}
+
+.theme-firebug {
+  --number-color: #000088;
+  --string-color: #FF0000;
+  --null-color: #787878;
+  --object-color: DarkGreen;
+  --caption-color: #444444;
+  --location-color: #555555;
+  --source-link-color: blue;
+  --node-color: rgb(0, 0, 136);
+  --reference-color: rgb(102, 102, 255);
+}
+
+/******************************************************************************/
+
+.objectLink:hover {
+  cursor: pointer;
+  text-decoration: underline;
+}
+
+.inline {
+  display: inline;
+  white-space: normal;
+}
+
+.objectBox-object {
+  font-weight: bold;
+  color: var(--object-color);
+  white-space: pre-wrap;
+}
+
+.objectBox-string,
+.objectBox-text,
+.objectLink-textNode,
+.objectBox-table {
+  white-space: pre-wrap;
+}
+
+.objectBox-number,
+.objectLink-styleRule,
+.objectLink-element,
+.objectLink-textNode,
+.objectBox-array > .length {
+  color: var(--number-color);
+}
+
+.objectBox-string {
+  color: var(--string-color);
+}
+
+.objectLink-function,
+.objectBox-stackTrace,
+.objectLink-profile {
+  color: var(--object-color);
+}
+
+.objectLink-Location {
+  font-style: italic;
+  color: var(--location-color);
+}
+
+.objectBox-null,
+.objectBox-undefined,
+.objectBox-hint,
+.logRowHint {
+  font-style: italic;
+  color: var(--null-color);
+}
+
+.objectLink-sourceLink {
+  position: absolute;
+  right: 4px;
+  top: 2px;
+  padding-left: 8px;
+  font-weight: bold;
+  color: var(--source-link-color);
+}
+
+/******************************************************************************/
+
+.objectLink-event,
+.objectLink-eventLog,
+.objectLink-regexp,
+.objectLink-object,
+.objectLink-Date {
+  font-weight: bold;
+  color: var(--object-color);
+  white-space: pre-wrap;
+}
+
+/******************************************************************************/
+
+.objectLink-object .nodeName,
+.objectLink-NamedNodeMap .nodeName,
+.objectLink-NamedNodeMap .objectEqual,
+.objectLink-NamedNodeMap .arrayLeftBracket,
+.objectLink-NamedNodeMap .arrayRightBracket,
+.objectLink-Attr .attrEqual,
+.objectLink-Attr .attrTitle {
+  color: var(--node-color);
+}
+
+.objectLink-object .nodeName {
+  font-weight: normal;
+}
+
+/******************************************************************************/
+
+.objectLeftBrace,
+.objectRightBrace,
+.arrayLeftBracket,
+.arrayRightBracket {
+  cursor: pointer;
+  font-weight: bold;
+}
+
+.objectLeftBrace,
+.arrayLeftBracket {
+  margin-right: 4px;
+}
+
+.objectRightBrace,
+.arrayRightBracket {
+  margin-left: 4px;
+}
+
+/******************************************************************************/
+/* Cycle reference*/
+
+.objectLink-Reference {
+  font-weight: bold;
+  color: var(--reference-color);
+}
+
+.objectBox-array > .objectTitle {
+  font-weight: bold;
+  color: var(--object-color);
+}
+
+.caption {
+  font-weight: bold;
+  color:  var(--caption-color);
+}
+
+/******************************************************************************/
+/* Themes */
+
+.theme-dark .objectBox-null,
+.theme-dark .objectBox-undefined,
+.theme-light .objectBox-null,
+.theme-light .objectBox-undefined {
+  font-style: normal;
+}
+
+.theme-dark .objectBox-object,
+.theme-light .objectBox-object {
+  font-weight: normal;
+  white-space: pre-wrap;
+}
+
+.theme-dark .caption,
+.theme-light .caption {
+  font-weight: normal;
+}
+/* vim:set ts=2 sw=2 sts=2 et: */
+
+/* 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/. */
+
+.search-container {
+  position: absolute;
+  top: 30px;
+  left: 0;
+  width: calc(100% - 1px);
+  height: calc(100% - 31px);
+  display: flex;
+  z-index: 200;
+  background-color: var(--theme-body-background);
+}
+
+.searchinput-container {
+  display: flex;
+  border-bottom: 1px solid var(--theme-splitter-color);
+}
+
+.arrow,
+.folder,
+.domain,
+.file,
+.worker,
+.refresh,
+.add-button {
+  fill: var(--theme-splitter-color);
+}
+
+.worker,
+.folder {
+  position: relative;
+  top: 2px;
+}
+
+.domain,
+.file,
+.worker,
+.refresh,
+.add-button {
+  position: relative;
+  top: 1px;
+}
+
+.domain svg,
+.folder svg,
+.worker svg,
+.refresh svg,
+.add-button svg {
+  width: 15px;
+}
+
+.file svg {
+  width: 13px;
+}
+
+.file svg,
+.domain svg,
+.folder svg,
+.refresh svg,
+.worker svg {
+  margin-inline-end: 5px;
+}
+
+.arrow svg {
+  fill: var(--theme-splitter-color);
+  margin-top: 3px;
+  transition: transform 0.25s ease;
+  width: 10px;
+}
+
+html:not([dir="rtl"]) .arrow svg {
+  margin-right: 5px;
+  transform: rotate(-90deg);
+}
+
+html[dir="rtl"] .arrow svg {
+  margin-left: 5px;
+  transform: rotate(90deg);
+}
+
+/* TODO (Amit): html is just for specificity. keep it like this? */
+html .arrow.expanded svg {
+  transform: rotate(0deg);
+}
+
+.arrow.hidden {
+  visibility: hidden;
+}
+.close-btn path {
+  fill: var(--theme-body-color);
+}
+
+.close-btn .close {
+  cursor: pointer;
+  width: 14px;
+  height: 14px;
+  padding: 2px;
+  text-align: center;
+  margin-top: 2px;
+  line-height: 7px;
+  transition: all 0.25s easeinout;
+}
+
+.close-btn .close svg {
+  width: 6px;
+}
+
+.close-btn:hover {
+  display: block;
+}
+
+.close-btn:hover .close {
+  background: var(--theme-selection-background);
+  border-radius: 2px;
+}
+
+.close-btn:hover .close path {
+  fill: white;
+}
+
+.close-btn-big {
+  padding: 13px;
+  width: 40px;
+  height: 40px;
+}
+
+.close-btn-big .close {
+  cursor: pointer;
+  display: inline-block;
+  padding: 2px;
+  text-align: center;
+  transition: all 0.25s easeinout;
+  line-height: 100%;
+  width: 16px;
+  height: 16px;
+}
+
+.close-btn-big .close svg {
+  width: 9px;
+  height: 9px;
+}
+
+.close-btn-big .close:hover {
+  background: var(--theme-selection-background);
+  border-radius: 2px;
+}
+
+.close-btn-big .close:hover path {
+  fill: white;
+}
+.search-field {
+  width: calc(100% - 1px);
+  height: 40px;
+  background-color: var(--theme-body-background);
+  border-bottom: 1px solid var(--theme-splitter-color);
+  display: flex;
+}
+
+.search-field i {
+  display: block;
+  padding: 13px;
+  width: 40px;
+}
+
+.search-field i svg {
+  width: 16px;
+}
+
+.search-field input {
+  border: none;
+  line-height: 30px;
+  font-size: 14px;
+  background-color: var(--theme-body-background);
+  color: var(--theme-comment);
+  width: calc(100% - 38px);
+  flex: 1;
+}
+
+.search-field .magnifying-glass {
+  background-color: var(--theme-body-background);
+}
+
+.search-field .magnifying-glass path,
+.search-field .magnifying-glass ellipse {
+  stroke: var(--theme-splitter-color);
+}
+
+.search-field input::placeholder {
+  color: var(--theme-body-color-inactive);
+}
+
+.search-field input:focus {
+  outline-width: 0;
+}
+
+.search-field input.empty {
+  color: var(--theme-highlight-orange);
+}
+
+.search-field .summary {
+  line-height: 40px;
+  padding-right: 10px;
+  color: var(--theme-body-color-inactive);
+}
+.result-list {
+  list-style: none;
+  width: 100%;
+  max-height: calc(100% - 32px);
+  margin: 0px;
+  padding: 0px;
+  overflow: auto;
+}
+
+.result-list * {
+  -moz-user-select: none;
+  user-select: none;
+}
+
+.result-list li {
+  border: 2px solid var(--theme-splitter-color);
+  background-color: var(--theme-tab-toolbar-background);
+  padding: 10px;
+  margin: 10px;
+}
+
+.result-list li:hover {
+  background: var(--theme-tab-toolbar-background);
+  cursor: pointer;
+}
+
+.result-list li.selected {
+  border: 2px solid var(--theme-selection-background);
+}
+
+.result-list li .title {
+  line-height: 1.5em;
+  word-break: break-all;
+}
+
+.result-list li .subtitle {
+  line-height: 1.5em;
+  color: grey;
+  word-break: break-all;
+}
+
+.autocomplete {
+  flex: 1;
+  width: 100%;
+}
+
+.autocomplete .no-result-msg {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: 100%;
+  height: 100%;
+  color: var(--theme-graphs-full-red);
+  font-size: 24px;
+  padding: 4px;
+  word-break: break-all;
+}
+
+.autocomplete .no-result-msg .sad-face {
+  width: 24px;
+  margin: 0 4px;
+  line-height: 0;
+  flex-shrink: 0;
+}
+
+.autocomplete .no-result-msg .sad-face svg {
+  fill: var(--theme-graphs-full-red);
+}
+.tree {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  -o-user-select: none;
+  user-select: none;
+
+  white-space: nowrap;
+  overflow: auto;
+  min-width: 100%;
+}
+
+.tree button {
+  display: block;
+}
+
+.tree .node {
+  padding: 2px 5px;
+  position: relative;
+  cursor: pointer;
+}
+
+.tree .node.focused {
+  color: white;
+  background-color: var(--theme-selection-background);
+}
+
+html:not([dir="rtl"]) .tree .node > div {
+  margin-left: 10px;
+}
+
+html[dir="rtl"] .tree .node > div {
+  margin-right: 10px;
+}
+
+.tree .node.focused svg {
+  fill: white;
+}
+
+.tree-node button {
+  position: fixed;
+}
+.sources-panel {
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  overflow: hidden;
+}
+
+.sources-panel * {
+  -moz-user-select: none;
+  user-select: none;
+}
+
+.sources-header {
+  height: 30px;
+  border-bottom: 1px solid var(--theme-splitter-color);
+  padding-top: 0px;
+  padding-bottom: 0px;
+  line-height: 30px;
+  font-size: 1.2em;
+  display: flex;
+  align-items: baseline;
+  -moz-user-select: none;
+  user-select: none;
+  justify-content: flex-end;
+}
+
+.sources-header {
+  padding-inline-start: 10px;
+}
+
+.sources-header-info {
+  font-size: 12px;
+  color: var(--theme-comment-alt);
+  font-weight: lighter;
+  white-space: nowrap;
+  padding-inline-end: 10px;
+  cursor: pointer;
+}
+
+.sources-list {
+  flex: 1;
+  display: flex;
+  overflow: hidden;
+}
+
+.theme-dark .sources-list .tree .node:not(.focused) svg {
+  fill: var(--theme-comment);
+}
 .toggle-button-start,
 .toggle-button-end {
-  position: absolute;
-  width: 16px;
-  height: 16px;
+  transform: translate(0, 2px);
   transition: transform 0.25s ease-in-out;
-  margin: 0 4px;
   cursor: pointer;
+  padding: 4px 2px;
 }
 
 .toggle-button-start svg,
 .toggle-button-end svg {
+  width: 14px;
   fill: var(--theme-comment);
 }
 
+.toggle-button-end {
+  margin-left: auto;
+}
+
 html:not([dir="rtl"]) .toggle-button-end svg,
 html[dir="rtl"] .toggle-button-start svg {
   transform: rotate(180deg);
 }
 
-.toggle-button-end.vertical svg {
+html .toggle-button-end.vertical svg {
   transform: rotate(-90deg);
 }
 
-.toggle-button-start {
-  top: 7px;
-  offset-inline-start: 0;
-}
-
-.toggle-button-end {
-  top: 7px;
-  offset-inline-end: 0;
-}
-
 .toggle-button-start.collapsed,
 .toggle-button-end.collapsed {
   transform: rotate(180deg);
 }
 
 .source-footer {
   background: var(--theme-body-background);
   border-top: 1px solid var(--theme-splitter-color);
   position: absolute;
+  display: flex;
   bottom: 0;
   left: 0;
   right: 1px;
   opacity: 1;
   z-index: 100;
   -moz-user-select: none;
   user-select: none;
+  height: 30px;
+  box-sizing: border-box;
 }
 
 .source-footer .commands {
   display: flex;
-  padding: 8px 0.7em;
 }
 
 .source-footer .commands * {
   -moz-user-select: none;
   user-select: none;
 }
 
 .source-footer > .commands > .action {
   cursor: pointer;
   display: flex;
   justify-content: center;
   align-items: center;
   transition: opacity 200ms;
   border: none;
   background: transparent;
+  padding: 8px 0.7em;
+}
+
+.source-footer > .commands > .action i {
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
 }
 
 :root.theme-dark .source-footer > .commands > .action {
   fill: var(--theme-body-color);
 }
 
 :root.theme-dark .source-footer > .commands > .action:hover {
   fill: var(--theme-selection-color);
 }
 
 .source-footer > .commands > .action svg {
-  height: 1em;
-  width: 1em;
+  height: 16px;
+  width: 16px;
 }
 
 .source-footer .commands .coverage {
-  border: none;
-  outline: none;
-  background: transparent;
-  color: var(--theme-content-color3);
-  font-weight: 600;
-  padding: 1px;
-  width: 16px;
-  height: 16px;
-}
-
-.source-footer .commands .coverage:hover {
-  border: 1px solid var(--theme-body-color-inactive);
-  border-radius: 2px;
-  padding: 0px;
-  cursor: pointer;
+  color: var(--theme-body-color);
 }
 
 .coverage-on .source-footer .commands .coverage {
   color: var(--theme-highlight-blue);
   border: 1px solid var(--theme-body-color-inactive);
   border-radius: 2px;
 }
 .search-bar {
+  display: flex;
+  flex-direction: column;
+  max-height: 50%;
+}
+
+.search-bottom-bar {
+  display: flex;
+  flex-shrink: 0;
+  justify-content: space-between;
   width: calc(100% - 1px);
   height: 40px;
   background-color: var(--theme-body-background);
   border-bottom: 1px solid var(--theme-splitter-color);
+  padding: 0 13px;
+}
+
+.search-bottom-bar .search-modifiers {
   display: flex;
-}
-
-.search-bar i {
-  display: block;
-  padding: 13px;
-  width: 40px;
-}
-
-.search-bar i svg {
+  align-items: center;
+}
+
+.search-bottom-bar .search-modifiers button {
+  padding: 0 3px;
+  margin: 0 3px;
+  border: none;
+  background: none;
+  width: 20px;
+  height: 20px;
+  border-radius: 3px;
+}
+
+.search-bottom-bar .search-modifiers button i {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  padding: 0;
   width: 16px;
 }
 
-.search-bar input {
-  border: none;
-  line-height: 30px;
-  font-size: 14px;
-  background-color: var(--theme-body-background);
+.search-bottom-bar .search-modifiers button svg {
+  fill: var(--theme-comment);
+}
+
+.search-bottom-bar .search-modifiers button.active {
+  background-color: var(--theme-selection-background);
+}
+
+.search-bottom-bar .search-modifiers button.active svg {
+  fill: white;
+}
+
+.search-bottom-bar .search-type-toggles {
+  display: flex;
+  align-items: center;
+}
+
+.search-bottom-bar .search-type-toggles h1 {
   color: var(--theme-comment);
-  width: calc(100% - 38px);
-  flex: 1;
-}
-
-.search-bar .magnifying-glass {
-  background-color: var(--theme-body-background);
-}
-
-.search-bar .magnifying-glass path,
-.search-bar .magnifying-glass ellipse {
-  stroke: var(--theme-splitter-color);
-}
-
-.search-bar input::placeholder {
-  color: var(--theme-body-color-inactive);
-}
-
-.search-bar input:focus {
+  font-size: 12px;
+  margin: 0;
+}
+
+.search-bottom-bar .search-type-toggles .search-type-btn {
+  margin: 0 6px;
+  border: none;
+  background: transparent;
+  color: var(--theme-comment-alt);
+}
+
+.search-bottom-bar .search-type-toggles .search-type-btn.active {
+  color: var(--theme-selection-background);
+  font-weight: bold;
+}
+
+.search-bar .result-list {
+  max-height: calc(100% - 80px);
+}
+
+.search-bar .result-list li:first-child {
+  border-top: none;
+}
+
+.search-bar .result-list li {
+  border: none;
+  color: var(--theme-comment);
+  border-top: 1px solid var(--theme-splitter-color);
+  border-bottom: 1px solid var(--theme-splitter-color);
+  background-color: var(--theme-tab-toolbar-background);
+  padding: 4px;
+  margin: 0;
+  display: flex;
+}
+
+.search-bar .result-list li.selected,
+.search-bar .result-list li.selected .subtitle {
+  color: var(--theme-body-background);
+  background-color: var(--theme-selection-background);
+}
+
+.search-bar .result-list li .title {
+  font-weight: bold;
+  flex-grow: 2;
+  flex-basis: 95%;
+}
+
+.search-bar .result-list li .subtitle {
+  font-weight: lighter;
+  flex-grow: 1;
+  flex-basis: 5%;
+}
+.popover {
+  position: absolute;
+  background: white;
+  z-index: 4;
+  min-width: 200px;
+  min-height: 80px;
+  border: 1px solid #cccccc;
+  padding: 10px;
+  height: auto;
+  min-height: inherit;
+  max-height: 130px;
+  overflow: scroll;
+  max-width: 400px;
+}
+.conditional-breakpoint-panel {
+  cursor: initial;
+  margin: 1em 0;
+  position: relative;
+  display: flex;
+  align-items: center;
+  background: var(--theme-toolbar-background);
+  border-top: 1px solid var(--theme-splitter-color);
+  border-bottom: 1px solid var(--theme-splitter-color);
+}
+
+.conditional-breakpoint-panel .prompt {
+  font-size: 1.8em;
+  color: var(--theme-highlight-blue);
+  padding-left: 3px;
+}
+
+.conditional-breakpoint-panel input {
+  margin: 5px 10px;
+  width: calc(100% - 4em);
+  border: none;
+  background: var(--theme-toolbar-background);
+  font-size: 14px;
+  color: var(--theme-comment);
+  line-height: 30px;
+}
+
+.conditional-breakpoint-panel input:focus {
   outline-width: 0;
 }
-
-.search-bar input.empty {
-  color: var(--theme-highlight-orange);
-}
-
-.search-bar .summary {
-  line-height: 40px;
-  padding-right: 10px;
-  color: var(--theme-body-color-inactive);
-}
 /* vim:set ts=2 sw=2 sts=2 et: */
 
 /* 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/. */
 
 /**
  * There's a known codemirror flex issue with chrome that this addresses.
@@ -1760,16 +1894,25 @@ html[dir="rtl"] .editor-mount {
 }
 
 .editor-wrapper .breakpoints {
   position: absolute;
   top: 0;
   left: 0;
 }
 
+.function-search {
+  max-height: 300px;
+  overflow: hidden;
+}
+
+.function-search .results {
+  height: auto;
+}
+
 .editor.hit-marker {
   height: 14px;
 }
 
 .coverage-on .CodeMirror-code :not(.hit-marker) .CodeMirror-line,
 .coverage-on .CodeMirror-code :not(.hit-marker) .CodeMirror-gutter-wrapper {
   opacity: 0.5;
 }
@@ -1858,49 +2001,114 @@ html[dir="rtl"] .editor-mount {
   font-size: 1.25em;
   color: var(--theme-comment-alt);
   background-color: var(--theme-tab-toolbar-background);
   font-weight: lighter;
   z-index: 100;
   -moz-user-select: none;
   user-select: none;
 }
-
-.conditional-breakpoint-panel {
-  cursor: initial;
-  margin: 1em 0;
-  position: relative;
-  background: var(--theme-toolbar-background);
-  border-top: 1px solid var(--theme-splitter-color);
-  border-bottom: 1px solid var(--theme-splitter-color);
-}
-
-.conditional-breakpoint-panel input {
-  margin: 5px 10px;
-  width: calc(100% - 2em);
-  border: none;
-  background: var(--theme-toolbar-background);
-  font-size: 14px;
-  color: var(--theme-comment);
-  line-height: 30px;
-}
-
-.conditional-breakpoint-panel input:focus {
-  outline-width: 0;
+.input-expression {
+  width: 100%;
+  margin: 0px;
+  border: 1px;
+  cursor: pointer;
+  background-color: var(--theme-body-background);
+  font-size: 12px;
+  padding: 0px 20px;
+  color: var(--theme-highlight-blue);
+}
+
+.input-expression::-webkit-input-placeholder {
+  text-align: center;
+  font-style: italic;
+  color: var(--theme-body-color-inactive);
+}
+
+.input-expression::placeholder {
+  text-align: center;
+  font-style: italic;
+  color: var(--theme-body-color-inactive);
+  opacity: 1;
+}
+
+.input-expression:focus {
+  outline: none;
+  cursor: text;
+}
+
+.expression-input-container {
+  padding: 0.5em;
+  display: flex;
+}
+
+.expression-container {
+  border: 1px;
+  padding: 8px 5px 0px 0px;
+  width: 100%;
+  color: var(--theme-body-color);
+  background-color: var(--theme-body-background);
+  display: flex;
+}
+
+.expression-container > .tree {
+  width: 100%;
+  overflow: hidden;
+}
+
+:root.theme-light .expression-container:hover {
+  background-color: var(--theme-tab-toolbar-background);
+}
+
+:root.theme-dark .expression-container:hover {
+  background-color: var(--theme-search-overlays-semitransparent);
+}
+
+.expression-container .close-btn {
+  display: none;
+  cursor: pointer;
+  width: 20px;
+  height: 20px;
+  padding: 0 4px;
+  margin: 0;
+}
+
+.expression-container:hover .close-btn {
+  display: flex;
+}
+
+.expression-input {
+  cursor: pointer;
+  max-width: 50%;
+}
+
+.expression-separator {
+  padding: 0px 5px;
+}
+
+.expression-value {
+  overflow-x: scroll;
+  color: var(--theme-content-color2);
+  max-width: 50% !important;
+}
+
+.expression-error {
+  color: var(--theme-highlight-red);
 }
 
 .why-paused {
   background-color: var(--breakpoint-active-color);
   border: 1.7px solid var(--breakpoint-active-color);
   color: var(--theme-highlight-blue);
   padding: 10px 10px 10px 20px;
   white-space: normal;
   opacity: 0.9;
   font-size: 12px;
   font-weight: bold;
+  flex: 0 1 auto;
 }
 
 .theme-dark .secondary-panes .why-paused {
   color: white;
 }
 .breakpoints-list * {
   -moz-user-select: none;
   user-select: none;
@@ -1994,90 +2202,16 @@ html .breakpoints-list .breakpoint.pause
 
 .breakpoint .close {
   display: none;
 }
 
 .breakpoint:hover .close {
   display: block;
 }
-.input-expression {
-  width: 100%;
-  padding: 8px 10px;
-  margin: 0px;
-  border: 1px;
-  cursor: pointer;
-  color: var(--theme-body-color);
-  background-color: var(--theme-body-background);
-  line-height: 12px;
-}
-
-.input-expression::-webkit-input-placeholder {
-  text-align: center;
-  font-style: italic;
-}
-
-.input-expression:focus {
-  outline-color: var(--theme-selection-background-semitransparent);
-  outline-width: 2px;
-  cursor: text;
-}
-
-.expression-container {
-  border: 1px;
-  padding: 8px 5px 0px 10px;
-  width: 100%;
-  color: var(--theme-body-color);
-  background-color: var(--theme-body-background);
-  display: flex;
-}
-
-.expression-container .tree {
-  overflow: hidden;
-}
-
-:root.theme-light .expression-container:hover {
-  background-color: var(--theme-tab-toolbar-background);
-}
-
-:root.theme-dark .expression-container:hover {
-  background-color: var(--theme-search-overlays-semitransparent);
-}
-
-.expression-container .close-btn {
-  display: none;
-}
-
-.expression-container:hover .close-btn {
-  width: 8px;
-  height: 8px;
-  margin-left: auto;
-  margin-right: 8px;
-  display: block;
-  cursor: pointer;
-}
-
-.expression-input {
-  cursor: pointer;
-  max-width: 50%;
-}
-
-.expression-separator {
-  padding: 0px 5px;
-}
-
-.expression-value {
-  overflow-x: scroll;
-  color: var(--theme-content-color2);
-  max-width: 50% !important;
-}
-
-.expression-error {
-  color: var(--theme-highlight-red);
-}
 
 .object-node.default-property {
   opacity: 0.6;
 }
 
 .object-label {
   color: var(--theme-highlight-blue);
 }
@@ -2144,22 +2278,38 @@ html .breakpoints-list .breakpoint.pause
 }
 
 .frames .title {
   text-overflow: ellipsis;
   overflow: hidden;
   margin-right: 1em;
 }
 
-.frames ul li.selected,
-.frames ul li.selected .location {
+.frames ul li:hover,
+.frames ul li:focus {
+  background-color: var(--theme-toolbar-background-alt);
+  outline: none;
+}
+
+.frames ul li.selected {
   background-color: var(--theme-selection-background);
   color: white;
 }
 
+:root.theme-light .frames ul li.selected .location,
+:root.theme-firebug .frames ul li.selected .location,
+:root.theme-dark .frames ul li.selected .location {
+  color: white;
+}
+
+:root.theme-dark .frames ul li:hover .location,
+:root.theme-dark .frames ul li.selected .location {
+  opacity: 1;
+}
+
 .show-more {
   cursor: pointer;
   text-align: center;
   padding: 8px 0px;
   border-top: 1px solid var(--theme-splitter-color);
   background-color: var(--theme-tab-toolbar-background);
 }
 
@@ -2239,16 +2389,17 @@ html .breakpoints-list .breakpoint.pause
 
 .accordion ._header:hover {
   background-color: var(--theme-search-overlays-semitransparent);
 }
 
 .accordion ._header button svg,
 .accordion ._header:hover button svg {
   fill: currentColor;
+  height: 16px;
 }
 
 .accordion ._content {
   border-bottom: 1px solid var(--theme-splitter-color);
   font-size: 12px;
 }
 
 .accordion ._header .header-buttons {
@@ -2272,94 +2423,114 @@ html .breakpoints-list .breakpoint.pause
   width: 16px;
   height: 16px;
 }
 
 .accordion .header-buttons button::-moz-focus-inner {
   border: none;
 }
 .command-bar {
-  height: 30px;
-  padding: 8px 5px;
+  flex: 0 0 30px;
   border-bottom: 1px solid var(--theme-splitter-color);
-}
-
-.command-bar > span {
+  display: flex;
+  height: 30px;
+  overflow: hidden;
+  position: sticky;
+  top: 0;
+  z-index: 1;
+  background-color: var(--theme-body-background);
+}
+
+.command-bar > button {
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+  background: transparent;
+  border: none;
   cursor: pointer;
-  width: 16px;
-  height: 17px;
   display: inline-block;
   text-align: center;
   transition: all 0.25s ease;
-}
-
-:root.theme-dark .command-bar > span {
-  fill: var(--theme-body-color);
-}
-
-:root.theme-dark .command-bar > span:hover {
-  fill: var(--theme-selection-color);
-}
-
-.command-bar > span {
+  padding: 8px 5px;
+  position: relative;
+  fill: currentColor;
+}
+
+:root.theme-dark .command-bar > button {
+  color: var(--theme-body-color);
+}
+
+.command-bar > button {
   margin-inline-end: 0.7em;
 }
 
-.command-bar > span.disabled {
+html .command-bar > button:disabled {
   opacity: 0.3;
   cursor: default;
 }
 
-.command-bar .stepOut {
-  margin-inline-end: 2em;
+.command-bar > button > i {
+  height: 100%;
+  width: 100%;
+  display: block;
+}
+
+.command-bar > button > i > svg {
+  width: 16px;
+  height: 16px;
+}
+
+.command-bar button.pause-exceptions {
+  margin-inline-start: 0.5em;
 }
 
 .command-bar .subSettings {
   float: right;
 }
 
-.command-bar .toggleBreakpoints.breakpoints-disabled path {
-  fill: var(--theme-highlight-blue);
-}
-
-.command-bar span.pause-exceptions.uncaught {
-  fill: var(--theme-highlight-purple);
-}
-
-.command-bar span.pause-exceptions.all {
-  fill: var(--theme-highlight-blue);
+.command-bar button.pause-exceptions.uncaught {
+  color: var(--theme-highlight-purple);
+}
+
+.command-bar button.pause-exceptions.all {
+  color: var(--theme-highlight-blue);
 }
 .secondary-panes {
   display: flex;
   flex-direction: column;
   flex: 1;
   white-space: nowrap;
 }
 
 .secondary-panes * {
   -moz-user-select: none;
   user-select: none;
 }
 
 .secondary-panes .accordion {
   overflow-y: auto;
   overflow-x: hidden;
+  flex: 1 0 auto;
 }
 
 .pane {
   color: var(--theme-body-color);
 }
 
 .pane .pane-info {
   font-style: italic;
   text-align: center;
   padding: 0.5em;
   -moz-user-select: none;
   user-select: none;
 }
+
+.theme-dark .secondary-panes .accordion .arrow svg {
+  fill: var(--theme-comment);
+}
 .welcomebox {
   width: calc(100% - 1px);
 
   /* Offsetting it by 30px for the sources-header area */
   height: calc(100% - 30px);
   position: absolute;
   top: 30px;
   left: 0;
@@ -2367,52 +2538,57 @@ html .breakpoints-list .breakpoint.pause
   text-align: center;
   font-size: 1.25em;
   color: var(--theme-comment-alt);
   background-color: var(--theme-tab-toolbar-background);
   font-weight: lighter;
   z-index: 100;
 }
 
-.welcomebox .toggle-button-end {
+html .welcomebox .toggle-button-end {
   bottom: 11px;
   position: absolute;
   top: auto;
 }
 .dropdown {
   background: var(--theme-body-background);
   border: 1px solid var(--theme-splitter-color);
   box-shadow: 0 4px 4px 0 var(--theme-search-overlays-semitransparent);
   max-height: 300px;
   position: absolute;
   offset-inline-end: 8px;
   top: 35px;
   width: 150px;
   z-index: 1000;
 }
 
+.dropdown-block {
+  padding: 0px 2px;
+  position: relative;
+  align-self: center;
+}
+
 .dropdown-button {
-  position: absolute;
-  offset-inline-end: 18px;
-  top: 4px;
-  font-size: 18px;
+  cursor: pointer;
   color: var(--theme-comment);
-  cursor: pointer;
   background: none;
   border: none;
-  padding: 0 5px;
+  padding: 0;
   font-weight: 100;
+  margin-top: 6px;
+  font-size: 14px;
 }
 
 .dropdown li {
   transition: all 0.25s ease;
   padding: 2px 10px 10px 5px;
   overflow: hidden;
   height: 30px;
   text-overflow: ellipsis;
+  white-space: nowrap;
 }
 
 .dropdown li:hover {
   background-color: var(--theme-search-overlays-semitransparent);
   cursor: pointer;
 }
 
 .dropdown ul {
@@ -2429,70 +2605,61 @@ html .breakpoints-list .breakpoint.pause
   height: 100%;
   background: transparent;
   z-index: 999;
   left: 0;
   top: 0;
 }
 .source-header {
   border-bottom: 1px solid var(--theme-splitter-color);
+  width: 100%;
   height: 30px;
   display: flex;
-  flex: 1;
-  flex-flow: row wrap;
-  -webkit-align-items: stretch;
-  align-items: stretch;
+  justify-content: space-between;
+  align-items: flex-end;
 }
 
 .source-header * {
   -moz-user-select: none;
   user-select: none;
 }
 
-.source-tabs {
-  max-width: calc(100% - 80px);
-  float: left;
-  margin-inline-start: 21px;
-}
-
 .source-header .new-tab-btn {
-  width: 14px;
-  height: 14px;
-  display: inline-block;
-  position: relative;
-  top: 4px;
-  margin: 4px;
-  margin-inline-start: 8px;
-  line-height: 0;
+  padding: 0px 4px;
+  margin-top: 8px;
   cursor: pointer;
   fill: var(--theme-comment);
   transition: 0.1s ease;
+  align-self: center;
+}
+
+.source-header .new-tab-btn svg {
+  width: 12px;
+}
+
+.source-tabs {
+  max-width: calc(100% - 80px);
+  align-self: flex-start;
 }
 
 .source-tab {
   color: var(--theme-faded-tab-color);
   border: 1px solid transparent;
   border-top-left-radius: 2px;
   border-top-right-radius: 2px;
-  height: 24px;
-  line-height: 20px;
-  display: inline-block;
+  height: 30px;
+  display: inline-flex;
+  align-items: center;
   position: relative;
   transition: all 0.25s ease;
   min-width: 40px;
   overflow: hidden;
-}
-
-.source-tab {
-  padding-top: 2px;
-  padding-bottom: 2px;
-  padding-inline-start: 12px;
-  padding-inline-end: 20px;
-  margin-top: 6px;
+  padding: 6px;
   margin-inline-start: 8px;
+  margin-top: 2px;
 }
 
 .source-tab:hover {
   background-color: var(--theme-toolbar-background-alt);
   border-color: var(--theme-splitter-color);
   cursor: pointer;
 }
 
@@ -2502,55 +2669,59 @@ html .breakpoints-list .breakpoint.pause
   border-color: var(--theme-splitter-color);
   border-bottom-color: transparent;
 }
 
 .source-tab path {
   fill: var(--theme-faded-tab-color);
 }
 
-.source-tab.active path {
+.source-tab.active path,
+.source-tab:hover path {
   fill: var(--theme-body-color);
 }
 
 .source-tab .prettyPrint {
-  display: block;
-  position: absolute;
-  top: 3px;
-  left: 6px;
+  line-height: 0;
 }
 
 .source-tab .prettyPrint svg {
-  height: 1em;
-  width: 1em;
+  height: 12px;
+  width: 12px;
 }
 
 .source-tab .prettyPrint path {
   fill: var(--theme-textbox-box-shadow);
 }
 
-.source-tab .close-btn {
-  position: absolute;
-  top: 3px;
-}
-
 .source-tab .filename {
+  white-space: nowrap;
   text-overflow: ellipsis;
   overflow: hidden;
 }
 
 .source-tab.pretty .filename {
-  padding-left: 12px;
+  padding-inline-start: 8px;
 }
 
 .source-tab .close-btn {
-  offset-inline-end: 4px;
-}
-
-.source-tab .close {
-  display: none;
-}
-
-.source-tab:hover .close {
-  display: block;
+  visibility: hidden;
+  line-height: 0;
+  margin-inline-start: 6px;
+}
+
+.source-tab.active .close-btn {
+  visibility: visible;
+}
+
+.source-tab:hover .close-btn {
+  visibility: visible;
+}
+
+.source-tab .close-btn .close {
+  padding: 0;
+  margin-top: 0;
+  line-height: 0;
+  line-height: 13px;
+  display: inline-block;
 }
 
 /*# sourceMappingURL=debugger.css.map*/
\ No newline at end of file
--- a/devtools/client/debugger/new/debugger.js
+++ b/devtools/client/debugger/new/debugger.js
@@ -1,39 +1,24 @@
-var Debugger =
-/******/ (function(modules) { // webpackBootstrap
+(function webpackUniversalModuleDefinition(root, factory) {
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory(require("devtools/client/shared/vendor/react"), require("Services"), require("devtools/client/shared/vendor/react-dom"), require("devtools/shared/flags"));
+	else if(typeof define === 'function' && define.amd)
+		define(["devtools/client/shared/vendor/react", "Services", "devtools/client/shared/vendor/react-dom", "devtools/shared/flags"], factory);
+	else {
+		var a = typeof exports === 'object' ? factory(require("devtools/client/shared/vendor/react"), require("Services"), require("devtools/client/shared/vendor/react-dom"), require("devtools/shared/flags")) : factory(root["devtools/client/shared/vendor/react"], root["Services"], root["devtools/client/shared/vendor/react-dom"], root["devtools/shared/flags"]);
+		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
+	}
+})(this, function(__WEBPACK_EXTERNAL_MODULE_2__, __WEBPACK_EXTERNAL_MODULE_29__, __WEBPACK_EXTERNAL_MODULE_31__, __WEBPACK_EXTERNAL_MODULE_121__) {
+return /******/ (function(modules) { // webpackBootstrap
 /******/ 	// The module cache
 /******/ 	var installedModules = {};
 /******/
 /******/ 	// The require function
 /******/ 	function __webpack_require__(moduleId) {
-/******/ 		// SingleModulePlugin
-/******/ 		const smpCache = this.smpCache = this.smpCache || {};
-/******/ 		const smpMap = this.smpMap = this.smpMap || new Map();
-/******/ 		function sanitizeString(text) {
-/******/ 		   return text.replace(/__webpack_require__\(\d+\)/g,"");
-/******/ 		}
-/******/ 		function getModuleBody(id) {
-/******/ 		  if (smpCache.hasOwnProperty(id)) {
-/******/ 		    return smpCache[id];
-/******/ 		  }
-/******/
-/******/ 		  const body = sanitizeString(String(modules[id]));
-/******/ 		  smpCache[id] = body;
-/******/ 		  return body;
-/******/ 		}
-/******/ 		if (!installedModules[moduleId]) {
-/******/ 			const body = getModuleBody(moduleId);
-/******/ 			if (smpMap.has(body)) {
-/******/ 				installedModules[moduleId] = installedModules[smpMap.get(body)];
-/******/ 			}
-/******/ 			else {
-/******/ 				smpMap.set(body, moduleId)
-/******/ 			}
-/******/ 		}
 /******/
 /******/ 		// Check if module is in cache
 /******/ 		if(installedModules[moduleId])
 /******/ 			return installedModules[moduleId].exports;
 /******/
 /******/ 		// Create a new module (and put it into the cache)
 /******/ 		var module = installedModules[moduleId] = {
 /******/ 			exports: {},
@@ -71,62 +56,64 @@ var Debugger =
 
 	module.exports = __webpack_require__(1);
 
 
 /***/ },
 /* 1 */
 /***/ function(module, exports, __webpack_require__) {
 
+	"use strict";
+	
 	var React = __webpack_require__(2);
 	
 	var _require = __webpack_require__(3),
 	    bindActionCreators = _require.bindActionCreators,
 	    combineReducers = _require.combineReducers;
 	
 	var ReactDOM = __webpack_require__(22);
 	
 	var _require2 = __webpack_require__(23),
 	    getClient = _require2.getClient,
 	    firefox = _require2.firefox;
 	
-	var _require3 = __webpack_require__(129),
+	var _require3 = __webpack_require__(131),
 	    renderRoot = _require3.renderRoot,
 	    bootstrap = _require3.bootstrap,
 	    L10N = _require3.L10N,
 	    unmountRoot = _require3.unmountRoot;
 	
-	var _require4 = __webpack_require__(197),
+	var _require4 = __webpack_require__(65),
 	    getValue = _require4.getValue,
 	    isFirefoxPanel = _require4.isFirefoxPanel;
 	
-	var configureStore = __webpack_require__(244);
-	
-	var _require5 = __webpack_require__(254),
+	var configureStore = __webpack_require__(189);
+	
+	var _require5 = __webpack_require__(225),
 	    onConnect = _require5.onConnect,
 	    onFirefoxConnect = _require5.onFirefoxConnect;
 	
-	var reducers = __webpack_require__(288);
-	var selectors = __webpack_require__(303);
-	
-	var App = __webpack_require__(304);
+	var reducers = __webpack_require__(227);
+	var selectors = __webpack_require__(242);
+	
+	var App = __webpack_require__(243);
 	
 	var createStore = configureStore({
 	  log: getValue("logging.actions"),
 	  makeThunkArgs: (args, state) => {
 	    return Object.assign({}, args, { client: getClient(state) });
 	  }
 	});
 	
 	var store = createStore(combineReducers(reducers));
-	var actions = bindActionCreators(__webpack_require__(314), store.dispatch);
+	var actions = bindActionCreators(__webpack_require__(244), store.dispatch);
 	
 	if (!isFirefoxPanel()) {
 	  window.L10N = L10N;
-	  window.L10N.setBundle(__webpack_require__(636));
+	  window.L10N.setBundle(__webpack_require__(743));
 	}
 	
 	window.appStore = store;
 	
 	// Expose the bound actions so external things can do things like
 	// selecting a source.
 	window.actions = {
 	  selectSource: actions.selectSource,
@@ -134,57 +121,57 @@ var Debugger =
 	};
 	
 	// Globals needed for mocha integration tests
 	window.getGlobalsForTesting = () => {
 	  return {
 	    debuggerStore: store,
 	    launchpadStore: window.launchpadStore,
 	    selectors,
-	    actions
+	    actions,
+	    threadClient: firefox.getThreadClient(),
+	    target: firefox.getTabTarget()
 	  };
 	};
 	
 	if (isFirefoxPanel()) {
-	  (function () {
-	    var sourceMap = __webpack_require__(316);
-	    var prettyPrint = __webpack_require__(383);
-	
-	    module.exports = {
-	      bootstrap: (_ref) => {
-	        var threadClient = _ref.threadClient,
-	            tabTarget = _ref.tabTarget,
-	            toolbox = _ref.toolbox;
-	
-	        firefox.setThreadClient(threadClient);
-	        firefox.setTabTarget(tabTarget);
-	        renderRoot(React, ReactDOM, App, store);
-	        firefox.initPage(actions);
-	        return onFirefoxConnect(actions, firefox);
-	      },
-	      destroy: () => {
-	        unmountRoot(ReactDOM);
-	        sourceMap.destroyWorker();
-	        prettyPrint.destroyWorker();
-	      },
-	      store: store,
-	      actions: actions,
-	      selectors: selectors,
-	      client: firefox.clientCommands
-	    };
-	  })();
+	  var sourceMap = __webpack_require__(246);
+	  var prettyPrint = __webpack_require__(515);
+	
+	  module.exports = {
+	    bootstrap: (_ref) => {
+	      var threadClient = _ref.threadClient,
+	          tabTarget = _ref.tabTarget,
+	          toolbox = _ref.toolbox;
+	
+	      firefox.setThreadClient(threadClient);
+	      firefox.setTabTarget(tabTarget);
+	      renderRoot(React, ReactDOM, App, store);
+	      firefox.initPage(actions);
+	      return onFirefoxConnect(actions, firefox);
+	    },
+	    destroy: () => {
+	      unmountRoot(ReactDOM);
+	      sourceMap.destroyWorker();
+	      prettyPrint.destroyWorker();
+	    },
+	    store: store,
+	    actions: actions,
+	    selectors: selectors,
+	    client: firefox.clientCommands
+	  };
 	} else {
 	  bootstrap(React, ReactDOM, App, actions, store).then(conn => onConnect(conn, actions));
 	}
 
 /***/ },
 /* 2 */
 /***/ function(module, exports) {
 
-	module.exports = devtoolsRequire("devtools/client/shared/vendor/react");
+	module.exports = __WEBPACK_EXTERNAL_MODULE_2__;
 
 /***/ },
 /* 3 */
 /***/ function(module, exports, __webpack_require__) {
 
 	'use strict';
 	
 	exports.__esModule = true;
@@ -1149,17 +1136,17 @@ var Debugger =
 	  }
 	}
 
 /***/ },
 /* 22 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
-	 * ReactDOM v15.3.1
+	 * ReactDOM v15.3.2
 	 *
 	 * Copyright 2013-present, Facebook, Inc.
 	 * All rights reserved.
 	 *
 	 * This source code is licensed under the BSD-style license found in the
 	 * LICENSE file in the root directory of this source tree. An additional grant
 	 * of patent rights can be found in the PATENTS file in the same directory.
 	 *
@@ -1196,106 +1183,115 @@ var Debugger =
 	  return React.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
 	});
 
 
 /***/ },
 /* 23 */
 /***/ function(module, exports, __webpack_require__) {
 
-	const { Task } = __webpack_require__(24);
-	const firefox = __webpack_require__(25);
-	const chrome = __webpack_require__(123);
-	const { createSource } = __webpack_require__(122);
-	
-	let clientType = null;
+	"use strict";
+	
+	var _require = __webpack_require__(24),
+	    Task = _require.Task;
+	
+	var firefox = __webpack_require__(25);
+	var chrome = __webpack_require__(125);
+	
+	var _require2 = __webpack_require__(123),
+	    createSource = _require2.createSource;
+	
+	var clientType = null;
 	function getClient() {
 	  if (clientType === "chrome" || clientType === "node") {
 	    return chrome.clientCommands;
 	  }
 	
 	  return firefox.clientCommands;
 	}
 	
 	function startDebugging(connTarget, actions) {
 	  if (connTarget.type === "node") {
 	    return startDebuggingNode(connTarget.param, actions);
 	  }
 	
-	  const target = connTarget.type === "chrome" ? chrome : firefox;
-	  return startDebuggingTab(target, connTarget.param, actions);
+	  return startDebuggingTab(connTarget, actions);
 	}
 	
 	function startDebuggingNode(tabId, actions) {
 	  return Task.spawn(function* () {
 	    clientType = "node";
 	
-	    const tabs = yield chrome.connectNodeClient();
-	    const tab = tabs.find(t => t.id.indexOf(tabId) !== -1);
+	    var tabs = yield chrome.connectNodeClient();
+	    var tab = tabs.find(t => t.id.indexOf(tabId) !== -1);
 	
 	    yield chrome.connectNode(tab.tab);
 	    chrome.initPage(actions, { clientType });
 	
 	    return { tabs, tab, client: chrome };
 	  });
 	}
 	
-	function startDebuggingTab(targetEnv, tabId, actions) {
+	function startDebuggingTab(connTarget, actions) {
+	  var client = connTarget.type === "chrome" ? chrome : firefox;
 	  return Task.spawn(function* () {
-	    const tabs = yield targetEnv.connectClient();
-	    const tab = tabs.find(t => t.id.indexOf(tabId) !== -1);
-	    yield targetEnv.connectTab(tab.tab);
-	
-	    clientType = targetEnv === firefox ? "firefox" : "chrome";
-	    targetEnv.initPage(actions, { clientType });
-	
-	    return { tabs, tab, client: targetEnv };
+	    var tabs = yield client.connectClient();
+	    var tab = tabs.find(t => t.id.indexOf(connTarget.param) !== -1);
+	    if (tab) {
+	      yield client.connectTab(tab.tab);
+	
+	      clientType = connTarget.type;
+	      client.initPage(actions, { clientType });
+	    }
+	    return { tabs, tab, client };
 	  });
 	}
 	
 	module.exports = {
 	  getClient,
 	  startDebugging,
 	  firefox,
 	  chrome,
 	  createSource
 	};
 
 /***/ },
 /* 24 */
 /***/ function(module, exports) {
 
+	"use strict";
+	
 	/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 	/* vim: set ts=2 et sw=2 tw=80 filetype=javascript: */
 	/* 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/. */
 	
 	/**
 	 * This object provides the public module functions.
 	 */
-	const Task = {
+	var Task = {
 	  // XXX: Not sure if this works in all cases...
 	  async: function (task) {
 	    return function () {
 	      return Task.spawn(task, this, arguments);
 	    };
 	  },
 	
 	  /**
 	   * Creates and starts a new task.
 	   * @param task A generator function
 	   * @return A promise, resolved when the task terminates
 	   */
 	  spawn: function (task, scope, args) {
 	    return new Promise(function (resolve, reject) {
-	      const iterator = task.apply(scope, args);
-	
-	      const callNext = lastValue => {
-	        const iteration = iterator.next(lastValue);
+	      var iterator = task.apply(scope, args);
+	
+	      var callNext = lastValue => {
+	        var iteration = iterator.next(lastValue);
 	        Promise.resolve(iteration.value).then(value => {
 	          if (iteration.done) {
 	            resolve(value);
 	          } else {
 	            callNext(value);
 	          }
 	        }).catch(error => {
 	          reject(error);
@@ -1309,25 +1305,83 @@ var Debugger =
 	};
 	
 	module.exports = { Task };
 
 /***/ },
 /* 25 */
 /***/ function(module, exports, __webpack_require__) {
 
-	const { DebuggerClient, DebuggerTransport,
-	  TargetFactory, WebsocketTransport } = __webpack_require__(26);
-	const { getValue } = __webpack_require__(65);
-	const { setupCommands, clientCommands } = __webpack_require__(120);
-	const { setupEvents, clientEvents } = __webpack_require__(121);
-	
-	let debuggerClient = null;
-	let threadClient = null;
-	let tabTarget = null;
+	"use strict";
+	
+	var connectClient = (() => {
+	  var _ref = _asyncToGenerator(function* () {
+	    var useProxy = !getValue("firefox.webSocketConnection");
+	    var firefoxHost = getValue(useProxy ? "firefox.proxyHost" : "firefox.webSocketHost");
+	
+	    var socket = new WebSocket(`ws://${firefoxHost}`);
+	    var transport = useProxy ? new DebuggerTransport(socket) : new WebsocketTransport(socket);
+	
+	    debuggerClient = new DebuggerClient(transport);
+	    if (!debuggerClient) {
+	      return [];
+	    }
+	
+	    try {
+	      yield debuggerClient.connect();
+	      var tabs = yield getTabs();
+	      return tabs;
+	    } catch (err) {
+	      console.log(err);
+	      return [];
+	    }
+	  });
+	
+	  return function connectClient() {
+	    return _ref.apply(this, arguments);
+	  };
+	})();
+	
+	var getTabs = (() => {
+	  var _ref2 = _asyncToGenerator(function* () {
+	    if (!debuggerClient || !debuggerClient.mainRoot) {
+	      return;
+	    }
+	
+	    var response = yield debuggerClient.listTabs();
+	    return createTabs(response.tabs);
+	  });
+	
+	  return function getTabs() {
+	    return _ref2.apply(this, arguments);
+	  };
+	})();
+	
+	function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
+	
+	var _require = __webpack_require__(26),
+	    DebuggerClient = _require.DebuggerClient,
+	    DebuggerTransport = _require.DebuggerTransport,
+	    TargetFactory = _require.TargetFactory,
+	    WebsocketTransport = _require.WebsocketTransport;
+	
+	var _require2 = __webpack_require__(65),
+	    getValue = _require2.getValue;
+	
+	var _require3 = __webpack_require__(122),
+	    setupCommands = _require3.setupCommands,
+	    clientCommands = _require3.clientCommands;
+	
+	var _require4 = __webpack_require__(124),
+	    setupEvents = _require4.setupEvents,
+	    clientEvents = _require4.clientEvents;
+	
+	var debuggerClient = null;
+	var threadClient = null;
+	var tabTarget = null;
 	
 	function getThreadClient() {
 	  return threadClient;
 	}
 	
 	function setThreadClient(client) {
 	  threadClient = client;
 	}
@@ -1336,59 +1390,36 @@ var Debugger =
 	  return tabTarget;
 	}
 	
 	function setTabTarget(target) {
 	  tabTarget = target;
 	}
 	
 	function lookupTabTarget(tab) {
-	  const options = { client: debuggerClient, form: tab, chrome: false };
+	  var options = { client: debuggerClient, form: tab, chrome: false };
 	  return TargetFactory.forRemoteTab(options);
 	}
 	
 	function createTabs(tabs) {
 	  return tabs.map(tab => {
 	    return {
 	      title: tab.title,
 	      url: tab.url,
 	      id: tab.actor,
 	      tab,
 	      clientType: "firefox"
 	    };
 	  });
 	}
 	
-	function connectClient() {
-	  const useProxy = !getValue("firefox.webSocketConnection");
-	  const firefoxHost = getValue(useProxy ? "firefox.proxyHost" : "firefox.webSocketHost");
-	
-	  const socket = new WebSocket(`ws://${ firefoxHost }`);
-	  const transport = useProxy ? new DebuggerTransport(socket) : new WebsocketTransport(socket);
-	
-	  return new Promise((resolve, reject) => {
-	    debuggerClient = new DebuggerClient(transport);
-	    debuggerClient.connect().then(() => {
-	      if (debuggerClient !== null) {
-	        return debuggerClient.listTabs().then(response => {
-	          resolve(createTabs(response.tabs));
-	        });
-	      }
-	      return resolve([]);
-	    }).catch(err => {
-	      console.log(err);
-	      resolve([]);
-	    });
-	  });
-	}
-	
 	function connectTab(tab) {
 	  return new Promise((resolve, reject) => {
 	    window.addEventListener("beforeunload", () => {
-	      const tt = getTabTarget();
+	      var tt = getTabTarget();
 	      if (tt !== null) {
 	        tt.destroy();
 	      }
 	    });
 	
 	    lookupTabTarget(tab).then(target => {
 	      tabTarget = target;
 	      target.activeTab.attachThread({}, (res, _threadClient) => {
@@ -1425,17 +1456,18 @@ var Debugger =
 	  connectClient,
 	  connectTab,
 	  clientCommands,
 	  clientEvents,
 	  getThreadClient,
 	  setThreadClient,
 	  getTabTarget,
 	  setTabTarget,
-	  initPage
+	  initPage,
+	  getTabs
 	};
 
 /***/ },
 /* 26 */
 /***/ function(module, exports, __webpack_require__) {
 
 	const { KeyShortcuts } = __webpack_require__(27);
 	const { DebuggerTransport } = __webpack_require__(41);
@@ -1736,17 +1768,17 @@ var Debugger =
 	  sprintf
 	};
 
 
 /***/ },
 /* 29 */
 /***/ function(module, exports) {
 
-	module.exports = devtoolsRequire("Services");
+	module.exports = __WEBPACK_EXTERNAL_MODULE_29__;
 
 /***/ },
 /* 30 */
 /***/ function(module, exports, __webpack_require__) {
 
 	const React = __webpack_require__(2);
 	const ReactDOM = __webpack_require__(31);
 	const Draggable = React.createFactory(__webpack_require__(32));
@@ -1997,118 +2029,76 @@ var Debugger =
 	  }
 	});
 	
 	module.exports = SplitBox;
 
 
 /***/ },
 /* 31 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/**
-	 * ReactDOM v0.14.7
-	 *
-	 * Copyright 2013-2015, Facebook, Inc.
-	 * All rights reserved.
-	 *
-	 * This source code is licensed under the BSD-style license found in the
-	 * LICENSE file in the root directory of this source tree. An additional grant
-	 * of patent rights can be found in the PATENTS file in the same directory.
-	 *
-	 */
-	// Based off https://github.com/ForbesLindesay/umd/blob/master/template.js
-	;(function(f) {
-	  // CommonJS
-	  if (true) {
-	    module.exports = f(__webpack_require__(2));
-	
-	  // RequireJS
-	  } else if (typeof define === "function" && define.amd) {
-	    define(['react'], f);
-	
-	  // <script>
-	  } else {
-	    var g;
-	    if (typeof window !== "undefined") {
-	      g = window;
-	    } else if (typeof global !== "undefined") {
-	      g = global;
-	    } else if (typeof self !== "undefined") {
-	      g = self;
-	    } else {
-	      // works providing we're not in "use strict";
-	      // needed for Java 8 Nashorn
-	      // see https://github.com/facebook/react/issues/3037
-	      g = this;
-	    }
-	    g.ReactDOM = f(g.React);
-	  }
-	
-	})(function(React) {
-	  return React.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
-	});
-
+/***/ function(module, exports) {
+
+	module.exports = __WEBPACK_EXTERNAL_MODULE_31__;
 
 /***/ },
 /* 32 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/* 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/. */
-	
-	const React = __webpack_require__(2);
-	const ReactDOM = __webpack_require__(31);
-	const { DOM: dom, PropTypes } = React;
-	
-	const Draggable = React.createClass({
-	  displayName: "Draggable",
-	
-	  propTypes: {
-	    onMove: PropTypes.func.isRequired,
-	    onStart: PropTypes.func,
-	    onStop: PropTypes.func,
-	    style: PropTypes.object,
-	    className: PropTypes.string
-	  },
-	
-	  startDragging(ev) {
-	    ev.preventDefault();
-	    const doc = ReactDOM.findDOMNode(this).ownerDocument;
-	    doc.addEventListener("mousemove", this.onMove);
-	    doc.addEventListener("mouseup", this.onUp);
-	    this.props.onStart && this.props.onStart();
-	  },
-	
-	  onMove(ev) {
-	    ev.preventDefault();
-	    // Use screen coordinates so, moving mouse over iframes
-	    // doesn't mangle (relative) coordinates.
-	    this.props.onMove(ev.screenX, ev.screenY);
-	  },
-	
-	  onUp(ev) {
-	    ev.preventDefault();
-	    const doc = ReactDOM.findDOMNode(this).ownerDocument;
-	    doc.removeEventListener("mousemove", this.onMove);
-	    doc.removeEventListener("mouseup", this.onUp);
-	    this.props.onStop && this.props.onStop();
-	  },
-	
-	  render() {
-	    return dom.div({
-	      style: this.props.style,
-	      className: this.props.className,
-	      onMouseDown: this.startDragging
-	    });
-	  }
-	});
-	
-	module.exports = Draggable;
+	 * 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/. */
+	
+	const React = __webpack_require__(2);
+	const ReactDOM = __webpack_require__(31);
+	const { DOM: dom, PropTypes } = React;
+	
+	const Draggable = React.createClass({
+	  displayName: "Draggable",
+	
+	  propTypes: {
+	    onMove: PropTypes.func.isRequired,
+	    onStart: PropTypes.func,
+	    onStop: PropTypes.func,
+	    style: PropTypes.object,
+	    className: PropTypes.string
+	  },
+	
+	  startDragging(ev) {
+	    ev.preventDefault();
+	    const doc = ReactDOM.findDOMNode(this).ownerDocument;
+	    doc.addEventListener("mousemove", this.onMove);
+	    doc.addEventListener("mouseup", this.onUp);
+	    this.props.onStart && this.props.onStart();
+	  },
+	
+	  onMove(ev) {
+	    ev.preventDefault();
+	    // Use screen coordinates so, moving mouse over iframes
+	    // doesn't mangle (relative) coordinates.
+	    this.props.onMove(ev.screenX, ev.screenY);
+	  },
+	
+	  onUp(ev) {
+	    ev.preventDefault();
+	    const doc = ReactDOM.findDOMNode(this).ownerDocument;
+	    doc.removeEventListener("mousemove", this.onMove);
+	    doc.removeEventListener("mouseup", this.onUp);
+	    this.props.onStop && this.props.onStop();
+	  },
+	
+	  render() {
+	    return dom.div({
+	      style: this.props.style,
+	      className: this.props.className,
+	      onMouseDown: this.startDragging
+	    });
+	  }
+	});
+	
+	module.exports = Draggable;
 
 
 /***/ },
 /* 33 */
 /***/ function(module, exports, __webpack_require__) {
 
 	/**
 	 * Copyright (c) 2007-2016, Alexandru Marasteanu <hello [at) alexei (dot] ro>
@@ -4324,28712 +4314,17 @@ var Debugger =
 	exports.parseAListOfComponentValues = parseAListOfComponentValues;
 	exports.parseACommaSeparatedListOfComponentValues = parseACommaSeparatedListOfComponentValues;
 	exports.CSSLexer = CSSLexer;
 	
 	}));
 
 
 /***/ },
-/* 38 */
-/***/ function(module, exports) {
-
-	// auto-generated from nsColorNameList.h
-	var cssColors = {
-	  aliceblue: [240, 248, 255],
-	  antiquewhite: [250, 235, 215],
-	  aqua: [0, 255, 255],
-	  aquamarine: [127, 255, 212],
-	  azure: [240, 255, 255],
-	  beige: [245, 245, 220],
-	  bisque: [255, 228, 196],
-	  black: [0, 0, 0],
-	  blanchedalmond: [255, 235, 205],
-	  blue: [0, 0, 255],
-	  blueviolet: [138, 43, 226],
-	  brown: [165, 42, 42],
-	  burlywood: [222, 184, 135],
-	  cadetblue: [95, 158, 160],
-	  chartreuse: [127, 255, 0],
-	  chocolate: [210, 105, 30],
-	  coral: [255, 127, 80],
-	  cornflowerblue: [100, 149, 237],
-	  cornsilk: [255, 248, 220],
-	  crimson: [220, 20, 60],
-	  cyan: [0, 255, 255],
-	  darkblue: [0, 0, 139],
-	  darkcyan: [0, 139, 139],
-	  darkgoldenrod: [184, 134, 11],
-	  darkgray: [169, 169, 169],
-	  darkgreen: [0, 100, 0],
-	  darkgrey: [169, 169, 169],
-	  darkkhaki: [189, 183, 107],
-	  darkmagenta: [139, 0, 139],
-	  darkolivegreen: [85, 107, 47],
-	  darkorange: [255, 140, 0],
-	  darkorchid: [153, 50, 204],
-	  darkred: [139, 0, 0],
-	  darksalmon: [233, 150, 122],
-	  darkseagreen: [143, 188, 143],
-	  darkslateblue: [72, 61, 139],
-	  darkslategray: [47, 79, 79],
-	  darkslategrey: [47, 79, 79],
-	  darkturquoise: [0, 206, 209],
-	  darkviolet: [148, 0, 211],
-	  deeppink: [255, 20, 147],
-	  deepskyblue: [0, 191, 255],
-	  dimgray: [105, 105, 105],
-	  dimgrey: [105, 105, 105],
-	  dodgerblue: [30, 144, 255],
-	  firebrick: [178, 34, 34],
-	  floralwhite: [255, 250, 240],
-	  forestgreen: [34, 139, 34],
-	  fuchsia: [255, 0, 255],
-	  gainsboro: [220, 220, 220],
-	  ghostwhite: [248, 248, 255],
-	  gold: [255, 215, 0],
-	  goldenrod: [218, 165, 32],
-	  gray: [128, 128, 128],
-	  grey: [128, 128, 128],
-	  green: [0, 128, 0],
-	  greenyellow: [173, 255, 47],
-	  honeydew: [240, 255, 240],
-	  hotpink: [255, 105, 180],
-	  indianred: [205, 92, 92],
-	  indigo: [75, 0, 130],
-	  ivory: [255, 255, 240],
-	  khaki: [240, 230, 140],
-	  lavender: [230, 230, 250],
-	  lavenderblush: [255, 240, 245],
-	  lawngreen: [124, 252, 0],
-	  lemonchiffon: [255, 250, 205],
-	  lightblue: [173, 216, 230],
-	  lightcoral: [240, 128, 128],
-	  lightcyan: [224, 255, 255],
-	  lightgoldenrodyellow: [250, 250, 210],
-	  lightgray: [211, 211, 211],
-	  lightgreen: [144, 238, 144],
-	  lightgrey: [211, 211, 211],
-	  lightpink: [255, 182, 193],
-	  lightsalmon: [255, 160, 122],
-	  lightseagreen: [32, 178, 170],
-	  lightskyblue: [135, 206, 250],
-	  lightslategray: [119, 136, 153],
-	  lightslategrey: [119, 136, 153],
-	  lightsteelblue: [176, 196, 222],
-	  lightyellow: [255, 255, 224],
-	  lime: [0, 255, 0],
-	  limegreen: [50, 205, 50],
-	  linen: [250, 240, 230],
-	  magenta: [255, 0, 255],
-	  maroon: [128, 0, 0],
-	  mediumaquamarine: [102, 205, 170],
-	  mediumblue: [0, 0, 205],
-	  mediumorchid: [186, 85, 211],
-	  mediumpurple: [147, 112, 219],
-	  mediumseagreen: [60, 179, 113],
-	  mediumslateblue: [123, 104, 238],
-	  mediumspringgreen: [0, 250, 154],
-	  mediumturquoise: [72, 209, 204],
-	  mediumvioletred: [199, 21, 133],
-	  midnightblue: [25, 25, 112],
-	  mintcream: [245, 255, 250],
-	  mistyrose: [255, 228, 225],
-	  moccasin: [255, 228, 181],
-	  navajowhite: [255, 222, 173],
-	  navy: [0, 0, 128],
-	  oldlace: [253, 245, 230],
-	  olive: [128, 128, 0],
-	  olivedrab: [107, 142, 35],
-	  orange: [255, 165, 0],
-	  orangered: [255, 69, 0],
-	  orchid: [218, 112, 214],
-	  palegoldenrod: [238, 232, 170],
-	  palegreen: [152, 251, 152],
-	  paleturquoise: [175, 238, 238],
-	  palevioletred: [219, 112, 147],
-	  papayawhip: [255, 239, 213],
-	  peachpuff: [255, 218, 185],
-	  peru: [205, 133, 63],
-	  pink: [255, 192, 203],
-	  plum: [221, 160, 221],
-	  powderblue: [176, 224, 230],
-	  purple: [128, 0, 128],
-	  rebeccapurple: [102, 51, 153],
-	  red: [255, 0, 0],
-	  rosybrown: [188, 143, 143],
-	  royalblue: [65, 105, 225],
-	  saddlebrown: [139, 69, 19],
-	  salmon: [250, 128, 114],
-	  sandybrown: [244, 164, 96],
-	  seagreen: [46, 139, 87],
-	  seashell: [255, 245, 238],
-	  sienna: [160, 82, 45],
-	  silver: [192, 192, 192],
-	  skyblue: [135, 206, 235],
-	  slateblue: [106, 90, 205],
-	  slategray: [112, 128, 144],
-	  slategrey: [112, 128, 144],
-	  snow: [255, 250, 250],
-	  springgreen: [0, 255, 127],
-	  steelblue: [70, 130, 180],
-	  tan: [210, 180, 140],
-	  teal: [0, 128, 128],
-	  thistle: [216, 191, 216],
-	  tomato: [255, 99, 71],
-	  turquoise: [64, 224, 208],
-	  violet: [238, 130, 238],
-	  wheat: [245, 222, 179],
-	  white: [255, 255, 255],
-	  whitesmoke: [245, 245, 245],
-	  yellow: [255, 255, 0],
-	  yellowgreen: [154, 205, 50],
-	};
-	module.exports = { cssColors };
-
-
-/***/ },
-/* 39 */
-/***/ function(module, exports) {
-
-	// auto-generated by means you would rather not know
-	var cssProperties = {
-	  "-moz-appearance": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["-moz-gtk-info-bar", "-moz-mac-disclosure-button-closed", "-moz-mac-disclosure-button-open", "-moz-mac-fullscreen-button", "-moz-mac-help-button", "-moz-mac-vibrancy-dark", "-moz-mac-vibrancy-light", "-moz-win-borderless-glass", "-moz-win-browsertabbar-toolbox", "-moz-win-communications-toolbox", "-moz-win-exclude-glass", "-moz-win-glass", "-moz-win-media-toolbox", "-moz-window-button-box", "-moz-window-button-box-maximized", "-moz-window-button-close", "-moz-window-button-maximize", "-moz-window-button-minimize", "-moz-window-button-restore", "-moz-window-frame-bottom", "-moz-window-frame-left", "-moz-window-frame-right", "-moz-window-titlebar", "-moz-window-titlebar-maximized", "button", "button-arrow-down", "button-arrow-next", "button-arrow-previous", "button-arrow-up", "button-bevel", "button-focus", "caret", "checkbox", "checkbox-container", "checkbox-label", "checkmenuitem", "dialog", "dualbutton", "groupbox", "inherit", "initial", "listbox", "listitem", "menuarrow", "menubar", "menucheckbox", "menuimage", "menuitem", "menuitemtext", "menulist", "menulist-button", "menulist-text", "menulist-textfield", "menupopup", "menuradio", "menuseparator", "meterbar", "meterchunk", "none", "number-input", "progressbar", "progressbar-vertical", "progresschunk", "progresschunk-vertical", "radio", "radio-container", "radio-label", "radiomenuitem", "range", "range-thumb", "resizer", "resizerpanel", "scale-horizontal", "scale-vertical", "scalethumb-horizontal", "scalethumb-vertical", "scalethumbend", "scalethumbstart", "scalethumbtick", "scrollbar", "scrollbar-small", "scrollbarbutton-down", "scrollbarbutton-left", "scrollbarbutton-right", "scrollbarbutton-up", "scrollbarthumb-horizontal", "scrollbarthumb-vertical", "scrollbartrack-horizontal", "scrollbartrack-vertical", "searchfield", "separator", "spinner", "spinner-downbutton", "spinner-textfield", "spinner-upbutton", "splitter", "statusbar", "statusbarpanel", "tab", "tab-scroll-arrow-back", "tab-scroll-arrow-forward", "tabpanel", "tabpanels", "textfield", "textfield-multiline", "toolbar", "toolbarbutton", "toolbarbutton-dropdown", "toolbargripper", "toolbox", "tooltip", "treeheader", "treeheadercell", "treeheadersortarrow", "treeitem", "treeline", "treetwisty", "treetwistyopen", "treeview", "unset", "window", ],
-	  },
-	  "-moz-outline-radius-topleft": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-outline-radius-topright": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-outline-radius-bottomright": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-outline-radius-bottomleft": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-tab-size": {
-	    inherited: true,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "animation-delay": {
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "animation-direction": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["alternate", "alternate-reverse", "inherit", "initial", "normal", "reverse", "unset", ],
-	  },
-	  "animation-duration": {
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "animation-fill-mode": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["backwards", "both", "forwards", "inherit", "initial", "none", "unset", ],
-	  },
-	  "animation-iteration-count": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["infinite", "inherit", "initial", "unset", ],
-	  },
-	  "animation-name": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "none", "unset", ],
-	  },
-	  "animation-play-state": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "paused", "running", "unset", ],
-	  },
-	  "animation-timing-function": {
-	    inherited: false,
-	    supports: 256,
-	    values: ["cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "inherit", "initial", "linear", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "background-attachment": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["fixed", "inherit", "initial", "local", "scroll", "unset", ],
-	  },
-	  "background-clip": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["border-box", "content-box", "inherit", "initial", "padding-box", "unset", ],
-	  },
-	  "background-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "background-image": {
-	    inherited: false,
-	    supports: 648,
-	    values: ["-moz-element", "-moz-image-rect", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient", "inherit", "initial", "linear-gradient", "none", "radial-gradient", "repeating-linear-gradient", "repeating-radial-gradient", "unset", "url", ],
-	  },
-	  "background-blend-mode": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["color", "color-burn", "color-dodge", "darken", "difference", "exclusion", "hard-light", "hue", "inherit", "initial", "lighten", "luminosity", "multiply", "normal", "overlay", "saturation", "screen", "soft-light", "unset", ],
-	  },
-	  "background-origin": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["border-box", "content-box", "inherit", "initial", "padding-box", "unset", ],
-	  },
-	  "background-position": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "background-repeat": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "no-repeat", "repeat", "repeat-x", "repeat-y", "unset", ],
-	  },
-	  "background-size": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-binding": {
-	    inherited: false,
-	    supports: 8,
-	    values: ["inherit", "initial", "none", "unset", "url", ],
-	  },
-	  "block-size": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "border-block-end-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-block-end-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "border-block-end-width": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "border-block-start-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-block-start-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "border-block-start-width": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "border-bottom-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "-moz-border-bottom-colors": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-bottom-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "border-bottom-width": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "border-collapse": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["collapse", "inherit", "initial", "separate", "unset", ],
-	  },
-	  "border-image-source": {
-	    inherited: false,
-	    supports: 648,
-	    values: ["-moz-element", "-moz-image-rect", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient", "inherit", "initial", "linear-gradient", "none", "radial-gradient", "repeating-linear-gradient", "repeating-radial-gradient", "unset", "url", ],
-	  },
-	  "border-image-slice": {
-	    inherited: false,
-	    supports: 1026,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-image-width": {
-	    inherited: false,
-	    supports: 1027,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-image-outset": {
-	    inherited: false,
-	    supports: 1025,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-image-repeat": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-inline-end-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-inline-end-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "border-inline-end-width": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "border-inline-start-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-inline-start-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "border-inline-start-width": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "border-left-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "-moz-border-left-colors": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-left-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "border-left-width": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "border-right-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "-moz-border-right-colors": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-right-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "border-right-width": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "border-spacing": {
-	    inherited: true,
-	    supports: 1,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-top-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "-moz-border-top-colors": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-top-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "border-top-width": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "border-top-left-radius": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-top-right-radius": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-bottom-right-radius": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "border-bottom-left-radius": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "bottom": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "box-decoration-break": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["clone", "inherit", "initial", "slice", "unset", ],
-	  },
-	  "box-shadow": {
-	    inherited: false,
-	    supports: 5,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "box-sizing": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["border-box", "content-box", "inherit", "initial", "padding-box", "unset", ],
-	  },
-	  "caption-side": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["bottom", "bottom-outside", "inherit", "initial", "left", "right", "top", "top-outside", "unset", ],
-	  },
-	  "clear": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["both", "inherit", "initial", "inline-end", "inline-start", "left", "none", "right", "unset", ],
-	  },
-	  "clip": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "color": {
-	    inherited: true,
-	    supports: 4,
-	    values: ["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "-moz-column-count": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["auto", "inherit", "initial", "unset", ],
-	  },
-	  "-moz-column-fill": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["auto", "balance", "inherit", "initial", "unset", ],
-	  },
-	  "-moz-column-width": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "-moz-column-gap": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "normal", "unset", ],
-	  },
-	  "-moz-column-rule-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "-moz-column-rule-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "-moz-column-rule-width": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "contain": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "layout", "none", "paint", "strict", "style", "unset", ],
-	  },
-	  "content": {
-	    inherited: false,
-	    supports: 8,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-control-character-visibility": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["hidden", "inherit", "initial", "unset", "visible", ],
-	  },
-	  "counter-increment": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "counter-reset": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "cursor": {
-	    inherited: true,
-	    supports: 8,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "direction": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "ltr", "rtl", "unset", ],
-	  },
-	  "display": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["-moz-box", "-moz-deck", "-moz-grid", "-moz-grid-group", "-moz-grid-line", "-moz-groupbox", "-moz-inline-box", "-moz-inline-grid", "-moz-inline-stack", "-moz-popup", "-moz-stack", "block", "contents", "flex", "grid", "inherit", "initial", "inline", "inline-block", "inline-flex", "inline-grid", "inline-table", "list-item", "none", "ruby", "ruby-base", "ruby-base-container", "ruby-text", "ruby-text-container", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row", "table-row-group", "unset", ],
-	  },
-	  "empty-cells": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["hide", "inherit", "initial", "show", "unset", ],
-	  },
-	  "align-content": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "align-items": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "align-self": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "flex-basis": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-available", "-moz-calc", "-moz-fit-content", "-moz-max-content", "-moz-min-content", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "flex-direction": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["column", "column-reverse", "inherit", "initial", "row", "row-reverse", "unset", ],
-	  },
-	  "flex-grow": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "flex-shrink": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "flex-wrap": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "nowrap", "unset", "wrap", "wrap-reverse", ],
-	  },
-	  "order": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "justify-content": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "justify-items": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "justify-self": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "float": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "inline-end", "inline-start", "left", "none", "right", "unset", ],
-	  },
-	  "-moz-float-edge": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["content-box", "inherit", "initial", "margin-box", "unset", ],
-	  },
-	  "font-family": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "font-feature-settings": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "font-kerning": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["auto", "inherit", "initial", "none", "normal", "unset", ],
-	  },
-	  "font-language-override": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "normal", "unset", ],
-	  },
-	  "font-size": {
-	    inherited: true,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "large", "larger", "medium", "small", "smaller", "unset", "x-large", "x-small", "xx-large", "xx-small", ],
-	  },
-	  "font-size-adjust": {
-	    inherited: true,
-	    supports: 1024,
-	    values: ["inherit", "initial", "none", "unset", ],
-	  },
-	  "font-stretch": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["condensed", "expanded", "extra-condensed", "extra-expanded", "inherit", "initial", "normal", "semi-condensed", "semi-expanded", "ultra-condensed", "ultra-expanded", "unset", ],
-	  },
-	  "font-style": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "italic", "normal", "oblique", "unset", ],
-	  },
-	  "font-synthesis": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "font-variant-alternates": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "font-variant-caps": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["all-petite-caps", "all-small-caps", "inherit", "initial", "normal", "petite-caps", "small-caps", "titling-caps", "unicase", "unset", ],
-	  },
-	  "font-variant-east-asian": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "font-variant-ligatures": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "font-variant-numeric": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "font-variant-position": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "normal", "sub", "super", "unset", ],
-	  },
-	  "font-weight": {
-	    inherited: true,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-force-broken-image-icon": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-auto-flow": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-auto-columns": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-auto-rows": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-template-areas": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-template-columns": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-template-rows": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-column-start": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-column-end": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-row-start": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-row-end": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-column-gap": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "grid-row-gap": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "height": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-available", "-moz-calc", "-moz-fit-content", "-moz-max-content", "-moz-min-content", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "image-orientation": {
-	    inherited: true,
-	    supports: 16,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-image-region": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "ime-mode": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["active", "auto", "disabled", "inactive", "inherit", "initial", "normal", "unset", ],
-	  },
-	  "inline-size": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-available", "-moz-calc", "-moz-fit-content", "-moz-max-content", "-moz-min-content", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "left": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "letter-spacing": {
-	    inherited: true,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "normal", "unset", ],
-	  },
-	  "line-height": {
-	    inherited: true,
-	    supports: 1027,
-	    values: ["-moz-block-height", "inherit", "initial", "normal", "unset", ],
-	  },
-	  "list-style-image": {
-	    inherited: true,
-	    supports: 8,
-	    values: ["inherit", "initial", "none", "unset", "url", ],
-	  },
-	  "list-style-position": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "inside", "outside", "unset", ],
-	  },
-	  "list-style-type": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "margin-block-end": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "margin-block-start": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "margin-bottom": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "margin-inline-end": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "margin-inline-start": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "margin-left": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "margin-right": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "margin-top": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "marker-offset": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "max-block-size": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "none", "unset", ],
-	  },
-	  "max-height": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-available", "-moz-calc", "-moz-fit-content", "-moz-max-content", "-moz-min-content", "calc", "inherit", "initial", "none", "unset", ],
-	  },
-	  "max-inline-size": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-available", "-moz-calc", "-moz-fit-content", "-moz-max-content", "-moz-min-content", "calc", "inherit", "initial", "none", "unset", ],
-	  },
-	  "max-width": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-available", "-moz-calc", "-moz-fit-content", "-moz-max-content", "-moz-min-content", "calc", "inherit", "initial", "none", "unset", ],
-	  },
-	  "min-height": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-available", "-moz-calc", "-moz-fit-content", "-moz-max-content", "-moz-min-content", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "min-block-size": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "min-inline-size": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-available", "-moz-calc", "-moz-fit-content", "-moz-max-content", "-moz-min-content", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "min-width": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-available", "-moz-calc", "-moz-fit-content", "-moz-max-content", "-moz-min-content", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "mix-blend-mode": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["color", "color-burn", "color-dodge", "darken", "difference", "exclusion", "hard-light", "hue", "inherit", "initial", "lighten", "luminosity", "multiply", "normal", "overlay", "saturation", "screen", "soft-light", "unset", ],
-	  },
-	  "isolation": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["auto", "inherit", "initial", "isolate", "unset", ],
-	  },
-	  "object-fit": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["contain", "cover", "fill", "inherit", "initial", "none", "scale-down", "unset", ],
-	  },
-	  "object-position": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "offset-block-end": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "offset-block-start": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "offset-inline-end": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "offset-inline-start": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "opacity": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-orient": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["block", "horizontal", "inherit", "initial", "inline", "unset", "vertical", ],
-	  },
-	  "outline-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "outline-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["auto", "dashed", "dotted", "double", "groove", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "outline-width": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "outline-offset": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "overflow-x": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["-moz-hidden-unscrollable", "auto", "hidden", "inherit", "initial", "scroll", "unset", "visible", ],
-	  },
-	  "overflow-y": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["-moz-hidden-unscrollable", "auto", "hidden", "inherit", "initial", "scroll", "unset", "visible", ],
-	  },
-	  "padding-block-end": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "padding-block-start": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "padding-bottom": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "padding-inline-end": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "padding-inline-start": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "padding-left": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "padding-right": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "padding-top": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "page-break-after": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["always", "auto", "avoid", "inherit", "initial", "left", "right", "unset", ],
-	  },
-	  "page-break-before": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["always", "auto", "avoid", "inherit", "initial", "left", "right", "unset", ],
-	  },
-	  "page-break-inside": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["auto", "avoid", "inherit", "initial", "unset", ],
-	  },
-	  "paint-order": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "pointer-events": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["all", "auto", "fill", "inherit", "initial", "none", "painted", "stroke", "unset", "visible", "visiblefill", "visiblepainted", "visiblestroke", ],
-	  },
-	  "position": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["absolute", "fixed", "inherit", "initial", "relative", "static", "sticky", "unset", ],
-	  },
-	  "quotes": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "resize": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["both", "horizontal", "inherit", "initial", "none", "unset", "vertical", ],
-	  },
-	  "right": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "ruby-align": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["center", "inherit", "initial", "space-around", "space-between", "start", "unset", ],
-	  },
-	  "ruby-position": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "over", "under", "unset", ],
-	  },
-	  "scroll-behavior": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["auto", "inherit", "initial", "smooth", "unset", ],
-	  },
-	  "scroll-snap-coordinate": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "scroll-snap-destination": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "scroll-snap-points-x": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "scroll-snap-points-y": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "scroll-snap-type-x": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "mandatory", "none", "proximity", "unset", ],
-	  },
-	  "scroll-snap-type-y": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "mandatory", "none", "proximity", "unset", ],
-	  },
-	  "table-layout": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["auto", "fixed", "inherit", "initial", "unset", ],
-	  },
-	  "text-align": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["-moz-center", "-moz-left", "-moz-right", "center", "end", "inherit", "initial", "justify", "left", "right", "start", "unset", ],
-	  },
-	  "-moz-text-align-last": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["auto", "center", "end", "inherit", "initial", "justify", "left", "right", "start", "unset", ],
-	  },
-	  "text-decoration-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "text-decoration-line": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "text-decoration-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["-moz-none", "dashed", "dotted", "double", "inherit", "initial", "solid", "unset", "wavy", ],
-	  },
-	  "text-indent": {
-	    inherited: true,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "text-orientation": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "mixed", "sideways", "sideways-right", "unset", "upright", ],
-	  },
-	  "text-overflow": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "text-shadow": {
-	    inherited: true,
-	    supports: 5,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-text-size-adjust": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["auto", "inherit", "initial", "none", "unset", ],
-	  },
-	  "text-transform": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["capitalize", "full-width", "inherit", "initial", "lowercase", "none", "unset", "uppercase", ],
-	  },
-	  "transform": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "transform-box": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["border-box", "fill-box", "inherit", "initial", "unset", "view-box", ],
-	  },
-	  "transform-origin": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "perspective-origin": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "perspective": {
-	    inherited: false,
-	    supports: 1,
-	    values: ["inherit", "initial", "none", "unset", ],
-	  },
-	  "transform-style": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["flat", "inherit", "initial", "preserve-3d", "unset", ],
-	  },
-	  "backface-visibility": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["hidden", "inherit", "initial", "unset", "visible", ],
-	  },
-	  "top": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "transition-delay": {
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "transition-duration": {
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "transition-property": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["all", "inherit", "initial", "none", "unset", ],
-	  },
-	  "transition-timing-function": {
-	    inherited: false,
-	    supports: 256,
-	    values: ["cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "inherit", "initial", "linear", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "unicode-bidi": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["isolate", "isolate-override", "plaintext", "bidi-override", "embed", "inherit", "initial", "normal", "unset", ],
-	  },
-	  "-moz-user-focus": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["ignore", "inherit", "initial", "none", "normal", "select-after", "select-all", "select-before", "select-menu", "select-same", "unset", ],
-	  },
-	  "-moz-user-input": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["auto", "disabled", "enabled", "inherit", "initial", "none", "unset", ],
-	  },
-	  "-moz-user-modify": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "read-only", "read-write", "unset", "write-only", ],
-	  },
-	  "-moz-user-select": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["-moz-all", "-moz-none", "-moz-text", "all", "auto", "element", "elements", "inherit", "initial", "none", "text", "toggle", "tri-state", "unset", ],
-	  },
-	  "vertical-align": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "-moz-middle-with-baseline", "baseline", "bottom", "calc", "inherit", "initial", "middle", "sub", "super", "text-bottom", "text-top", "top", "unset", ],
-	  },
-	  "visibility": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["collapse", "hidden", "inherit", "initial", "unset", "visible", ],
-	  },
-	  "white-space": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["-moz-pre-space", "inherit", "initial", "normal", "nowrap", "pre", "pre-line", "pre-wrap", "unset", ],
-	  },
-	  "width": {
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-available", "-moz-calc", "-moz-fit-content", "-moz-max-content", "-moz-min-content", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "-moz-window-dragging": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["drag", "inherit", "initial", "no-drag", "unset", ],
-	  },
-	  "word-break": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["break-all", "inherit", "initial", "keep-all", "normal", "unset", ],
-	  },
-	  "word-spacing": {
-	    inherited: true,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "normal", "unset", ],
-	  },
-	  "word-wrap": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["break-word", "inherit", "initial", "normal", "unset", ],
-	  },
-	  "hyphens": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["auto", "inherit", "initial", "manual", "none", "unset", ],
-	  },
-	  "writing-mode": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["horizontal-tb", "inherit", "initial", "lr", "lr-tb", "rl", "rl-tb", "sideways-lr", "sideways-rl", "tb", "tb-rl", "unset", "vertical-lr", "vertical-rl", ],
-	  },
-	  "z-index": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["auto", "inherit", "initial", "unset", ],
-	  },
-	  "-moz-box-align": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["baseline", "center", "end", "inherit", "initial", "start", "stretch", "unset", ],
-	  },
-	  "-moz-box-direction": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "normal", "reverse", "unset", ],
-	  },
-	  "-moz-box-flex": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-box-orient": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["block-axis", "horizontal", "inherit", "initial", "inline-axis", "unset", "vertical", ],
-	  },
-	  "-moz-box-pack": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["center", "end", "inherit", "initial", "justify", "start", "unset", ],
-	  },
-	  "-moz-box-ordinal-group": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-stack-sizing": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["ignore", "inherit", "initial", "stretch-to-fit", "unset", ],
-	  },
-	  "clip-path": {
-	    inherited: false,
-	    supports: 8,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "clip-rule": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["evenodd", "inherit", "initial", "nonzero", "unset", ],
-	  },
-	  "color-interpolation": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["auto", "inherit", "initial", "linearrgb", "srgb", "unset", ],
-	  },
-	  "color-interpolation-filters": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["auto", "inherit", "initial", "linearrgb", "srgb", "unset", ],
-	  },
-	  "dominant-baseline": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["alphabetic", "auto", "central", "hanging", "ideographic", "inherit", "initial", "mathematical", "middle", "no-change", "reset-size", "text-after-edge", "text-before-edge", "unset", "use-script", ],
-	  },
-	  "fill": {
-	    inherited: true,
-	    supports: 12,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "fill-opacity": {
-	    inherited: true,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "fill-rule": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["evenodd", "inherit", "initial", "nonzero", "unset", ],
-	  },
-	  "filter": {
-	    inherited: false,
-	    supports: 8,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "flood-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "flood-opacity": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "image-rendering": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["-moz-crisp-edges", "auto", "inherit", "initial", "optimizequality", "optimizespeed", "unset", ],
-	  },
-	  "lighting-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "marker-end": {
-	    inherited: true,
-	    supports: 8,
-	    values: ["inherit", "initial", "none", "unset", "url", ],
-	  },
-	  "marker-mid": {
-	    inherited: true,
-	    supports: 8,
-	    values: ["inherit", "initial", "none", "unset", "url", ],
-	  },
-	  "marker-start": {
-	    inherited: true,
-	    supports: 8,
-	    values: ["inherit", "initial", "none", "unset", "url", ],
-	  },
-	  "mask": {
-	    inherited: false,
-	    supports: 8,
-	    values: ["inherit", "initial", "none", "unset", "url", ],
-	  },
-	  "mask-type": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["alpha", "inherit", "initial", "luminance", "unset", ],
-	  },
-	  "shape-rendering": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["auto", "crispedges", "geometricprecision", "inherit", "initial", "optimizespeed", "unset", ],
-	  },
-	  "stop-color": {
-	    inherited: false,
-	    supports: 4,
-	    values: ["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "stop-opacity": {
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "stroke": {
-	    inherited: true,
-	    supports: 12,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "stroke-dasharray": {
-	    inherited: true,
-	    supports: 1027,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "stroke-dashoffset": {
-	    inherited: true,
-	    supports: 1027,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "stroke-linecap": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["butt", "inherit", "initial", "round", "square", "unset", ],
-	  },
-	  "stroke-linejoin": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["bevel", "inherit", "initial", "miter", "round", "unset", ],
-	  },
-	  "stroke-miterlimit": {
-	    inherited: true,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "stroke-opacity": {
-	    inherited: true,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "stroke-width": {
-	    inherited: true,
-	    supports: 1027,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "text-anchor": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["end", "inherit", "initial", "middle", "start", "unset", ],
-	  },
-	  "text-rendering": {
-	    inherited: true,
-	    supports: 0,
-	    values: ["auto", "geometricprecision", "inherit", "initial", "optimizelegibility", "optimizespeed", "unset", ],
-	  },
-	  "vector-effect": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "non-scaling-stroke", "none", "unset", ],
-	  },
-	  "will-change": {
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-outline-radius": {
-	    subproperties: ["-moz-outline-radius-topleft", "-moz-outline-radius-topright", "-moz-outline-radius-bottomright", "-moz-outline-radius-bottomleft", ],
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "all": {
-	    subproperties: ["-moz-appearance", "-moz-outline-radius-topleft", "-moz-outline-radius-topright", "-moz-outline-radius-bottomright", "-moz-outline-radius-bottomleft", "-moz-tab-size", "-x-system-font", "animation-delay", "animation-direction", "animation-duration", "animation-fill-mode", "animation-iteration-count", "animation-name", "animation-play-state", "animation-timing-function", "background-attachment", "background-clip", "background-color", "background-image", "background-blend-mode", "background-origin", "background-position", "background-repeat", "background-size", "-moz-binding", "block-size", "border-block-end-color", "border-block-end-style", "border-block-end-width", "border-block-start-color", "border-block-start-style", "border-block-start-width", "border-bottom-color", "-moz-border-bottom-colors", "border-bottom-style", "border-bottom-width", "border-collapse", "border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat", "border-inline-end-color", "border-inline-end-style", "border-inline-end-width", "border-inline-start-color", "border-inline-start-style", "border-inline-start-width", "border-left-color", "-moz-border-left-colors", "border-left-style", "border-left-width", "border-right-color", "-moz-border-right-colors", "border-right-style", "border-right-width", "border-spacing", "border-top-color", "-moz-border-top-colors", "border-top-style", "border-top-width", "border-top-left-radius", "border-top-right-radius", "border-bottom-right-radius", "border-bottom-left-radius", "bottom", "box-decoration-break", "box-shadow", "box-sizing", "caption-side", "clear", "clip", "color", "-moz-column-count", "-moz-column-fill", "-moz-column-width", "-moz-column-gap", "-moz-column-rule-color", "-moz-column-rule-style", "-moz-column-rule-width", "contain", "content", "-moz-control-character-visibility", "counter-increment", "counter-reset", "cursor", "display", "empty-cells", "align-content", "align-items", "align-self", "flex-basis", "flex-direction", "flex-grow", "flex-shrink", "flex-wrap", "order", "justify-content", "justify-items", "justify-self", "float", "-moz-float-edge", "font-family", "font-feature-settings", "font-kerning", "font-language-override", "font-size", "font-size-adjust", "-moz-osx-font-smoothing", "font-stretch", "font-style", "font-synthesis", "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric", "font-variant-position", "font-weight", "-moz-force-broken-image-icon", "grid-auto-flow", "grid-auto-columns", "grid-auto-rows", "grid-template-areas", "grid-template-columns", "grid-template-rows", "grid-column-start", "grid-column-end", "grid-row-start", "grid-row-end", "grid-column-gap", "grid-row-gap", "height", "image-orientation", "-moz-image-region", "ime-mode", "inline-size", "left", "letter-spacing", "line-height", "list-style-image", "list-style-position", "list-style-type", "margin-block-end", "margin-block-start", "margin-bottom", "margin-inline-end", "margin-inline-start", "margin-left", "margin-right", "margin-top", "marker-offset", "max-block-size", "max-height", "max-inline-size", "max-width", "-moz-min-font-size-ratio", "min-height", "min-block-size", "min-inline-size", "min-width", "mix-blend-mode", "isolation", "object-fit", "object-position", "offset-block-end", "offset-block-start", "offset-inline-end", "offset-inline-start", "opacity", "-moz-orient", "outline-color", "outline-style", "outline-width", "outline-offset", "overflow-clip-box", "overflow-x", "overflow-y", "padding-block-end", "padding-block-start", "padding-bottom", "padding-inline-end", "padding-inline-start", "padding-left", "padding-right", "padding-top", "page-break-after", "page-break-before", "page-break-inside", "paint-order", "pointer-events", "position", "quotes", "resize", "right", "ruby-align", "ruby-position", "scroll-behavior", "scroll-snap-coordinate", "scroll-snap-destination", "scroll-snap-points-x", "scroll-snap-points-y", "scroll-snap-type-x", "scroll-snap-type-y", "table-layout", "text-align", "-moz-text-align-last", "text-combine-upright", "text-decoration-color", "text-decoration-line", "text-decoration-style", "text-indent", "text-orientation", "text-overflow", "text-shadow", "-moz-text-size-adjust", "text-transform", "transform", "transform-box", "transform-origin", "perspective-origin", "perspective", "transform-style", "backface-visibility", "top", "-moz-top-layer", "touch-action", "transition-delay", "transition-duration", "transition-property", "transition-timing-function", "-moz-user-focus", "-moz-user-input", "-moz-user-modify", "-moz-user-select", "vertical-align", "visibility", "white-space", "width", "-moz-window-dragging", "-moz-window-shadow", "word-break", "word-spacing", "word-wrap", "hyphens", "writing-mode", "z-index", "-moz-box-align", "-moz-box-direction", "-moz-box-flex", "-moz-box-orient", "-moz-box-pack", "-moz-box-ordinal-group", "-moz-stack-sizing", "clip-path", "clip-rule", "color-interpolation", "color-interpolation-filters", "dominant-baseline", "fill", "fill-opacity", "fill-rule", "filter", "flood-color", "flood-opacity", "image-rendering", "lighting-color", "marker-end", "marker-mid", "marker-start", "mask", "mask-type", "shape-rendering", "stop-color", "stop-opacity", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-anchor", "text-rendering", "vector-effect", "will-change", ],
-	    inherited: false,
-	    supports: 2015,
-	    values: ["-moz-all", "-moz-available", "-moz-block-height", "-moz-box", "-moz-calc", "-moz-center", "-moz-crisp-edges", "-moz-deck", "-moz-element", "-moz-fit-content", "-moz-grid", "-moz-grid-group", "-moz-grid-line", "-moz-groupbox", "-moz-gtk-info-bar", "-moz-hidden-unscrollable", "-moz-image-rect", "-moz-inline-box", "-moz-inline-grid", "-moz-inline-stack", "-moz-left", "-moz-linear-gradient", "-moz-mac-disclosure-button-closed", "-moz-mac-disclosure-button-open", "-moz-mac-fullscreen-button", "-moz-mac-help-button", "-moz-mac-vibrancy-dark", "-moz-mac-vibrancy-light", "-moz-max-content", "-moz-middle-with-baseline", "-moz-min-content", "-moz-none", "-moz-popup", "-moz-pre-space", "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient", "-moz-right", "-moz-stack", "-moz-text", "-moz-use-text-color", "-moz-win-borderless-glass", "-moz-win-browsertabbar-toolbox", "-moz-win-communications-toolbox", "-moz-win-exclude-glass", "-moz-win-glass", "-moz-win-media-toolbox", "-moz-window-button-box", "-moz-window-button-box-maximized", "-moz-window-button-close", "-moz-window-button-maximize", "-moz-window-button-minimize", "-moz-window-button-restore", "-moz-window-frame-bottom", "-moz-window-frame-left", "-moz-window-frame-right", "-moz-window-titlebar", "-moz-window-titlebar-maximized", "absolute", "active", "aliceblue", "all", "all-petite-caps", "all-small-caps", "alpha", "alphabetic", "alternate", "alternate-reverse", "always", "antiquewhite", "aqua", "aquamarine", "auto", "avoid", "azure", "backwards", "balance", "baseline", "beige", "bevel", "bisque", "black", "blanchedalmond", "block", "block-axis", "blue", "blueviolet", "border-box", "both", "bottom", "bottom-outside", "break-all", "break-word", "brown", "burlywood", "butt", "button", "button-arrow-down", "button-arrow-next", "button-arrow-previous", "button-arrow-up", "button-bevel", "button-focus", "cadetblue", "calc", "capitalize", "caret", "center", "central", "chartreuse", "checkbox", "checkbox-container", "checkbox-label", "checkmenuitem", "chocolate", "clone", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse", "condensed", "contain", "content-box", "contents", "coral", "cornflowerblue", "cornsilk", "cover", "crimson", "crispedges", "cubic-bezier", "currentColor", "cyan", "darkblue", "darkcyan", "darken", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dialog", "difference", "dimgray", "dimgrey", "disabled", "dodgerblue", "dotted", "double", "drag", "dualbutton", "ease", "ease-in", "ease-in-out", "ease-out", "element", "elements", "enabled", "end", "evenodd", "exclusion", "expanded", "extra-condensed", "extra-expanded", "fill", "fill-box", "firebrick", "fixed", "flat", "flex", "floralwhite", "forestgreen", "forwards", "fuchsia", "full-width", "gainsboro", "geometricprecision", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "grid", "groove", "groupbox", "hanging", "hard-light", "hidden", "hide", "honeydew", "horizontal", "horizontal-tb", "hotpink", "hsl", "hsla", "hue", "ideographic", "ignore", "inactive", "indianred", "indigo", "infinite", "inherit", "initial", "inline", "inline-axis", "inline-block", "inline-end", "inline-flex", "inline-grid", "inline-start", "inline-table", "inset", "inside", "isolate", "italic", "ivory", "justify", "keep-all", "khaki", "large", "larger", "lavender", "lavenderblush", "lawngreen", "layout", "left", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lighten", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linear", "linear-gradient", "linearrgb", "linen", "list-item", "listbox", "listitem", "local", "lowercase", "lr", "lr-tb", "luminance", "luminosity", "magenta", "mandatory", "manual", "margin-box", "maroon", "mathematical", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "menuarrow", "menubar", "menucheckbox", "menuimage", "menuitem", "menuitemtext", "menulist", "menulist-button", "menulist-text", "menulist-textfield", "menupopup", "menuradio", "menuseparator", "meterbar", "meterchunk", "middle", "midnightblue", "mintcream", "mistyrose", "miter", "mixed", "moccasin", "multiply", "navajowhite", "navy", "no-change", "no-drag", "no-repeat", "non-scaling-stroke", "none", "nonzero", "normal", "nowrap", "number-input", "oblique", "oldlace", "olive", "olivedrab", "optimizelegibility", "optimizequality", "optimizespeed", "orange", "orangered", "orchid", "outset", "outside", "over", "overlay", "padding-box", "paint", "painted", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "paused", "peachpuff", "peru", "petite-caps", "pink", "plum", "powderblue", "pre", "pre-line", "pre-wrap", "preserve-3d", "progressbar", "progressbar-vertical", "progresschunk", "progresschunk-vertical", "proximity", "purple", "radial-gradient", "radio", "radio-container", "radio-label", "radiomenuitem", "range", "range-thumb", "read-only", "read-write", "rebeccapurple", "red", "relative", "repeat", "repeat-x", "repeat-y", "repeating-linear-gradient", "repeating-radial-gradient", "reset-size", "resizer", "resizerpanel", "reverse", "rgb", "rgba", "ridge", "right", "rl", "rl-tb", "rosybrown", "round", "row", "row-reverse", "royalblue", "ruby", "ruby-base", "ruby-base-container", "ruby-text", "ruby-text-container", "running", "saddlebrown", "salmon", "sandybrown", "saturation", "scale-down", "scale-horizontal", "scale-vertical", "scalethumb-horizontal", "scalethumb-vertical", "scalethumbend", "scalethumbstart", "scalethumbtick", "screen", "scroll", "scrollbar", "scrollbar-small", "scrollbarbutton-down", "scrollbarbutton-left", "scrollbarbutton-right", "scrollbarbutton-up", "scrollbarthumb-horizontal", "scrollbarthumb-vertical", "scrollbartrack-horizontal", "scrollbartrack-vertical", "seagreen", "searchfield", "seashell", "select-after", "select-all", "select-before", "select-menu", "select-same", "semi-condensed", "semi-expanded", "separate", "separator", "show", "sideways", "sideways-lr", "sideways-right", "sideways-rl", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "slice", "small", "small-caps", "smaller", "smooth", "snow", "soft-light", "solid", "space-around", "space-between", "spinner", "spinner-downbutton", "spinner-textfield", "spinner-upbutton", "splitter", "springgreen", "square", "srgb", "start", "static", "statusbar", "statusbarpanel", "steelblue", "step-end", "step-start", "steps", "sticky", "stretch", "stretch-to-fit", "strict", "stroke", "style", "sub", "super", "tab", "tab-scroll-arrow-back", "tab-scroll-arrow-forward", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row", "table-row-group", "tabpanel", "tabpanels", "tan", "tb", "tb-rl", "teal", "text", "text-after-edge", "text-before-edge", "text-bottom", "text-top", "textfield", "textfield-multiline", "thick", "thin", "thistle", "titling-caps", "toggle", "tomato", "toolbar", "toolbarbutton", "toolbarbutton-dropdown", "toolbargripper", "toolbox", "tooltip", "top", "top-outside", "transparent", "treeheader", "treeheadercell", "treeheadersortarrow", "treeitem", "treeline", "treetwisty", "treetwistyopen", "treeview", "tri-state", "turquoise", "ultra-condensed", "ultra-expanded", "under", "unicase", "unset", "uppercase", "upright", "url", "use-script", "vertical", "vertical-lr", "vertical-rl", "view-box", "violet", "visible", "visiblefill", "visiblepainted", "visiblestroke", "wavy", "wheat", "white", "whitesmoke", "window", "wrap", "wrap-reverse", "write-only", "x-large", "x-small", "xx-large", "xx-small", "yellow", "yellowgreen", ],
-	  },
-	  "animation": {
-	    subproperties: ["animation-duration", "animation-timing-function", "animation-delay", "animation-direction", "animation-fill-mode", "animation-iteration-count", "animation-play-state", "animation-name", ],
-	    inherited: false,
-	    supports: 1344,
-	    values: ["alternate", "alternate-reverse", "backwards", "both", "cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "forwards", "infinite", "inherit", "initial", "linear", "none", "normal", "paused", "reverse", "running", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "background": {
-	    subproperties: ["background-color", "background-image", "background-repeat", "background-attachment", "background-position", "background-clip", "background-origin", "background-size", ],
-	    inherited: false,
-	    supports: 655,
-	    values: ["-moz-element", "-moz-image-rect", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "border-box", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "content-box", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "fixed", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linear-gradient", "linen", "local", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "no-repeat", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "padding-box", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "radial-gradient", "rebeccapurple", "red", "repeat", "repeat-x", "repeat-y", "repeating-linear-gradient", "repeating-radial-gradient", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "scroll", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "url", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border": {
-	    subproperties: ["border-top-width", "border-right-width", "border-bottom-width", "border-left-width", "border-top-style", "border-right-style", "border-bottom-style", "border-left-style", "border-top-color", "border-right-color", "border-bottom-color", "border-left-color", "-moz-border-top-colors", "-moz-border-right-colors", "-moz-border-bottom-colors", "-moz-border-left-colors", "border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-element", "-moz-image-rect", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linear-gradient", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "radial-gradient", "rebeccapurple", "red", "repeating-linear-gradient", "repeating-radial-gradient", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "url", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-block-end": {
-	    subproperties: ["border-block-end-width", "border-block-end-style", "border-block-end-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-block-start": {
-	    subproperties: ["border-block-start-width", "border-block-start-style", "border-block-start-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-bottom": {
-	    subproperties: ["border-bottom-width", "border-bottom-style", "border-bottom-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-color": {
-	    subproperties: ["border-top-color", "border-right-color", "border-bottom-color", "border-left-color", ],
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-image": {
-	    subproperties: ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat", ],
-	    inherited: false,
-	    supports: 1675,
-	    values: ["-moz-element", "-moz-image-rect", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient", "inherit", "initial", "linear-gradient", "none", "radial-gradient", "repeating-linear-gradient", "repeating-radial-gradient", "unset", "url", ],
-	  },
-	  "border-inline-end": {
-	    subproperties: ["border-inline-end-width", "border-inline-end-style", "border-inline-end-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-inline-start": {
-	    subproperties: ["border-inline-start-width", "border-inline-start-style", "border-inline-start-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-left": {
-	    subproperties: ["border-left-width", "border-left-style", "border-left-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-right": {
-	    subproperties: ["border-right-width", "border-right-style", "border-right-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-style": {
-	    subproperties: ["border-top-style", "border-right-style", "border-bottom-style", "border-left-style", ],
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "border-top": {
-	    subproperties: ["border-top-width", "border-top-style", "border-top-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "border-width": {
-	    subproperties: ["border-top-width", "border-right-width", "border-bottom-width", "border-left-width", ],
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "border-radius": {
-	    subproperties: ["border-top-left-radius", "border-top-right-radius", "border-bottom-right-radius", "border-bottom-left-radius", ],
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-columns": {
-	    subproperties: ["-moz-column-count", "-moz-column-width", ],
-	    inherited: false,
-	    supports: 1025,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "-moz-column-rule": {
-	    subproperties: ["-moz-column-rule-width", "-moz-column-rule-style", "-moz-column-rule-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "flex": {
-	    subproperties: ["flex-grow", "flex-shrink", "flex-basis", ],
-	    inherited: false,
-	    supports: 1027,
-	    values: ["-moz-available", "-moz-calc", "-moz-fit-content", "-moz-max-content", "-moz-min-content", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "flex-flow": {
-	    subproperties: ["flex-direction", "flex-wrap", ],
-	    inherited: false,
-	    supports: 0,
-	    values: ["column", "column-reverse", "inherit", "initial", "nowrap", "row", "row-reverse", "unset", "wrap", "wrap-reverse", ],
-	  },
-	  "font": {
-	    subproperties: ["font-family", "font-style", "font-weight", "font-size", "line-height", "font-size-adjust", "font-stretch", "-x-system-font", "font-feature-settings", "font-language-override", "font-kerning", "font-synthesis", "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric", "font-variant-position", ],
-	    inherited: true,
-	    supports: 1027,
-	    values: ["-moz-block-height", "-moz-calc", "all-petite-caps", "all-small-caps", "auto", "calc", "condensed", "expanded", "extra-condensed", "extra-expanded", "inherit", "initial", "italic", "large", "larger", "medium", "none", "normal", "oblique", "petite-caps", "semi-condensed", "semi-expanded", "small", "small-caps", "smaller", "sub", "super", "titling-caps", "ultra-condensed", "ultra-expanded", "unicase", "unset", "x-large", "x-small", "xx-large", "xx-small", ],
-	  },
-	  "font-variant": {
-	    subproperties: ["font-variant-alternates", "font-variant-caps", "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric", "font-variant-position", ],
-	    inherited: true,
-	    supports: 0,
-	    values: ["all-petite-caps", "all-small-caps", "inherit", "initial", "normal", "petite-caps", "small-caps", "sub", "super", "titling-caps", "unicase", "unset", ],
-	  },
-	  "grid-template": {
-	    subproperties: ["grid-template-areas", "grid-template-columns", "grid-template-rows", ],
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid": {
-	    subproperties: ["grid-template-areas", "grid-template-columns", "grid-template-rows", "grid-auto-flow", "grid-auto-columns", "grid-auto-rows", "grid-column-gap", "grid-row-gap", ],
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "grid-column": {
-	    subproperties: ["grid-column-start", "grid-column-end", ],
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-row": {
-	    subproperties: ["grid-row-start", "grid-row-end", ],
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-area": {
-	    subproperties: ["grid-row-start", "grid-column-start", "grid-row-end", "grid-column-end", ],
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "grid-gap": {
-	    subproperties: ["grid-column-gap", "grid-row-gap", ],
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "list-style": {
-	    subproperties: ["list-style-type", "list-style-image", "list-style-position", ],
-	    inherited: true,
-	    supports: 8,
-	    values: ["inherit", "initial", "inside", "none", "outside", "unset", "url", ],
-	  },
-	  "margin": {
-	    subproperties: ["margin-top", "margin-right", "margin-bottom", "margin-left", ],
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "outline": {
-	    subproperties: ["outline-width", "outline-style", "outline-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "auto", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "overflow": {
-	    subproperties: ["overflow-x", "overflow-y", ],
-	    inherited: false,
-	    supports: 0,
-	    values: ["-moz-hidden-unscrollable", "auto", "hidden", "inherit", "initial", "scroll", "unset", "visible", ],
-	  },
-	  "padding": {
-	    subproperties: ["padding-top", "padding-right", "padding-bottom", "padding-left", ],
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "scroll-snap-type": {
-	    subproperties: ["scroll-snap-type-x", "scroll-snap-type-y", ],
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "mandatory", "none", "proximity", "unset", ],
-	  },
-	  "text-decoration": {
-	    subproperties: ["text-decoration-color", "text-decoration-line", "text-decoration-style", ],
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-none", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wavy", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "transition": {
-	    subproperties: ["transition-property", "transition-duration", "transition-timing-function", "transition-delay", ],
-	    inherited: false,
-	    supports: 320,
-	    values: ["all", "cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "inherit", "initial", "linear", "none", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "marker": {
-	    subproperties: ["marker-start", "marker-mid", "marker-end", ],
-	    inherited: true,
-	    supports: 8,
-	    values: ["inherit", "initial", "none", "unset", "url", ],
-	  },
-	  "-moz-transform": {
-	    alias: true,
-	    subproperties: ["transform", ],
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-transform-origin": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-perspective-origin": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-perspective": {
-	    alias: true,
-	    inherited: false,
-	    supports: 1,
-	    values: ["inherit", "initial", "none", "unset", ],
-	  },
-	  "-moz-transform-style": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["flat", "inherit", "initial", "preserve-3d", "unset", ],
-	  },
-	  "-moz-backface-visibility": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["hidden", "inherit", "initial", "unset", "visible", ],
-	  },
-	  "-moz-border-image": {
-	    alias: true,
-	    subproperties: ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat", ],
-	    inherited: false,
-	    supports: 1675,
-	    values: ["-moz-element", "-moz-image-rect", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient", "inherit", "initial", "linear-gradient", "none", "radial-gradient", "repeating-linear-gradient", "repeating-radial-gradient", "unset", "url", ],
-	  },
-	  "-moz-transition": {
-	    alias: true,
-	    subproperties: ["transition-property", "transition-duration", "transition-timing-function", "transition-delay", ],
-	    inherited: false,
-	    supports: 320,
-	    values: ["all", "cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "inherit", "initial", "linear", "none", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "-moz-transition-delay": {
-	    alias: true,
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-transition-duration": {
-	    alias: true,
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-transition-property": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["all", "inherit", "initial", "none", "unset", ],
-	  },
-	  "-moz-transition-timing-function": {
-	    alias: true,
-	    inherited: false,
-	    supports: 256,
-	    values: ["cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "inherit", "initial", "linear", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "-moz-animation": {
-	    alias: true,
-	    subproperties: ["animation-duration", "animation-timing-function", "animation-delay", "animation-direction", "animation-fill-mode", "animation-iteration-count", "animation-play-state", "animation-name", ],
-	    inherited: false,
-	    supports: 1344,
-	    values: ["alternate", "alternate-reverse", "backwards", "both", "cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "forwards", "infinite", "inherit", "initial", "linear", "none", "normal", "paused", "reverse", "running", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "-moz-animation-delay": {
-	    alias: true,
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-animation-direction": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["alternate", "alternate-reverse", "inherit", "initial", "normal", "reverse", "unset", ],
-	  },
-	  "-moz-animation-duration": {
-	    alias: true,
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-animation-fill-mode": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["backwards", "both", "forwards", "inherit", "initial", "none", "unset", ],
-	  },
-	  "-moz-animation-iteration-count": {
-	    alias: true,
-	    inherited: false,
-	    supports: 1024,
-	    values: ["infinite", "inherit", "initial", "unset", ],
-	  },
-	  "-moz-animation-name": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "none", "unset", ],
-	  },
-	  "-moz-animation-play-state": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "paused", "running", "unset", ],
-	  },
-	  "-moz-animation-timing-function": {
-	    alias: true,
-	    inherited: false,
-	    supports: 256,
-	    values: ["cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "inherit", "initial", "linear", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "-moz-box-sizing": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["border-box", "content-box", "inherit", "initial", "padding-box", "unset", ],
-	  },
-	  "-moz-font-feature-settings": {
-	    alias: true,
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-moz-font-language-override": {
-	    alias: true,
-	    inherited: true,
-	    supports: 0,
-	    values: ["inherit", "initial", "normal", "unset", ],
-	  },
-	  "-moz-padding-end": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "-moz-padding-start": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "-moz-margin-end": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "-moz-margin-start": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["-moz-calc", "auto", "calc", "inherit", "initial", "unset", ],
-	  },
-	  "-moz-border-end": {
-	    alias: true,
-	    subproperties: ["border-inline-end-width", "border-inline-end-style", "border-inline-end-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "-moz-border-end-color": {
-	    alias: true,
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "-moz-border-end-style": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "-moz-border-end-width": {
-	    alias: true,
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "-moz-border-start": {
-	    alias: true,
-	    subproperties: ["border-inline-start-width", "border-inline-start-style", "border-inline-start-color", ],
-	    inherited: false,
-	    supports: 5,
-	    values: ["-moz-calc", "-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "calc", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "dashed", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "dotted", "double", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "groove", "hidden", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "inset", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "medium", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "none", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "outset", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "ridge", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "solid", "springgreen", "steelblue", "tan", "teal", "thick", "thin", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "-moz-border-start-color": {
-	    alias: true,
-	    inherited: false,
-	    supports: 4,
-	    values: ["-moz-use-text-color", "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "currentColor", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkgrey", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkslategrey", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dimgrey", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "hsl", "hsla", "indianred", "indigo", "inherit", "initial", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightgrey", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightslategrey", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rgb", "rgba", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "slategrey", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "transparent", "turquoise", "unset", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen", ],
-	  },
-	  "-moz-border-start-style": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["dashed", "dotted", "double", "groove", "hidden", "inherit", "initial", "inset", "none", "outset", "ridge", "solid", "unset", ],
-	  },
-	  "-moz-border-start-width": {
-	    alias: true,
-	    inherited: false,
-	    supports: 1,
-	    values: ["-moz-calc", "calc", "inherit", "initial", "medium", "thick", "thin", "unset", ],
-	  },
-	  "-moz-hyphens": {
-	    alias: true,
-	    inherited: true,
-	    supports: 0,
-	    values: ["auto", "inherit", "initial", "manual", "none", "unset", ],
-	  },
-	  "-webkit-animation": {
-	    alias: true,
-	    subproperties: ["animation-duration", "animation-timing-function", "animation-delay", "animation-direction", "animation-fill-mode", "animation-iteration-count", "animation-play-state", "animation-name", ],
-	    inherited: false,
-	    supports: 1344,
-	    values: ["alternate", "alternate-reverse", "backwards", "both", "cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "forwards", "infinite", "inherit", "initial", "linear", "none", "normal", "paused", "reverse", "running", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "-webkit-animation-delay": {
-	    alias: true,
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-animation-direction": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["alternate", "alternate-reverse", "inherit", "initial", "normal", "reverse", "unset", ],
-	  },
-	  "-webkit-animation-duration": {
-	    alias: true,
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-animation-fill-mode": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["backwards", "both", "forwards", "inherit", "initial", "none", "unset", ],
-	  },
-	  "-webkit-animation-iteration-count": {
-	    alias: true,
-	    inherited: false,
-	    supports: 1024,
-	    values: ["infinite", "inherit", "initial", "unset", ],
-	  },
-	  "-webkit-animation-name": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "none", "unset", ],
-	  },
-	  "-webkit-animation-play-state": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "paused", "running", "unset", ],
-	  },
-	  "-webkit-animation-timing-function": {
-	    alias: true,
-	    inherited: false,
-	    supports: 256,
-	    values: ["cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "inherit", "initial", "linear", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "-webkit-text-size-adjust": {
-	    alias: true,
-	    inherited: true,
-	    supports: 0,
-	    values: ["auto", "inherit", "initial", "none", "unset", ],
-	  },
-	  "-webkit-transform": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-transform-origin": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-transform-style": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["flat", "inherit", "initial", "preserve-3d", "unset", ],
-	  },
-	  "-webkit-backface-visibility": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["hidden", "inherit", "initial", "unset", "visible", ],
-	  },
-	  "-webkit-perspective": {
-	    alias: true,
-	    inherited: false,
-	    supports: 1,
-	    values: ["inherit", "initial", "none", "unset", ],
-	  },
-	  "-webkit-perspective-origin": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-transition": {
-	    alias: true,
-	    subproperties: ["transition-property", "transition-duration", "transition-timing-function", "transition-delay", ],
-	    inherited: false,
-	    supports: 320,
-	    values: ["all", "cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "inherit", "initial", "linear", "none", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "-webkit-transition-delay": {
-	    alias: true,
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-transition-duration": {
-	    alias: true,
-	    inherited: false,
-	    supports: 64,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-transition-property": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["all", "inherit", "initial", "none", "unset", ],
-	  },
-	  "-webkit-transition-timing-function": {
-	    alias: true,
-	    inherited: false,
-	    supports: 256,
-	    values: ["cubic-bezier", "ease", "ease-in", "ease-in-out", "ease-out", "inherit", "initial", "linear", "step-end", "step-start", "steps", "unset", ],
-	  },
-	  "-webkit-border-radius": {
-	    alias: true,
-	    subproperties: ["border-top-left-radius", "border-top-right-radius", "border-bottom-right-radius", "border-bottom-left-radius", ],
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-border-top-left-radius": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-border-top-right-radius": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-border-bottom-left-radius": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-border-bottom-right-radius": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-appearance": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["-moz-gtk-info-bar", "-moz-mac-disclosure-button-closed", "-moz-mac-disclosure-button-open", "-moz-mac-fullscreen-button", "-moz-mac-help-button", "-moz-mac-vibrancy-dark", "-moz-mac-vibrancy-light", "-moz-win-borderless-glass", "-moz-win-browsertabbar-toolbox", "-moz-win-communications-toolbox", "-moz-win-exclude-glass", "-moz-win-glass", "-moz-win-media-toolbox", "-moz-window-button-box", "-moz-window-button-box-maximized", "-moz-window-button-close", "-moz-window-button-maximize", "-moz-window-button-minimize", "-moz-window-button-restore", "-moz-window-frame-bottom", "-moz-window-frame-left", "-moz-window-frame-right", "-moz-window-titlebar", "-moz-window-titlebar-maximized", "button", "button-arrow-down", "button-arrow-next", "button-arrow-previous", "button-arrow-up", "button-bevel", "button-focus", "caret", "checkbox", "checkbox-container", "checkbox-label", "checkmenuitem", "dialog", "dualbutton", "groupbox", "inherit", "initial", "listbox", "listitem", "menuarrow", "menubar", "menucheckbox", "menuimage", "menuitem", "menuitemtext", "menulist", "menulist-button", "menulist-text", "menulist-textfield", "menupopup", "menuradio", "menuseparator", "meterbar", "meterchunk", "none", "number-input", "progressbar", "progressbar-vertical", "progresschunk", "progresschunk-vertical", "radio", "radio-container", "radio-label", "radiomenuitem", "range", "range-thumb", "resizer", "resizerpanel", "scale-horizontal", "scale-vertical", "scalethumb-horizontal", "scalethumb-vertical", "scalethumbend", "scalethumbstart", "scalethumbtick", "scrollbar", "scrollbar-small", "scrollbarbutton-down", "scrollbarbutton-left", "scrollbarbutton-right", "scrollbarbutton-up", "scrollbarthumb-horizontal", "scrollbarthumb-vertical", "scrollbartrack-horizontal", "scrollbartrack-vertical", "searchfield", "separator", "spinner", "spinner-downbutton", "spinner-textfield", "spinner-upbutton", "splitter", "statusbar", "statusbarpanel", "tab", "tab-scroll-arrow-back", "tab-scroll-arrow-forward", "tabpanel", "tabpanels", "textfield", "textfield-multiline", "toolbar", "toolbarbutton", "toolbarbutton-dropdown", "toolbargripper", "toolbox", "tooltip", "treeheader", "treeheadercell", "treeheadersortarrow", "treeitem", "treeline", "treetwisty", "treetwistyopen", "treeview", "unset", "window", ],
-	  },
-	  "-webkit-background-clip": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["border-box", "content-box", "inherit", "initial", "padding-box", "unset", ],
-	  },
-	  "-webkit-background-origin": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["border-box", "content-box", "inherit", "initial", "padding-box", "unset", ],
-	  },
-	  "-webkit-background-size": {
-	    alias: true,
-	    inherited: false,
-	    supports: 3,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-border-image": {
-	    alias: true,
-	    subproperties: ["border-image-source", "border-image-slice", "border-image-width", "border-image-outset", "border-image-repeat", ],
-	    inherited: false,
-	    supports: 1675,
-	    values: ["-moz-element", "-moz-image-rect", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient", "inherit", "initial", "linear-gradient", "none", "radial-gradient", "repeating-linear-gradient", "repeating-radial-gradient", "unset", "url", ],
-	  },
-	  "-webkit-border-image-outset": {
-	    alias: true,
-	    inherited: false,
-	    supports: 1025,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-border-image-repeat": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-border-image-slice": {
-	    alias: true,
-	    inherited: false,
-	    supports: 1026,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-border-image-source": {
-	    alias: true,
-	    inherited: false,
-	    supports: 648,
-	    values: ["-moz-element", "-moz-image-rect", "-moz-linear-gradient", "-moz-radial-gradient", "-moz-repeating-linear-gradient", "-moz-repeating-radial-gradient", "inherit", "initial", "linear-gradient", "none", "radial-gradient", "repeating-linear-gradient", "repeating-radial-gradient", "unset", "url", ],
-	  },
-	  "-webkit-border-image-width": {
-	    alias: true,
-	    inherited: false,
-	    supports: 1027,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-box-shadow": {
-	    alias: true,
-	    inherited: false,
-	    supports: 5,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-box-sizing": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["border-box", "content-box", "inherit", "initial", "padding-box", "unset", ],
-	  },
-	  "-webkit-box-flex": {
-	    alias: true,
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-box-ordinal-group": {
-	    alias: true,
-	    inherited: false,
-	    supports: 1024,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-box-align": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-box-pack": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["inherit", "initial", "unset", ],
-	  },
-	  "-webkit-user-select": {
-	    alias: true,
-	    inherited: false,
-	    supports: 0,
-	    values: ["-moz-all", "-moz-none", "-moz-text", "all", "auto", "element", "elements", "inherit", "initial", "none", "text", "toggle", "tri-state", "unset", ],
-	  },
-	};
-	module.exports = { cssProperties };
-
-
-/***/ },
-/* 40 */
-/***/ function(module, exports) {
-
-	/*
-	 * A sham for https://dxr.mozilla.org/mozilla-central/source/toolkit/modules/Promise.jsm
-	 */
-	
-	/**
-	 * Promise.jsm is mostly the Promise web API with a `defer` method. Just drop this in here,
-	 * and use the native web API (although building with webpack/babel, it may replace this
-	 * with it's own version if we want to target environments that do not have `Promise`.
-	 */
-	
-	let p = typeof window != "undefined" ?  window.Promise : Promise;
-	p.defer = function defer() {
-	  var resolve, reject;
-	  var promise = new Promise(function() {
-	    resolve = arguments[0];
-	    reject = arguments[1];
-	  });
-	  return {
-	    resolve: resolve,
-	    reject: reject,
-	    promise: promise
-	  };
-	}
-	
-	module.exports = p;
-
-
-/***/ },
-/* 41 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/* eslint-env browser */
-	/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-	/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
-	/* 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/. */
-	
-	// TODO: Get rid of this code once the marionette server loads transport.js as
-	// an SDK module (see bug 1000814)
-	
-	"use strict";
-	
-	const DevToolsUtils = __webpack_require__(42);
-	const { dumpn, dumpv } = DevToolsUtils;
-	const StreamUtils = __webpack_require__(48);
-	const { Packet, JSONPacket, BulkPacket } =
-	  __webpack_require__(49);
-	const promise = __webpack_require__(40);
-	const EventEmitter = __webpack_require__(34);
-	const utf8 = __webpack_require__(52);
-	
-	const PACKET_HEADER_MAX = 200;
-	
-	/**
-	 * An adapter that handles data transfers between the debugger client and
-	 * server. It can work with both nsIPipe and nsIServerSocket transports so
-	 * long as the properly created input and output streams are specified.
-	 * (However, for intra-process connections, LocalDebuggerTransport, below,
-	 * is more efficient than using an nsIPipe pair with DebuggerTransport.)
-	 *
-	 * @param input nsIAsyncInputStream
-	 *        The input stream.
-	 * @param output nsIAsyncOutputStream
-	 *        The output stream.
-	 *
-	 * Given a DebuggerTransport instance dt:
-	 * 1) Set dt.hooks to a packet handler object (described below).
-	 * 2) Call dt.ready() to begin watching for input packets.
-	 * 3) Call dt.send() / dt.startBulkSend() to send packets.
-	 * 4) Call dt.close() to close the connection, and disengage from the event
-	 *    loop.
-	 *
-	 * A packet handler is an object with the following methods:
-	 *
-	 * - onPacket(packet) - called when we have received a complete packet.
-	 *   |packet| is the parsed form of the packet --- a JavaScript value, not
-	 *   a JSON-syntax string.
-	 *
-	 * - onBulkPacket(packet) - called when we have switched to bulk packet
-	 *   receiving mode. |packet| is an object containing:
-	 *   * actor:  Name of actor that will receive the packet
-	 *   * type:   Name of actor's method that should be called on receipt
-	 *   * length: Size of the data to be read
-	 *   * stream: This input stream should only be used directly if you can ensure
-	 *             that you will read exactly |length| bytes and will not close the
-	 *             stream when reading is complete
-	 *   * done:   If you use the stream directly (instead of |copyTo| below), you
-	 *             must signal completion by resolving / rejecting this deferred.
-	 *             If it's rejected, the transport will be closed.  If an Error is
-	 *             supplied as a rejection value, it will be logged via |dumpn|.
-	 *             If you do use |copyTo|, resolving is taken care of for you when
-	 *             copying completes.
-	 *   * copyTo: A helper function for getting your data out of the stream that
-	 *             meets the stream handling requirements above, and has the
-	 *             following signature:
-	 *     @param  output nsIAsyncOutputStream
-	 *             The stream to copy to.
-	 *     @return Promise
-	 *             The promise is resolved when copying completes or rejected if any
-	 *             (unexpected) errors occur.
-	 *             This object also emits "progress" events for each chunk that is
-	 *             copied.  See stream-utils.js.
-	 *
-	 * - onClosed(reason) - called when the connection is closed. |reason| is
-	 *   an optional nsresult or object, typically passed when the transport is
-	 *   closed due to some error in a underlying stream.
-	 *
-	 * See ./packets.js and the Remote Debugging Protocol specification for more
-	 * details on the format of these packets.
-	 */
-	function DebuggerTransport(socket) {
-	  EventEmitter.decorate(this);
-	
-	  this._socket = socket;
-	
-	  // The current incoming (possibly partial) header, which will determine which
-	  // type of Packet |_incoming| below will become.
-	  this._incomingHeader = "";
-	  // The current incoming Packet object
-	  this._incoming = null;
-	  // A queue of outgoing Packet objects
-	  this._outgoing = [];
-	
-	  this.hooks = null;
-	  this.active = false;
-	
-	  this._incomingEnabled = true;
-	  this._outgoingEnabled = true;
-	
-	  this.close = this.close.bind(this);
-	}
-	
-	DebuggerTransport.prototype = {
-	  /**
-	   * Transmit an object as a JSON packet.
-	   *
-	   * This method returns immediately, without waiting for the entire
-	   * packet to be transmitted, registering event handlers as needed to
-	   * transmit the entire packet. Packets are transmitted in the order
-	   * they are passed to this method.
-	   */
-	  send: function(object) {
-	    this.emit("send", object);
-	
-	    let packet = new JSONPacket(this);
-	    packet.object = object;
-	    this._outgoing.push(packet);
-	    this._flushOutgoing();
-	  },
-	
-	  /**
-	   * Transmit streaming data via a bulk packet.
-	   *
-	   * This method initiates the bulk send process by queuing up the header data.
-	   * The caller receives eventual access to a stream for writing.
-	   *
-	   * N.B.: Do *not* attempt to close the stream handed to you, as it will
-	   * continue to be used by this transport afterwards.  Most users should
-	   * instead use the provided |copyFrom| function instead.
-	   *
-	   * @param header Object
-	   *        This is modeled after the format of JSON packets above, but does not
-	   *        actually contain the data, but is instead just a routing header:
-	   *          * actor:  Name of actor that will receive the packet
-	   *          * type:   Name of actor's method that should be called on receipt
-	   *          * length: Size of the data to be sent
-	   * @return Promise
-	   *         The promise will be resolved when you are allowed to write to the
-	   *         stream with an object containing:
-	   *           * stream:   This output stream should only be used directly if
-	   *                       you can ensure that you will write exactly |length|
-	   *                       bytes and will not close the stream when writing is
-	   *                       complete
-	   *           * done:     If you use the stream directly (instead of |copyFrom|
-	   *                       below), you must signal completion by resolving /
-	   *                       rejecting this deferred.  If it's rejected, the
-	   *                       transport will be closed.  If an Error is supplied as
-	   *                       a rejection value, it will be logged via |dumpn|.  If
-	   *                       you do use |copyFrom|, resolving is taken care of for
-	   *                       you when copying completes.
-	   *           * copyFrom: A helper function for getting your data onto the
-	   *                       stream that meets the stream handling requirements
-	   *                       above, and has the following signature:
-	   *             @param  input nsIAsyncInputStream
-	   *                     The stream to copy from.
-	   *             @return Promise
-	   *                     The promise is resolved when copying completes or
-	   *                     rejected if any (unexpected) errors occur.
-	   *                     This object also emits "progress" events for each chunk
-	   *                     that is copied.  See stream-utils.js.
-	   */
-	  startBulkSend: function(header) {
-	    this.emit("startBulkSend", header);
-	
-	    let packet = new BulkPacket(this);
-	    packet.header = header;
-	    this._outgoing.push(packet);
-	    this._flushOutgoing();
-	    return packet.streamReadyForWriting;
-	  },
-	
-	  /**
-	   * Close the transport.
-	   * @param reason nsresult / object (optional)
-	   *        The status code or error message that corresponds to the reason for
-	   *        closing the transport (likely because a stream closed or failed).
-	   */
-	  close: function(reason) {
-	    this.emit("onClosed", reason);
-	
-	    this.active = false;
-	    this._socket.close();
-	    this._destroyIncoming();
-	    this._destroyAllOutgoing();
-	    if (this.hooks) {
-	      this.hooks.onClosed(reason);
-	      this.hooks = null;
-	    }
-	    if (reason) {
-	      dumpn("Transport closed: " + DevToolsUtils.safeErrorString(reason));
-	    } else {
-	      dumpn("Transport closed.");
-	    }
-	  },
-	
-	  /**
-	   * The currently outgoing packet (at the top of the queue).
-	   */
-	  get _currentOutgoing() {
-	    return this._outgoing[0];
-	  },
-	
-	  /**
-	   * Flush data to the outgoing stream.  Waits until the output stream notifies
-	   * us that it is ready to be written to (via onOutputStreamReady).
-	   */
-	  _flushOutgoing: function() {
-	    if (!this._outgoingEnabled || this._outgoing.length === 0) {
-	      return;
-	    }
-	
-	    // If the top of the packet queue has nothing more to send, remove it.
-	    if (this._currentOutgoing.done) {
-	      this._finishCurrentOutgoing();
-	    }
-	
-	    if (this._outgoing.length > 0) {
-	      setTimeout(this.onOutputStreamReady.bind(this), 0);
-	    }
-	  },
-	
-	  /**
-	   * Pause this transport's attempts to write to the output stream.  This is
-	   * used when we've temporarily handed off our output stream for writing bulk
-	   * data.
-	   */
-	  pauseOutgoing: function() {
-	    this._outgoingEnabled = false;
-	  },
-	
-	  /**
-	   * Resume this transport's attempts to write to the output stream.
-	   */
-	  resumeOutgoing: function() {
-	    this._outgoingEnabled = true;
-	    this._flushOutgoing();
-	  },
-	
-	  // nsIOutputStreamCallback
-	  /**
-	   * This is called when the output stream is ready for more data to be written.
-	   * The current outgoing packet will attempt to write some amount of data, but
-	   * may not complete.
-	   */
-	  onOutputStreamReady: DevToolsUtils.makeInfallible(function() {
-	    if (!this._outgoingEnabled || this._outgoing.length === 0) {
-	      return;
-	    }
-	
-	    try {
-	      this._currentOutgoing.write({
-	        write: data => {
-	          let count = data.length;
-	          this._socket.send(data);
-	          return count;
-	        }
-	      });
-	    } catch(e) {
-	      if (e.result != Cr.NS_BASE_STREAM_WOULD_BLOCK) {
-	        this.close(e.result);
-	        return;
-	      } else {
-	        throw e;
-	      }
-	    }
-	
-	    this._flushOutgoing();
-	  }, "DebuggerTransport.prototype.onOutputStreamReady"),
-	
-	  /**
-	   * Remove the current outgoing packet from the queue upon completion.
-	   */
-	  _finishCurrentOutgoing: function() {
-	    if (this._currentOutgoing) {
-	      this._currentOutgoing.destroy();
-	      this._outgoing.shift();
-	    }
-	  },
-	
-	  /**
-	   * Clear the entire outgoing queue.
-	   */
-	  _destroyAllOutgoing: function() {
-	    for (let packet of this._outgoing) {
-	      packet.destroy();
-	    }
-	    this._outgoing = [];
-	  },
-	
-	  /**
-	   * Initialize the input stream for reading. Once this method has been called,
-	   * we watch for packets on the input stream, and pass them to the appropriate
-	   * handlers via this.hooks.
-	   */
-	  ready: function() {
-	    this.active = true;
-	    this._waitForIncoming();
-	  },
-	
-	  /**
-	   * Asks the input stream to notify us (via onInputStreamReady) when it is
-	   * ready for reading.
-	   */
-	  _waitForIncoming: function() {
-	    if (this._incomingEnabled && !this._socket.onmessage) {
-	      this._socket.onmessage = this.onInputStreamReady.bind(this);
-	    }
-	  },
-	
-	  /**
-	   * Pause this transport's attempts to read from the input stream.  This is
-	   * used when we've temporarily handed off our input stream for reading bulk
-	   * data.
-	   */
-	  pauseIncoming: function() {
-	    this._incomingEnabled = false;
-	  },
-	
-	  /**
-	   * Resume this transport's attempts to read from the input stream.
-	   */
-	  resumeIncoming: function() {
-	    this._incomingEnabled = true;
-	    this._flushIncoming();
-	    this._waitForIncoming();
-	  },
-	
-	  // nsIInputStreamCallback
-	  /**
-	   * Called when the stream is either readable or closed.
-	   */
-	  onInputStreamReady:
-	  DevToolsUtils.makeInfallible(function(event) {
-	    let data = event.data;
-	    // TODO: ws-tcp-proxy decodes utf-8, but the transport expects to see the
-	    // encoded bytes.  Simplest step is to re-encode for now.
-	    data = utf8.encode(data);
-	    let stream = {
-	      available() {
-	        return data.length;
-	      },
-	      readBytes(count) {
-	        let result = data.slice(0, count);
-	        data = data.slice(count);
-	        return result;
-	      },
-	    };
-	
-	    try {
-	      while (data && this._incomingEnabled &&
-	             this._processIncoming(stream, stream.available())) {}
-	      this._waitForIncoming();
-	    } catch(e) {
-	      if (e.result != Cr.NS_BASE_STREAM_WOULD_BLOCK) {
-	        this.close(e.result);
-	      } else {
-	        throw e;
-	      }
-	    }
-	  }, "DebuggerTransport.prototype.onInputStreamReady"),
-	
-	  /**
-	   * Process the incoming data.  Will create a new currently incoming Packet if
-	   * needed.  Tells the incoming Packet to read as much data as it can, but
-	   * reading may not complete.  The Packet signals that its data is ready for
-	   * delivery by calling one of this transport's _on*Ready methods (see
-	   * ./packets.js and the _on*Ready methods below).
-	   * @return boolean
-	   *         Whether incoming stream processing should continue for any
-	   *         remaining data.
-	   */
-	  _processIncoming: function(stream, count) {
-	    dumpv("Data available: " + count);
-	
-	    if (!count) {
-	      dumpv("Nothing to read, skipping");
-	      return false;
-	    }
-	
-	    try {
-	      if (!this._incoming) {
-	        dumpv("Creating a new packet from incoming");
-	
-	        if (!this._readHeader(stream)) {
-	          return false; // Not enough data to read packet type
-	        }
-	
-	        // Attempt to create a new Packet by trying to parse each possible
-	        // header pattern.
-	        this._incoming = Packet.fromHeader(this._incomingHeader, this);
-	        if (!this._incoming) {
-	          throw new Error("No packet types for header: " +
-	                          this._incomingHeader);
-	        }
-	      }
-	
-	      if (!this._incoming.done) {
-	        // We have an incomplete packet, keep reading it.
-	        dumpv("Existing packet incomplete, keep reading");
-	        this._incoming.read(stream);
-	      }
-	    } catch(e) {
-	      let msg = "Error reading incoming packet: (" + e + " - " + e.stack + ")";
-	      dumpn(msg);
-	
-	      // Now in an invalid state, shut down the transport.
-	      this.close();
-	      return false;
-	    }
-	
-	    if (!this._incoming.done) {
-	      // Still not complete, we'll wait for more data.
-	      dumpv("Packet not done, wait for more");
-	      return true;
-	    }
-	
-	    // Ready for next packet
-	    this._flushIncoming();
-	    return true;
-	  },
-	
-	  /**
-	   * Read as far as we can into the incoming data, attempting to build up a
-	   * complete packet header (which terminates with ":").  We'll only read up to
-	   * PACKET_HEADER_MAX characters.
-	   * @return boolean
-	   *         True if we now have a complete header.
-	   */
-	  _readHeader: function(stream) {
-	    let amountToRead = PACKET_HEADER_MAX - this._incomingHeader.length;
-	    this._incomingHeader +=
-	      StreamUtils.delimitedRead(stream, ":", amountToRead);
-	    if (dumpv.wantVerbose) {
-	      dumpv("Header read: " + this._incomingHeader);
-	    }
-	
-	    if (this._incomingHeader.endsWith(":")) {
-	      if (dumpv.wantVerbose) {
-	        dumpv("Found packet header successfully: " + this._incomingHeader);
-	      }
-	      return true;
-	    }
-	
-	    if (this._incomingHeader.length >= PACKET_HEADER_MAX) {
-	      throw new Error("Failed to parse packet header!");
-	    }
-	
-	    // Not enough data yet.
-	    return false;
-	  },
-	
-	  /**
-	   * If the incoming packet is done, log it as needed and clear the buffer.
-	   */
-	  _flushIncoming: function() {
-	    if (!this._incoming.done) {
-	      return;
-	    }
-	    if (dumpn.wantLogging) {
-	      dumpn("Got: " + this._incoming);
-	    }
-	    this._destroyIncoming();
-	  },
-	
-	  /**
-	   * Handler triggered by an incoming JSONPacket completing it's |read| method.
-	   * Delivers the packet to this.hooks.onPacket.
-	   */
-	  _onJSONObjectReady: function(object) {
-	    DevToolsUtils.executeSoon(DevToolsUtils.makeInfallible(() => {
-	      // Ensure the transport is still alive by the time this runs.
-	      if (this.active) {
-	        this.emit("onPacket", object);
-	        this.hooks.onPacket(object);
-	      }
-	    }, "DebuggerTransport instance's this.hooks.onPacket"));
-	  },
-	
-	  /**
-	   * Handler triggered by an incoming BulkPacket entering the |read| phase for
-	   * the stream portion of the packet.  Delivers info about the incoming
-	   * streaming data to this.hooks.onBulkPacket.  See the main comment on the
-	   * transport at the top of this file for more details.
-	   */
-	  _onBulkReadReady: function(...args) {
-	    DevToolsUtils.executeSoon(DevToolsUtils.makeInfallible(() => {
-	      // Ensure the transport is still alive by the time this runs.
-	      if (this.active) {
-	        this.emit("onBulkPacket", ...args);
-	        this.hooks.onBulkPacket(...args);
-	      }
-	    }, "DebuggerTransport instance's this.hooks.onBulkPacket"));
-	  },
-	
-	  /**
-	   * Remove all handlers and references related to the current incoming packet,
-	   * either because it is now complete or because the transport is closing.
-	   */
-	  _destroyIncoming: function() {
-	    if (this._incoming) {
-	      this._incoming.destroy();
-	    }
-	    this._incomingHeader = "";
-	    this._incoming = null;
-	  }
-	
-	};
-	
-	exports.DebuggerTransport = DebuggerTransport;
-	
-	/**
-	 * An adapter that handles data transfers between the debugger client and
-	 * server when they both run in the same process. It presents the same API as
-	 * DebuggerTransport, but instead of transmitting serialized messages across a
-	 * connection it merely calls the packet dispatcher of the other side.
-	 *
-	 * @param other LocalDebuggerTransport
-	 *        The other endpoint for this debugger connection.
-	 *
-	 * @see DebuggerTransport
-	 */
-	function LocalDebuggerTransport(other) {
-	  EventEmitter.decorate(this);
-	
-	  this.other = other;
-	  this.hooks = null;
-	
-	  /*
-	   * A packet number, shared between this and this.other. This isn't used
-	   * by the protocol at all, but it makes the packet traces a lot easier to
-	   * follow.
-	   */
-	  this._serial = this.other ? this.other._serial : { count: 0 };
-	  this.close = this.close.bind(this);
-	}
-	
-	LocalDebuggerTransport.prototype = {
-	  /**
-	   * Transmit a message by directly calling the onPacket handler of the other
-	   * endpoint.
-	   */
-	  send: function(packet) {
-	    this.emit("send", packet);
-	
-	    let serial = this._serial.count++;
-	    if (dumpn.wantLogging) {
-	      /* Check 'from' first, as 'echo' packets have both. */
-	      if (packet.from) {
-	        dumpn("Packet " + serial + " sent from " + uneval(packet.from));
-	      } else if (packet.to) {
-	        dumpn("Packet " + serial + " sent to " + uneval(packet.to));
-	      }
-	    }
-	    this._deepFreeze(packet);
-	    let other = this.other;
-	    if (other) {
-	      DevToolsUtils.executeSoon(DevToolsUtils.makeInfallible(() => {
-	        // Avoid the cost of JSON.stringify() when logging is disabled.
-	        if (dumpn.wantLogging) {
-	          dumpn("Received packet " + serial + ": " + JSON.stringify(packet, null, 2));
-	        }
-	        if (other.hooks) {
-	          other.emit("onPacket", packet);
-	          other.hooks.onPacket(packet);
-	        }
-	      }, "LocalDebuggerTransport instance's this.other.hooks.onPacket"));
-	    }
-	  },
-	
-	  /**
-	   * Send a streaming bulk packet directly to the onBulkPacket handler of the
-	   * other endpoint.
-	   *
-	   * This case is much simpler than the full DebuggerTransport, since there is
-	   * no primary stream we have to worry about managing while we hand it off to
-	   * others temporarily.  Instead, we can just make a single use pipe and be
-	   * done with it.
-	   */
-	  startBulkSend: function({actor, type, length}) {
-	    this.emit("startBulkSend", {actor, type, length});
-	
-	    let serial = this._serial.count++;
-	
-	    dumpn("Sent bulk packet " + serial + " for actor " + actor);
-	    if (!this.other) {
-	      return;
-	    }
-	
-	    let pipe = new Pipe(true, true, 0, 0, null);
-	
-	    DevToolsUtils.executeSoon(DevToolsUtils.makeInfallible(() => {
-	      dumpn("Received bulk packet " + serial);
-	      if (!this.other.hooks) {
-	        return;
-	      }
-	
-	      // Receiver
-	      let deferred = promise.defer();
-	      let packet = {
-	        actor: actor,
-	        type: type,
-	        length: length,
-	        copyTo: (output) => {
-	          let copying =
-	            StreamUtils.copyStream(pipe.inputStream, output, length);
-	          deferred.resolve(copying);
-	          return copying;
-	        },
-	        stream: pipe.inputStream,
-	        done: deferred
-	      };
-	
-	      this.other.emit("onBulkPacket", packet);
-	      this.other.hooks.onBulkPacket(packet);
-	
-	      // Await the result of reading from the stream
-	      deferred.promise.then(() => pipe.inputStream.close(), this.close);
-	    }, "LocalDebuggerTransport instance's this.other.hooks.onBulkPacket"));
-	
-	    // Sender
-	    let sendDeferred = promise.defer();
-	
-	    // The remote transport is not capable of resolving immediately here, so we
-	    // shouldn't be able to either.
-	    DevToolsUtils.executeSoon(() => {
-	      let copyDeferred = promise.defer();
-	
-	      sendDeferred.resolve({
-	        copyFrom: (input) => {
-	          let copying =
-	            StreamUtils.copyStream(input, pipe.outputStream, length);
-	          copyDeferred.resolve(copying);
-	          return copying;
-	        },
-	        stream: pipe.outputStream,
-	        done: copyDeferred
-	      });
-	
-	      // Await the result of writing to the stream
-	      copyDeferred.promise.then(() => pipe.outputStream.close(), this.close);
-	    });
-	
-	    return sendDeferred.promise;
-	  },
-	
-	  /**
-	   * Close the transport.
-	   */
-	  close: function() {
-	    this.emit("close");
-	
-	    if (this.other) {
-	      // Remove the reference to the other endpoint before calling close(), to
-	      // avoid infinite recursion.
-	      let other = this.other;
-	      this.other = null;
-	      other.close();
-	    }
-	    if (this.hooks) {
-	      try {
-	        this.hooks.onClosed();
-	      } catch(ex) {
-	        console.error(ex);
-	      }
-	      this.hooks = null;
-	    }
-	  },
-	
-	  /**
-	   * An empty method for emulating the DebuggerTransport API.
-	   */
-	  ready: function() {},
-	
-	  /**
-	   * Helper function that makes an object fully immutable.
-	   */
-	  _deepFreeze: function(object) {
-	    Object.freeze(object);
-	    for (let prop in object) {
-	      // Freeze the properties that are objects, not on the prototype, and not
-	      // already frozen. Note that this might leave an unfrozen reference
-	      // somewhere in the object if there is an already frozen object containing
-	      // an unfrozen object.
-	      if (object.hasOwnProperty(prop) && typeof object === "object" &&
-	          !Object.isFrozen(object)) {
-	        this._deepFreeze(o[prop]);
-	      }
-	    }
-	  }
-	};
-	
-	exports.LocalDebuggerTransport = LocalDebuggerTransport;
-	
-	/**
-	 * A transport for the debugging protocol that uses nsIMessageSenders to
-	 * exchange packets with servers running in child processes.
-	 *
-	 * In the parent process, |sender| should be the nsIMessageSender for the
-	 * child process. In a child process, |sender| should be the child process
-	 * message manager, which sends packets to the parent.
-	 *
-	 * |prefix| is a string included in the message names, to distinguish
-	 * multiple servers running in the same child process.
-	 *
-	 * This transport exchanges messages named 'debug:<prefix>:packet', where
-	 * <prefix> is |prefix|, whose data is the protocol packet.
-	 */
-	function ChildDebuggerTransport(sender, prefix) {
-	  EventEmitter.decorate(this);
-	
-	  this._sender = sender.QueryInterface(Ci.nsIMessageSender);
-	  this._messageName = "debug:" + prefix + ":packet";
-	}
-	
-	/*
-	 * To avoid confusion, we use 'message' to mean something that
-	 * nsIMessageSender conveys, and 'packet' to mean a remote debugging
-	 * protocol packet.
-	 */
-	ChildDebuggerTransport.prototype = {
-	  constructor: ChildDebuggerTransport,
-	
-	  hooks: null,
-	
-	  ready: function () {
-	    this._sender.addMessageListener(this._messageName, this);
-	  },
-	
-	  close: function () {
-	    this._sender.removeMessageListener(this._messageName, this);
-	    this.emit("onClosed");
-	    this.hooks.onClosed();
-	  },
-	
-	  receiveMessage: function ({data}) {
-	    this.emit("onPacket", data);
-	    this.hooks.onPacket(data);
-	  },
-	
-	  send: function (packet) {
-	    this.emit("send", packet);
-	    this._sender.sendAsyncMessage(this._messageName, packet);
-	  },
-	
-	  startBulkSend: function() {
-	    throw new Error("Can't send bulk data to child processes.");
-	  }
-	};
-	
-	exports.ChildDebuggerTransport = ChildDebuggerTransport;
-	
-	// WorkerDebuggerTransport is defined differently depending on whether we are
-	// on the main thread or a worker thread. In the former case, we are required
-	// by the devtools loader, and isWorker will be false. Otherwise, we are
-	// required by the worker loader, and isWorker will be true.
-	//
-	// Each worker debugger supports only a single connection to the main thread.
-	// However, its theoretically possible for multiple servers to connect to the
-	// same worker. Consequently, each transport has a connection id, to allow
-	// messages from multiple connections to be multiplexed on a single channel.
-	
-	if (typeof WorkerGlobalScope === 'undefined') { // i.e. not in a worker
-	  (function () { // Main thread
-	    /**
-	     * A transport that uses a WorkerDebugger to send packets from the main
-	     * thread to a worker thread.
-	     */
-	    function WorkerDebuggerTransport(dbg, id) {
-	      this._dbg = dbg;
-	      this._id = id;
-	      this.onMessage = this._onMessage.bind(this);
-	    }
-	
-	    WorkerDebuggerTransport.prototype = {
-	      constructor: WorkerDebuggerTransport,
-	
-	      ready: function () {
-	        this._dbg.addListener(this);
-	      },
-	
-	      close: function () {
-	        this._dbg.removeListener(this);
-	        if (this.hooks) {
-	          this.hooks.onClosed();
-	        }
-	      },
-	
-	      send: function (packet) {
-	        this._dbg.postMessage(JSON.stringify({
-	          type: "message",
-	          id: this._id,
-	          message: packet
-	        }));
-	      },
-	
-	      startBulkSend: function () {
-	        throw new Error("Can't send bulk data from worker threads!");
-	      },
-	
-	      _onMessage: function (message) {
-	        let packet = JSON.parse(message);
-	        if (packet.type !== "message" || packet.id !== this._id) {
-	          return;
-	        }
-	
-	        if (this.hooks) {
-	          this.hooks.onPacket(packet.message);
-	        }
-	      }
-	    };
-	
-	    exports.WorkerDebuggerTransport = WorkerDebuggerTransport;
-	  }).call(this);
-	} else {
-	  (function () { // Worker thread
-	    /*
-	     * A transport that uses a WorkerDebuggerGlobalScope to send packets from a
-	     * worker thread to the main thread.
-	     */
-	    function WorkerDebuggerTransport(scope, id) {
-	      this._scope = scope;
-	      this._id = id;
-	      this._onMessage = this._onMessage.bind(this);
-	    }
-	
-	    WorkerDebuggerTransport.prototype = {
-	      constructor: WorkerDebuggerTransport,
-	
-	      ready: function () {
-	        this._scope.addEventListener("message", this._onMessage);
-	      },
-	
-	      close: function () {
-	        this._scope.removeEventListener("message", this._onMessage);
-	        if (this.hooks) {
-	          this.hooks.onClosed();
-	        }
-	      },
-	
-	      send: function (packet) {
-	        this._scope.postMessage(JSON.stringify({
-	          type: "message",
-	          id: this._id,
-	          message: packet
-	        }));
-	      },
-	
-	      startBulkSend: function () {
-	        throw new Error("Can't send bulk data from worker threads!");
-	      },
-	
-	      _onMessage: function (event) {
-	        let packet = JSON.parse(event.data);
-	        if (packet.type !== "message" || packet.id !== this._id) {
-	          return;
-	        }
-	
-	        if (this.hooks) {
-	          this.hooks.onPacket(packet.message);
-	        }
-	      }
-	    };
-	
-	    exports.WorkerDebuggerTransport = WorkerDebuggerTransport;
-	  }).call(this);
-	}
-
-
-/***/ },
-/* 42 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/* 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/. */
-	
-	/* General utilities used throughout devtools. */
-	var { Ci, Cu, Cc, components } = __webpack_require__(35);
-	const { Services } = __webpack_require__(28);
-	var promise = __webpack_require__(40);
-	
-	const { FileUtils } = __webpack_require__(43);
-	
-	/**
-	 * Turn the error |aError| into a string, without fail.
-	 */
-	exports.safeErrorString = function safeErrorString(aError) {
-	  try {
-	    let errorString = aError.toString();
-	    if (typeof errorString == "string") {
-	      // Attempt to attach a stack to |errorString|. If it throws an error, or
-	      // isn't a string, don't use it.
-	      try {
-	        if (aError.stack) {
-	          let stack = aError.stack.toString();
-	          if (typeof stack == "string") {
-	            errorString += "\nStack: " + stack;
-	          }
-	        }
-	      } catch (ee) { }
-	
-	      // Append additional line and column number information to the output,
-	      // since it might not be part of the stringified error.
-	      if (typeof aError.lineNumber == "number" && typeof aError.columnNumber == "number") {
-	        errorString += "Line: " + aError.lineNumber + ", column: " + aError.columnNumber;
-	      }
-	
-	      return errorString;
-	    }
-	  } catch (ee) { }
-	
-	  // We failed to find a good error description, so do the next best thing.
-	  return Object.prototype.toString.call(aError);
-	};
-	
-	/**
-	 * Report that |aWho| threw an exception, |aException|.
-	 */
-	exports.reportException = function reportException(aWho, aException) {
-	  let msg = aWho + " threw an exception: " + exports.safeErrorString(aException);
-	
-	  console.log(msg);
-	
-	//  if (Cu && console.error) {
-	//    /*
-	//     * Note that the xpcshell test harness registers an observer for
-	//     * console messages, so when we're running tests, this will cause
-	//     * the test to quit.
-	//     */
-	//    console.error(msg);
-	//  }
-	};
-	
-	/**
-	 * Given a handler function that may throw, return an infallible handler
-	 * function that calls the fallible handler, and logs any exceptions it
-	 * throws.
-	 *
-	 * @param aHandler function
-	 *      A handler function, which may throw.
-	 * @param aName string
-	 *      A name for aHandler, for use in error messages. If omitted, we use
-	 *      aHandler.name.
-	 *
-	 * (SpiderMonkey does generate good names for anonymous functions, but we
-	 * don't have a way to get at them from JavaScript at the moment.)
-	 */
-	exports.makeInfallible = function makeInfallible(aHandler, aName) {
-	  if (!aName)
-	    aName = aHandler.name;
-	
-	  return function(/* arguments */) {
-	    // try {
-	    return aHandler.apply(this, arguments);
-	    // } catch (ex) {
-	    //   let who = "Handler function";
-	    //   if (aName) {
-	    //     who += " " + aName;
-	    //   }
-	    //   return exports.reportException(who, ex);
-	    // }
-	  };
-	};
-	
-	/**
-	 * Waits for the next tick in the event loop to execute a callback.
-	 */
-	exports.executeSoon = function executeSoon(aFn) {
-	  setTimeout(aFn, 0);
-	};
-	
-	/**
-	 * Waits for the next tick in the event loop.
-	 *
-	 * @return Promise
-	 *         A promise that is resolved after the next tick in the event loop.
-	 */
-	exports.waitForTick = function waitForTick() {
-	  let deferred = promise.defer();
-	  exports.executeSoon(deferred.resolve);
-	  return deferred.promise;
-	};
-	
-	/**
-	 * Waits for the specified amount of time to pass.
-	 *
-	 * @param number aDelay
-	 *        The amount of time to wait, in milliseconds.
-	 * @return Promise
-	 *         A promise that is resolved after the specified amount of time passes.
-	 */
-	exports.waitForTime = function waitForTime(aDelay) {
-	  let deferred = promise.defer();
-	  setTimeout(deferred.resolve, aDelay);
-	  return deferred.promise;
-	};
-	
-	/**
-	 * Like Array.prototype.forEach, but doesn't cause jankiness when iterating over
-	 * very large arrays by yielding to the browser and continuing execution on the
-	 * next tick.
-	 *
-	 * @param Array aArray
-	 *        The array being iterated over.
-	 * @param Function aFn
-	 *        The function called on each item in the array. If a promise is
-	 *        returned by this function, iterating over the array will be paused
-	 *        until the respective promise is resolved.
-	 * @returns Promise
-	 *          A promise that is resolved once the whole array has been iterated
-	 *          over, and all promises returned by the aFn callback are resolved.
-	 */
-	exports.yieldingEach = function yieldingEach(aArray, aFn) {
-	  const deferred = promise.defer();
-	
-	  let i = 0;
-	  let len = aArray.length;
-	  let outstanding = [deferred.promise];
-	
-	  (function loop() {
-	    const start = Date.now();
-	
-	    while (i < len) {
-	      // Don't block the main thread for longer than 16 ms at a time. To
-	      // maintain 60fps, you have to render every frame in at least 16ms; we
-	      // aren't including time spent in non-JS here, but this is Good
-	      // Enough(tm).
-	      if (Date.now() - start > 16) {
-	        exports.executeSoon(loop);
-	        return;
-	      }
-	
-	      try {
-	        outstanding.push(aFn(aArray[i], i++));
-	      } catch (e) {
-	        deferred.reject(e);
-	        return;
-	      }
-	    }
-	
-	    deferred.resolve();
-	  }());
-	
-	  return promise.all(outstanding);
-	};
-	
-	/**
-	 * Like XPCOMUtils.defineLazyGetter, but with a |this| sensitive getter that
-	 * allows the lazy getter to be defined on a prototype and work correctly with
-	 * instances.
-	 *
-	 * @param Object aObject
-	 *        The prototype object to define the lazy getter on.
-	 * @param String aKey
-	 *        The key to define the lazy getter on.
-	 * @param Function aCallback
-	 *        The callback that will be called to determine the value. Will be
-	 *        called with the |this| value of the current instance.
-	 */
-	exports.defineLazyPrototypeGetter =
-	function defineLazyPrototypeGetter(aObject, aKey, aCallback) {
-	  Object.defineProperty(aObject, aKey, {
-	    configurable: true,
-	    get: function() {
-	      const value = aCallback.call(this);
-	
-	      Object.defineProperty(this, aKey, {
-	        configurable: true,
-	        writable: true,
-	        value: value
-	      });
-	
-	      return value;
-	    }
-	  });
-	};
-	
-	/**
-	 * Safely get the property value from a Debugger.Object for a given key. Walks
-	 * the prototype chain until the property is found.
-	 *
-	 * @param Debugger.Object aObject
-	 *        The Debugger.Object to get the value from.
-	 * @param String aKey
-	 *        The key to look for.
-	 * @return Any
-	 */
-	exports.getProperty = function getProperty(aObj, aKey) {
-	  let root = aObj;
-	  try {
-	    do {
-	      const desc = aObj.getOwnPropertyDescriptor(aKey);
-	      if (desc) {
-	        if ("value" in desc) {
-	          return desc.value;
-	        }
-	        // Call the getter if it's safe.
-	        return exports.hasSafeGetter(desc) ? desc.get.call(root).return : undefined;
-	      }
-	      aObj = aObj.proto;
-	    } while (aObj);
-	  } catch (e) {
-	    // If anything goes wrong report the error and return undefined.
-	    exports.reportException("getProperty", e);
-	  }
-	  return undefined;
-	};
-	
-	/**
-	 * Determines if a descriptor has a getter which doesn't call into JavaScript.
-	 *
-	 * @param Object aDesc
-	 *        The descriptor to check for a safe getter.
-	 * @return Boolean
-	 *         Whether a safe getter was found.
-	 */
-	exports.hasSafeGetter = function hasSafeGetter(aDesc) {
-	  // Scripted functions that are CCWs will not appear scripted until after
-	  // unwrapping.
-	  try {
-	    let fn = aDesc.get.unwrap();
-	    return fn && fn.callable && fn.class == "Function" && fn.script === undefined;
-	  } catch (e) {
-	    // Avoid exception 'Object in compartment marked as invisible to Debugger'
-	    return false;
-	  }
-	};
-	
-	/**
-	 * Check if it is safe to read properties and execute methods from the given JS
-	 * object. Safety is defined as being protected from unintended code execution
-	 * from content scripts (or cross-compartment code).
-	 *
-	 * See bugs 945920 and 946752 for discussion.
-	 *
-	 * @type Object aObj
-	 *       The object to check.
-	 * @return Boolean
-	 *         True if it is safe to read properties from aObj, or false otherwise.
-	 */
-	exports.isSafeJSObject = function isSafeJSObject(aObj) {
-	  // If we are running on a worker thread, Cu is not available. In this case,
-	  // we always return false, just to be on the safe side.
-	  if (isWorker) {
-	    return false;
-	  }
-	
-	  if (Cu.getGlobalForObject(aObj) ==
-	      Cu.getGlobalForObject(exports.isSafeJSObject)) {
-	    return true; // aObj is not a cross-compartment wrapper.
-	  }
-	
-	  let principal = Cu.getObjectPrincipal(aObj);
-	  if (Services.scriptSecurityManager.isSystemPrincipal(principal)) {
-	    return true; // allow chrome objects
-	  }
-	
-	  return Cu.isXrayWrapper(aObj);
-	};
-	
-	exports.dumpn = function dumpn(str) {
-	  if (exports.dumpn.wantLogging) {
-	    console.log("DBG-SERVER: " + str + "\n");
-	  }
-	};
-	
-	// We want wantLogging to be writable. The exports object is frozen by the
-	// loader, so define it on dumpn instead.
-	exports.dumpn.wantLogging = false;
-	
-	/**
-	 * A verbose logger for low-level tracing.
-	 */
-	exports.dumpv = function(msg) {
-	  if (exports.dumpv.wantVerbose) {
-	    exports.dumpn(msg);
-	  }
-	};
-	
-	// We want wantLogging to be writable. The exports object is frozen by the
-	// loader, so define it on dumpn instead.
-	exports.dumpv.wantVerbose = false;
-	
-	/**
-	 * Utility function for updating an object with the properties of
-	 * other objects.
-	 *
-	 * @param aTarget Object
-	 *        The object being updated.
-	 * @param aNewAttrs Object
-	 *        The rest params are objects to update aTarget with. You
-	 *        can pass as many as you like.
-	 */
-	exports.update = function update(aTarget, ...aArgs) {
-	  for (let attrs of aArgs) {
-	    for (let key in attrs) {
-	      let desc = Object.getOwnPropertyDescriptor(attrs, key);
-	
-	      if (desc) {
-	        Object.defineProperty(aTarget, key, desc);
-	      }
-	    }
-	  }
-	
-	  return aTarget;
-	};
-	
-	/**
-	 * Utility function for getting the values from an object as an array
-	 *
-	 * @param aObject Object
-	 *        The object to iterate over
-	 */
-	exports.values = function values(aObject) {
-	  return Object.keys(aObject).map(k => aObject[k]);
-	};
-	
-	/**
-	 * Defines a getter on a specified object that will be created upon first use.
-	 *
-	 * @param aObject
-	 *        The object to define the lazy getter on.
-	 * @param aName
-	 *        The name of the getter to define on aObject.
-	 * @param aLambda
-	 *        A function that returns what the getter should return.  This will
-	 *        only ever be called once.
-	 */
-	exports.defineLazyGetter = function defineLazyGetter(aObject, aName, aLambda) {
-	  Object.defineProperty(aObject, aName, {
-	    get: function() {
-	      delete aObject[aName];
-	      return aObject[aName] = aLambda.apply(aObject);
-	    },
-	    configurable: true,
-	    enumerable: true
-	  });
-	};
-	
-	// DEPRECATED: use DevToolsUtils.assert(condition, message) instead!
-	let haveLoggedDeprecationMessage = false;
-	exports.dbg_assert = function dbg_assert(cond, e) {
-	  if (!haveLoggedDeprecationMessage) {
-	    haveLoggedDeprecationMessage = true;
-	    const deprecationMessage = "DevToolsUtils.dbg_assert is deprecated! Use DevToolsUtils.assert instead!"
-	          + Error().stack;
-	    console.log(deprecationMessage);
-	    if (typeof console === "object" && console && console.warn) {
-	      console.warn(deprecationMessage);
-	    }
-	  }
-	
-	  if (!cond) {
-	    return e;
-	  }
-	};
-	
-	const { AppConstants } = __webpack_require__(44);
-	
-	/**
-	 * No operation. The empty function.
-	 */
-	exports.noop = function() { };
-	
-	function reallyAssert(condition, message) {
-	  if (!condition) {
-	    const err = new Error("Assertion failure: " + message);
-	    exports.reportException("DevToolsUtils.assert", err);
-	    throw err;
-	  }
-	}
-	
-	/**
-	 * DevToolsUtils.assert(condition, message)
-	 *
-	 * @param Boolean condition
-	 * @param String message
-	 *
-	 * Assertions are enabled when any of the following are true:
-	 *   - This is a DEBUG_JS_MODULES build
-	 *   - This is a DEBUG build
-	 *   - DevToolsUtils.testing is set to true
-	 *
-	 * If assertions are enabled, then `condition` is checked and if false-y, the
-	 * assertion failure is logged and then an error is thrown.
-	 *
-	 * If assertions are not enabled, then this function is a no-op.
-	 *
-	 * This is an improvement over `dbg_assert`, which doesn't actually cause any
-	 * fatal behavior, and is therefore much easier to accidentally ignore.
-	 */
-	Object.defineProperty(exports, "assert", {
-	  get: () => (AppConstants.DEBUG || AppConstants.DEBUG_JS_MODULES || this.testing)
-	    ? reallyAssert
-	    : exports.noop,
-	});
-	
-	/**
-	 * Defines a getter on a specified object for a module.  The module will not
-	 * be imported until first use.
-	 *
-	 * @param aObject
-	 *        The object to define the lazy getter on.
-	 * @param aName
-	 *        The name of the getter to define on aObject for the module.
-	 * @param aResource
-	 *        The URL used to obtain the module.
-	 * @param aSymbol
-	 *        The name of the symbol exported by the module.
-	 *        This parameter is optional and defaults to aName.
-	 */
-	exports.defineLazyModuleGetter = function defineLazyModuleGetter(aObject, aName,
-	                                                                 aResource,
-	                                                                 aSymbol)
-	{
-	  this.defineLazyGetter(aObject, aName, function XPCU_moduleLambda() {
-	    var temp = {};
-	    Cu.import(aResource, temp);
-	    return temp[aSymbol || aName];
-	  });
-	};
-	
-	const { NetUtil } = __webpack_require__(45);
-	
-	const { TextDecoder, OS } = __webpack_require__(46);
-	
-	const NetworkHelper = __webpack_require__(47);
-	
-	/**
-	 * Performs a request to load the desired URL and returns a promise.
-	 *
-	 * @param aURL String
-	 *        The URL we will request.
-	 * @param aOptions Object
-	 *        An object with the following optional properties:
-	 *        - loadFromCache: if false, will bypass the cache and
-	 *          always load fresh from the network (default: true)
-	 *        - policy: the nsIContentPolicy type to apply when fetching the URL
-	 *        - window: the window to get the loadGroup from
-	 *        - charset: the charset to use if the channel doesn't provide one
-	 * @returns Promise that resolves with an object with the following members on
-	 *          success:
-	 *           - content: the document at that URL, as a string,
-	 *           - contentType: the content type of the document
-	 *
-	 *          If an error occurs, the promise is rejected with that error.
-	 *
-	 * XXX: It may be better to use nsITraceableChannel to get to the sources
-	 * without relying on caching when we can (not for eval, etc.):
-	 * http://www.softwareishard.com/blog/firebug/nsitraceablechannel-intercept-http-traffic/
-	 */
-	function mainThreadFetch(aURL, aOptions = { loadFromCache: true,
-	                                          policy: Ci.nsIContentPolicy.TYPE_OTHER,
-	                                          window: null,
-	                                          charset: null }) {
-	  // Create a channel.
-	  let url = aURL.split(" -> ").pop();
-	  let channel;
-	  try {
-	    channel = newChannelForURL(url, aOptions);
-	  } catch (ex) {
-	    return promise.reject(ex);
-	  }
-	
-	  // Set the channel options.
-	  channel.loadFlags = aOptions.loadFromCache
-	    ? channel.LOAD_FROM_CACHE
-	    : channel.LOAD_BYPASS_CACHE;
-	
-	  if (aOptions.window) {
-	    // Respect private browsing.
-	    channel.loadGroup = aOptions.window.QueryInterface(Ci.nsIInterfaceRequestor)
-	                          .getInterface(Ci.nsIWebNavigation)
-	                          .QueryInterface(Ci.nsIDocumentLoader)
-	                          .loadGroup;
-	  }
-	
-	  let deferred = promise.defer();
-	  let onResponse = (stream, status, request) => {
-	    if (!components.isSuccessCode(status)) {
-	      deferred.reject(new Error(`Failed to fetch ${url}. Code ${status}.`));
-	      return;
-	    }
-	
-	    try {
-	      // We cannot use NetUtil to do the charset conversion as if charset
-	      // information is not available and our default guess is wrong the method
-	      // might fail and we lose the stream data. This means we can't fall back
-	      // to using the locale default encoding (bug 1181345).
-	
-	      // Read and decode the data according to the locale default encoding.
-	      let available = stream.available();
-	      let source = NetUtil.readInputStreamToString(stream, available);
-	      stream.close();
-	
-	      // If the channel or the caller has correct charset information, the
-	      // content will be decoded correctly. If we have to fall back to UTF-8 and
-	      // the guess is wrong, the conversion fails and convertToUnicode returns
-	      // the input unmodified. Essentially we try to decode the data as UTF-8
-	      // and if that fails, we use the locale specific default encoding. This is
-	      // the best we can do if the source does not provide charset info.
-	      let charset = channel.contentCharset || aOptions.charset || "UTF-8";
-	      let unicodeSource = NetworkHelper.convertToUnicode(source, charset);
-	
-	      deferred.resolve({
-	        content: unicodeSource,
-	        contentType: request.contentType
-	      });
-	    } catch (ex) {
-	      let uri = request.originalURI;
-	      if (ex.name === "NS_BASE_STREAM_CLOSED" && uri instanceof Ci.nsIFileURL) {
-	        // Empty files cause NS_BASE_STREAM_CLOSED exception. Use OS.File to
-	        // differentiate between empty files and other errors (bug 1170864).
-	        // This can be removed when bug 982654 is fixed.
-	
-	        uri.QueryInterface(Ci.nsIFileURL);
-	        let result = OS.File.read(uri.file.path).then(bytes => {
-	          // Convert the bytearray to a String.
-	          let decoder = new TextDecoder();
-	          let content = decoder.decode(bytes);
-	
-	          // We can't detect the contentType without opening a channel
-	          // and that failed already. This is the best we can do here.
-	          return {
-	            content,
-	            contentType: "text/plain"
-	          };
-	        });
-	
-	        deferred.resolve(result);
-	      } else {
-	        deferred.reject(ex);
-	      }
-	    }
-	  };
-	
-	  // Open the channel
-	  try {
-	    NetUtil.asyncFetch(channel, onResponse);
-	  } catch (ex) {
-	    return promise.reject(ex);
-	  }
-	
-	  return deferred.promise;
-	}
-	
-	/**
-	 * Opens a channel for given URL. Tries a bit harder than NetUtil.newChannel.
-	 *
-	 * @param {String} url - The URL to open a channel for.
-	 * @param {Object} options - The options object passed to @method fetch.
-	 * @return {nsIChannel} - The newly created channel. Throws on failure.
-	 */
-	function newChannelForURL(url, { policy }) {
-	  let channelOptions = {
-	    contentPolicyType: policy,
-	    loadUsingSystemPrincipal: true,
-	    uri: url
-	  };
-	
-	  try {
-	    return NetUtil.newChannel(channelOptions);
-	  } catch (e) {
-	    // In the xpcshell tests, the script url is the absolute path of the test
-	    // file, which will make a malformed URI error be thrown. Add the file
-	    // scheme to see if it helps.
-	    channelOptions.uri = "file://" + url;
-	
-	    return NetUtil.newChannel(channelOptions);
-	  }
-	}
-	
-	// Fetch is defined differently depending on whether we are on the main thread
-	// or a worker thread.
-	if (typeof WorkerGlobalScope === "undefined") { // i.e. not in a worker
-	  exports.fetch = mainThreadFetch;
-	} else {
-	  // Services is not available in worker threads, nor is there any other way
-	  // to fetch a URL. We need to enlist the help from the main thread here, by
-	  // issuing an rpc request, to fetch the URL on our behalf.
-	  exports.fetch = function(url, options) {
-	    return rpc("fetch", url, options);
-	  };
-	}
-	
-	/**
-	 * Returns a promise that is resolved or rejected when all promises have settled
-	 * (resolved or rejected).
-	 *
-	 * This differs from Promise.all, which will reject immediately after the first
-	 * rejection, instead of waiting for the remaining promises to settle.
-	 *
-	 * @param values
-	 *        Iterable of promises that may be pending, resolved, or rejected. When
-	 *        when all promises have settled (resolved or rejected), the returned
-	 *        promise will be resolved or rejected as well.
-	 *
-	 * @return A new promise that is fulfilled when all values have settled
-	 *         (resolved or rejected). Its resolution value will be an array of all
-	 *         resolved values in the given order, or undefined if values is an
-	 *         empty array. The reject reason will be forwarded from the first
-	 *         promise in the list of given promises to be rejected.
-	 */
-	exports.settleAll = values => {
-	  if (values === null || typeof (values[Symbol.iterator]) != "function") {
-	    throw new Error("settleAll() expects an iterable.");
-	  }
-	
-	  let deferred = promise.defer();
-	
-	  values = Array.isArray(values) ? values : [...values];
-	  let countdown = values.length;
-	  let resolutionValues = new Array(countdown);
-	  let rejectionValue;
-	  let rejectionOccurred = false;
-	
-	  if (!countdown) {
-	    deferred.resolve(resolutionValues);
-	    return deferred.promise;
-	  }
-	
-	  function checkForCompletion() {
-	    if (--countdown > 0) {
-	      return;
-	    }
-	    if (!rejectionOccurred) {
-	      deferred.resolve(resolutionValues);
-	    } else {
-	      deferred.reject(rejectionValue);
-	    }
-	  }
-	
-	  for (let i = 0; i < values.length; i++) {
-	    let index = i;
-	    let value = values[i];
-	    let resolver = result => {
-	      resolutionValues[index] = result;
-	      checkForCompletion();
-	    };
-	    let rejecter = error => {
-	      if (!rejectionOccurred) {
-	        rejectionValue = error;
-	        rejectionOccurred = true;
-	      }
-	      checkForCompletion();
-	    };
-	
-	    if (value && typeof (value.then) == "function") {
-	      value.then(resolver, rejecter);
-	    } else {
-	      // Given value is not a promise, forward it as a resolution value.
-	      resolver(value);
-	    }
-	  }
-	
-	  return deferred.promise;
-	};
-	
-	/**
-	 * When the testing flag is set, various behaviors may be altered from
-	 * production mode, typically to enable easier testing or enhanced debugging.
-	 */
-	var testing = false;
-	Object.defineProperty(exports, "testing", {
-	  get: function() {
-	    return testing;
-	  },
-	  set: function(state) {
-	    testing = state;
-	  }
-	});
-	
-	/**
-	 * Open the file at the given path for reading.
-	 *
-	 * @param {String} filePath
-	 *
-	 * @returns Promise<nsIInputStream>
-	 */
-	exports.openFileStream = function(filePath) {
-	  return new Promise((resolve, reject) => {
-	    const uri = NetUtil.newURI(new FileUtils.File(filePath));
-	    NetUtil.asyncFetch(
-	      { uri, loadUsingSystemPrincipal: true },
-	      (stream, result) => {
-	        if (!components.isSuccessCode(result)) {
-	          reject(new Error(`Could not open "${filePath}": result = ${result}`));
-	          return;
-	        }
-	
-	        resolve(stream);
-	      }
-	    );
-	  });
-	};
-	
-	exports.isGenerator = function(fn) {
-	  if (typeof fn !== "function") {
-	    return false;
-	  }
-	  let proto = Object.getPrototypeOf(fn);
-	  if (!proto) {
-	    return false;
-	  }
-	  let ctor = proto.constructor;
-	  if (!ctor) {
-	    return false;
-	  }
-	  return ctor.name == "GeneratorFunction";
-	};
-	
-	exports.isPromise = function(p) {
-	  return p && typeof p.then === "function";
-	};
-	
-	/**
-	 * Return true if `thing` is a SavedFrame, false otherwise.
-	 */
-	exports.isSavedFrame = function(thing) {
-	  return Object.prototype.toString.call(thing) === "[object SavedFrame]";
-	};
-
-
-/***/ },
-/* 43 */
-/***/ function(module, exports) {
-
-	/*
-	 * A sham for https://dxr.mozilla.org/mozilla-central/source/toolkit/modules/FileUtils.jsm
-	 */
-
-
-/***/ },
-/* 44 */
-/***/ function(module, exports) {
-
-	/*
-	 * A sham for https://dxr.mozilla.org/mozilla-central/source/toolkit/modules/AppConstants.jsm
-	 */
-	
-	module.exports = { AppConstants: {} };
-
-
-/***/ },
-/* 45 */
-/***/ function(module, exports) {
-
-	/*
-	 * A sham for https://dxr.mozilla.org/mozilla-central/source/netwerk/base/NetUtil.jsm
-	 */
-
-
-/***/ },
-/* 46 */
-/***/ function(module, exports) {
-
-	/*
-	 * A sham for https://dxr.mozilla.org/mozilla-central/source/toolkit/components/osfile/osfile.jsm
-	 */
-
-
-/***/ },
-/* 47 */
-/***/ function(module, exports, __webpack_require__) {
-
-	/* vim:set ts=2 sw=2 sts=2 et: */
-	/*
-	 * Software License Agreement (BSD License)
-	 *
-	 * Copyright (c) 2007, Parakey Inc.
-	 * All rights reserved.
-	 *
-	 * Redistribution and use of this software in source and binary forms, with or without modification,
-	 * are permitted provided that the following conditions are met:
-	 *
-	 * * Redistributions of source code must retain the above
-	 *   copyright notice, this list of conditions and the
-	 *   following disclaimer.
-	 *
-	 * * Redistributions in binary form must reproduce the above
-	 *   copyright notice, this list of conditions and the
-	 *   following disclaimer in the documentation and/or other
-	 *   materials provided with the distribution.
-	 *
-	 * * Neither the name of Parakey Inc. nor the names of its
-	 *   contributors may be used to endorse or promote products
-	 *   derived from this software without specific prior
-	 *   written permission of Parakey Inc.
-	 *
-	 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-	 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-	 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-	 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-	 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-	 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-	 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-	 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-	 */
-	
-	/*
-	 * Creator:
-	 *  Joe Hewitt
-	 * Contributors
-	 *  John J. Barton (IBM Almaden)
-	 *  Jan Odvarko (Mozilla Corp.)
-	 *  Max Stepanov (Aptana Inc.)
-	 *  Rob Campbell (Mozilla Corp.)
-	 *  Hans Hillen (Paciello Group, Mozilla)
-	 *  Curtis Bartley (Mozilla Corp.)
-	 *  Mike Collins (IBM Almaden)
-	 *  Kevin Decker
-	 *  Mike Ratcliffe (Comartis AG)
-	 *  Hernan Rodríguez Colmeiro
-	 *  Austin Andrews
-	 *  Christoph Dorn
-	 *  Steven Roussey (AppCenter Inc, Network54)
-	 *  Mihai Sucan (Mozilla Corp.)
-	 */
-	
-	"use strict";
-	
-	const {components, Cc, Ci, Cu} = __webpack_require__(35);
-	const { NetUtil } = __webpack_require__(45);
-	const DevToolsUtils = __webpack_require__(42);
-	
-	// The cache used in the `nsIURL` function.
-	const gNSURLStore = new Map();
-	
-	/**
-	 * Helper object for networking stuff.
-	 *
-	 * Most of the following functions have been taken from the Firebug source. They
-	 * have been modified to match the Firefox coding rules.
-	 */
-	var NetworkHelper = {
-	  /**
-	   * Converts aText with a given aCharset to unicode.
-	   *
-	   * @param string aText
-	   *        Text to convert.
-	   * @param string aCharset
-	   *        Charset to convert the text to.
-	   * @returns string
-	   *          Converted text.
-	   */
-	  convertToUnicode: function NH_convertToUnicode(aText, aCharset)
-	  {
-	    let conv = Cc("@mozilla.org/intl/scriptableunicodeconverter").
-	               createInstance(Ci.nsIScriptableUnicodeConverter);
-	    try {
-	      conv.charset = aCharset || "UTF-8";
-	      return conv.ConvertToUnicode(aText);
-	    }
-	    catch (ex) {
-	      return aText;
-	    }
-	  },
-	
-	  /**
-	   * Reads all available bytes from aStream and converts them to aCharset.
-	   *
-	   * @param nsIInputStream aStream
-	   * @param string aCharset
-	   * @returns string
-	   *          UTF-16 encoded string based on the content of aStream and aCharset.
-	   */
-	  readAndConvertFromStream: function NH_readAndConvertFromStream(aStream, aCharset)
-	  {
-	    let text = null;
-	    try {
-	      text = NetUtil.readInputStreamToString(aStream, aStream.available())
-	      return this.convertToUnicode(text, aCharset);
-	    }
-	    catch (err) {
-	      return text;
-	    }
-	  },
-	
-	   /**
-	   * Reads the posted text from aRequest.
-	   *
-	   * @param nsIHttpChannel aRequest
-	   * @param string aCharset
-	   *        The content document charset, used when reading the POSTed data.
-	   * @returns string or null
-	   *          Returns the posted string if it was possible to read from aRequest
-	   *          otherwise null.
-	   */
-	  readPostTextFromRequest: function NH_readPostTextFromRequest(aRequest, aCharset)
-	  {
-	    if (aRequest instanceof Ci.nsIUploadChannel) {
-	      let iStream = aRequest.uploadStream;
-	
-	      let isSeekableStream = false;
-	      if (iStream instanceof Ci.nsISeekableStream) {
-	        isSeekableStream = true;
-	      }
-	
-	      let prevOffset;
-	      if (isSeekableStream) {
-	        prevOffset = iStream.tell();
-	        iStream.seek(Ci.nsISeekableStream.NS_SEEK_SET, 0);
-	      }
-	
-	      // Read data from the stream.
-	      let text = this.readAndConvertFromStream(iStream, aCharset);
-	
-	      // Seek locks the file, so seek to the beginning only if necko hasn't
-	      // read it yet, since necko doesn't seek to 0 before reading (at lest
-	      // not till 459384 is fixed).
-	      if (isSeekableStream && prevOffset == 0) {
-	        iStream.seek(Ci.nsISeekableStream.NS_SEEK_SET, 0);
-	      }
-	      return text;
-	    }
-	    return null;
-	  },
-	
-	  /**
-	   * Reads the posted text from the page's cache.
-	   *
-	   * @param nsIDocShell aDocShell
-	   * @param string aCharset
-	   * @returns string or null
-	   *          Returns the posted string if it was possible to read from
-	   *          aDocShell otherwise null.
-	   */
-	  readPostTextFromPage: function NH_readPostTextFromPage(aDocShell, aCharset)
-	  {
-	    let webNav = aDocShell.QueryInterface(Ci.nsIWebNavigation);
-	    return this.readPostTextFromPageViaWebNav(webNav, aCharset);
-	  },
-	
-	  /**
-	   * Reads the posted text from the page's cache, given an nsIWebNavigation
-	   * object.
-	   *
-	   * @param nsIWebNavigation aWebNav
-	   * @param string aCharset
-	   * @returns string or null
-	   *          Returns the posted string if it was possible to read from
-	   *          aWebNav, otherwise null.
-	   */
-	  readPostTextFromPageViaWebNav:
-	  function NH_readPostTextFromPageViaWebNav(aWebNav, aCharset)
-	  {
-	    if (aWebNav instanceof Ci.nsIWebPageDescriptor) {
-	      let descriptor = aWebNav.currentDescriptor;
-	
-	      if (descriptor instanceof Ci.nsISHEntry && descriptor.postData &&
-	          descriptor instanceof Ci.nsISeekableStream) {
-	        descriptor.seek(NS_SEEK_SET, 0);
-	
-	        return this.readAndConvertFromStream(descriptor, aCharset);
-	      }
-	    }
-	    return null;
-	  },
-	
-	  /**
-	   * Gets the web appId that is associated with aRequest.
-	   *
-	   * @param nsIHttpChannel aRequest
-	   * @returns number|null
-	   *          The appId for the given request, if available.
-	   */
-	  getAppIdForRequest: function NH_getAppIdForRequest(aRequest)
-	  {
-	    try {
-	      return this.getRequestLoadContext(aRequest).appId;
-	    } catch (ex) {
-	      // request loadContent is not always available.
-	    }
-	    return null;
-	  },
-	
-	  /**
-	   * Gets the topFrameElement that is associated with aRequest. This
-	   * works in single-process and multiprocess contexts. It may cross
-	   * the content/chrome boundary.
-	   *
-	   * @param nsIHttpChannel aRequest
-	   * @returns nsIDOMElement|null
-	   *          The top frame element for the given request.
-	   */
-	  getTopFrameForRequest: function NH_getTopFrameForRequest(aRequest)
-	  {
-	    try {
-	      return this.getRequestLoadContext(aRequest).topFrameElement;
-	    } catch (ex) {
-	      // request loadContent is not always available.
-	    }
-	    return null;
-	  },
-	
-	  /**
-	   * Gets the nsIDOMWindow that is associated with aRequest.
-	   *
-	   * @param nsIHttpChannel aRequest
-	   * @returns nsIDOMWindow or null
-	   */
-	  getWindowForRequest: function NH_getWindowForRequest(aRequest)
-	  {
-	    try {
-	      return this.getRequestLoadContext(aRequest).associatedWindow;
-	    } catch (ex) {
-	      // TODO: bug 802246 - getWindowForRequest() throws on b2g: there is no
-	      // associatedWindow property.
-	    }
-	    return null;
-	  },
-	
-	  /**
-	   * Gets the nsILoadContext that is associated with aRequest.
-	   *
-	   * @param nsIHttpChannel aRequest
-	   * @returns nsILoadContext or null
-	   */
-	  getRequestLoadContext: function NH_getRequestLoadContext(aRequest)
-	  {
-	    try {
-	      return aRequest.notificationCallbacks.getInterface(Ci.nsILoadContext);
-	    } catch (ex) { }
-	
-	    try {
-	      return aRequest.loadGroup.notificationCallbacks.getInterface(Ci.nsILoadContext);
-	    } catch (ex) { }
-	
-	    return null;
-	  },
-	
-	  /**
-	   * Determines whether the request has been made for the top level document.
-	   *
-	   * @param nsIHttpChannel aRequest
-	   * @returns Boolean True if the request represents the top level document.
-	   */
-	  isTopLevelLoad: function(aRequest)
-	  {
-	    if (aRequest instanceof Ci.nsIChannel) {
-	      let loadInfo = aRequest.loadInfo;
-	      if (loadInfo && loadInfo.parentOuterWindowID == loadInfo.outerWindowID) {
-	        return (aRequest.loadFlags & Ci.nsIChannel.LOAD_DOCUMENT_URI);
-	      }
-	    }
-	
-	    return false;
-	  },
-	
-	  /**
-	   * Loads the content of aUrl from the cache.
-	   *
-	   * @param string aUrl
-	   *        URL to load the cached content for.
-	   * @param string aCharset
-	   *        Assumed charset of the cached content. Used if there is no charset
-	   *        on the channel directly.
-	   * @param function aCallback
-	   *        Callback that is called with the loaded cached content if available
-	   *        or null if something failed while getting the cached content.
-	   */
-	  loadFromCache: function NH_loadFromCache(aUrl, aCharset, aCallback)
-	  {
-	    let channel = NetUtil.newChannel({uri: aUrl, loadUsingSystemPrincipal: true});
-	
-	    // Ensure that we only read from the cache and not the server.
-	    channel.loadFlags = Ci.nsIRequest.LOAD_FROM_CACHE |
-	      Ci.nsICachingChannel.LOAD_ONLY_FROM_CACHE |
-	      Ci.nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
-	
-	    NetUtil.asyncFetch(
-	      channel,
-	      (aInputStream, aStatusCode, aRequest) => {
-	        if (!components.isSuccessCode(aStatusCode)) {
-	          aCallback(null);
-	          return;
-	        }
-	
-	        // Try to get the encoding from the channel. If there is none, then use
-	        // the passed assumed aCharset.
-	        let aChannel = aRequest.QueryInterface(Ci.nsIChannel);
-	        let contentCharset = aChannel.contentCharset || aCharset;
-	
-	        // Read the content of the stream using contentCharset as encoding.
-	        aCallback(this.readAndConvertFromStream(aInputStream, contentCharset));
-	      });
-	  },
-	
-	  /**
-	   * Parse a raw Cookie header value.
-	   *
-	   * @param string aHeader
-	   *        The raw Cookie header value.
-	   * @return array
-	   *         Array holding an object for each cookie. Each object holds the
-	   *         following properties: name and value.
-	   */
-	  parseCookieHeader: function NH_parseCookieHeader(aHeader)
-	  {
-	    let cookies = aHeader.split(";");
-	    let result = [];
-	
-	    cookies.forEach(function(aCookie) {
-	      let equal = aCookie.indexOf("=");
-	      let name = aCookie.substr(0, equal);
-	      let value = aCookie.substr(equal + 1);
-	      result.push({name: unescape(name.trim()),
-	                   value: unescape(value.trim())});
-	    });
-	
-	    return result;
-	  },
-	
-	  /**
-	   * Parse a raw Set-Cookie header value.
-	   *
-	   * @param string aHeader
-	   *        The raw Set-Cookie header value.
-	   * @return array
-	   *         Array holding an object for each cookie. Each object holds the
-	   *         following properties: name, value, secure (boolean), httpOnly
-	   *         (boolean), path, domain and expires (ISO date string).
-	   */
-	  parseSetCookieHeader: function NH_parseSetCookieHeader(aHeader)
-	  {
-	    let rawCookies = aHeader.split(/\r\n|\n|\r/);
-	    let cookies = [];
-	
-	    rawCookies.forEach(function(aCookie) {
-	      let equal = aCookie.indexOf("=");
-	      let name = unescape(aCookie.substr(0, equal).trim());
-	      let parts = aCookie.substr(equal + 1).split(";");
-	      let value = unescape(parts.shift().trim());
-	
-	      let cookie = {name: name, value: value};
-	
-	      parts.forEach(function(aPart) {
-	        let part = aPart.trim();
-	        if (part.toLowerCase() == "secure") {
-	          cookie.secure = true;
-	        }
-	        else if (part.toLowerCase() == "httponly") {
-	          cookie.httpOnly = true;
-	        }
-	        else if (part.indexOf("=") > -1) {
-	          let pair = part.split("=");
-	          pair[0] = pair[0].toLowerCase();
-	          if (pair[0] == "path" || pair[0] == "domain") {
-	            cookie[pair[0]] = pair[1];
-	          }
-	          else if (pair[0] == "expires") {
-	            try {
-	              pair[1] = pair[1].replace(/-/g, ' ');
-	              cookie.expires = new Date(pair[1]).toISOString();
-	            }
-	            catch (ex) { }
-	          }
-	        }
-	      });
-	
-	      cookies.push(cookie);
-	    });
-	
-	    return cookies;
-	  },
-	
-	  // This is a list of all the mime category maps jviereck could find in the
-	  // firebug code base.
-	  mimeCategoryMap: {
-	    "text/plain": "txt",
-	    "text/html": "html",
-	    "text/xml": "xml",
-	    "text/xsl": "txt",
-	    "text/xul": "txt",
-	    "text/css": "css",
-	    "text/sgml": "txt",
-	    "text/rtf": "txt",
-	    "text/x-setext": "txt",
-	    "text/richtext": "txt",
-	    "text/javascript": "js",
-	    "text/jscript": "txt",
-	    "text/tab-separated-values": "txt",
-	    "text/rdf": "txt",
-	    "text/xif": "txt",
-	    "text/ecmascript": "js",
-	    "text/vnd.curl": "txt",
-	    "text/x-json": "json",
-	    "text/x-js": "txt",
-	    "text/js": "txt",
-	    "text/vbscript": "txt",
-	    "view-source": "txt",
-	    "view-fragment": "txt",
-	    "application/xml": "xml",
-	    "application/xhtml+xml": "xml",
-	    "application/atom+xml": "xml",
-	    "application/rss+xml": "xml",
-	    "application/vnd.mozilla.maybe.feed": "xml",
-	    "application/vnd.mozilla.xul+xml": "xml",
-	    "application/javascript": "js",
-	    "application/x-javascript": "js",
-	    "application/x-httpd-php": "txt",
-	    "application/rdf+xml": "xml",
-	    "application/ecmascript": "js",
-	    "application/http-index-format": "txt",
-	    "application/json": "json",
-	    "application/x-js": "txt",
-	    "multipart/mixed": "txt",
-	    "multipart/x-mixed-replace": "txt",
-	    "image/svg+xml": "svg",
-	    "application/octet-stream": "bin",
-	    "image/jpeg": "image",
-	    "image/jpg": "image",
-	    "image/gif": "image",
-	    "image/png": "image",
-	    "image/bmp": "image",
-	    "application/x-shockwave-flash": "flash",
-	    "video/x-flv": "flash",
-	    "audio/mpeg3": "media",
-	    "audio/x-mpeg-3": "media",
-	    "video/mpeg": "media",
-	    "video/x-mpeg": "media",
-	    "audio/ogg": "media",
-	    "application/ogg": "media",
-	    "application/x-ogg": "media",
-	    "application/x-midi": "media",
-	    "audio/midi": "media",
-	    "audio/x-mid": "media",
-	    "audio/x-midi": "media",
-	    "music/crescendo": "media",
-	    "audio/wav": "media",
-	    "audio/x-wav": "media",
-	    "text/json": "json",
-	    "application/x-json": "json",
-	    "application/json-rpc": "json",
-	    "application/x-web-app-manifest+json": "json",
-	    "application/manifest+json": "json"
-	  },
-	
-	  /**
-	   * Check if the given MIME type is a text-only MIME type.
-	   *
-	   * @param string aMimeType
-	   * @return boolean
-	   */
-	  isTextMimeType: function NH_isTextMimeType(aMimeType)
-	  {
-	    if (aMimeType.indexOf("text/") == 0) {
-	      return true;
-	    }
-	
-	    // XML and JSON often come with custom MIME types, so in addition to the
-	    // standard "application/xml" and "application/json", we also look for
-	    // variants like "application/x-bigcorp+xml". For JSON we allow "+json" and
-	    // "-json" as suffixes.
-	    if (/^application\/\w+(?:[\.-]\w+)*(?:\+xml|[-+]json)$/.test(aMimeType)) {
-	      return true;
-	    }
-	
-	    let category = this.mimeCategoryMap[aMimeType] || null;
-	    switch (category) {
-	      case "txt":
-	      case "js":
-	      case "json":
-	      case "css":
-	      case "html":
-	      case "svg":
-	      case "xml":
-	        return true;
-	
-	      default:
-	        return false;
-	    }
-	  },
-	
-	  /**
-	   * Takes a securityInfo object of nsIRequest, the nsIRequest itself and
-	   * extracts security information from them.
-	   *
-	   * @param object securityInfo
-	   *        The securityInfo object of a request. If null channel is assumed
-	   *        to be insecure.
-	   * @param object httpActivity
-	   *        The httpActivity object for the request with at least members
-	   *        { private, hostname }.
-	   *
-	   * @return object
-	   *         Returns an object containing following members:
-	   *          - state: The security of the connection used to fetch this
-	   *                   request. Has one of following string values:
-	   *                    * "insecure": the connection was not secure (only http)
-	   *                    * "weak": the connection has minor security issues
-	   *                    * "broken": secure connection failed (e.g. expired cert)
-	   *                    * "secure": the connection was properly secured.
-	   *          If state == broken:
-	   *            - errorMessage: full error message from nsITransportSecurityInfo.
-	   *          If state == secure:
-	   *            - protocolVersion: one of TLSv1, TLSv1.1, TLSv1.2.
-	   *            - cipherSuite: the cipher suite used in this connection.
-	   *            - cert: information about certificate used in this connection.
-	   *                    See parseCertificateInfo for the contents.
-	   *            - hsts: true if host uses Strict Transport Security, false otherwise
-	   *            - hpkp: true if host uses Public Key Pinning, false otherwise
-	   *          If state == weak: Same as state == secure and
-	   *            - weaknessReasons: list of reasons that cause the request to be
-	   *                               considered weak. See getReasonsForWeakness.
-	   */
-	  parseSecurityInfo: function NH_parseSecurityInfo(securityInfo, httpActivity) {
-	    const info = {
-	      state: "insecure",
-	    };
-	
-	    // The request did not contain any security info.
-	    if (!securityInfo) {
-	      return info;
-	    }
-	
-	    /**
-	     * Different scenarios to consider here and how they are handled:
-	     * - request is HTTP, the connection is not secure
-	     *   => securityInfo is null
-	     *      => state === "insecure"
-	     *
-	     * - request is HTTPS, the connection is secure
-	     *   => .securityState has STATE_IS_SECURE flag
-	     *      => state === "secure"
-	     *
-	     * - request is HTTPS, the connection has security issues
-	     *   => .securityState has STATE_IS_INSECURE flag
-	     *   => .errorCode is an NSS error code.
-	     *      => state === "broken"
-	     *
-	     * - request is HTTPS, the connection was terminated before the security
-	     *   could be validated
-	     *   => .securityState has STATE_IS_INSECURE flag
-	     *   => .errorCode is NOT an NSS error code.
-	     *   => .errorMessage is not available.
-	     *      => state === "insecure"
-	     *
-	     * - request is HTTPS but it uses a weak cipher or old protocol, see
-	     *   https://hg.mozilla.org/mozilla-central/annotate/def6ed9d1c1a/
-	     *   security/manager/ssl/nsNSSCallbacks.cpp#l1233
-	     * - request is mixed content (which makes no sense whatsoever)
-	     *   => .securityState has STATE_IS_BROKEN flag
-	     *   => .errorCode is NOT an NSS error code
-	     *   => .errorMessage is not available
-	     *      => state === "weak"
-	     */
-	
-	    securityInfo.QueryInterface(Ci.nsITransportSecurityInfo);
-	    securityInfo.QueryInterface(Ci.nsISSLStatusProvider);
-	
-	    const wpl = Ci.nsIWebProgressListener;
-	    const NSSErrorsService = Cc['@mozilla.org/nss_errors_service;1']
-	                               .getService(Ci.nsINSSErrorsService);
-	    const SSLStatus = securityInfo.SSLStatus;
-	    if (!NSSErrorsService.isNSSErrorCode(securityInfo.errorCode)) {
-	      const state = securityInfo.securityState;
-	
-	      let uri = null;
-	      if (httpActivity.channel && httpActivity.channel.URI) {
-	        uri = httpActivity.channel.URI;
-	      }
-	      if (uri && !uri.schemeIs("https") && !uri.schemeIs("wss")) {
-	        // it is not enough to look at the transport security info - schemes other than
-	        // https and wss are subject to downgrade/etc at the scheme level and should
-	        // always be considered insecure
-	        info.state = "insecure";
-	      } else if (state & wpl.STATE_IS_SECURE) {
-	        // The connection is secure if the scheme is sufficient
-	        info.state = "secure";
-	      } else if (state & wpl.STATE_IS_BROKEN) {
-	        // The connection is not secure, there was no error but there's some
-	        // minor security issues.
-	        info.state = "weak";
-	        info.weaknessReasons = this.getReasonsForWeakness(state);
-	      } else if (state & wpl.STATE_IS_INSECURE) {
-	        // This was most likely an https request that was aborted before
-	        // validation. Return info as info.state = insecure.
-	        return info;
-	      } else {
-	        DevToolsUtils.reportException("NetworkHelper.parseSecurityInfo",
-	          "Security state " + state + " has no known STATE_IS_* flags.");
-	        return info;
-	      }
-	
-	      // Cipher suite.
-	      info.cipherSuite = SSLStatus.cipherName;
-	
-	      // Protocol version.
-	      info.protocolVersion = this.formatSecurityProtocol(SSLStatus.protocolVersion);
-	
-	      // Certificate.
-	      info.cert = this.parseCertificateInfo(SSLStatus.serverCert);
-	
-	      // HSTS and HPKP if available.
-	      if (httpActivity.hostname) {
-	        const sss = Cc("@mozilla.org/ssservice;1")
-	                      .getService(Ci.nsISiteSecurityService);
-	
-	
-	        // SiteSecurityService uses different storage if the channel is
-	        // private. Thus we must give isSecureURI correct flags or we
-	        // might get incorrect results.
-	        let flags = (httpActivity.private) ?
-	                      Ci.nsISocketProvider.NO_PERMANENT_STORAGE : 0;
-	
-                if (!uri) {
-                  // isSecureURI only cares about the host, not the scheme.
-                  let host = httpActivity.hostname;
-                  uri = Services.io.newURI("https://" + host);
-                }
-
-	        info.hsts = sss.isSecureURI(sss.HEADER_HSTS, uri, flags);
-	        info.hpkp = sss.isSecureURI(sss.HEADER_HPKP, uri, flags);
-	      } else {
-	        DevToolsUtils.reportException("NetworkHelper.parseSecurityInfo",
-	          "Could not get HSTS/HPKP status as hostname is not available.");
-	        info.hsts = false;
-	        info.hpkp = false;
-	      }
-	
-	    } else {
-	      // The connection failed.
-	      info.state = "broken";
-	      info.errorMessage = securityInfo.errorMessage;
-	    }
-	
-	    return info;
-	  },
-	
-	  /**
-	   * Takes an nsIX509Cert and returns an object with certificate information.
-	   *
-	   * @param nsIX509Cert cert
-	   *        The certificate to extract the information from.
-	   * @return object
-	   *         An object with following format:
-	   *           {
-	   *             subject: { commonName, organization, organizationalUnit },
-	   *             issuer: { commonName, organization, organizationUnit },
-	   *             validity: { start, end },
-	   *             fingerprint: { sha1, sha256 }
-	   *           }
-	   */
-	  parseCertificateInfo: function NH_pars