Bug 1338567 - Update debugger frontend (2/10/2017) r=jdescottes.
☠☠ backed out by 56f83340ce93 ☠ ☠
authorJason Laster <jason.laster.11@gmail.com>
Wed, 01 Mar 2017 12:01:37 +0100
changeset 345414 92469a4ff6f4c4a7d5b3b698edb99c51a216ff41
parent 345413 c08af8aad4ceb7f9c0eebb46bf0c9e75dfbbbdda
child 345415 56f83340ce93f2e351096630e8b435e8107968dd
push id87600
push userjdescottes@mozilla.com
push dateThu, 02 Mar 2017 08:47:02 +0000
treeherdermozilla-inbound@92469a4ff6f4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjdescottes
bugs1338567
milestone54.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
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);