Merge mozilla-central to inbound. a=merge CLOSED TREE
authorGurzau Raul <rgurzau@mozilla.com>
Wed, 14 Feb 2018 12:49:32 +0200
changeset 458696 6d15b284662e7fc9403a25e9260727885e8065d3
parent 458695 f1e39e547b29ee6eb323ff5fe18c5084791c8da1 (current diff)
parent 458581 c48e46d5edbfb04ae9b54aa37b61aa254420a837 (diff)
child 458697 af441cafff7086ffdd0ea8c4700f738fdf3261b9
push id1683
push usersfraser@mozilla.com
push dateThu, 26 Apr 2018 16:43:40 +0000
treeherdermozilla-release@5af6cb21869d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone60.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
Merge mozilla-central to inbound. a=merge CLOSED TREE
third_party/python/psutil/TODO
third_party/python/psutil/docs/_static/logo.png
third_party/python/psutil/docs/_template/globaltoc.html
third_party/python/psutil/docs/_template/indexcontent.html
third_party/python/psutil/docs/_template/indexsidebar.html
third_party/python/psutil/docs/_template/page.html
third_party/python/psutil/docs/_themes/pydoctheme/static/pydoctheme.css
third_party/python/psutil/docs/_themes/pydoctheme/theme.conf
third_party/python/psutil/docs/xxx
third_party/python/psutil/examples/disk_usage.py
third_party/python/psutil/examples/free.py
third_party/python/psutil/examples/ifconfig.py
third_party/python/psutil/examples/iotop.py
third_party/python/psutil/examples/killall.py
third_party/python/psutil/examples/meminfo.py
third_party/python/psutil/examples/netstat.py
third_party/python/psutil/examples/nettop.py
third_party/python/psutil/examples/pidof.py
third_party/python/psutil/examples/pmap.py
third_party/python/psutil/examples/process_detail.py
third_party/python/psutil/examples/ps.py
third_party/python/psutil/examples/pstree.py
third_party/python/psutil/examples/top.py
third_party/python/psutil/examples/who.py
third_party/python/psutil/psutil.egg-info/PKG-INFO
third_party/python/psutil/psutil.egg-info/SOURCES.txt
third_party/python/psutil/psutil.egg-info/dependency_links.txt
third_party/python/psutil/psutil.egg-info/top_level.txt
third_party/python/psutil/psutil/_psutil_bsd.h
third_party/python/psutil/psutil/_psutil_linux.h
third_party/python/psutil/psutil/_psutil_osx.h
third_party/python/psutil/psutil/_psutil_sunos.h
third_party/python/psutil/psutil/_psutil_windows.h
third_party/python/psutil/psutil/arch/bsd/process_info.c
third_party/python/psutil/psutil/arch/bsd/process_info.h
third_party/python/psutil/setup.py
third_party/python/psutil/test/README.rst
third_party/python/psutil/test/_bsd.py
third_party/python/psutil/test/_linux.py
third_party/python/psutil/test/_osx.py
third_party/python/psutil/test/_posix.py
third_party/python/psutil/test/_sunos.py
third_party/python/psutil/test/_windows.py
third_party/python/psutil/test/test_memory_leaks.py
third_party/python/psutil/test/test_psutil.py
toolkit/modules/LightweightThemeConsumer.jsm
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -770,18 +770,17 @@ var BookmarksEventHandler = {
     // Handles left-click with modifier if not browser.bookmarks.openInTabClosesMenu.
     if (aEvent.button != 0 || PlacesUIUtils.openInTabClosesMenu)
       return;
     let target = aEvent.originalTarget;
     if (target.tagName != "menuitem")
       return;
     let modifKey = AppConstants.platform === "macosx" ? aEvent.metaKey
                                                       : aEvent.ctrlKey;
-    // Don't keep menu open for 'Open all in Tabs'.
-    if (modifKey && !target.classList.contains("openintabs-menuitem")) {
+    if (modifKey) {
       target.setAttribute("closemenu", "none");
     }
   },
 
   onClick: function BEH_onClick(aEvent, aView) {
     // Only handle middle-click or left-click with modifiers.
     let modifKey;
     if (AppConstants.platform == "macosx") {
@@ -791,22 +790,21 @@ var BookmarksEventHandler = {
     }
 
     if (aEvent.button == 2 || (aEvent.button == 0 && !modifKey))
       return;
 
     var target = aEvent.originalTarget;
     // If this event bubbled up from a menu or menuitem,
     // close the menus if browser.bookmarks.openInTabClosesMenu.
-    if ((PlacesUIUtils.openInTabClosesMenu && target.tagName == "menuitem") ||
-        target.tagName == "menu" ||
-        target.classList.contains("openintabs-menuitem")) {
+    var tag = target.tagName;
+    if (PlacesUIUtils.openInTabClosesMenu && (tag == "menuitem" || tag == "menu")) {
       closeMenus(aEvent.target);
     }
-    // Command already precesssed so remove any closemenu attr set in onMouseUp.
+    // Command already processed so remove any closemenu attr set in onMouseUp.
     if (aEvent.button == 0 &&
         target.tagName == "menuitem" &&
         target.getAttribute("closemenu") == "none") {
       // On Mac we need to extend when we remove the flag, to avoid any pre-close
       // animations.
       setTimeout(() => {
         target.removeAttribute("closemenu");
       }, 500);
--- a/browser/components/extensions/schemas/chrome_settings_overrides.json
+++ b/browser/components/extensions/schemas/chrome_settings_overrides.json
@@ -7,17 +7,17 @@
         "properties": {
           "chrome_settings_overrides": {
             "type": "object",
             "optional": true,
             "additionalProperties": { "$ref": "UnrecognizedProperty" },
             "properties": {
               "homepage": {
                 "type": "string",
-                "format": "relativeUrl",
+                "format": "homepageUrl",
                 "optional": true,
                 "preprocess": "localize"
               },
              "search_provider": {
                 "type": "object",
                 "optional": true,
                 "additionalProperties": { "$ref": "UnrecognizedProperty" },
                 "properties": {
--- a/browser/components/extensions/test/browser/browser_ext_chrome_settings_overrides_home.js
+++ b/browser/components/extensions/test/browser/browser_ext_chrome_settings_overrides_home.js
@@ -264,8 +264,29 @@ add_task(async function test_local() {
   await prefPromise;
 
   let homepage = getHomePageURL();
   ok((homepage.startsWith("moz-extension") && homepage.endsWith("home.html")),
      "Home url should be relative to extension.");
 
   await ext1.unload();
 });
+
+add_task(async function test_multiple() {
+  let extension = ExtensionTestUtils.loadExtension({
+    manifest: {
+      chrome_settings_overrides: {
+        homepage: "https://mozilla.org/|https://developer.mozilla.org/|https://addons.mozilla.org/",
+      },
+    },
+    useAddonManager: "temporary",
+  });
+
+  let prefPromise = promisePrefChangeObserved(HOMEPAGE_URL_PREF);
+  await extension.startup();
+  await prefPromise;
+
+  is(getHomePageURL(),
+     "https://mozilla.org/%7Chttps://developer.mozilla.org/%7Chttps://addons.mozilla.org/",
+     "The homepage encodes | so only one homepage is allowed");
+
+  await extension.unload();
+});
--- a/browser/components/places/content/browserPlacesViews.js
+++ b/browser/components/places/content/browserPlacesViews.js
@@ -903,18 +903,17 @@ PlacesViewBase.prototype = {
       // Menus that have static content at the end, but are initially empty,
       // use a special "builder" attribute to figure out where to start
       // inserting places nodes.
       if (child.getAttribute("builder") == "end") {
         aPopup.insertBefore(aPopup._endMarker, child);
         break;
       }
 
-      if (child._placesNode && !child.hasAttribute("simulated-places-node") &&
-          !firstNonStaticNodeFound) {
+      if (child._placesNode && !firstNonStaticNodeFound) {
         firstNonStaticNodeFound = true;
         aPopup.insertBefore(aPopup._startMarker, child);
       }
     }
     if (!firstNonStaticNodeFound) {
       aPopup.insertBefore(aPopup._startMarker, aPopup._endMarker);
     }
   },
--- a/browser/components/places/content/controller.js
+++ b/browser/components/places/content/controller.js
@@ -1405,33 +1405,26 @@ var PlacesControllerDragHelper = {
    * @param   aNode
    *          A nsINavHistoryResultNode node.
    * @param   aView
    *          The view originating the request
    * @param   [optional] aDOMNode
    *          A XUL DOM node.
    * @return True if the node can be moved, false otherwise.
    */
-  canMoveNode(aNode, aView, aDOMNode) {
+  canMoveNode(aNode, aView) {
     // Only bookmark items are movable.
     if (aNode.itemId == -1)
       return false;
 
-    let parentNode = aNode.parent;
-    if (!parentNode) {
-      // Normally parentless places nodes can not be moved,
-      // but simulated bookmarked URI nodes are special.
-      return !!aDOMNode &&
-             aDOMNode.hasAttribute("simulated-places-node") &&
-             PlacesUtils.nodeIsBookmark(aNode);
-    }
-
     // Once tags and bookmarked are divorced, the tag-query check should be
     // removed.
-    return PlacesUtils.nodeIsFolder(parentNode) &&
+    let parentNode = aNode.parent;
+    return parentNode != null &&
+           PlacesUtils.nodeIsFolder(parentNode) &&
            !PlacesUIUtils.isFolderReadOnly(parentNode, aView) &&
            !PlacesUtils.nodeIsTagQuery(parentNode);
   },
 
   /**
    * Handles the drop of one or more items onto a view.
    *
    * @param {Object} insertionPoint The insertion point where the items should
--- a/browser/components/places/content/menu.xml
+++ b/browser/components/places/content/menu.xml
@@ -345,17 +345,17 @@
         let elt = event.target;
         if (!elt._placesNode)
           return;
 
         let draggedElt = elt._placesNode;
 
         // Force a copy action if parent node is a query or we are dragging a
         // not-removable node.
-        if (!PlacesControllerDragHelper.canMoveNode(draggedElt, this._rootView, elt))
+        if (!PlacesControllerDragHelper.canMoveNode(draggedElt, this._rootView))
           event.dataTransfer.effectAllowed = "copyLink";
 
         // Activate the view and cache the dragged element.
         this._rootView._draggedElt = draggedElt;
         this._rootView.controller.setDataTransfer(event);
         this.setAttribute("dragstart", "true");
         event.stopPropagation();
       ]]></handler>
--- a/browser/components/places/tests/browser/browser_views_liveupdate.js
+++ b/browser/components/places/tests/browser/browser_views_liveupdate.js
@@ -256,17 +256,17 @@ function getNodeForToolbarItem(aItemId, 
   var placesToolbarItems = document.getElementById("PlacesToolbarItems");
 
   function findNode(aContainer) {
     var children = aContainer.childNodes;
     for (var i = 0, staticNodes = 0; i < children.length; i++) {
       var child = children[i];
 
       // Is this a Places node?
-      if (!child._placesNode || child.hasAttribute("simulated-places-node")) {
+      if (!child._placesNode) {
         staticNodes++;
         continue;
       }
 
       if (child._placesNode.itemId == aItemId) {
         let valid = aValidator ? aValidator(child) : true;
         return [child._placesNode, i - staticNodes, valid];
       }
@@ -299,17 +299,17 @@ function getNodeForMenuItem(aItemId, aVa
   var menu = document.getElementById("bookmarksMenu");
 
   function findNode(aContainer) {
     var children = aContainer.childNodes;
     for (var i = 0, staticNodes = 0; i < children.length; i++) {
       var child = children[i];
 
       // Is this a Places node?
-      if (!child._placesNode || child.hasAttribute("simulated-places-node")) {
+      if (!child._placesNode) {
         staticNodes++;
         continue;
       }
 
       if (child._placesNode.itemId == aItemId) {
         let valid = aValidator ? aValidator(child) : true;
         return [child._placesNode, i - staticNodes, valid];
       }
--- a/build/build-clang/build-clang.py
+++ b/build/build-clang/build-clang.py
@@ -208,19 +208,20 @@ def build_one_stage(cc, cxx, asm, ld, ar
                        "-DCMAKE_SYSTEM_VERSION=10.10",
                        "-DLLVM_ENABLE_THREADS=OFF",
                        "-DLIBCXXABI_LIBCXX_INCLUDES=%s" % libcxx_include_dir,
                        "-DCMAKE_OSX_SYSROOT=%s" % slashify_path(os.getenv("CROSS_SYSROOT")),
                        "-DCMAKE_FIND_ROOT_PATH=%s" % slashify_path(os.getenv("CROSS_CCTOOLS_PATH")), # noqa
                        "-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER",
                        "-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY",
                        "-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY",
-                       "-DCMAKE_MACOSX_RPATH=@executable_path",
+                       "-DCMAKE_MACOSX_RPATH=ON",
                        "-DCMAKE_OSX_ARCHITECTURES=x86_64",
                        "-DDARWIN_osx_ARCHS=x86_64",
+                       "-DDARWIN_osx_SYSROOT=%s" % slashify_path(os.getenv("CROSS_SYSROOT")),
                        "-DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-apple-darwin11"]
     build_package(build_dir, cmake_args)
 
     if is_linux():
         install_libgcc(gcc_dir, inst_dir)
     # For some reasons the import library clang.lib of clang.exe is not
     # installed, so we copy it by ourselves.
     if is_windows():
@@ -366,16 +367,19 @@ if __name__ == "__main__":
 
     parser = argparse.ArgumentParser()
     parser.add_argument('-c', '--config', required=True,
                         type=argparse.FileType('r'),
                         help="Clang configuration file")
     parser.add_argument('--clean', required=False,
                         action='store_true',
                         help="Clean the build directory")
+    parser.add_argument('--skip-tar', required=False,
+                        action='store_true',
+                        help="Skip tar packaging stage")
 
     args = parser.parse_args()
     config = json.load(args.config)
 
     if args.clean:
         shutil.rmtree(build_dir)
         os.sys.exit(0)
 
@@ -590,10 +594,11 @@ if __name__ == "__main__":
             llvm_source_dir, stage3_dir, build_libcxx, osx_cross_compile,
             build_type, assertions, python_path, gcc_dir, libcxx_include_dir)
 
     package_name = "clang"
     if build_clang_tidy:
         prune_final_dir_for_clang_tidy(os.path.join(final_stage_dir, "clang"))
         package_name = "clang-tidy"
 
-    ext = "bz2" if is_darwin() or is_windows() else "xz"
-    build_tar_package("tar", "%s.tar.%s" % (package_name, ext), final_stage_dir, "clang")
+    if not args.skip_tar:
+        ext = "bz2" if is_darwin() or is_windows() else "xz"
+        build_tar_package("tar", "%s.tar.%s" % (package_name, ext), final_stage_dir, "clang")
new file mode 100644
--- /dev/null
+++ b/build/build-clang/clang-6-pre-macosx64.json
@@ -0,0 +1,27 @@
+{
+    "llvm_revision": "317840",
+    "stages": "1",
+    "build_libcxx": true,
+    "build_type": "Release",
+    "assertions": false,
+    "osx_cross_compile": true,
+    "llvm_repo": "https://llvm.org/svn/llvm-project/llvm/trunk",
+    "clang_repo": "https://llvm.org/svn/llvm-project/cfe/trunk",
+    "compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/trunk",
+    "libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/trunk",
+    "libcxxabi_repo": "https://llvm.org/svn/llvm-project/libcxxabi/trunk",
+    "python_path": "/usr/bin/python2.7",
+    "gcc_dir": "/builds/worker/workspace/build/src/gcc",
+    "cc": "/builds/worker/workspace/build/src/clang/bin/clang",
+    "cxx": "/builds/worker/workspace/build/src/clang/bin/clang++",
+    "as": "/builds/worker/workspace/build/src/clang/bin/clang",
+    "ar": "/builds/worker/workspace/build/src/cctools/bin/x86_64-apple-darwin11-ar",
+    "ranlib": "/builds/worker/workspace/build/src/cctools/bin/x86_64-apple-darwin11-ranlib",
+    "libtool": "/builds/worker/workspace/build/src/cctools/bin/x86_64-apple-darwin11-libtool",
+    "ld": "/builds/worker/workspace/build/src/clang/bin/clang",
+    "patches": [
+      "compiler-rt-cross-compile.patch",
+      "compiler-rt-no-codesign.patch",
+      "r321543.patch"
+    ]
+}
--- a/build/build-clang/compiler-rt-no-codesign.patch
+++ b/build/build-clang/compiler-rt-no-codesign.patch
@@ -1,8 +1,10 @@
+Disable codesign for macosx cross-compile toolchain. Codesign only works on OSX.
+
 Index: cmake/Modules/AddCompilerRT.cmake
 ===================================================================
 --- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake	(revision 312553)
 +++ b/compiler-rt/cmake/Modules/AddCompilerRT.cmake	(working copy)
 @@ -224,14 +224,6 @@
          set_target_properties(${libname} PROPERTIES IMPORT_PREFIX "")
          set_target_properties(${libname} PROPERTIES IMPORT_SUFFIX ".lib")
        endif()
new file mode 100644
--- /dev/null
+++ b/build/build-clang/r321543.patch
@@ -0,0 +1,33 @@
+From: Yi Kong <yikong@google.com>
+Date: Thu, 28 Dec 2017 23:06:24 +0000
+Subject: [PATCH] Ignore the DISPATCH_NOESCAPE if not defined
+
+This macro is only defined after XCode 8, causing build breakage for
+build systems with prior versions. Ignore DISPATCH_NOESCAPE if not
+defined.
+
+Differential Revision: https://reviews.llvm.org/D41601
+
+
+git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@321543 91177308-0d34-0410-b5e6-96231b3b80d8
+---
+ lib/tsan/rtl/tsan_libdispatch_mac.cc | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/lib/tsan/rtl/tsan_libdispatch_mac.cc b/lib/tsan/rtl/tsan_libdispatch_mac.cc
+index eb22e4baa..d6c1ca662 100644
+--- a/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc
++++ b/compiler-rt/lib/tsan/rtl/tsan_libdispatch_mac.cc
+@@ -25,6 +25,11 @@
+ #include <dispatch/dispatch.h>
+ #include <pthread.h>
+ 
++// DISPATCH_NOESCAPE is not defined prior to XCode 8.
++#ifndef DISPATCH_NOESCAPE
++#define DISPATCH_NOESCAPE
++#endif
++
+ typedef long long_t;  // NOLINT
+ 
+ namespace __tsan {
+
--- a/devtools/client/webconsole/new-console-output/components/message-types/EvaluationResult.js
+++ b/devtools/client/webconsole/new-console-output/components/message-types/EvaluationResult.js
@@ -39,17 +39,17 @@ function EvaluationResult(props) {
     exceptionDocURL,
     frame,
     timeStamp,
     parameters,
     notes,
   } = message;
 
   let messageBody;
-  if (message.messageText) {
+  if (typeof message.messageText !== "undefined" && message.messageText !== null) {
     if (typeof message.messageText === "string") {
       messageBody = message.messageText;
     } else if (
       typeof message.messageText === "object"
       && message.messageText.type === "longString"
     ) {
       messageBody = `${message.messageText.initial}…`;
     }
--- a/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js
+++ b/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js
@@ -44,16 +44,32 @@ describe("EvaluationResult component:", 
     const message = stubPreparedMessages.get("longString message Error");
     const wrapper = render(EvaluationResult({ message, serviceContainer }));
 
     const text = wrapper.find(".message-body").text();
     expect(text.startsWith("Error: Long error Long error")).toBe(true);
     expect(wrapper.find(".message.error").length).toBe(1);
   });
 
+  it("renders thrown empty string", () => {
+    const message = stubPreparedMessages.get(`eval throw ""`);
+    const wrapper = render(EvaluationResult({ message, serviceContainer }));
+    const text = wrapper.find(".message-body").text();
+    expect(text).toBe("Error");
+    expect(wrapper.find(".message.error").length).toBe(1);
+  });
+
+  it("renders thrown string", () => {
+    const message = stubPreparedMessages.get(`eval throw "tomato"`);
+    const wrapper = render(EvaluationResult({ message, serviceContainer }));
+    const text = wrapper.find(".message-body").text();
+    expect(text).toBe("Error: tomato");
+    expect(wrapper.find(".message.error").length).toBe(1);
+  });
+
   it("renders an inspect command result", () => {
     const message = stubPreparedMessages.get("inspect({a: 1})");
     const wrapper = render(EvaluationResult({ message, serviceContainer }));
 
     expect(wrapper.find(".message-body").text()).toBe("Object { a: 1 }");
   });
 
   it("renders an jsterm command error result", () => {
--- a/devtools/client/webconsole/new-console-output/test/components/page-error.test.js
+++ b/devtools/client/webconsole/new-console-output/test/components/page-error.test.js
@@ -64,16 +64,30 @@ describe("PageError component:", () => {
   it("renders an error with a longString exception message", () => {
     const message = stubPreparedMessages.get("TypeError longString message");
     const wrapper = render(PageError({ message, serviceContainer }));
 
     const text = wrapper.find(".message-body").text();
     expect(text.startsWith("Error: Long error Long error")).toBe(true);
   });
 
+  it("renders thrown empty string", () => {
+    const message = stubPreparedMessages.get(`throw ""`);
+    const wrapper = render(PageError({ message, serviceContainer }));
+    const text = wrapper.find(".message-body").text();
+    expect(text).toBe("uncaught exception: ");
+  });
+
+  it("renders thrown string", () => {
+    const message = stubPreparedMessages.get(`throw "tomato"`);
+    const wrapper = render(PageError({ message, serviceContainer }));
+    const text = wrapper.find(".message-body").text();
+    expect(text).toBe(`uncaught exception: tomato`);
+  });
+
   it("displays a [Learn more] link", () => {
     const store = setupStore();
 
     const message = stubPreparedMessages.get("ReferenceError: asdf is not defined");
 
     serviceContainer.openLink = sinon.spy();
     const wrapper = mount(Provider({store},
       PageError({
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/head.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/head.js
@@ -104,30 +104,33 @@ function getCleanedPacket(key, packet) {
           if (newArgument.class === "Window") {
             newArgument.ownPropertyLength = existingArgument.ownPropertyLength;
           }
           return newArgument;
         });
       }
     }
 
-    if (res.result) {
+    if (res.result && existingPacket.result) {
       // Clean actor ids on evaluation result messages.
       res.result.actor = existingPacket.result.actor;
       if (res.result.preview) {
         if (res.result.preview.timestamp) {
           // Clean timestamp there too.
           res.result.preview.timestamp = existingPacket.result.preview.timestamp;
         }
       }
     }
 
-    if (res.exception) {
+    if (res.exception && existingPacket.exception) {
       // Clean actor ids on exception messages.
-      res.exception.actor = existingPacket.exception.actor;
+      if (existingPacket.exception.actor) {
+        res.exception.actor = existingPacket.exception.actor;
+      }
+
       if (res.exception.preview) {
         if (res.exception.preview.timestamp) {
           // Clean timestamp there too.
           res.exception.preview.timestamp = existingPacket.exception.preview.timestamp;
         }
 
         if (
           typeof res.exception.preview.message === "object"
@@ -229,26 +232,27 @@ function getCleanedPacket(key, packet) {
   }
 
   cachedPackets[key] = res;
   return res;
 }
 
 function formatPacket(key, packet) {
   let stringifiedPacket = JSON.stringify(getCleanedPacket(key, packet), null, 2);
-  return `stubPackets.set("${key}", ${stringifiedPacket});`;
+  return `stubPackets.set(\`${key}\`, ${stringifiedPacket});`;
 }
 
 function formatStub(key, packet) {
   let prepared = prepareMessage(
     getCleanedPacket(key, packet),
     {getNextId: () => "1"}
   );
   let stringifiedMessage = JSON.stringify(prepared, null, 2);
-  return `stubPreparedMessages.set("${key}", new ConsoleMessage(${stringifiedMessage}));`;
+  return (
+    `stubPreparedMessages.set(\`${key}\`, new ConsoleMessage(${stringifiedMessage}));`);
 }
 
 function formatNetworkEventStub(key, packet) {
   let cleanedPacket = getCleanedPacket(key, packet);
   let networkInfo = cleanedPacket.networkInfo ? cleanedPacket.networkInfo : cleanedPacket;
 
   let prepared = prepareMessage(
     networkInfo,
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/stub-snippets.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/stub-snippets.js
@@ -180,16 +180,19 @@ const evaluationResultCommands = [
   "inspect({a: 1})",
   "cd(document)"
 ];
 
 let evaluationResult = new Map(evaluationResultCommands.map(cmd => [cmd, cmd]));
 evaluationResult.set("longString message Error",
   `throw new Error("Long error ".repeat(10000))`);
 
+evaluationResult.set(`eval throw ""`, `throw ""`);
+evaluationResult.set(`eval throw "tomato"`, `throw "tomato"`);
+
 // Network Event
 
 let networkEvent = new Map();
 
 networkEvent.set("GET request", {
   keys: ["GET request"],
   code: `
 let i = document.createElement("img");
@@ -229,15 +232,18 @@ pageError.set("ReferenceError: asdf is n
 
 pageError.set("SyntaxError: redeclaration of let a", `
   let a, a;
 `);
 
 pageError.set("TypeError longString message",
   `throw new Error("Long error ".repeat(10000))`);
 
+pageError.set(`throw ""`, `throw ""`);
+pageError.set(`throw "tomato"`, `throw "tomato"`);
+
 module.exports = {
   consoleApi,
   cssMessage,
   evaluationResult,
   networkEvent,
   pageError,
 };
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/consoleApi.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/consoleApi.js
@@ -8,17 +8,17 @@
  * THIS FILE IS AUTOGENERATED. DO NOT MODIFY BY HAND. RUN TESTS IN FIXTURES/ TO UPDATE.
  */
 
 const { ConsoleMessage } =
   require("devtools/client/webconsole/new-console-output/types");
 
 let stubPreparedMessages = new Map();
 let stubPackets = new Map();
-stubPreparedMessages.set("console.log('foobar', 'test')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('foobar', 'test')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924471,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -35,17 +35,17 @@ stubPreparedMessages.set("console.log('f
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log(undefined)", new ConsoleMessage({
+stubPreparedMessages.set(`console.log(undefined)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924479,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -63,17 +63,17 @@ stubPreparedMessages.set("console.log(un
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.warn('danger, will robinson!')", new ConsoleMessage({
+stubPreparedMessages.set(`console.warn('danger, will robinson!')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924487,
   "type": "warn",
   "helperType": null,
   "level": "warn",
   "messageText": null,
@@ -89,17 +89,17 @@ stubPreparedMessages.set("console.warn('
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log(NaN)", new ConsoleMessage({
+stubPreparedMessages.set(`console.log(NaN)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924495,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -117,17 +117,17 @@ stubPreparedMessages.set("console.log(Na
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log(null)", new ConsoleMessage({
+stubPreparedMessages.set(`console.log(null)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924501,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -145,17 +145,17 @@ stubPreparedMessages.set("console.log(nu
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('鼬')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('鼬')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924506,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -171,17 +171,17 @@ stubPreparedMessages.set("console.log('鼬')", new ConsoleMessage({
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.clear()", new ConsoleMessage({
+stubPreparedMessages.set(`console.clear()`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924512,
   "type": "clear",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -197,17 +197,17 @@ stubPreparedMessages.set("console.clear(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.count('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924515,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "bar: 1",
@@ -221,17 +221,17 @@ stubPreparedMessages.set("console.count(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.assert(false, {message: 'foobar'})", new ConsoleMessage({
+stubPreparedMessages.set(`console.assert(false, {message: 'foobar'})`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924521,
   "type": "assert",
   "helperType": null,
   "level": "error",
   "messageText": null,
@@ -277,17 +277,17 @@ stubPreparedMessages.set("console.assert
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('hello \nfrom \rthe \"string world!')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('hello \nfrom \rthe \"string world!')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924528,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -303,17 +303,17 @@ stubPreparedMessages.set("console.log('h
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('úṇĩçödê țĕșť')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('úṇĩçödê țĕșť')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924586,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -329,17 +329,17 @@ stubPreparedMessages.set("console.log('úṇĩçödê țĕșť')", new ConsoleMessage({
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.dirxml(window)", new ConsoleMessage({
+stubPreparedMessages.set(`console.dirxml(window)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924596,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -367,17 +367,17 @@ stubPreparedMessages.set("console.dirxml
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('myarray', ['red', 'green', 'blue'])", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('myarray', ['red', 'green', 'blue'])`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924604,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -411,17 +411,17 @@ stubPreparedMessages.set("console.log('m
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('myregex', /a.b.c/)", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('myregex', /a.b.c/)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924610,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -447,17 +447,17 @@ stubPreparedMessages.set("console.log('m
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.table(['red', 'green', 'blue']);", new ConsoleMessage({
+stubPreparedMessages.set(`console.table(['red', 'green', 'blue']);`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924612,
   "type": "table",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -490,17 +490,17 @@ stubPreparedMessages.set("console.table(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('myobject', {red: 'redValue', green: 'greenValue', blue: 'blueValue'});", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('myobject', {red: 'redValue', green: 'greenValue', blue: 'blueValue'});`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924614,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -552,17 +552,17 @@ stubPreparedMessages.set("console.log('m
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.debug('debug message');", new ConsoleMessage({
+stubPreparedMessages.set(`console.debug('debug message');`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924621,
   "type": "debug",
   "helperType": null,
   "level": "debug",
   "messageText": null,
@@ -578,17 +578,17 @@ stubPreparedMessages.set("console.debug(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.info('info message');", new ConsoleMessage({
+stubPreparedMessages.set(`console.info('info message');`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924625,
   "type": "info",
   "helperType": null,
   "level": "info",
   "messageText": null,
@@ -604,17 +604,17 @@ stubPreparedMessages.set("console.info('
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.error('error message');", new ConsoleMessage({
+stubPreparedMessages.set(`console.error('error message');`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924628,
   "type": "error",
   "helperType": null,
   "level": "error",
   "messageText": null,
@@ -637,17 +637,17 @@ stubPreparedMessages.set("console.error(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('mymap')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('mymap')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924631,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -686,17 +686,17 @@ stubPreparedMessages.set("console.log('m
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log('myset')", new ConsoleMessage({
+stubPreparedMessages.set(`console.log('myset')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924746,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -729,17 +729,17 @@ stubPreparedMessages.set("console.log('m
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.trace()", new ConsoleMessage({
+stubPreparedMessages.set(`console.trace()`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924752,
   "type": "trace",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -772,17 +772,17 @@ stubPreparedMessages.set("console.trace(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.time('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.time('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924757,
   "type": "nullMessage",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -796,17 +796,17 @@ stubPreparedMessages.set("console.time('
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("timerAlreadyExists", new ConsoleMessage({
+stubPreparedMessages.set(`timerAlreadyExists`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924758,
   "type": "time",
   "helperType": null,
   "level": "warn",
   "messageText": "Timer “bar” already exists.",
@@ -820,17 +820,17 @@ stubPreparedMessages.set("timerAlreadyEx
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.timeEnd('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.timeEnd('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924759,
   "type": "timeEnd",
   "helperType": null,
   "level": "log",
   "messageText": "bar: 1.21ms",
@@ -844,17 +844,17 @@ stubPreparedMessages.set("console.timeEn
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("timerDoesntExist", new ConsoleMessage({
+stubPreparedMessages.set(`timerDoesntExist`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924759,
   "type": "timeEnd",
   "helperType": null,
   "level": "warn",
   "messageText": "Timer “bar” doesn’t exist.",
@@ -868,17 +868,17 @@ stubPreparedMessages.set("timerDoesntExi
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.table('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.table('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924801,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -894,17 +894,17 @@ stubPreparedMessages.set("console.table(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.table(['a', 'b', 'c'])", new ConsoleMessage({
+stubPreparedMessages.set(`console.table(['a', 'b', 'c'])`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924859,
   "type": "table",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -937,17 +937,17 @@ stubPreparedMessages.set("console.table(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.group('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.group('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924863,
   "type": "startGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -963,17 +963,17 @@ stubPreparedMessages.set("console.group(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupEnd('bar')", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupEnd('bar')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924864,
   "type": "endGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -987,17 +987,17 @@ stubPreparedMessages.set("console.groupE
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupCollapsed('foo')", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupCollapsed('foo')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924870,
   "type": "startGroupCollapsed",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1013,17 +1013,17 @@ stubPreparedMessages.set("console.groupC
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupEnd('foo')", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupEnd('foo')`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924871,
   "type": "endGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1037,17 +1037,17 @@ stubPreparedMessages.set("console.groupE
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.group()", new ConsoleMessage({
+stubPreparedMessages.set(`console.group()`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924878,
   "type": "startGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1063,17 +1063,17 @@ stubPreparedMessages.set("console.group(
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupEnd()", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupEnd()`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924879,
   "type": "endGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1087,17 +1087,17 @@ stubPreparedMessages.set("console.groupE
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.log(%cfoobar)", new ConsoleMessage({
+stubPreparedMessages.set(`console.log(%cfoobar)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924883,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1117,17 +1117,17 @@ stubPreparedMessages.set("console.log(%c
   "userProvidedStyles": [
     "color:blue;font-size:1.3em;background:url('http://example.com/test');position:absolute;top:10px",
     "color:red;background:url('http://example.com/test')"
   ],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.group(%cfoo%cbar)", new ConsoleMessage({
+stubPreparedMessages.set(`console.group(%cfoo%cbar)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924887,
   "type": "startGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1147,17 +1147,17 @@ stubPreparedMessages.set("console.group(
   "userProvidedStyles": [
     "color:blue;font-size:1.3em;background:url('http://example.com/test');position:absolute;top:10px",
     "color:red;background:url('http://example.com/test')"
   ],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupEnd(%cfoo%cbar)", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupEnd(%cfoo%cbar)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924887,
   "type": "endGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1171,17 +1171,17 @@ stubPreparedMessages.set("console.groupE
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupCollapsed(%cfoo%cbaz)", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupCollapsed(%cfoo%cbaz)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924892,
   "type": "startGroupCollapsed",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1201,17 +1201,17 @@ stubPreparedMessages.set("console.groupC
   "userProvidedStyles": [
     "color:blue;font-size:1.3em;background:url('http://example.com/test');position:absolute;top:10px",
     "color:red;background:url('http://example.com/test')"
   ],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.groupEnd(%cfoo%cbaz)", new ConsoleMessage({
+stubPreparedMessages.set(`console.groupEnd(%cfoo%cbaz)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924893,
   "type": "endGroup",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1225,17 +1225,17 @@ stubPreparedMessages.set("console.groupE
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.dir({C, M, Y, K})", new ConsoleMessage({
+stubPreparedMessages.set(`console.dir({C, M, Y, K})`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1502884924899,
   "type": "dir",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1292,17 +1292,17 @@ stubPreparedMessages.set("console.dir({C
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | default: 1", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | default: 1`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913333,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "default: 1",
@@ -1316,17 +1316,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | default: 2", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | default: 2`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913334,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "default: 2",
@@ -1340,17 +1340,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | test counter: 1", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | test counter: 1`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913334,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "test counter: 1",
@@ -1364,17 +1364,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | test counter: 2", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | test counter: 2`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913334,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "test counter: 2",
@@ -1388,17 +1388,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | default: 3", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | default: 3`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913334,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "default: 3",
@@ -1412,17 +1412,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | clear", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | clear`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913334,
   "type": "clear",
   "helperType": null,
   "level": "log",
   "messageText": null,
@@ -1438,17 +1438,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | default: 4", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | default: 4`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913335,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "default: 4",
@@ -1462,17 +1462,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("console.count | test counter: 3", new ConsoleMessage({
+stubPreparedMessages.set(`console.count | test counter: 3`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "console-api",
   "timeStamp": 1511365913335,
   "type": "log",
   "helperType": null,
   "level": "log",
   "messageText": "test counter: 3",
@@ -1486,17 +1486,17 @@ stubPreparedMessages.set("console.count 
   },
   "groupId": null,
   "exceptionDocURL": null,
   "userProvidedStyles": [],
   "notes": null,
   "indent": 0
 }));
 
-stubPackets.set("console.log('foobar', 'test')", {
+stubPackets.set(`console.log('foobar', 'test')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "foobar",
       "test"
     ],
@@ -1512,17 +1512,17 @@ stubPackets.set("console.log('foobar', '
     "styles": [],
     "timeStamp": 1502884924471,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log(undefined)", {
+stubPackets.set(`console.log(undefined)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "undefined"
       }
@@ -1539,17 +1539,17 @@ stubPackets.set("console.log(undefined)"
     "styles": [],
     "timeStamp": 1502884924479,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.warn('danger, will robinson!')", {
+stubPackets.set(`console.warn('danger, will robinson!')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "danger, will robinson!"
     ],
     "columnNumber": 27,
@@ -1564,17 +1564,17 @@ stubPackets.set("console.warn('danger, w
     "styles": [],
     "timeStamp": 1502884924487,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log(NaN)", {
+stubPackets.set(`console.log(NaN)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "NaN"
       }
@@ -1591,17 +1591,17 @@ stubPackets.set("console.log(NaN)", {
     "styles": [],
     "timeStamp": 1502884924495,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log(null)", {
+stubPackets.set(`console.log(null)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "null"
       }
@@ -1618,17 +1618,17 @@ stubPackets.set("console.log(null)", {
     "styles": [],
     "timeStamp": 1502884924501,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('鼬')", {
+stubPackets.set(`console.log('鼬')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "鼬"
     ],
     "columnNumber": 27,
@@ -1643,17 +1643,17 @@ stubPackets.set("console.log('鼬')", {
     "styles": [],
     "timeStamp": 1502884924506,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.clear()", {
+stubPackets.set(`console.clear()`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 27,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -1666,17 +1666,17 @@ stubPackets.set("console.clear()", {
     "timeStamp": 1502884924512,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count('bar')", {
+stubPackets.set(`console.count('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 27,
@@ -1694,17 +1694,17 @@ stubPackets.set("console.count('bar')", 
     "timeStamp": 1502884924515,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.assert(false, {message: 'foobar'})", {
+stubPackets.set(`console.assert(false, {message: 'foobar'})`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "object",
         "actor": "server1.conn0.child1/obj30",
@@ -1750,17 +1750,17 @@ stubPackets.set("console.assert(false, {
         "lineNumber": 1
       }
     ],
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('hello \nfrom \rthe \"string world!')", {
+stubPackets.set(`console.log('hello \nfrom \rthe \"string world!')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "hello \nfrom \rthe \"string world!"
     ],
     "columnNumber": 27,
@@ -1775,17 +1775,17 @@ stubPackets.set("console.log('hello \nfr
     "styles": [],
     "timeStamp": 1502884924528,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('úṇĩçödê țĕșť')", {
+stubPackets.set(`console.log('úṇĩçödê țĕșť')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "úṇĩçödê țĕșť"
     ],
     "columnNumber": 27,
@@ -1800,17 +1800,17 @@ stubPackets.set("console.log('úṇĩçödê țĕșť')", {
     "styles": [],
     "timeStamp": 1502884924586,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.dirxml(window)", {
+stubPackets.set(`console.dirxml(window)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "object",
         "actor": "server1.conn0.child1/obj31",
@@ -1837,17 +1837,17 @@ stubPackets.set("console.dirxml(window)"
     "timeStamp": 1502884924596,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('myarray', ['red', 'green', 'blue'])", {
+stubPackets.set(`console.log('myarray', ['red', 'green', 'blue'])`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "myarray",
       {
         "type": "object",
@@ -1880,17 +1880,17 @@ stubPackets.set("console.log('myarray', 
     "styles": [],
     "timeStamp": 1502884924604,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('myregex', /a.b.c/)", {
+stubPackets.set(`console.log('myregex', /a.b.c/)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "myregex",
       {
         "type": "object",
@@ -1915,17 +1915,17 @@ stubPackets.set("console.log('myregex', 
     "styles": [],
     "timeStamp": 1502884924610,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.table(['red', 'green', 'blue']);", {
+stubPackets.set(`console.table(['red', 'green', 'blue']);`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "object",
         "actor": "server1.conn0.child1/obj34",
@@ -1957,17 +1957,17 @@ stubPackets.set("console.table(['red', '
     "timeStamp": 1502884924612,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('myobject', {red: 'redValue', green: 'greenValue', blue: 'blueValue'});", {
+stubPackets.set(`console.log('myobject', {red: 'redValue', green: 'greenValue', blue: 'blueValue'});`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "myobject",
       {
         "type": "object",
@@ -2018,17 +2018,17 @@ stubPackets.set("console.log('myobject',
     "styles": [],
     "timeStamp": 1502884924614,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.debug('debug message');", {
+stubPackets.set(`console.debug('debug message');`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "debug message"
     ],
     "columnNumber": 27,
@@ -2043,17 +2043,17 @@ stubPackets.set("console.debug('debug me
     "styles": [],
     "timeStamp": 1502884924621,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.info('info message');", {
+stubPackets.set(`console.info('info message');`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "info message"
     ],
     "columnNumber": 27,
@@ -2068,17 +2068,17 @@ stubPackets.set("console.info('info mess
     "styles": [],
     "timeStamp": 1502884924625,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.error('error message');", {
+stubPackets.set(`console.error('error message');`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "error message"
     ],
     "columnNumber": 27,
@@ -2101,17 +2101,17 @@ stubPackets.set("console.error('error me
         "lineNumber": 1
       }
     ],
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('mymap')", {
+stubPackets.set(`console.log('mymap')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "mymap",
       {
         "type": "object",
@@ -2149,17 +2149,17 @@ stubPackets.set("console.log('mymap')", 
     "styles": [],
     "timeStamp": 1502884924631,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log('myset')", {
+stubPackets.set(`console.log('myset')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "myset",
       {
         "type": "object",
@@ -2191,17 +2191,17 @@ stubPackets.set("console.log('myset')", 
     "styles": [],
     "timeStamp": 1502884924746,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.trace()", {
+stubPackets.set(`console.trace()`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 3,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2234,17 +2234,17 @@ stubPackets.set("console.trace()", {
       }
     ],
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.time('bar')", {
+stubPackets.set(`console.time('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2261,17 +2261,17 @@ stubPackets.set("console.time('bar')", {
       "name": "bar"
     },
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("timerAlreadyExists", {
+stubPackets.set(`timerAlreadyExists`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2289,17 +2289,17 @@ stubPackets.set("timerAlreadyExists", {
       "name": "bar"
     },
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.timeEnd('bar')", {
+stubPackets.set(`console.timeEnd('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2317,17 +2317,17 @@ stubPackets.set("console.timeEnd('bar')"
       "name": "bar"
     },
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("timerDoesntExist", {
+stubPackets.set(`timerDoesntExist`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2345,17 +2345,17 @@ stubPackets.set("timerDoesntExist", {
       "name": "bar"
     },
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.table('bar')", {
+stubPackets.set(`console.table('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2370,17 +2370,17 @@ stubPackets.set("console.table('bar')", 
     "timeStamp": 1502884924801,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.table(['a', 'b', 'c'])", {
+stubPackets.set(`console.table(['a', 'b', 'c'])`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "object",
         "actor": "server1.conn0.child1/obj39",
@@ -2412,17 +2412,17 @@ stubPackets.set("console.table(['a', 'b'
     "timeStamp": 1502884924859,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.group('bar')", {
+stubPackets.set(`console.group('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "bar"
     ],
     "columnNumber": 1,
@@ -2437,17 +2437,17 @@ stubPackets.set("console.group('bar')", 
     "styles": [],
     "timeStamp": 1502884924863,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupEnd('bar')", {
+stubPackets.set(`console.groupEnd('bar')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2460,17 +2460,17 @@ stubPackets.set("console.groupEnd('bar')
     "timeStamp": 1502884924864,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupCollapsed('foo')", {
+stubPackets.set(`console.groupCollapsed('foo')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "foo"
     ],
     "columnNumber": 1,
@@ -2485,17 +2485,17 @@ stubPackets.set("console.groupCollapsed(
     "styles": [],
     "timeStamp": 1502884924870,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupEnd('foo')", {
+stubPackets.set(`console.groupEnd('foo')`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2508,17 +2508,17 @@ stubPackets.set("console.groupEnd('foo')
     "timeStamp": 1502884924871,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.group()", {
+stubPackets.set(`console.group()`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2531,17 +2531,17 @@ stubPackets.set("console.group()", {
     "styles": [],
     "timeStamp": 1502884924878,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupEnd()", {
+stubPackets.set(`console.groupEnd()`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2554,17 +2554,17 @@ stubPackets.set("console.groupEnd()", {
     "timeStamp": 1502884924879,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.log(%cfoobar)", {
+stubPackets.set(`console.log(%cfoobar)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "foo",
       "bar"
     ],
@@ -2583,17 +2583,17 @@ stubPackets.set("console.log(%cfoobar)",
     ],
     "timeStamp": 1502884924883,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.group(%cfoo%cbar)", {
+stubPackets.set(`console.group(%cfoo%cbar)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "foo",
       "bar"
     ],
@@ -2612,17 +2612,17 @@ stubPackets.set("console.group(%cfoo%cba
     ],
     "timeStamp": 1502884924887,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupEnd(%cfoo%cbar)", {
+stubPackets.set(`console.groupEnd(%cfoo%cbar)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2635,17 +2635,17 @@ stubPackets.set("console.groupEnd(%cfoo%
     "timeStamp": 1502884924887,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupCollapsed(%cfoo%cbaz)", {
+stubPackets.set(`console.groupCollapsed(%cfoo%cbaz)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "foo",
       "baz"
     ],
@@ -2664,17 +2664,17 @@ stubPackets.set("console.groupCollapsed(
     ],
     "timeStamp": 1502884924892,
     "timer": null,
     "workerType": "none",
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.groupEnd(%cfoo%cbaz)", {
+stubPackets.set(`console.groupEnd(%cfoo%cbaz)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 1,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2687,17 +2687,17 @@ stubPackets.set("console.groupEnd(%cfoo%
     "timeStamp": 1502884924893,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.dir({C, M, Y, K})", {
+stubPackets.set(`console.dir({C, M, Y, K})`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       {
         "type": "object",
         "actor": "server1.conn0.child1/obj40",
@@ -2753,17 +2753,17 @@ stubPackets.set("console.dir({C, M, Y, K
     "timeStamp": 1502884924899,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | default: 1", {
+stubPackets.set(`console.count | default: 1`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "default"
     ],
     "columnNumber": 5,
@@ -2781,17 +2781,17 @@ stubPackets.set("console.count | default
     "timeStamp": 1511365913333,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | default: 2", {
+stubPackets.set(`console.count | default: 2`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "default"
     ],
     "columnNumber": 5,
@@ -2809,17 +2809,17 @@ stubPackets.set("console.count | default
     "timeStamp": 1511365913334,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | test counter: 1", {
+stubPackets.set(`console.count | test counter: 1`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "test counter"
     ],
     "columnNumber": 5,
@@ -2837,17 +2837,17 @@ stubPackets.set("console.count | test co
     "timeStamp": 1511365913334,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | test counter: 2", {
+stubPackets.set(`console.count | test counter: 2`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "test counter"
     ],
     "columnNumber": 5,
@@ -2865,17 +2865,17 @@ stubPackets.set("console.count | test co
     "timeStamp": 1511365913334,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | default: 3", {
+stubPackets.set(`console.count | default: 3`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "default"
     ],
     "columnNumber": 5,
@@ -2893,17 +2893,17 @@ stubPackets.set("console.count | default
     "timeStamp": 1511365913334,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | clear", {
+stubPackets.set(`console.count | clear`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [],
     "columnNumber": 5,
     "counter": null,
     "filename": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
@@ -2916,17 +2916,17 @@ stubPackets.set("console.count | clear",
     "timeStamp": 1511365913334,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | default: 4", {
+stubPackets.set(`console.count | default: 4`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "default"
     ],
     "columnNumber": 5,
@@ -2944,17 +2944,17 @@ stubPackets.set("console.count | default
     "timeStamp": 1511365913335,
     "timer": null,
     "workerType": "none",
     "styles": [],
     "category": "webdev"
   }
 });
 
-stubPackets.set("console.count | test counter: 3", {
+stubPackets.set(`console.count | test counter: 3`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "consoleAPICall",
   "message": {
     "addonId": "",
     "arguments": [
       "test counter"
     ],
     "columnNumber": 5,
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/cssMessage.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/cssMessage.js
@@ -8,17 +8,17 @@
  * THIS FILE IS AUTOGENERATED. DO NOT MODIFY BY HAND. RUN TESTS IN FIXTURES/ TO UPDATE.
  */
 
 const { ConsoleMessage } =
   require("devtools/client/webconsole/new-console-output/types");
 
 let stubPreparedMessages = new Map();
 let stubPackets = new Map();
-stubPreparedMessages.set("Unknown property ‘such-unknown-property’.  Declaration dropped.", new ConsoleMessage({
+stubPreparedMessages.set(`Unknown property ‘such-unknown-property’.  Declaration dropped.`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "css",
   "timeStamp": 1479159920406,
   "type": "log",
   "helperType": null,
   "level": "warn",
   "messageText": "Unknown property ‘such-unknown-property’.  Declaration dropped.",
@@ -31,17 +31,17 @@ stubPreparedMessages.set("Unknown property ‘such-unknown-property’.  Declaration dropped.", new ConsoleMessage({
     "column": 25
   },
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("Error in parsing value for ‘padding-top’.  Declaration dropped.", new ConsoleMessage({
+stubPreparedMessages.set(`Error in parsing value for ‘padding-top’.  Declaration dropped.`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "css",
   "timeStamp": 1479159920465,
   "type": "log",
   "helperType": null,
   "level": "warn",
   "messageText": "Error in parsing value for ‘padding-top’.  Declaration dropped.",
@@ -54,17 +54,17 @@ stubPreparedMessages.set("Error in parsing value for ‘padding-top’.  Declaration dropped.", new ConsoleMessage({
     "column": 16
   },
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPackets.set("Unknown property ‘such-unknown-property’.  Declaration dropped.", {
+stubPackets.set(`Unknown property ‘such-unknown-property’.  Declaration dropped.`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "pageError",
   "pageError": {
     "errorMessage": "Unknown property ‘such-unknown-property’.  Declaration dropped.",
     "errorMessageName": "",
     "sourceName": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-css-message.html",
     "lineText": "",
     "lineNumber": 3,
@@ -77,17 +77,17 @@ stubPackets.set("Unknown property ‘such-unknown-property’.  Declaration dropped.", {
     "strict": false,
     "info": false,
     "private": false,
     "stacktrace": null,
     "notes": null
   }
 });
 
-stubPackets.set("Error in parsing value for ‘padding-top’.  Declaration dropped.", {
+stubPackets.set(`Error in parsing value for ‘padding-top’.  Declaration dropped.`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "pageError",
   "pageError": {
     "errorMessage": "Error in parsing value for ‘padding-top’.  Declaration dropped.",
     "errorMessageName": "",
     "sourceName": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-css-message.html",
     "lineText": "",
     "lineNumber": 3,
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/evaluationResult.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/evaluationResult.js
@@ -8,17 +8,17 @@
  * THIS FILE IS AUTOGENERATED. DO NOT MODIFY BY HAND. RUN TESTS IN FIXTURES/ TO UPDATE.
  */
 
 const { ConsoleMessage } =
   require("devtools/client/webconsole/new-console-output/types");
 
 let stubPreparedMessages = new Map();
 let stubPackets = new Map();
-stubPreparedMessages.set("new Date(0)", new ConsoleMessage({
+stubPreparedMessages.set(`new Date(0)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1479159921364,
   "type": "result",
   "helperType": null,
   "level": "log",
   "parameters": [
@@ -39,17 +39,17 @@ stubPreparedMessages.set("new Date(0)", 
   "stacktrace": null,
   "frame": null,
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("asdf()", new ConsoleMessage({
+stubPreparedMessages.set(`asdf()`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1479159921377,
   "type": "result",
   "helperType": null,
   "level": "error",
   "messageText": "ReferenceError: asdf is not defined",
@@ -67,17 +67,17 @@ stubPreparedMessages.set("asdf()", new C
   },
   "groupId": null,
   "exceptionDocURL": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Not_defined?utm_source=mozilla&utm_medium=firefox-console-errors&utm_campaign=default",
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("1 + @", new ConsoleMessage({
+stubPreparedMessages.set(`1 + @`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1479159921399,
   "type": "result",
   "helperType": null,
   "level": "error",
   "messageText": "SyntaxError: illegal character",
@@ -95,17 +95,17 @@ stubPreparedMessages.set("1 + @", new Co
   },
   "groupId": null,
   "exceptionDocURL": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Illegal_character?utm_source=mozilla&utm_medium=firefox-console-errors&utm_campaign=default",
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("inspect({a: 1})", new ConsoleMessage({
+stubPreparedMessages.set(`inspect({a: 1})`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1499776070751,
   "type": "result",
   "helperType": "inspectObject",
   "level": "log",
   "parameters": [
@@ -138,17 +138,17 @@ stubPreparedMessages.set("inspect({a: 1}
   "stacktrace": null,
   "frame": null,
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("cd(document)", new ConsoleMessage({
+stubPreparedMessages.set(`cd(document)`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1510650094657,
   "type": "result",
   "helperType": "error",
   "level": "error",
   "messageText": "Cannot cd() to the given window. Invalid argument.",
@@ -161,17 +161,17 @@ stubPreparedMessages.set("cd(document)",
   "stacktrace": null,
   "frame": null,
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("longString message Error", new ConsoleMessage({
+stubPreparedMessages.set(`longString message Error`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1493108241073,
   "type": "result",
   "helperType": null,
   "level": "error",
   "messageText": {
@@ -189,17 +189,63 @@ stubPreparedMessages.set("longString mes
   "stacktrace": null,
   "frame": null,
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPackets.set("new Date(0)", {
+stubPreparedMessages.set(`eval throw ""`, new ConsoleMessage({
+  "id": "1",
+  "allowRepeating": true,
+  "source": "javascript",
+  "timeStamp": 1517990289517,
+  "type": "result",
+  "helperType": null,
+  "level": "error",
+  "messageText": "Error",
+  "parameters": [
+    {
+      "type": "undefined"
+    }
+  ],
+  "repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"Error\",\"parameters\":[{\"type\":\"undefined\"}],\"source\":\"javascript\",\"type\":\"result\",\"userProvidedStyles\":null}",
+  "stacktrace": null,
+  "frame": null,
+  "groupId": null,
+  "userProvidedStyles": null,
+  "notes": null,
+  "indent": 0
+}));
+
+stubPreparedMessages.set(`eval throw "tomato"`, new ConsoleMessage({
+  "id": "1",
+  "allowRepeating": true,
+  "source": "javascript",
+  "timeStamp": 1517990289520,
+  "type": "result",
+  "helperType": null,
+  "level": "error",
+  "messageText": "Error: tomato",
+  "parameters": [
+    {
+      "type": "undefined"
+    }
+  ],
+  "repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"Error: tomato\",\"parameters\":[{\"type\":\"undefined\"}],\"source\":\"javascript\",\"type\":\"result\",\"userProvidedStyles\":null}",
+  "stacktrace": null,
+  "frame": null,
+  "groupId": null,
+  "userProvidedStyles": null,
+  "notes": null,
+  "indent": 0
+}));
+
+stubPackets.set(`new Date(0)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "new Date(0)",
   "result": {
     "type": "object",
     "actor": "server1.conn0.child1/obj30",
     "class": "Date",
     "extensible": true,
     "frozen": false,
@@ -211,17 +257,17 @@ stubPackets.set("new Date(0)", {
   },
   "timestamp": 1479159921364,
   "exception": null,
   "frame": null,
   "helperResult": null,
   "notes": null
 });
 
-stubPackets.set("asdf()", {
+stubPackets.set(`asdf()`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "asdf()",
   "result": {
     "type": "undefined"
   },
   "timestamp": 1479159921377,
   "exception": {
     "type": "object",
@@ -247,17 +293,17 @@ stubPackets.set("asdf()", {
     "source": "debugger eval code",
     "line": 1,
     "column": 1
   },
   "helperResult": null,
   "notes": null
 });
 
-stubPackets.set("1 + @", {
+stubPackets.set(`1 + @`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "1 + @",
   "result": {
     "type": "undefined"
   },
   "timestamp": 1479159921399,
   "exception": {
     "type": "object",
@@ -283,17 +329,17 @@ stubPackets.set("1 + @", {
     "source": "debugger eval code",
     "line": 1,
     "column": 4
   },
   "helperResult": null,
   "notes": null
 });
 
-stubPackets.set("inspect({a: 1})", {
+stubPackets.set(`inspect({a: 1})`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "inspect({a: 1})",
   "result": {
     "type": "undefined"
   },
   "timestamp": 1499776070751,
   "exception": null,
   "frame": null,
@@ -323,33 +369,33 @@ stubPackets.set("inspect({a: 1})", {
         "ownSymbolsLength": 0,
         "safeGetterValues": {}
       }
     }
   },
   "notes": null
 });
 
-stubPackets.set("cd(document)", {
+stubPackets.set(`cd(document)`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "cd(document)",
   "result": {
     "type": "undefined"
   },
   "timestamp": 1510650094657,
   "exception": null,
   "frame": null,
   "helperResult": {
     "type": "error",
     "message": "cdFunctionInvalidArgument"
   },
   "notes": null
 });
 
-stubPackets.set("longString message Error", {
+stubPackets.set(`longString message Error`, {
   "from": "server1.conn0.child1/consoleActor2",
   "input": "throw new Error(\"Long error \".repeat(10000))",
   "result": {
     "type": "undefined"
   },
   "timestamp": 1493108241073,
   "exception": {
     "type": "object",
@@ -380,12 +426,40 @@ stubPackets.set("longString message Erro
     "length": 110007,
     "actor": "server1.conn0.child1/longString37"
   },
   "frame": null,
   "helperResult": null,
   "notes": null
 });
 
+stubPackets.set(`eval throw ""`, {
+  "from": "server1.conn0.child1/consoleActor2",
+  "input": "throw \"\"",
+  "result": {
+    "type": "undefined"
+  },
+  "timestamp": 1517990289517,
+  "exception": "",
+  "exceptionMessage": "",
+  "frame": null,
+  "helperResult": null,
+  "notes": null
+});
+
+stubPackets.set(`eval throw "tomato"`, {
+  "from": "server1.conn0.child1/consoleActor2",
+  "input": "throw \"tomato\"",
+  "result": {
+    "type": "undefined"
+  },
+  "timestamp": 1517990289520,
+  "exception": "tomato",
+  "exceptionMessage": "tomato",
+  "frame": null,
+  "helperResult": null,
+  "notes": null
+});
+
 module.exports = {
   stubPreparedMessages,
   stubPackets,
 };
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/networkEvent.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/networkEvent.js
@@ -242,17 +242,17 @@ stubPreparedMessages.set("XHR POST reque
     "host": "example.com",
     "scheme": "http",
     "unicodeUrl": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
     "isLocal": null
   },
   "method": "POST"
 }));
 
-stubPackets.set("GET request", {
+stubPackets.set(`GET request`, {
   "_type": "NetworkEvent",
   "timeStamp": 1487022056850,
   "node": null,
   "actor": "server1.conn0.child1/netEvent30",
   "discardRequestBody": true,
   "discardResponseBody": true,
   "startedDateTime": "2017-02-13T21:40:56.850Z",
   "request": {
@@ -267,17 +267,17 @@ stubPackets.set("GET request", {
   },
   "response": {},
   "timings": {},
   "updates": [],
   "private": false,
   "from": "server1.conn0.child1/consoleActor2"
 });
 
-stubPackets.set("GET request update", {
+stubPackets.set(`GET request update`, {
   "networkInfo": {
     "_type": "NetworkEvent",
     "actor": "server1.conn0.child1/netEvent30",
     "request": {
       "url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
       "method": "GET",
       "headersSize": 489
     },
@@ -293,17 +293,17 @@ stubPackets.set("GET request update", {
       },
       "bodySize": 904,
       "transferredSize": 904
     },
     "totalTime": 16
   }
 });
 
-stubPackets.set("XHR GET request", {
+stubPackets.set(`XHR GET request`, {
   "_type": "NetworkEvent",
   "timeStamp": 1487022057746,
   "node": null,
   "actor": "server1.conn1.child1/netEvent30",
   "discardRequestBody": true,
   "discardResponseBody": true,
   "startedDateTime": "2017-02-13T21:40:57.746Z",
   "request": {
@@ -318,17 +318,17 @@ stubPackets.set("XHR GET request", {
   },
   "response": {},
   "timings": {},
   "updates": [],
   "private": false,
   "from": "server1.conn1.child1/consoleActor2"
 });
 
-stubPackets.set("XHR GET request update", {
+stubPackets.set(`XHR GET request update`, {
   "networkInfo": {
     "_type": "NetworkEvent",
     "actor": "server1.conn0.child1/netEvent31",
     "request": {
       "url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
       "method": "GET",
       "headersSize": 489
     },
@@ -344,17 +344,17 @@ stubPackets.set("XHR GET request update"
       },
       "bodySize": 904,
       "transferredSize": 904
     },
     "totalTime": 16
   }
 });
 
-stubPackets.set("XHR POST request", {
+stubPackets.set(`XHR POST request`, {
   "_type": "NetworkEvent",
   "timeStamp": 1487022058414,
   "node": null,
   "actor": "server1.conn2.child1/netEvent30",
   "discardRequestBody": true,
   "discardResponseBody": true,
   "startedDateTime": "2017-02-13T21:40:58.414Z",
   "request": {
@@ -369,17 +369,17 @@ stubPackets.set("XHR POST request", {
   },
   "response": {},
   "timings": {},
   "updates": [],
   "private": false,
   "from": "server1.conn2.child1/consoleActor2"
 });
 
-stubPackets.set("XHR POST request update", {
+stubPackets.set(`XHR POST request update`, {
   "networkInfo": {
     "_type": "NetworkEvent",
     "actor": "server1.conn0.child1/netEvent32",
     "request": {
       "url": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/inexistent.html",
       "method": "POST",
       "headersSize": 509
     },
--- a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/pageError.js
+++ b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/pageError.js
@@ -8,17 +8,17 @@
  * THIS FILE IS AUTOGENERATED. DO NOT MODIFY BY HAND. RUN TESTS IN FIXTURES/ TO UPDATE.
  */
 
 const { ConsoleMessage } =
   require("devtools/client/webconsole/new-console-output/types");
 
 let stubPreparedMessages = new Map();
 let stubPackets = new Map();
-stubPreparedMessages.set("ReferenceError: asdf is not defined", new ConsoleMessage({
+stubPreparedMessages.set(`ReferenceError: asdf is not defined`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1476573167137,
   "type": "log",
   "helperType": null,
   "level": "error",
   "messageText": "ReferenceError: asdf is not defined",
@@ -63,17 +63,17 @@ stubPreparedMessages.set("ReferenceError
   },
   "groupId": null,
   "exceptionDocURL": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Not_defined?utm_source=mozilla&utm_medium=firefox-console-errors&utm_campaign=default",
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPreparedMessages.set("SyntaxError: redeclaration of let a", new ConsoleMessage({
+stubPreparedMessages.set(`SyntaxError: redeclaration of let a`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1487992945524,
   "type": "log",
   "helperType": null,
   "level": "error",
   "messageText": "SyntaxError: redeclaration of let a",
@@ -108,17 +108,17 @@ stubPreparedMessages.set("SyntaxError: r
         "line": 2,
         "column": 6
       }
     }
   ],
   "indent": 0
 }));
 
-stubPreparedMessages.set("TypeError longString message", new ConsoleMessage({
+stubPreparedMessages.set(`TypeError longString message`, new ConsoleMessage({
   "id": "1",
   "allowRepeating": true,
   "source": "javascript",
   "timeStamp": 1493109507061,
   "type": "log",
   "helperType": null,
   "level": "error",
   "messageText": {
@@ -155,17 +155,55 @@ stubPreparedMessages.set("TypeError long
     "column": 7
   },
   "groupId": null,
   "userProvidedStyles": null,
   "notes": null,
   "indent": 0
 }));
 
-stubPackets.set("ReferenceError: asdf is not defined", {
+stubPreparedMessages.set(`throw ""`, new ConsoleMessage({
+  "id": "1",
+  "allowRepeating": true,
+  "source": "javascript",
+  "timeStamp": 1517942398629,
+  "type": "log",
+  "helperType": null,
+  "level": "error",
+  "messageText": "uncaught exception: ",
+  "parameters": null,
+  "repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"uncaught exception: \",\"parameters\":null,\"source\":\"javascript\",\"type\":\"log\",\"userProvidedStyles\":null}",
+  "stacktrace": null,
+  "frame": null,
+  "groupId": null,
+  "userProvidedStyles": null,
+  "notes": null,
+  "indent": 0
+}));
+
+stubPreparedMessages.set(`throw "tomato"`, new ConsoleMessage({
+  "id": "1",
+  "allowRepeating": true,
+  "source": "javascript",
+  "timeStamp": 1517942398637,
+  "type": "log",
+  "helperType": null,
+  "level": "error",
+  "messageText": "uncaught exception: tomato",
+  "parameters": null,
+  "repeatId": "{\"frame\":null,\"groupId\":null,\"indent\":0,\"level\":\"error\",\"messageText\":\"uncaught exception: tomato\",\"parameters\":null,\"source\":\"javascript\",\"type\":\"log\",\"userProvidedStyles\":null}",
+  "stacktrace": null,
+  "frame": null,
+  "groupId": null,
+  "userProvidedStyles": null,
+  "notes": null,
+  "indent": 0
+}));
+
+stubPackets.set(`ReferenceError: asdf is not defined`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "pageError",
   "pageError": {
     "errorMessage": "ReferenceError: asdf is not defined",
     "errorMessageName": "JSMSG_NOT_DEFINED",
     "exceptionDocURL": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Not_defined?utm_source=mozilla&utm_medium=firefox-console-errors&utm_campaign=default",
     "sourceName": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
     "lineText": "",
@@ -210,17 +248,17 @@ stubPackets.set("ReferenceError: asdf is
         "columnNumber": 20,
         "functionName": null
       }
     ],
     "notes": null
   }
 });
 
-stubPackets.set("SyntaxError: redeclaration of let a", {
+stubPackets.set(`SyntaxError: redeclaration of let a`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "pageError",
   "pageError": {
     "errorMessage": "SyntaxError: redeclaration of let a",
     "errorMessageName": "JSMSG_REDECLARED_VAR",
     "sourceName": "http://example.com/browser/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/test-console-api.html",
     "lineText": "  let a, a;\n",
     "lineNumber": 2,
@@ -255,17 +293,17 @@ stubPackets.set("SyntaxError: redeclarat
           "line": 2,
           "column": 6
         }
       }
     ]
   }
 });
 
-stubPackets.set("TypeError longString message", {
+stubPackets.set(`TypeError longString message`, {
   "from": "server1.conn0.child1/consoleActor2",
   "type": "pageError",
   "pageError": {
     "errorMessage": {
       "type": "longString",
       "initial": "Error: Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Long error Lon",
       "length": 110007,
       "actor": "server1.conn0.child1/longString30"
@@ -302,12 +340,58 @@ stubPackets.set("TypeError longString me
         "columnNumber": 20,
         "functionName": null
       }
     ],
     "notes": null
   }
 });
 
+stubPackets.set(`throw ""`, {
+  "from": "server1.conn0.child1/consoleActor2",
+  "type": "pageError",
+  "pageError": {
+    "errorMessage": "uncaught exception: ",
+    "errorMessageName": "JSMSG_UNCAUGHT_EXCEPTION",
+    "sourceName": "",
+    "lineText": "",
+    "lineNumber": 0,
+    "columnNumber": 0,
+    "category": "content javascript",
+    "timeStamp": 1517942398629,
+    "warning": false,
+    "error": false,
+    "exception": false,
+    "strict": false,
+    "info": false,
+    "private": false,
+    "stacktrace": null,
+    "notes": null
+  }
+});
+
+stubPackets.set(`throw "tomato"`, {
+  "from": "server1.conn0.child1/consoleActor2",
+  "type": "pageError",
+  "pageError": {
+    "errorMessage": "uncaught exception: tomato",
+    "errorMessageName": "JSMSG_UNCAUGHT_EXCEPTION",
+    "sourceName": "",
+    "lineText": "",
+    "lineNumber": 0,
+    "columnNumber": 0,
+    "category": "content javascript",
+    "timeStamp": 1517942398637,
+    "warning": false,
+    "error": false,
+    "exception": false,
+    "strict": false,
+    "info": false,
+    "private": false,
+    "stacktrace": null,
+    "notes": null
+  }
+});
+
 module.exports = {
   stubPreparedMessages,
   stubPackets,
 };
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini
@@ -207,16 +207,17 @@ skip-if = true #	Bug 1403188
 [browser_jsterm_autocomplete_inside_text.js]
 [browser_jsterm_autocomplete_native_getters.js]
 [browser_jsterm_autocomplete_nav_and_tab_key.js]
 [browser_jsterm_autocomplete_return_key_no_selection.js]
 [browser_jsterm_autocomplete_return_key.js]
 [browser_jsterm_autocomplete-properties-with-non-alphanumeric-names.js]
 [browser_jsterm_completion.js]
 [browser_jsterm_copy_command.js]
+[browser_jsterm_ctrl_a_select_all.js]
 [browser_jsterm_ctrl_key_nav.js]
 skip-if = os != 'mac' # The tested ctrl+key shortcuts are OSX only
 [browser_jsterm_dollar.js]
 [browser_jsterm_helper_clear.js]
 [browser_jsterm_history.js]
 [browser_jsterm_history_persist.js]
 [browser_jsterm_history_nav.js]
 [browser_jsterm_input_expansion.js]
@@ -334,17 +335,16 @@ subsuite = clipboard
 [browser_webconsole_repeated_messages_accuracy.js]
 skip-if = true #	Bug 1403450
 [browser_webconsole_sandbox_update_after_navigation.js]
 [browser_webconsole_script_errordoc_urls.js]
 skip-if = true #	Bug 1403454
 # old console skip-if = e10s # Bug 1042253 - webconsole tests disabled with e10s
 [browser_webconsole_scroll.js]
 [browser_webconsole_select_all.js]
-skip-if = true #	Bug 1404359
 [browser_webconsole_show_subresource_security_errors.js]
 [browser_webconsole_shows_reqs_in_netmonitor.js]
 [browser_webconsole_sourcemap_css.js]
 [browser_webconsole_sourcemap_error.js]
 [browser_webconsole_sourcemap_invalid.js]
 [browser_webconsole_sourcemap_nosource.js]
 [browser_webconsole_split.js]
 [browser_webconsole_split_escape_key.js]
copy from devtools/client/webconsole/test/browser_webconsole_bug_623749_ctrl_a_select_all_winnt.js
copy to devtools/client/webconsole/new-console-output/test/mochitest/browser_jsterm_ctrl_a_select_all.js
--- a/devtools/client/webconsole/test/browser_webconsole_bug_623749_ctrl_a_select_all_winnt.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_jsterm_ctrl_a_select_all.js
@@ -1,32 +1,37 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
-// Test for https://bugzilla.mozilla.org/show_bug.cgi?id=623749
-// Map Control + A to Select All, In the web console input, on Windows
+// Map Control + A to Select All, In the web console input
+
+/* import-globals-from head.js */
 
 "use strict";
 
-const TEST_URI = "data:text/html;charset=utf-8,Test console for bug 623749";
+const TEST_URI = "data:text/html;charset=utf-8,Test console select all";
 
-add_task(function* () {
-  yield loadTab(TEST_URI);
-
-  let hud = yield openConsole();
+add_task(async function testCtrlA() {
+  let hud = await openNewTabAndConsole(TEST_URI);
 
   let jsterm = hud.jsterm;
   jsterm.setInputValue("Ignore These Four Words");
   let inputNode = jsterm.inputNode;
 
-  // Test select all with Control + A.
-  EventUtils.synthesizeKey("a", { ctrlKey: true });
+  // Test select all with (cmd|control) + a.
+  EventUtils.synthesizeKey("a", { accelKey: true });
+
   let inputLength = inputNode.selectionEnd - inputNode.selectionStart;
   is(inputLength, jsterm.getInputValue().length, "Select all of input");
 
-  // Test do nothing on Control + E.
-  jsterm.setInputValue("Ignore These Four Words");
-  inputNode.selectionStart = 0;
-  EventUtils.synthesizeKey("e", { ctrlKey: true });
-  is(inputNode.selectionStart, 0, "Control + E does not move to end of input");
+  // (cmd|control) + e cannot be disabled on Linux so skip this section on that
+  // OS.
+  if (Services.appinfo.OS !== "Linux") {
+   // Test do nothing on Control + E.
+    jsterm.setInputValue("Ignore These Four Words");
+    inputNode.selectionStart = 0;
+    EventUtils.synthesizeKey("e", { accelKey: true });
+    is(inputNode.selectionStart, 0,
+      "control|cmd + e does not move to end of input");
+  }
 });
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_output_copy.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_output_copy.js
@@ -1,34 +1,32 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
+/* import-globals-from head.js */
+
 "use strict";
 
 // Test copy to clipboard on the console output. See Bug 587617.
 const TEST_URI = "data:text/html,Test copy to clipboard on the console output";
 
 add_task(async function () {
   let hud = await openNewTabAndConsole(TEST_URI);
 
   const smokeMessage = "Hello world!";
   let onMessage = waitForMessage(hud, smokeMessage);
   ContentTask.spawn(gBrowser.selectedBrowser, smokeMessage, function (msg) {
     content.wrappedJSObject.console.log(msg);
   });
   const {node} = await onMessage;
   ok(true, "Message was logged");
 
-  const selection = node.ownerDocument.getSelection();
-  const range = document.createRange();
-  range.selectNodeContents(node);
-  selection.removeAllRanges();
-  selection.addRange(range);
+  let selection = selectNode(hud, node);
 
   const selectionString = selection.toString().trim();
   is(selectionString, smokeMessage, `selection has expected "${smokeMessage}" value`);
 
   await waitForClipboardPromise(
     () => {
       // The focus is on the JsTerm, so we need to blur it for the copy comand to work.
       node.ownerDocument.activeElement.blur();
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_output_copy_newlines.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_output_copy_newlines.js
@@ -1,13 +1,15 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
+/* import-globals-from head.js */
+
 "use strict";
 
 // Test that multiple messages are copied into the clipboard and that they are
 // separated by new lines. See bug 916997.
 const TEST_URI = "data:text/html,<meta charset=utf8>" +
   "Test copy multiple messages to clipboard";
 
 add_task(async function () {
@@ -19,21 +21,17 @@ add_task(async function () {
   ContentTask.spawn(gBrowser.selectedBrowser, messages, msgs => {
     msgs.forEach(msg => content.wrappedJSObject.console.log(msg));
   });
   const {node} = await onMessage;
   ok(node, "Messages were logged");
 
   // Select the whole output.
   const output = node.closest(".webconsole-output");
-  const selection = node.ownerDocument.getSelection();
-  const range = document.createRange();
-  range.selectNodeContents(output);
-  selection.removeAllRanges();
-  selection.addRange(range);
+  selectNode(hud, output);
 
   info("Wait for the clipboard to contain the text corresponding to all the messages");
   await waitForClipboardPromise(
     () => {
       // The focus is on the JsTerm, so we need to blur it for the copy comand to work.
       output.ownerDocument.activeElement.blur();
       goDoCommand("cmd_copy");
     },
--- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_select_all.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_select_all.js
@@ -1,86 +1,80 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
-// See Bug 586388.
+// Test that the global Firefox "Select All" functionality (e.g. Edit >
+// Select All) works properly in the Web Console.
+
+/* import-globals-from head.js */
 
 const TEST_URI = "http://example.com/";
 
-add_task(function* () {
-  yield loadTab(TEST_URI);
-
-  let hud = yield openConsole();
-  yield testSelectionWhenMovingBetweenBoxes(hud);
-  performTestsAfterOutput(hud);
+add_task(async function testSelectAll() {
+  let hud = await openNewTabAndConsole(TEST_URI);
+  await testSelectionWhenMovingBetweenBoxes(hud);
+  testBrowserMenuSelectAll(hud);
+  await testContextMenuSelectAll(hud);
 });
 
-var testSelectionWhenMovingBetweenBoxes = Task.async(function* (hud) {
+async function testSelectionWhenMovingBetweenBoxes(hud) {
   let jsterm = hud.jsterm;
 
   // Fill the console with some output.
   jsterm.clearOutput();
-  yield jsterm.execute("1 + 2");
-  yield jsterm.execute("3 + 4");
-  yield jsterm.execute("5 + 6");
+  await jsterm.execute("1 + 2");
+  await waitFor(() => findMessage(hud, "3"));
+  await jsterm.execute("3 + 4");
+  await waitFor(() => findMessage(hud, "7"));
+  await jsterm.execute("5 + 6");
+  await waitFor(() => findMessage(hud, "11"));
+}
 
-  return waitForMessages({
-    webconsole: hud,
-    messages: [{
-      text: "3",
-      category: CATEGORY_OUTPUT,
-    },
-      {
-        text: "7",
-        category: CATEGORY_OUTPUT,
-      },
-      {
-        text: "11",
-        category: CATEGORY_OUTPUT,
-      }],
-  });
-});
+function testBrowserMenuSelectAll(hud) {
+  let { ui } = hud;
+  let outputContainer = ui.outputNode.querySelector(".webconsole-output");
 
-function performTestsAfterOutput(hud) {
-  let outputNode = hud.outputNode;
+  is(outputContainer.childNodes.length, 6,
+    "the output node contains the expected number of children");
 
-  ok(outputNode.childNodes.length >= 3, "the output node has children after " +
-     "executing some JavaScript");
+  // The focus is on the JsTerm, so we need to blur it for the copy comand to
+  // work.
+  outputContainer.ownerDocument.activeElement.blur();
 
   // Test that the global Firefox "Select All" functionality (e.g. Edit >
   // Select All) works properly in the Web Console.
-  let commandController = hud.ui._commandController;
-  ok(commandController != null, "the window has a command controller object");
-
-  commandController.selectAll();
-
-  let selectedCount = hud.ui.output.getSelectedMessages().length;
-  is(selectedCount, outputNode.childNodes.length,
-     "all console messages are selected after performing a regular browser " +
-     "select-all operation");
-
-  hud.iframeWindow.getSelection().removeAllRanges();
+  goDoCommand("cmd_selectAll");
 
-  // Test the context menu "Select All" (which has a different code path) works
-  // properly as well.
-  let contextMenuId = hud.ui.outputWrapper.getAttribute("context");
-  let contextMenu = hud.ui.document.getElementById(contextMenuId);
-  ok(contextMenu != null, "the output node has a context menu");
-
-  let selectAllItem = contextMenu.querySelector("*[command='cmd_selectAll']");
-  ok(selectAllItem != null,
-     "the context menu on the output node has a \"Select All\" item");
-
-  outputNode.focus();
-
-  selectAllItem.doCommand();
-
-  selectedCount = hud.ui.output.getSelectedMessages().length;
-  is(selectedCount, outputNode.childNodes.length,
-     "all console messages are selected after performing a select-all " +
-     "operation from the context menu");
-
+  checkMessagesSelected(outputContainer);
   hud.iframeWindow.getSelection().removeAllRanges();
 }
+
+// Test the context menu "Select All" (which has a different code path) works
+// properly as well.
+async function testContextMenuSelectAll(hud) {
+  let { ui } = hud;
+  let outputContainer = ui.outputNode.querySelector(".webconsole-output");
+  let contextMenu = await openContextMenu(hud, outputContainer);
+
+  let selectAllItem = contextMenu.querySelector("#console-menu-select");
+  ok(selectAllItem,
+     `the context menu on the output node has a "Select All" item`);
+
+  outputContainer.focus();
+  selectAllItem.click();
+
+  checkMessagesSelected(outputContainer);
+  hud.iframeWindow.getSelection().removeAllRanges();
+}
+
+function checkMessagesSelected(outputContainer) {
+  let selection = outputContainer.ownerDocument.getSelection();
+  let messages = outputContainer.querySelectorAll(".message");
+
+  for (let message of messages) {
+    let selected = selection.containsNode(message);
+    ok(selected, `Node containing text "${message.textContent}" was selected`);
+  }
+}
--- a/devtools/client/webconsole/new-console-output/test/mochitest/head.js
+++ b/devtools/client/webconsole/new-console-output/test/mochitest/head.js
@@ -545,8 +545,23 @@ async function openMessageInNetmonitor(t
 
   await waitUntil(() => {
     const selected = getSelectedRequest(store.getState());
     return selected && selected.url === url;
   });
 
   ok(true, "The attached url is correct.");
 }
+
+function selectNode(hud, node) {
+  let outputContainer = hud.ui.outputNode.querySelector(".webconsole-output");
+
+  // We must first blur the input or else we can't select anything.
+  outputContainer.ownerDocument.activeElement.blur();
+
+  let selection = outputContainer.ownerDocument.getSelection();
+  let range = document.createRange();
+  range.selectNodeContents(node);
+  selection.removeAllRanges();
+  selection.addRange(range);
+
+  return selection;
+}
--- a/devtools/client/webconsole/new-console-output/utils/messages.js
+++ b/devtools/client/webconsole/new-console-output/utils/messages.js
@@ -238,44 +238,51 @@ function transformNetworkEventPacket(pac
     method: networkEvent.request.method,
     updates: networkEvent.updates,
     cause: networkEvent.cause,
   });
 }
 
 function transformEvaluationResultPacket(packet) {
   let {
-    exceptionMessage: messageText,
+    exceptionMessage,
     exceptionDocURL,
+    exception,
     frame,
     result,
     helperResult,
     timestamp: timeStamp,
     notes,
   } = packet;
 
   const parameter = helperResult && helperResult.object
     ? helperResult.object
     : result;
 
   if (helperResult && helperResult.type === "error") {
     try {
-      messageText = l10n.getStr(helperResult.message);
+      exceptionMessage = l10n.getStr(helperResult.message);
     } catch (ex) {
-      messageText = helperResult.message;
+      exceptionMessage = helperResult.message;
     }
+  } else if (typeof exception === "string") {
+    // Wrap thrown strings in Error objects, so `throw "foo"` outputs "Error: foo"
+    exceptionMessage = new Error(exceptionMessage).toString();
   }
 
-  const level = messageText ? MESSAGE_LEVEL.ERROR : MESSAGE_LEVEL.LOG;
+  const level = typeof exceptionMessage !== "undefined" && exceptionMessage !== null
+    ? MESSAGE_LEVEL.ERROR
+    : MESSAGE_LEVEL.LOG;
+
   return new ConsoleMessage({
     source: MESSAGE_SOURCE.JAVASCRIPT,
     type: MESSAGE_TYPE.RESULT,
     helperType: helperResult ? helperResult.type : null,
     level,
-    messageText,
+    messageText: exceptionMessage,
     parameters: [parameter],
     exceptionDocURL,
     frame,
     timeStamp,
     notes,
   });
 }
 
--- a/devtools/server/actors/animation.js
+++ b/devtools/server/actors/animation.js
@@ -21,17 +21,16 @@
  * References:
  * - WebAnimation spec:
  *   http://drafts.csswg.org/web-animations/
  * - WebAnimation WebIDL files:
  *   /dom/webidl/Animation*.webidl
  */
 
 const {Cu, Ci} = require("chrome");
-const promise = require("promise");
 const protocol = require("devtools/shared/protocol");
 const {Actor} = protocol;
 const {animationPlayerSpec, animationsSpec} = require("devtools/shared/specs/animation");
 
 // Types of animations.
 const ANIMATION_TYPES = {
   CSS_ANIMATION: "cssanimation",
   CSS_TRANSITION: "csstransition",
@@ -808,64 +807,64 @@ exports.AnimationsActor = protocol.Actor
     // Until the WebAnimations API provides a way to play/pause via the document
     // timeline, we have to iterate through the whole DOM to find all players.
     for (let player of
          this.getAllAnimations(this.tabActor.window.document, true)) {
       player.pause();
       readyPromises.push(player.ready);
     }
     this.allAnimationsPaused = true;
-    return promise.all(readyPromises);
+    return Promise.all(readyPromises);
   },
 
   /**
    * Play all animations in the current tabActor's frames.
    * This method only returns when animations have left their pending states.
    */
   playAll: function () {
     let readyPromises = [];
     // Until the WebAnimations API provides a way to play/pause via the document
     // timeline, we have to iterate through the whole DOM to find all players.
     for (let player of
          this.getAllAnimations(this.tabActor.window.document, true)) {
       player.play();
       readyPromises.push(player.ready);
     }
     this.allAnimationsPaused = false;
-    return promise.all(readyPromises);
+    return Promise.all(readyPromises);
   },
 
   toggleAll: function () {
     if (this.allAnimationsPaused) {
       return this.playAll();
     }
     return this.pauseAll();
   },
 
   /**
    * Toggle (play/pause) several animations at the same time.
    * @param {Array} players A list of AnimationPlayerActor objects.
    * @param {Boolean} shouldPause If set to true, the players will be paused,
    * otherwise they will be played.
    */
   toggleSeveral: function (players, shouldPause) {
-    return promise.all(players.map(player => {
+    return Promise.all(players.map(player => {
       return shouldPause ? player.pause() : player.play();
     }));
   },
 
   /**
    * Set the current time of several animations at the same time.
    * @param {Array} players A list of AnimationPlayerActor.
    * @param {Number} time The new currentTime.
    * @param {Boolean} shouldPause Should the players be paused too.
    */
   setCurrentTimes: function (players, time, shouldPause) {
-    return promise.all(players.map(player => {
-      let pause = shouldPause ? player.pause() : promise.resolve();
+    return Promise.all(players.map(player => {
+      let pause = shouldPause ? player.pause() : Promise.resolve();
       return pause.then(() => player.setCurrentTime(time));
     }));
   },
 
   /**
    * Set the playback rate of several animations at the same time.
    * @param {Array} players A list of AnimationPlayerActor.
    * @param {Number} rate The new rate.
--- a/devtools/server/actors/common.js
+++ b/devtools/server/actors/common.js
@@ -1,17 +1,16 @@
 /* -*- 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/. */
 
 "use strict";
 
-const promise = require("promise");
 const { method } = require("devtools/shared/protocol");
 
 /**
  * Creates "registered" actors factory meant for creating another kind of
  * factories, ObservedActorFactory, during the call to listTabs.
  * These factories live in DebuggerServer.{tab|global}ActorFactories.
  *
  * These actors only exposes:
@@ -482,17 +481,17 @@ exports.GeneratedLocation = GeneratedLoc
  *          The decorated method.
  */
 function expectState(expectedState, methodFunc, activity) {
   return function (...args) {
     if (this.state !== expectedState) {
       const msg = `Wrong state while ${activity}:` +
                   `Expected '${expectedState}', ` +
                   `but current state is '${this.state}'.`;
-      return promise.reject(new Error(msg));
+      return Promise.reject(new Error(msg));
     }
 
     return methodFunc.apply(this, args);
   };
 }
 
 exports.expectState = expectState;
 
--- a/devtools/server/actors/inspector/utils.js
+++ b/devtools/server/actors/inspector/utils.js
@@ -1,17 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const {Ci, Cu} = require("chrome");
 
-const promise = require("promise");
 const {Task} = require("devtools/shared/task");
 
 loader.lazyRequireGetter(this, "AsyncUtils", "devtools/shared/async-utils");
 loader.lazyRequireGetter(this, "flags", "devtools/shared/flags");
 loader.lazyRequireGetter(this, "DevToolsUtils", "devtools/shared/DevToolsUtils");
 loader.lazyRequireGetter(this, "nodeFilterConstants", "devtools/shared/dom-node-filter-constants");
 
 loader.lazyRequireGetter(this, "isNativeAnonymous", "devtools/shared/layout/utils", true);
@@ -135,44 +134,44 @@ function nodeHasSize(node) {
  * before the waiting is aborted. Ignored if flags.testing is set.
  *
  * @return {Promise} that is fulfilled once the image has loaded. If the image
  * fails to load or the load takes too long, the promise is rejected.
  */
 function ensureImageLoaded(image, timeout) {
   let { HTMLImageElement } = image.ownerGlobal;
   if (!(image instanceof HTMLImageElement)) {
-    return promise.reject("image must be an HTMLImageELement");
+    return Promise.reject("image must be an HTMLImageELement");
   }
 
   if (image.complete) {
     // The image has already finished loading.
-    return promise.resolve();
+    return Promise.resolve();
   }
 
   // This image is still loading.
   let onLoad = AsyncUtils.listenOnce(image, "load");
 
   // Reject if loading fails.
   let onError = AsyncUtils.listenOnce(image, "error").then(() => {
-    return promise.reject("Image '" + image.src + "' failed to load.");
+    return Promise.reject("Image '" + image.src + "' failed to load.");
   });
 
   // Don't timeout when testing. This is never settled.
   let onAbort = new Promise(() => {});
 
   if (!flags.testing) {
     // Tests are not running. Reject the promise after given timeout.
     onAbort = DevToolsUtils.waitForTime(timeout).then(() => {
-      return promise.reject("Image '" + image.src + "' took too long to load.");
+      return Promise.reject("Image '" + image.src + "' took too long to load.");
     });
   }
 
   // See which happens first.
-  return promise.race([onLoad, onError, onAbort]);
+  return Promise.race([onLoad, onError, onAbort]);
 }
 
 /**
  * Given an <img> or <canvas> element, return the image data-uri. If @param node
  * is an <img> element, the method waits a while for the image to load before
  * the data is generated. If the image does not finish loading in a reasonable
  * time (IMAGE_FETCHING_TIMEOUT milliseconds) the process aborts.
  *
--- a/devtools/server/actors/source.js
+++ b/devtools/server/actors/source.js
@@ -10,17 +10,16 @@ const { Cc, Ci } = require("chrome");
 const Services = require("Services");
 const { BreakpointActor, setBreakpointAtEntryPoints } = require("devtools/server/actors/breakpoint");
 const { OriginalLocation, GeneratedLocation } = require("devtools/server/actors/common");
 const { createValueGrip, arrayBufferGrip } = require("devtools/server/actors/object");
 const { ActorClassWithSpec } = require("devtools/shared/protocol");
 const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 const { assert, fetch } = DevToolsUtils;
 const { joinURI } = require("devtools/shared/path");
-const promise = require("promise");
 const { sourceSpec } = require("devtools/shared/specs/source");
 
 loader.lazyRequireGetter(this, "SourceMapConsumer", "source-map", true);
 loader.lazyRequireGetter(this, "SourceMapGenerator", "source-map", true);
 loader.lazyRequireGetter(this, "mapURIToAddonID", "devtools/server/actors/utils/map-uri-to-addon-id");
 
 function isEvalSource(source) {
   let introType = source.introductionType;
@@ -474,17 +473,17 @@ let SourceActor = ActorClassWithSpec(sou
 
     return offsets;
   },
 
   /**
    * Handler for the "source" packet.
    */
   onSource: function () {
-    return promise.resolve(this._init)
+    return Promise.resolve(this._init)
       .then(this._getSourceText)
       .then(({ content, contentType }) => {
         if (typeof content === "object" && content && content.constructor &&
             content.constructor.name === "ArrayBuffer") {
           return {
             source: arrayBufferGrip(content, this.threadActor.threadLifetimePool),
             contentType,
           };
@@ -783,17 +782,17 @@ let SourceActor = ActorClassWithSpec(sou
         // to how scripts are kept alive. A parent Debugger.Script
         // keeps all of its children alive, so as long as we have a
         // valid script, we can slide through it and know we won't
         // slide through any of its child scripts. Additionally, if a
         // script gets GCed, that means that all parents scripts are
         // GCed as well, and no scripts will exist on those lines
         // anymore. We will never slide through a GCed script.
         if (originalLocation.originalColumn || scripts.length === 0) {
-          return promise.resolve(actor);
+          return Promise.resolve(actor);
         }
 
         // Find the script that spans the largest amount of code to
         // determine the bounds for sliding.
         const largestScript = scripts.reduce((largestScr, script) => {
           if (script.lineCount > largestScr.lineCount) {
             return script;
           }
@@ -809,17 +808,17 @@ let SourceActor = ActorClassWithSpec(sou
           }
         }
 
         // The above loop should never complete. We only did breakpoint sliding
         // because we found scripts on the line we started from,
         // which means there must be valid entry points somewhere
         // within those scripts.
         if (actualLine > maxLine) {
-          return promise.reject({
+          return Promise.reject({
             error: "noCodeAtLineColumn",
             message:
               "Could not find any entry points to set a breakpoint on, " +
               "even though I was told a script existed on the line I started " +
               "the search with."
           });
         }
 
@@ -832,17 +831,17 @@ let SourceActor = ActorClassWithSpec(sou
           actor.delete();
           actor = existingActor;
         } else {
           actor.originalLocation = actualLocation;
           this.breakpointActorMap.setActor(actualLocation, actor);
         }
       }
 
-      return promise.resolve(actor);
+      return Promise.resolve(actor);
     }
     return this.sources.getAllGeneratedLocations(originalLocation)
       .then((generatedLocations) => {
         this._setBreakpointAtAllGeneratedLocations(
           actor,
           generatedLocations
         );
 
--- a/devtools/server/actors/storage.js
+++ b/devtools/server/actors/storage.js
@@ -4,17 +4,16 @@
 
 "use strict";
 
 const {Cc, Ci, Cu, CC} = require("chrome");
 const protocol = require("devtools/shared/protocol");
 const {LongStringActor} = require("devtools/server/actors/string");
 const {DebuggerServer} = require("devtools/server/main");
 const Services = require("Services");
-const promise = require("promise");
 const defer = require("devtools/shared/defer");
 const {isWindowIncluded} = require("devtools/shared/layout/utils");
 const specs = require("devtools/shared/specs/storage");
 const { Task } = require("devtools/shared/task");
 
 const DEFAULT_VALUE = "value";
 
 loader.lazyRequireGetter(this, "naturalSortCaseInsensitive",
@@ -1449,17 +1448,17 @@ StorageActors.createActor({
     const parsedName = JSON.parse(name);
 
     // Only a Cache object is a valid object to clear
     if (parsedName.length == 1) {
       const [ cacheName ] = parsedName;
       const cache = cacheMap.get(cacheName);
       if (cache) {
         let keys = yield cache.keys();
-        yield promise.all(keys.map(key => cache.delete(key)));
+        yield Promise.all(keys.map(key => cache.delete(key)));
         this.onItemUpdated("cleared", host, [ cacheName ]);
       }
     }
   }),
 
   /**
    * CacheStorage API doesn't support any notifications, we must fake them
    */
--- a/devtools/server/actors/string.js
+++ b/devtools/server/actors/string.js
@@ -1,18 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 var {DebuggerServer} = require("devtools/server/main");
 
-var promise = require("promise");
-
 var protocol = require("devtools/shared/protocol");
 const {longStringSpec} = require("devtools/shared/specs/string");
 
 exports.LongStringActor = protocol.ActorClassWithSpec(longStringSpec, {
   initialize: function (conn, str) {
     protocol.Actor.prototype.initialize.call(this, conn);
     this.str = str;
     this.short = (this.str.length < DebuggerServer.LONG_STRING_LENGTH);
@@ -31,13 +29,13 @@ exports.LongStringActor = protocol.Actor
       type: "longString",
       actor: this.actorID,
       length: this.str.length,
       initial: this.str.substring(0, DebuggerServer.LONG_STRING_INITIAL_LENGTH)
     };
   },
 
   substring: function (start, end) {
-    return promise.resolve(this.str.substring(start, end));
+    return Promise.resolve(this.str.substring(start, end));
   },
 
   release: function () { }
 });
--- a/devtools/server/actors/styles.js
+++ b/devtools/server/actors/styles.js
@@ -1,16 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const {Ci} = require("chrome");
-const promise = require("promise");
 const protocol = require("devtools/shared/protocol");
 const {LongStringActor} = require("devtools/server/actors/string");
 const {Task} = require("devtools/shared/task");
 const InspectorUtils = require("InspectorUtils");
 
 // This will also add the "stylesheet" actor type for protocol.js to recognize
 
 const {pageStyleSpec, styleRuleSpec, ELEMENT_STYLE} = require("devtools/shared/specs/styles");
@@ -1232,21 +1231,21 @@ var StyleRuleActor = protocol.ActorClass
    * authored form is available, this also sets |this.authoredText|.
    * The authored text will include invalid and otherwise ignored
    * properties.
    */
   getAuthoredCssText: function () {
     if (!this.canSetRuleText ||
         (this.type !== CSSRule.STYLE_RULE &&
          this.type !== CSSRule.KEYFRAME_RULE)) {
-      return promise.resolve("");
+      return Promise.resolve("");
     }
 
     if (typeof this.authoredText === "string") {
-      return promise.resolve(this.authoredText);
+      return Promise.resolve(this.authoredText);
     }
 
     let parentStyleSheet =
         this.pageStyle._sheetRef(this._parentSheet);
     return parentStyleSheet.getText().then((longStr) => {
       let cssText = longStr.str;
       let {text} = getRuleText(cssText, this.line, this.column);
 
--- a/devtools/server/actors/stylesheets.js
+++ b/devtools/server/actors/stylesheets.js
@@ -1,17 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const {Ci} = require("chrome");
 const Services = require("Services");
-const promise = require("promise");
 const defer = require("devtools/shared/defer");
 const {Task} = require("devtools/shared/task");
 const protocol = require("devtools/shared/protocol");
 const {LongStringActor} = require("devtools/server/actors/string");
 const {fetch} = require("devtools/shared/DevToolsUtils");
 const {mediaRuleSpec, styleSheetSpec,
        styleSheetsSpec} = require("devtools/shared/specs/stylesheets");
 const {
@@ -254,21 +253,21 @@ var StyleSheetActor = protocol.ActorClas
     let rules;
     try {
       rules = this.rawSheet.cssRules;
     } catch (e) {
       // sheet isn't loaded yet
     }
 
     if (rules) {
-      return promise.resolve(rules);
+      return Promise.resolve(rules);
     }
 
     if (!this.ownerNode) {
-      return promise.resolve([]);
+      return Promise.resolve([]);
     }
 
     if (this._cssRules) {
       return this._cssRules;
     }
 
     let deferred = defer();
 
@@ -366,30 +365,30 @@ var StyleSheetActor = protocol.ActorClas
    * Fetch the text for this stylesheet from the cache or network. Return
    * cached text if it's already been fetched.
    *
    * @return {Promise}
    *         Promise that resolves with a string text of the stylesheet.
    */
   _getText: function () {
     if (typeof this.text === "string") {
-      return promise.resolve(this.text);
+      return Promise.resolve(this.text);
     }
 
     let cssText = modifiedStyleSheets.get(this.rawSheet);
     if (cssText !== undefined) {
       this.text = cssText;
-      return promise.resolve(cssText);
+      return Promise.resolve(cssText);
     }
 
     if (!this.href) {
       // this is an inline <style> sheet
       let content = this.ownerNode.textContent;
       this.text = content;
-      return promise.resolve(content);
+      return Promise.resolve(content);
     }
 
     return this.fetchStylesheet(this.href).then(({ content }) => {
       this.text = content;
       return content;
     });
   },
 
--- a/devtools/server/actors/thread.js
+++ b/devtools/server/actors/thread.js
@@ -9,22 +9,19 @@
 const Services = require("Services");
 const { Cc, Ci, Cr } = require("chrome");
 const { ActorPool, GeneratedLocation } = require("devtools/server/actors/common");
 const { createValueGrip, longStringGrip } = require("devtools/server/actors/object");
 const { ActorClassWithSpec } = require("devtools/shared/protocol");
 const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 const flags = require("devtools/shared/flags");
 const { assert, dumpn } = DevToolsUtils;
-const promise = require("promise");
 const { DevToolsWorker } = require("devtools/shared/worker/worker");
 const { threadSpec } = require("devtools/shared/specs/script");
 
-const { resolve, reject, all } = promise;
-
 loader.lazyGetter(this, "Debugger", () => {
   let Debugger = require("Debugger");
   hackDebugger(Debugger);
   return Debugger;
 });
 loader.lazyRequireGetter(this, "findCssSelector", "devtools/shared/inspector/css-logic", true);
 loader.lazyRequireGetter(this, "BreakpointActor", "devtools/server/actors/breakpoint", true);
 loader.lazyRequireGetter(this, "setBreakpointAtEntryPoints", "devtools/server/actors/breakpoint", true);
@@ -375,17 +372,17 @@ const ThreadActor = ActorClassWithSpec(t
                       return undefined;
                     }
 
                     packet.frame.where = {
                       source: originalLocation.originalSourceActor.form(),
                       line: originalLocation.originalLine,
                       column: originalLocation.originalColumn
                     };
-                    resolve(onPacket(packet))
+                    Promise.resolve(onPacket(packet))
           .catch(error => {
             reportError(error);
             return {
               error: "unknownError",
               message: error.message + "\n" + error.stack
             };
           })
           .then(pkt => {
@@ -560,18 +557,18 @@ const ThreadActor = ActorClassWithSpec(t
    * @param Object request
    *        The request packet received over the RDP.
    * @returns A promise that resolves to true once the hooks are attached, or is
    *          rejected with an error packet.
    */
   _handleResumeLimit: function (request) {
     let steppingType = request.resumeLimit.type;
     if (!["break", "step", "next", "finish"].includes(steppingType)) {
-      return reject({ error: "badParameterType",
-                      message: "Unknown resumeLimit type" });
+      return Promise.reject({ error: "badParameterType",
+                              message: "Unknown resumeLimit type" });
     }
 
     const generatedLocation = this.sources.getFrameLocation(this.youngestFrame);
     return this.sources.getOriginalLocation(generatedLocation)
       .then(originalLocation => {
         const { onEnterFrame, onPop, onStep } = this._makeSteppingHooks(originalLocation,
                                                                         steppingType);
 
@@ -671,17 +668,17 @@ const ThreadActor = ActorClassWithSpec(t
       };
     }
 
     let resumeLimitHandled;
     if (request && request.resumeLimit) {
       resumeLimitHandled = this._handleResumeLimit(request);
     } else {
       this._clearSteppingHooks(this.youngestFrame);
-      resumeLimitHandled = resolve(true);
+      resumeLimitHandled = Promise.resolve(true);
     }
 
     return resumeLimitHandled.then(() => {
       if (request) {
         this._options.pauseOnExceptions = request.pauseOnExceptions;
         this._options.ignoreCaughtExceptions = request.ignoreCaughtExceptions;
         this.maybePauseOnExceptions();
         this._maybeListenToEvents(request);
@@ -942,17 +939,17 @@ const ThreadActor = ActorClassWithSpec(t
           column: originalLocation.originalColumn
         };
         form.source = sourceForm;
         return form;
       });
       promises.push(framePromise);
     }
 
-    return all(promises).then(function (frames) {
+    return Promise.all(promises).then(function (frames) {
       // Filter null values because sourcemapping may have failed.
       return { frames: frames.filter(x => !!x) };
     });
   },
 
   onReleaseMany: function (request) {
     if (!request.actors) {
       return { error: "missingParameter",
@@ -984,17 +981,17 @@ const ThreadActor = ActorClassWithSpec(t
 
     for (let i = 0, len = scripts.length; i < len; i++) {
       let s = scripts[i];
       if (s.source) {
         sourcesToScripts.set(s.source, s);
       }
     }
 
-    return all([...sourcesToScripts.values()].map(script => {
+    return Promise.all([...sourcesToScripts.values()].map(script => {
       return this.sources.createSourceActors(script.source);
     }));
   },
 
   onSources: function (request) {
     return this._discoverSources().then(() => {
       // No need to flush the new source packets here, as we are sending the
       // list of sources out immediately and we don't need to invoke the
@@ -1639,17 +1636,17 @@ const ThreadActor = ActorClassWithSpec(t
                   sourceActor._setBreakpointAtAllGeneratedLocations(
                     actor, generatedLocations);
                 }
               }));
         }
       }
 
       if (promises.length > 0) {
-        this.unsafeSynchronize(promise.all(promises));
+        this.unsafeSynchronize(Promise.all(promises));
       }
     } else {
       // Bug 1225160: If addSource is called in response to a new script
       // notification, and this notification was triggered by loading a JSM from
       // chrome code, calling unsafeSynchronize could cause a debuggee timer to
       // fire. If this causes the JSM to be loaded a second time, the browser
       // will crash, because loading JSMS is not reentrant, and the first load
       // has not completed yet.
--- a/devtools/server/actors/utils/TabSources.js
+++ b/devtools/server/actors/utils/TabSources.js
@@ -3,17 +3,16 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 const { assert, fetch } = DevToolsUtils;
 const EventEmitter = require("devtools/shared/old-event-emitter");
 const { OriginalLocation, GeneratedLocation } = require("devtools/server/actors/common");
-const { resolve } = require("promise");
 const { joinURI } = require("devtools/shared/path");
 
 loader.lazyRequireGetter(this, "SourceActor", "devtools/server/actors/source", true);
 loader.lazyRequireGetter(this, "isEvalSource", "devtools/server/actors/source", true);
 loader.lazyRequireGetter(this, "SourceMapConsumer", "source-map", true);
 loader.lazyRequireGetter(this, "SourceMapGenerator", "source-map", true);
 loader.lazyRequireGetter(this, "WasmRemap", "devtools/shared/wasm-source-map", true);
 
@@ -367,17 +366,17 @@ TabSources.prototype = {
    * instead of this.
    *
    * @param Debugger.Source source
    *        The source instance to create actors for.
    * @return Promise of an array of source actors
    */
   _createSourceMappedActors: function (source) {
     if (!this._useSourceMaps || !source.sourceMapURL) {
-      return resolve(null);
+      return Promise.resolve(null);
     }
 
     return this.fetchSourceMap(source)
       .then(map => {
         if (map) {
           return map.sources.map(s => {
             return this.source({ originalUrl: s, generatedSource: source });
           }).filter(isNotNull);
@@ -410,21 +409,21 @@ TabSources.prototype = {
    * and source maps are enabled (see `_fetchSourceMap`).
    *
    * @param Debugger.Source source
    *        The source instance to get sourcemaps for.
    * @return Promise of a SourceMapConsumer
    */
   fetchSourceMap: function (source) {
     if (!this._useSourceMaps) {
-      return resolve(null);
+      return Promise.resolve(null);
     } else if (this._sourceMaps.has(source)) {
       return this._sourceMaps.get(source);
     } else if (!source || !source.sourceMapURL) {
-      return resolve(null);
+      return Promise.resolve(null);
     }
 
     let sourceMapURL = source.sourceMapURL;
     if (source.url) {
       sourceMapURL = joinURI(source.url, sourceMapURL);
     }
     let result = this._fetchSourceMap(sourceMapURL, source.url);
 
@@ -441,24 +440,24 @@ TabSources.prototype = {
   },
 
   /**
    * Return a promise of a SourceMapConsumer for the source map for
    * `source`. The resolved result may be null if the source does not
    * have a source map or source maps are disabled.
    */
   getSourceMap: function (source) {
-    return resolve(this._sourceMaps.get(source));
+    return Promise.resolve(this._sourceMaps.get(source));
   },
 
   /**
    * Set a SourceMapConsumer for the source map for |source|.
    */
   setSourceMap: function (source, map) {
-    this._sourceMaps.set(source, resolve(map));
+    this._sourceMaps.set(source, Promise.resolve(map));
   },
 
   /**
    * Return a promise of a SourceMapConsumer for the source map located at
    * |absSourceMapURL|, which must be absolute. If there is already such a
    * promise extant, return it. This will not fetch if source maps are
    * disabled.
    *
@@ -561,17 +560,17 @@ TabSources.prototype = {
       // avoid tons of work serializing the sourcemap into a data url,
       // just make a fake URL and stick the sourcemap there.
       url = "internal://sourcemap" + (this._anonSourceMapId++) + "/";
     }
     source.sourceMapURL = url;
 
     // Forcefully set the sourcemap cache. This will be used even if
     // sourcemaps are disabled.
-    this._sourceMapCache[url] = resolve(map);
+    this._sourceMapCache[url] = Promise.resolve(map);
     this.emit("updatedSource", this.getSourceActor(source));
   },
 
   /**
    * Return the non-source-mapped location of the given Debugger.Frame. If the
    * frame does not have a script, the location's properties are all null.
    *
    * @param Debugger.Frame frame
--- a/devtools/server/actors/webbrowser.js
+++ b/devtools/server/actors/webbrowser.js
@@ -3,17 +3,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 var { Ci } = require("chrome");
 var Services = require("Services");
-var promise = require("promise");
 const defer = require("devtools/shared/defer");
 var { DebuggerServer } = require("devtools/server/main");
 var DevToolsUtils = require("devtools/shared/DevToolsUtils");
 
 loader.lazyRequireGetter(this, "RootActor", "devtools/server/actors/root", true);
 loader.lazyRequireGetter(this, "BrowserAddonActor", "devtools/server/actors/addon", true);
 loader.lazyRequireGetter(this, "WebExtensionParentActor", "devtools/server/actors/webextension-parent", true);
 loader.lazyRequireGetter(this, "WorkerActorList", "devtools/server/actors/worker-list", true);
@@ -299,17 +298,17 @@ BrowserTabList.prototype.getList = funct
 
   if (this._testing && initialMapSize !== this._foundCount) {
     throw new Error("_actorByBrowser map contained actors for dead tabs");
   }
 
   this._mustNotify = true;
   this._checkListening();
 
-  return promise.all(actorPromises).then(values => {
+  return Promise.all(actorPromises).then(values => {
     // Filter out null values if we received a tabDestroyed error.
     return values.filter(value => value != null);
   });
 };
 
 /**
  * @param browserActorOptions see options argument of BrowserTabActor constructor.
  */
@@ -328,17 +327,17 @@ BrowserTabList.prototype._getActorForBro
 };
 
 BrowserTabList.prototype.getTab = function ({ outerWindowID, tabId }) {
   if (typeof outerWindowID == "number") {
     // First look for in-process frames with this ID
     let window = Services.wm.getOuterWindowWithId(outerWindowID);
     // Safety check to prevent debugging top level window via getTab
     if (window && window.isChromeWindow) {
-      return promise.reject({
+      return Promise.reject({
         error: "forbidden",
         message: "Window with outerWindowID '" + outerWindowID + "' is chrome"
       });
     }
     if (window) {
       let iframe = window.QueryInterface(Ci.nsIInterfaceRequestor)
                          .getInterface(Ci.nsIDOMWindowUtils)
                          .containerElement;
@@ -348,42 +347,42 @@ BrowserTabList.prototype.getTab = functi
     }
     // Then also look on registered <xul:browsers> when using outerWindowID for
     // OOP tabs
     for (let browser of this._getBrowsers()) {
       if (browser.outerWindowID == outerWindowID) {
         return this._getActorForBrowser(browser);
       }
     }
-    return promise.reject({
+    return Promise.reject({
       error: "noTab",
       message: "Unable to find tab with outerWindowID '" + outerWindowID + "'"
     });
   } else if (typeof tabId == "number") {
     // Tabs OOP
     for (let browser of this._getBrowsers()) {
       if (browser.frameLoader &&
           browser.frameLoader.tabParent &&
           browser.frameLoader.tabParent.tabId === tabId) {
         return this._getActorForBrowser(browser);
       }
     }
-    return promise.reject({
+    return Promise.reject({
       error: "noTab",
       message: "Unable to find tab with tabId '" + tabId + "'"
     });
   }
 
   let topXULWindow = Services.wm.getMostRecentWindow(
     DebuggerServer.chromeWindowType);
   if (topXULWindow) {
     let selectedBrowser = this._getSelectedBrowser(topXULWindow);
     return this._getActorForBrowser(selectedBrowser);
   }
-  return promise.reject({
+  return Promise.reject({
     error: "noTab",
     message: "Unable to find any selected browser"
   });
 };
 
 Object.defineProperty(BrowserTabList.prototype, "onListChanged", {
   enumerable: true,
   configurable: true,
--- a/devtools/server/performance/recorder.js
+++ b/devtools/server/performance/recorder.js
@@ -2,17 +2,16 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const { Cu } = require("chrome");
 const { Task } = require("devtools/shared/task");
 
 loader.lazyRequireGetter(this, "Services");
-loader.lazyRequireGetter(this, "promise");
 loader.lazyRequireGetter(this, "EventEmitter", "devtools/shared/event-emitter");
 
 loader.lazyRequireGetter(this, "Memory",
   "devtools/server/performance/memory", true);
 loader.lazyRequireGetter(this, "Timeline",
   "devtools/server/performance/timeline", true);
 loader.lazyRequireGetter(this, "Profiler",
   "devtools/server/performance/profiler", true);
@@ -343,17 +342,17 @@ PerformanceRecorder.prototype = {
         this._memory.attach();
       }
       let recordingOptions = Object.assign(mapRecordingOptions("memory", options), {
         drainAllocationsTimeout: DRAIN_ALLOCATIONS_TIMEOUT
       });
       memoryStart = this._memory.startRecordingAllocations(recordingOptions);
     }
 
-    let [profilerStartData, timelineStartData, memoryStartData] = yield promise.all([
+    let [profilerStartData, timelineStartData, memoryStartData] = yield Promise.all([
       profilerStart, timelineStart, memoryStart
     ]);
 
     let data = Object.create(null);
     // Filter out start times that are not actually used (0 or undefined), and
     // find the earliest time since all sources use same epoch.
     let startTimes = [
       profilerStartData.currentTime,
--- a/devtools/server/tests/mochitest/inspector-helpers.js
+++ b/devtools/server/tests/mochitest/inspector-helpers.js
@@ -6,17 +6,16 @@
 
 const {require} = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
 const {DebuggerClient} = require("devtools/shared/client/debugger-client");
 const {DebuggerServer} = require("devtools/server/main");
 const { Task } = require("devtools/shared/task");
 
 const Services = require("Services");
 // promise is still used in tests using this helper
-const promise = require("promise"); // eslint-disable-line no-unused-vars
 const defer = require("devtools/shared/defer");
 const {DocumentWalker: _documentWalker} = require("devtools/server/actors/inspector/document-walker");
 
 // Always log packets when running tests.
 Services.prefs.setBoolPref("devtools.debugger.log", true);
 SimpleTest.registerCleanupFunction(function () {
   Services.prefs.clearUserPref("devtools.debugger.log");
 });
--- a/devtools/server/tests/mochitest/test_inspector-mutations-childlist.html
+++ b/devtools/server/tests/mochitest/test_inspector-mutations-childlist.html
@@ -59,17 +59,17 @@ function setParent(nodeSelector, newPare
 
 function loadSelector(selector) {
   return gWalker.querySelectorAll(gWalker.rootNode, selector).then(nodeList => {
     return nodeList.items();
   });
 }
 
 function loadSelectors(selectors) {
-  return promise.all(Array.from(selectors, (sel) => loadSelector(sel)));
+  return Promise.all(Array.from(selectors, (sel) => loadSelector(sel)));
 }
 
 function doMoves(moves) {
   for (let move of moves) {
     setParent(move[0], move[1]);
   }
 }
 
--- a/devtools/server/tests/mochitest/test_inspector-resize.html
+++ b/devtools/server/tests/mochitest/test_inspector-resize.html
@@ -10,31 +10,30 @@ https://bugzilla.mozilla.org/show_bug.cg
   <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
   <script type="application/javascript" src="inspector-helpers.js"></script>
   <script type="application/javascript">
 "use strict";
 
 window.onload = function () {
   const {require} = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
-  const promise = require("promise");
   const {InspectorFront} = require("devtools/shared/fronts/inspector");
 
   SimpleTest.waitForExplicitFinish();
 
   let win = null;
   let inspector = null;
 
   addAsyncTest(function* setup() {
     info("Setting up inspector and walker actors.");
 
     let url = document.getElementById("inspectorContent").href;
 
     // eslint-disable-next-line new-cap
-    yield new promise(resolve => {
+    yield new Promise(resolve => {
       attachURL(url, function (err, client, tab, doc) {
         win = doc.defaultView;
         inspector = InspectorFront(client, tab);
         resolve();
       });
     });
 
     runNextTest();
@@ -44,17 +43,17 @@ window.onload = function () {
     let walker = yield inspector.getWalker();
 
     // We can't receive events from the walker if we haven't first executed a
     // method on the actor to initialize it.
     yield walker.querySelector(walker.rootNode, "img");
 
     let {outerWidth, outerHeight} = win;
     // eslint-disable-next-line new-cap
-    let onResize = new promise(resolve => {
+    let onResize = new Promise(resolve => {
       walker.once("resize", () => {
         resolve();
       });
     });
     win.resizeTo(800, 600);
     yield onResize;
 
     ok(true, "The resize event was emitted");
--- a/devtools/server/tests/mochitest/test_inspector-retain.html
+++ b/devtools/server/tests/mochitest/test_inspector-retain.html
@@ -106,17 +106,17 @@ addTest(function testRetain() {
 // retain request), because we haven't issued `getMutations` yet.
 addTest(function testWinRace() {
   let front = null;
   promiseDone(gWalker.querySelector(gWalker.rootNode, "#a").then(node => {
     front = node;
     let contentNode = gInspectee.querySelector("#a");
     contentNode.remove();
     // Now wait for that mutation and retain response to come in.
-    return promise.all([
+    return Promise.all([
       gWalker.retainNode(front),
       waitForMutation(gWalker, isChildList)
     ]);
   }).then(() => {
     assertOwnership();
     is(gWalker._retainedOrphans.size, 1, "Should have a retained orphan.");
     ok(gWalker._retainedOrphans.has(front), "Should have retained our expected node.");
     return gWalker.unretainNode(front);
--- a/devtools/server/tests/mochitest/test_inspector-search-front.html
+++ b/devtools/server/tests/mochitest/test_inspector-search-front.html
@@ -9,17 +9,16 @@ https://bugzilla.mozilla.org/show_bug.cg
   <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
   <script type="application/javascript" src="inspector-helpers.js"></script>
   <script type="application/javascript">
 "use strict";
 
 window.onload = function () {
   const {require} = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
-  const promise = require("promise");
   const {InspectorFront} = require("devtools/shared/fronts/inspector");
 
   SimpleTest.waitForExplicitFinish();
 
   let walkerFront = null;
   let inspector = null;
 
   // WalkerFront specific tests.  These aren't to excercise search
@@ -28,17 +27,17 @@ window.onload = function () {
   // See also test_inspector-search.html
 
   addAsyncTest(function* setup() {
     info("Setting up inspector and walker actors.");
 
     let url = document.getElementById("inspectorContent").href;
 
     // eslint-disable-next-line new-cap
-    yield new promise(resolve => {
+    yield new Promise(resolve => {
       attachURL(url, function (err, client, tab, doc) {
         inspector = InspectorFront(client, tab);
         resolve();
       });
     });
 
     walkerFront = yield inspector.getWalker();
     ok(walkerFront, "getWalker() should return an actor.");
--- a/devtools/server/tests/mochitest/test_inspector-search.html
+++ b/devtools/server/tests/mochitest/test_inspector-search.html
@@ -9,17 +9,16 @@ https://bugzilla.mozilla.org/show_bug.cg
   <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
   <script type="application/javascript" src="inspector-helpers.js"></script>
   <script type="application/javascript">
 "use strict";
 
 window.onload = function () {
   const {require} = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
-  const promise = require("promise");
   const {InspectorFront} = require("devtools/shared/fronts/inspector");
   const {WalkerSearch, WalkerIndex} =
     require("devtools/server/actors/utils/walker-search");
 
   SimpleTest.waitForExplicitFinish();
 
   let walkerActor = null;
   let walkerSearch = null;
@@ -31,17 +30,17 @@ window.onload = function () {
   // See also test_inspector-search-front.html.
 
   addAsyncTest(function* setup() {
     info("Setting up inspector and walker actors.");
 
     let url = document.getElementById("inspectorContent").href;
 
     // eslint-disable-next-line new-cap
-    yield new promise(resolve => {
+    yield new Promise(resolve => {
       attachURL(url, function (err, client, tab, doc) {
         inspectee = doc;
         inspector = InspectorFront(client, tab);
         resolve();
       });
     });
 
     let walkerFront = yield inspector.getWalker();
@@ -235,34 +234,34 @@ window.onload = function () {
 
     results = walkerSearch.search("h3");
     isDeeply(results, [
       expected[1],
       expected[2]
     ], "Results are updated after removal");
 
     // eslint-disable-next-line new-cap
-    yield new promise(resolve => {
+    yield new Promise(resolve => {
       info("Waiting for a mutation to happen");
       let observer = new inspectee.defaultView.MutationObserver(() => {
         resolve();
       });
       observer.observe(inspectee, {attributes: true, subtree: true});
       inspectee.body.setAttribute("h3", "true");
     });
 
     results = walkerSearch.search("h3");
     isDeeply(results, [
       {node: inspectee.body, type: "attributeName"},
       expected[1],
       expected[2]
     ], "Results are updated after addition");
 
     // eslint-disable-next-line new-cap
-    yield new promise(resolve => {
+    yield new Promise(resolve => {
       info("Waiting for a mutation to happen");
       let observer = new inspectee.defaultView.MutationObserver(() => {
         resolve();
       });
       observer.observe(inspectee, {attributes: true, childList: true, subtree: true});
       inspectee.body.removeAttribute("h3");
       expected[1].node.remove();
       expected[2].node.remove();
@@ -273,17 +272,17 @@ window.onload = function () {
 
     runNextTest();
   });
 
   runNextTest();
 
   function mutateDocumentAndWaitForMutation(mutationFn) {
     // eslint-disable-next-line new-cap
-    return new promise(resolve => {
+    return new Promise(resolve => {
       info("Listening to markup mutation on the inspectee");
       let observer = new inspectee.defaultView.MutationObserver(resolve);
       observer.observe(inspectee, {childList: true, subtree: true});
       mutationFn();
     });
   }
 };
   </script>
--- a/devtools/server/tests/mochitest/test_inspector-traversal.html
+++ b/devtools/server/tests/mochitest/test_inspector-traversal.html
@@ -332,17 +332,17 @@ addTest(function testShortValue() {
   }).then(runNextTest));
 });
 
 addTest(function testReleaseWalker() {
   checkActorIDs.push(gWalker.actorID);
 
   promiseDone(gWalker.release().then(() => {
     let promises = Array.from(checkActorIDs, (id) => checkMissing(gClient, id));
-    return promise.all(promises);
+    return Promise.all(promises);
   }).then(runNextTest));
 });
 
 addTest(function cleanup() {
   gWalker = null;
   gInspectee = null;
   gClient = null;
   runNextTest();
--- a/devtools/server/tests/unit/head_dbg.js
+++ b/devtools/server/tests/unit/head_dbg.js
@@ -15,17 +15,16 @@ ChromeUtils.import("resource://testing-c
   name: "devtools-tests",
   version: "1",
   platformVersion: "42",
   crashReporter: true,
 });
 
 const { require, loader } = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
 const { worker } = ChromeUtils.import("resource://devtools/shared/worker/loader.js", {});
-const promise = require("promise");
 const defer = require("devtools/shared/defer");
 const { Task } = require("devtools/shared/task");
 const { console } = require("resource://gre/modules/Console.jsm");
 const { NetUtil } = require("resource://gre/modules/NetUtil.jsm");
 
 const Services = require("Services");
 // Always log packets when running tests. runxpcshelltests.py will throw
 // the output away anyway, unless you give it the --verbose flag.
--- a/devtools/server/tests/unit/test_blackboxing-06.js
+++ b/devtools/server/tests/unit/test_blackboxing-06.js
@@ -19,17 +19,17 @@ function run_test() {
   gDebuggee = addTestGlobal("test-black-box");
   gClient = new DebuggerClient(DebuggerServer.connectPipe());
   gClient.connect().then(function () {
     attachTestTabAndResume(
       gClient, "test-black-box",
       function (response, tabClient, threadClient) {
         gThreadClient = threadClient;
 
-        promise.resolve(setup_code())
+        Promise.resolve(setup_code())
           .then(black_box_code)
           .then(run_code)
           .then(test_correct_location)
           .catch(function (error) {
             Assert.ok(false, "Should not get an error, got " + error);
           })
           .then(function () {
             finishClient(gClient);
--- a/devtools/server/tests/unit/test_protocol_async.js
+++ b/devtools/server/tests/unit/test_protocol_async.js
@@ -183,16 +183,16 @@ function run_test() {
       return deferAfterRejection.promise.then(function () {
         // Check right return order
         Assert.equal(sequence, 7);
         // Check request handling order
         Assert.equal(ret, sequence++);
       });
     }));
 
-    promise.all(calls).then(() => {
+    Promise.all(calls).then(() => {
       client.close().then(() => {
         do_test_finished();
       });
     });
   });
   do_test_pending();
 }
--- a/devtools/server/tests/unit/test_protocol_children.js
+++ b/devtools/server/tests/unit/test_protocol_children.js
@@ -187,17 +187,17 @@ var ChildFront = protocol.FrontClassWith
     this.detail = form.detail;
   },
 
   onEvent1: preEvent("event1", function (a, b, c) {
     this.event1arg3 = c;
   }),
 
   onEvent2a: preEvent("event2", function (a, b, c) {
-    return promise.resolve().then(() => {
+    return Promise.resolve().then(() => {
       this.event2arg3 = c;
     });
   }),
 
   onEvent2b: preEvent("event2", function (a, b, c) {
     this.event2arg2 = b;
   }),
 });
@@ -320,17 +320,17 @@ var RootFront = protocol.FrontClassWithS
     }
     return this._getTemporaryChild(id);
   }, {
     impl: "_getTemporaryChild"
   }),
 
   clearTemporaryChildren: protocol.custom(function () {
     if (!this._temporaryHolder) {
-      return promise.resolve(undefined);
+      return Promise.resolve(undefined);
     }
     this._temporaryHolder.destroy();
     delete this._temporaryHolder;
     return this._clearTemporaryChildren();
   }, {
     impl: "_clearTemporaryChildren"
   })
 });
--- a/devtools/server/tests/unit/test_protocol_simple.js
+++ b/devtools/server/tests/unit/test_protocol_simple.js
@@ -113,17 +113,17 @@ var RootActor = protocol.ActorClassWithS
 
   sayHello: simpleHello,
 
   simpleReturn: function () {
     return 1;
   },
 
   promiseReturn: function () {
-    return promise.resolve(1);
+    return Promise.resolve(1);
   },
 
   simpleArgs: function (a, b) {
     return { firstResponse: a + 1, secondResponse: b + 1 };
   },
 
   nestedArgs: function (a, b, c) {
     return { a: a, b: b, c: c };
--- a/devtools/server/tests/unit/test_sourcemaps-10.js
+++ b/devtools/server/tests/unit/test_sourcemaps-10.js
@@ -17,17 +17,17 @@ function run_test() {
   initTestDebuggerServer();
   gDebuggee = addTestGlobal("test-source-map");
   gClient = new DebuggerClient(DebuggerServer.connectPipe());
   gClient.connect().then(function () {
     attachTestTabAndResume(
       gClient, "test-source-map",
       function (response, tabClient, threadClient) {
         gThreadClient = threadClient;
-        promise.resolve(define_code())
+        Promise.resolve(define_code())
           .then(run_code)
           .then(test_frame_location)
           .catch(error => {
             dump(error + "\n");
             dump(error.stack);
             Assert.ok(false);
           })
           .then(() => {
--- a/devtools/server/tests/unit/test_sourcemaps-11.js
+++ b/devtools/server/tests/unit/test_sourcemaps-11.js
@@ -17,17 +17,17 @@ function run_test() {
   initTestDebuggerServer();
   gDebuggee = addTestGlobal("test-source-map");
   gClient = new DebuggerClient(DebuggerServer.connectPipe());
   gClient.connect().then(function () {
     attachTestTabAndResume(
       gClient, "test-source-map",
       function (response, tabClient, threadClient) {
         gThreadClient = threadClient;
-        promise.resolve(define_code())
+        Promise.resolve(define_code())
           .then(run_code)
           .then(test_frames)
           .catch(error => {
             dump(error + "\n");
             dump(error.stack);
             Assert.ok(false);
           })
           .then(() => {
--- a/dom/html/nsTextEditorState.cpp
+++ b/dom/html/nsTextEditorState.cpp
@@ -1116,16 +1116,20 @@ Element*
 nsTextEditorState::GetPreviewNode()
 {
   return mBoundFrame ? mBoundFrame->GetPreviewNode() : nullptr;
 }
 
 void
 nsTextEditorState::Clear()
 {
+  if (mTextEditor) {
+    mTextEditor->SetTextInputListener(nullptr);
+  }
+
   if (mBoundFrame) {
     // Oops, we still have a frame!
     // This should happen when the type of a text input control is being changed
     // to something which is not a text control.  In this case, we should pretend
     // that a frame is being destroyed, and clean up after ourselves properly.
     UnbindFromFrame(mBoundFrame);
     mTextEditor = nullptr;
   } else {
--- a/js/src/jsdate.cpp
+++ b/js/src/jsdate.cpp
@@ -49,26 +49,26 @@
 
 using namespace js;
 
 using mozilla::Atomic;
 using mozilla::ArrayLength;
 using mozilla::IsFinite;
 using mozilla::IsNaN;
 using mozilla::NumbersAreIdentical;
-using mozilla::ReleaseAcquire;
+using mozilla::Relaxed;
 
 using JS::AutoCheckCannotGC;
 using JS::ClippedTime;
 using JS::GenericNaN;
 using JS::TimeClip;
 using JS::ToInteger;
 
 // When this value is non-zero, we'll round the time by this resolution.
-static Atomic<uint32_t, ReleaseAcquire> sResolutionUsec;
+static Atomic<uint32_t, Relaxed> sResolutionUsec;
 
 /*
  * The JS 'Date' object is patterned after the Java 'Date' object.
  * Here is a script:
  *
  *    today = new Date();
  *
  *    print(today.toLocaleString());
--- a/layout/style/ServoStyleSet.cpp
+++ b/layout/style/ServoStyleSet.cpp
@@ -451,17 +451,17 @@ ServoStyleSet::PreTraverseSync()
       gfxUserFontSet::UserFontCache::ClearAllowedFontSets(userFontSet);
     }
     if (cacheGeneration != mUserFontCacheUpdateGeneration || principalChanged) {
       gfxUserFontSet::UserFontCache::UpdateAllowedFontSets(userFontSet);
       mUserFontCacheUpdateGeneration = cacheGeneration;
     }
   }
 
-  UpdateStylistIfNeeded();
+  MOZ_ASSERT(!StylistNeedsUpdate());
   presContext->CacheAllLangs();
 }
 
 void
 ServoStyleSet::PreTraverse(ServoTraversalFlags aFlags, Element* aRoot)
 {
   PreTraverseSync();
 
@@ -567,18 +567,19 @@ LazyPseudoIsCacheable(CSSPseudoElementTy
 }
 
 already_AddRefed<ServoStyleContext>
 ServoStyleSet::ResolvePseudoElementStyle(Element* aOriginatingElement,
                                          CSSPseudoElementType aType,
                                          ServoStyleContext* aParentContext,
                                          Element* aPseudoElement)
 {
+  // Runs from frame construction, this should have clean styles already, except
+  // with non-lazy FC...
   UpdateStylistIfNeeded();
-
   MOZ_ASSERT(aType < CSSPseudoElementType::Count);
 
   RefPtr<ServoStyleContext> computedValues;
 
   if (aPseudoElement) {
     MOZ_ASSERT(aType == aPseudoElement->GetPseudoElementType());
     computedValues =
       Servo_ResolveStyle(aPseudoElement, mRawSet.get()).Consume();
@@ -924,16 +925,18 @@ ServoStyleSet::AddDocStyleSheet(ServoSty
   return NS_OK;
 }
 
 already_AddRefed<ServoStyleContext>
 ServoStyleSet::ProbePseudoElementStyle(Element* aOriginatingElement,
                                        CSSPseudoElementType aType,
                                        ServoStyleContext* aParentContext)
 {
+  // Runs from frame construction, this should have clean styles already, except
+  // with non-lazy FC...
   UpdateStylistIfNeeded();
 
   // NB: We ignore aParentContext, because in some cases
   // (first-line/first-letter on anonymous box blocks) Gecko passes something
   // nonsensical there.  In all other cases we want to inherit directly from
   // aOriginatingElement's styles anyway.
   MOZ_ASSERT(aType < CSSPseudoElementType::Count);
 
@@ -1171,18 +1174,19 @@ ServoStyleSet::AssertTreeIsClean()
 }
 #endif
 
 bool
 ServoStyleSet::GetKeyframesForName(nsAtom* aName,
                                    const nsTimingFunction& aTimingFunction,
                                    nsTArray<Keyframe>& aKeyframes)
 {
-  UpdateStylistIfNeeded();
-
+  // TODO(emilio): This may need to look at the element itself for handling
+  // @keyframes properly in Shadow DOM.
+  MOZ_ASSERT(!StylistNeedsUpdate());
   return Servo_StyleSet_GetKeyframesForName(mRawSet.get(),
                                             aName,
                                             &aTimingFunction,
                                             &aKeyframes);
 }
 
 nsTArray<ComputedKeyframeValues>
 ServoStyleSet::GetComputedKeyframeValuesFor(
@@ -1400,36 +1404,37 @@ ServoStyleSet::AppendFontFaceRules(nsTAr
   UpdateStylistIfNeeded();
   Servo_StyleSet_GetFontFaceRules(mRawSet.get(), &aArray);
   return true;
 }
 
 nsCSSCounterStyleRule*
 ServoStyleSet::CounterStyleRuleForName(nsAtom* aName)
 {
-  // FIXME(emilio): This should probably call UpdateStylistIfNeeded, or
-  // otherwise assert?
+  MOZ_ASSERT(!StylistNeedsUpdate());
   return Servo_StyleSet_GetCounterStyleRule(mRawSet.get(), aName);
 }
 
 already_AddRefed<gfxFontFeatureValueSet>
 ServoStyleSet::BuildFontFeatureValueSet()
 {
+  // FIXME(emilio): This should assert once we update the stylist from
+  // FlushPendingNotifications explicitly.
   UpdateStylistIfNeeded();
   RefPtr<gfxFontFeatureValueSet> set =
     Servo_StyleSet_BuildFontFeatureValueSet(mRawSet.get());
   return set.forget();
 }
 
 already_AddRefed<ServoStyleContext>
 ServoStyleSet::ResolveForDeclarations(
   const ServoStyleContext* aParentOrNull,
   RawServoDeclarationBlockBorrowed aDeclarations)
 {
-  UpdateStylistIfNeeded();
+  // No need to update the stylist, we're only cascading aDeclarations.
   return Servo_StyleSet_ResolveForDeclarations(mRawSet.get(),
                                                aParentOrNull,
                                                aDeclarations).Consume();
 }
 
 void
 ServoStyleSet::UpdateStylist()
 {
new file mode 100644
--- /dev/null
+++ b/mfbt/FStream.h
@@ -0,0 +1,137 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=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/. */
+
+// Similar to std::ifstream/ofstream, but takes char16ptr_t on Windows.
+// Until C++17, std functions can only take char* filenames. So Unicode
+// filenames were lost on Windows. To address this limitations, this wrapper
+// uses proprietary wchar_t* overloads on MSVC, and __gnu_cxx::stdio_filebuf
+// extension on MinGW. Once we can use C++17 filesystem API everywhere,
+// we will be able to avoid this wrapper.
+
+#ifndef mozilla_FStream_h
+#define mozilla_FStream_h
+
+#include "mozilla/Char16.h"
+#include <iostream>
+#include <fstream>
+#if defined(__MINGW32__)
+#include "mozilla/UniquePtr.h"
+#include <fcntl.h>
+#include <ext/stdio_filebuf.h>
+#endif
+
+namespace mozilla {
+
+#if defined(__MINGW32__)
+// MinGW does not support wchar_t* overloads that are MSVC extension until
+// C++17, so we have to implement widechar wrappers using a GNU extension.
+class IFStream : public std::istream
+{
+public:
+  explicit IFStream(char16ptr_t filename, openmode mode = in);
+
+  std::filebuf* rdbuf() const { return mFileBuf.get(); }
+
+  bool is_open() const { return mFileBuf && mFileBuf->is_open(); }
+  void open(char16ptr_t filename, openmode mode = in);
+  void close() { mFileBuf && mFileBuf->close(); }
+
+private:
+  UniquePtr<std::filebuf> mFileBuf;
+};
+
+inline
+IFStream::IFStream(char16ptr_t filename, openmode mode)
+  : std::istream(nullptr)
+{
+  open(filename, mode);
+}
+
+inline void
+IFStream::open(char16ptr_t filename, openmode mode)
+{
+  int fmode = _O_RDONLY;
+  if (mode & binary) {
+    fmode |= _O_BINARY;
+  } else {
+    fmode |= _O_TEXT;
+  }
+  int fd = _wopen(filename, fmode);
+  mFileBuf = MakeUnique<__gnu_cxx::stdio_filebuf<char>>(fd, mode);
+  std::istream::rdbuf(mFileBuf.get());
+}
+
+class OFStream : public std::ostream
+{
+public:
+  explicit OFStream(char16ptr_t filename, openmode mode = out);
+
+  std::filebuf* rdbuf() const { return mFileBuf.get(); }
+
+  bool is_open() const { return mFileBuf && mFileBuf->is_open(); }
+  void open(char16ptr_t filename, openmode mode = out);
+  void close() { mFileBuf && mFileBuf->close(); }
+
+private:
+  UniquePtr<std::filebuf> mFileBuf;
+};
+
+inline
+OFStream::OFStream(char16ptr_t filename, openmode mode)
+  : std::ostream(nullptr)
+{
+  open(filename, mode);
+}
+
+inline void
+OFStream::open(char16ptr_t filename, openmode mode)
+{
+  int fmode = _O_WRONLY;
+  if (mode & binary) {
+    fmode |= _O_BINARY;
+  } else {
+    fmode |= _O_TEXT;
+  }
+  if (mode & trunc) {
+    fmode |= _O_CREAT | _O_TRUNC;
+  }
+  int fd = _wopen(filename, fmode);
+  mFileBuf = MakeUnique<__gnu_cxx::stdio_filebuf<char>>(fd, mode);
+  std::ostream::rdbuf(mFileBuf.get());
+}
+
+#elif defined(XP_WIN)
+class IFStream : public std::ifstream
+{
+public:
+  explicit IFStream(char16ptr_t filename, openmode mode = in)
+    : std::ifstream(filename, mode) {}
+
+  void open(char16ptr_t filename, openmode mode = in)
+  {
+    std::ifstream::open(filename, mode);
+  }
+};
+
+class OFStream : public std::ofstream
+{
+public:
+  explicit OFStream(char16ptr_t filename, openmode mode = out)
+    : std::ofstream(filename, mode) {}
+
+  void open(char16ptr_t filename, openmode mode = out)
+  {
+    std::ofstream::open(filename, mode);
+  }
+};
+#else
+using IFStream = std::ifstream;
+using OFStream = std::ofstream;
+#endif
+
+} // namespace mozilla
+
+#endif /* mozilla_FStream_h */
--- a/mfbt/moz.build
+++ b/mfbt/moz.build
@@ -36,16 +36,17 @@ EXPORTS.mozilla = [
     'DoublyLinkedList.h',
     'EndianUtils.h',
     'EnumeratedArray.h',
     'EnumeratedRange.h',
     'EnumSet.h',
     'EnumTypeTraits.h',
     'FastBernoulliTrial.h',
     'FloatingPoint.h',
+    'FStream.h',
     'GuardObjects.h',
     'HashFunctions.h',
     'IndexSequence.h',
     'IntegerPrintfMacros.h',
     'IntegerRange.h',
     'IntegerTypeTraits.h',
     'JSONWriter.h',
     'Likely.h',
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1157,9 +1157,9 @@ static const TransportSecurityPreload kP
   { "za.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
   { "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
 };
 
 // Pinning Preload List Length = 484;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1526932214992000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1527017846664000);
--- a/security/manager/ssl/nsSTSPreloadList.errors
+++ b/security/manager/ssl/nsSTSPreloadList.errors
@@ -8,36 +8,35 @@ 0x52.org: could not connect to host
 10gb.io: could not connect to host
 135vv.com: could not connect to host
 13826145000.com: could not connect to host
 166166.com: could not connect to host
 1912x.com: could not connect to host
 1er-secours.ch: could not connect to host
 1nian.vip: could not connect to host
 1q365a.com: could not connect to host
+24ip.fr: could not connect to host
 28spots.net: could not connect to host
 2bitout.com: could not connect to host
 2fl.me: could not connect to host
 360ds.co.in: could not connect to host
 38888msc.com: could not connect to host
 38blog.com: could not connect to host
 393335.ml: could not connect to host
 3bigking.com: could not connect to host
 3vlnaeet.cz: could not connect to host
-404forest.com: could not connect to host
 41844.de: could not connect to host
 439191.com: could not connect to host
 47tech.com: could not connect to host
 4baby.com.br: could not connect to host
 4d2.xyz: could not connect to host
 4loc.us: could not connect to host
 4web-hosting.com: could not connect to host
 4x4.lk: could not connect to host
 5000yz.com: could not connect to host
-517vpn.cn: could not connect to host
 52neptune.com: could not connect to host
 5ece.de: could not connect to host
 68277.me: could not connect to host
 692b8c32.de: could not connect to host
 69mentor.com: could not connect to host
 7261696e626f77.net: could not connect to host
 8560.be: could not connect to host
 87577.com: could not connect to host
@@ -58,34 +57,32 @@ abstractbarista.net: could not connect t
 acat.io: could not connect to host
 accolade.com.br: could not connect to host
 accwing.com: could not connect to host
 acgaudio.com: could not connect to host
 achterhoekseveiligheidsbeurs.nl: could not connect to host
 acpinformatique.fr: could not connect to host
 acrossgw.com: could not connect to host
 ad-disruptio.fr: could not connect to host
-adam-wilson.me: could not connect to host
 adamcoffee.net: could not connect to host
 adamdixon.co.uk: could not connect to host
 adec-emsa.ae: could not connect to host
 adult.properties: could not connect to host
 aevpn.org: could not connect to host
 affily.io: could not connect to host
 afterstack.net: could not connect to host
 agoravm.tk: could not connect to host
 agowa.eu: could not connect to host
 agowa338.de: could not connect to host
 ahlz.sk: could not connect to host
 aiicy.org: could not connect to host
 aikenorganics.com: could not connect to host
 aim-consultants.com: could not connect to host
 akiba-server.info: could not connect to host
 akita-stream.com: could not connect to host
-akoch.net: could not connect to host
 akoww.de: could not connect to host
 akul.co.in: could not connect to host
 al-f.net: could not connect to host
 alasta.info: could not connect to host
 alauda-home.de: could not connect to host
 alcatraz.online: could not connect to host
 alexandernorth.ch: could not connect to host
 alexdaulby.com: could not connect to host
@@ -118,22 +115,23 @@ andrewdaws.info: could not connect to ho
 andrewdaws.me: could not connect to host
 andrewdaws.tv: could not connect to host
 andrewrdaws.com: could not connect to host
 angrydragonproductions.com: could not connect to host
 animacurse.moe: could not connect to host
 anitube-nocookie.ch: could not connect to host
 annetaan.fi: could not connect to host
 annonasoftware.com: could not connect to host
+anon-next.de: could not connect to host
 anothermanfilm.co.uk: could not connect to host
+anshumanbiswas.com: could not connect to host
 antimatiere.space: could not connect to host
 antoinedeschenes.com: could not connect to host
 anyways.at: could not connect to host
 aojiao.org: could not connect to host
-aopedeure.nl: could not connect to host
 apkoyunlar.club: could not connect to host
 appdrinks.com: could not connect to host
 apple.ax: could not connect to host
 area3.org: could not connect to host
 arent.kz: could not connect to host
 arenzanaphotography.com: could not connect to host
 argh.io: could not connect to host
 arksan.com.tr: could not connect to host
@@ -151,16 +149,17 @@ as200753.com: could not connect to host
 as200753.net: could not connect to host
 ashleyadum.com: could not connect to host
 askmagicconch.com: could not connect to host
 asphaltfruehling.de: could not connect to host
 asral7.com: could not connect to host
 assdecoeur.org: could not connect to host
 assindia.nl: could not connect to host
 asthon.cn: could not connect to host
+astrath.net: could not connect to host
 astrea-voetbal-groningen.nl: could not connect to host
 astrosnail.pt.eu.org: could not connect to host
 asuhe.xyz: could not connect to host
 async.be: could not connect to host
 at1.co: could not connect to host
 athi.pl: could not connect to host
 atigerseye.com: could not connect to host
 atlas-5.site: could not connect to host
@@ -189,40 +188,36 @@ baiyangliu.com: could not connect to hos
 balonmano.co: could not connect to host
 bandally.net: could not connect to host
 bandarifamily.com: could not connect to host
 bannisbierblog.de: could not connect to host
 bardiharborow.com: could not connect to host
 bardiharborow.tk: could not connect to host
 barracuda.blog: could not connect to host
 barreaudenice.com: could not connect to host
-bartlamboo.nl: could not connect to host
 bashc.at: could not connect to host
 batfoundry.com: could not connect to host
 bbdos.ru: could not connect to host
-bbnx.net: could not connect to host
 bbwteens.org: could not connect to host
 bcnet.com.hk: could not connect to host
 bdsmxxxpics.com: could not connect to host
 beamitapp.com: could not connect to host
-bearden.io: could not connect to host
 beasel.biz: could not connect to host
 beccajoshwedding.com: could not connect to host
 beersandco.ch: could not connect to host
 bellavistaoutdoor.com: could not connect to host
 belpbleibtbelp.ch: could not connect to host
 belwederczykow.eu: could not connect to host
 bendemaree.com: could not connect to host
 benfairclough.com: could not connect to host
 benjamin-horvath.com: could not connect to host
 benjamin-suess.de: could not connect to host
 benzou-space.com: could not connect to host
 berduri.com: could not connect to host
 berlin-kohlefrei.de: could not connect to host
-berodes.be: could not connect to host
 berthelier.me: could not connect to host
 beslider.com: could not connect to host
 besnik.de: could not connect to host
 bestbestbitcoin.com: could not connect to host
 bestellipticalmachinereview.info: could not connect to host
 bestfitnesswatchreview.info: could not connect to host
 besthotsales.com: could not connect to host
 bey.io: could not connect to host
@@ -230,19 +225,19 @@ bezoomnyville.com: could not connect to 
 bfrailwayclub.cf: could not connect to host
 bianinapiccanovias.com: could not connect to host
 bigerbio.com: could not connect to host
 binam.center: could not connect to host
 bingcheung.com: could not connect to host
 binimo.com: could not connect to host
 biou.me: could not connect to host
 bip.gov.sa: could not connect to host
-birminghamsunset.com: could not connect to host
 biscuits-rec.com: could not connect to host
 biscuits-shop.com: could not connect to host
+biswas.me: could not connect to host
 bitcoin-class.com: could not connect to host
 bitcoin-daijin.com: could not connect to host
 bitcoinjpn.com: could not connect to host
 bitmain.com.ua: could not connect to host
 bitmaincare.com.ua: could not connect to host
 bitmaincare.ru: could not connect to host
 bitmessage.ch: could not connect to host
 bityes.org: could not connect to host
@@ -253,17 +248,16 @@ blackscreen.me: could not connect to hos
 blantik.net: could not connect to host
 blazeit.io: could not connect to host
 blindaryproduction.tk: could not connect to host
 blinkenlight.co.uk: could not connect to host
 blinkenlight.com.au: could not connect to host
 blog.gparent.org: could not connect to host
 blokuhaka.fr: could not connect to host
 blueblou.com: could not connect to host
-bluepearl.tk: could not connect to host
 blumen-garage.de: could not connect to host
 bm-i.ch: could not connect to host
 bobep.ru: could not connect to host
 bodrumfarm.com: could not connect to host
 bolivarfm.com.ve: could not connect to host
 bomberus.de: could not connect to host
 bombsquad.studio: could not connect to host
 bonesserver.com: could not connect to host
@@ -273,16 +267,17 @@ borchers-media.de: could not connect to 
 borisbesemer.com: could not connect to host
 bouncing-bugs.co.uk: could not connect to host
 bqcp.net: could not connect to host
 brainlag.org: could not connect to host
 braintensive.com: could not connect to host
 brandontaylor-black.com: could not connect to host
 breathingblanket.com: could not connect to host
 brettabel.com: could not connect to host
+brfvh24.se: could not connect to host
 brideandgroomdirect.ie: could not connect to host
 brio-ukraine.store: could not connect to host
 brookframework.org: could not connect to host
 brrr.fr: could not connect to host
 brynnan.nl: could not connect to host
 bsalyzer.com: could not connect to host
 bsktweetup.info: could not connect to host
 bslim-e-boutique.com: could not connect to host
@@ -300,18 +295,16 @@ buyhealth.shop: could not connect to hos
 buyingsellingflorida.com: could not connect to host
 buyprofessional.shop: could not connect to host
 buyshoe.org: could not connect to host
 bvexplained.co.uk: could not connect to host
 by1898.com: could not connect to host
 byji.com: could not connect to host
 bypass.kr: could not connect to host
 byteshift.ca: could not connect to host
-cabaladada.org: could not connect to host
-cadoth.net: could not connect to host
 cafechesscourt.com: could not connect to host
 cafesg.net: could not connect to host
 caipai.fm: could not connect to host
 calculatoaresecondhand.xyz: could not connect to host
 callabs.net: could not connect to host
 calleveryday.com: could not connect to host
 callsigns.ca: could not connect to host
 calypso-tour.net: could not connect to host
@@ -373,39 +366,38 @@ clic-music.com: could not connect to hos
 clintonbloodworth.com: could not connect to host
 closetemail.com: could not connect to host
 cloudbleed.info: could not connect to host
 cloudbolin.es: could not connect to host
 cloudimproved.com: could not connect to host
 cloudimprovedtest.com: could not connect to host
 cloudwarez.xyz: could not connect to host
 clownish.co.il: could not connect to host
-clustermaze.net: could not connect to host
 clycat.ru: could not connect to host
 cmpr.es: could not connect to host
 cmrss.com: could not connect to host
 cms-weble.jp: could not connect to host
 cmweller.com: could not connect to host
+cnetw.xyz: could not connect to host
 cnlic.com: could not connect to host
 cnwage.com: could not connect to host
 cnwarn.com: could not connect to host
 co-yutaka.com: could not connect to host
 cobaltlp.com: could not connect to host
 coccolebenessere.it: could not connect to host
 code.fm: could not connect to host
 codenlife.xyz: could not connect to host
 codercross.com: could not connect to host
+codercy.com: could not connect to host
 codewiz.xyz: could not connect to host
 cogumelosmagicos.org: could not connect to host
 colarelli.ch: could not connect to host
 colleencornez.com: could not connect to host
 collins.kg: could not connect to host
 coloppe.com: could not connect to host
-coloraid.net: could not connect to host
-coloringnotebook.com: could not connect to host
 com.cc: could not connect to host
 combatshield.cz: could not connect to host
 complex-organization.com: could not connect to host
 complt.xyz: could not connect to host
 comprehensiveihc.com: could not connect to host
 conception.sk: could not connect to host
 concretehermit.com: could not connect to host
 conniesacademy.com: could not connect to host
@@ -414,24 +406,24 @@ construct-trust.com: could not connect t
 constructive.men: could not connect to host
 contraspin.co.nz: could not connect to host
 conve.eu: could not connect to host
 coreapm.com: could not connect to host
 coreapm.org: could not connect to host
 corecdn.org: could not connect to host
 corinnanese.de: could not connect to host
 correct.horse: could not connect to host
-cosmeticasimple.com: could not connect to host
 cosmeticosdelivery.com.br: could not connect to host
 cosmiatria.pe: could not connect to host
 cosplayer.com: could not connect to host
 coumoul.fr: could not connect to host
 cpaneltips.com: could not connect to host
 crackslut.eu: could not connect to host
 crea.bg: could not connect to host
+creativecommonscatpictures.com: could not connect to host
 creato.top: could not connect to host
 cristianhares.com: could not connect to host
 criticalaim.com: could not connect to host
 crox.co: could not connect to host
 cryptopartynewcastle.org: could not connect to host
 cryptoshot.pw: could not connect to host
 crystalmachine.net: could not connect to host
 cselzer.com: could not connect to host
@@ -471,26 +463,26 @@ davidscherzer.at: could not connect to h
 davidstuff.net: could not connect to host
 davros.eu: could not connect to host
 davros.ru: could not connect to host
 dawnson.is: could not connect to host
 dawnsonb.com: could not connect to host
 day-peak.com: could not connect to host
 days.one: could not connect to host
 dbox.ga: could not connect to host
+dc585.info: could not connect to host
 dcc.moe: could not connect to host
 dden.website: could not connect to host
 dden.xyz: could not connect to host
 de-servers.de: could not connect to host
 decoyrouting.com: could not connect to host
 dedietrich-asia.com: could not connect to host
 deepcreampie.com: could not connect to host
 deeps.cat: could not connect to host
 deepspace.dedyn.io: could not connect to host
-delfic.org: could not connect to host
 deloittequant.com: could not connect to host
 derchris.me: could not connect to host
 derivativeshub.pro: could not connect to host
 dermacarecomplex.com: could not connect to host
 detecte-fuite.ch: could not connect to host
 detecte.ch: could not connect to host
 detectefuite.ch: could not connect to host
 devdesco.com: could not connect to host
@@ -531,29 +523,26 @@ dnfc.rocks: could not connect to host
 dobrisan.ro: could not connect to host
 doctafit.com: could not connect to host
 doesmycodehavebugs.today: could not connect to host
 dogcratereview.info: could not connect to host
 dojifish.space: could not connect to host
 dolphin-hosting.com: could not connect to host
 domengrad.ru: could not connect to host
 domfee.com: could not connect to host
-dominikkulaga.pl: could not connect to host
 dongkexue.com: could not connect to host
 doop.im: could not connect to host
 doopdidoop.com: could not connect to host
 dopesoft.de: could not connect to host
 dostavkakurierom.ru: could not connect to host
 dougferris.id.au: could not connect to host
 doyoulyft.com: could not connect to host
 doze-cloud.tech: could not connect to host
-dranek.com: could not connect to host
 dreaming.solutions: could not connect to host
 dreizwosechs.de: could not connect to host
-driesjtuver.nl: could not connect to host
 driving-lessons.co.uk: could not connect to host
 drivinghorror.com: could not connect to host
 drixn.cn: could not connect to host
 drixn.info: could not connect to host
 drixn.net: could not connect to host
 drizz.com.br: could not connect to host
 drobniuch.pl: could not connect to host
 drogoz.moe: could not connect to host
@@ -564,24 +553,22 @@ dubrovskiy.net: could not connect to hos
 dubrovskiy.pro: could not connect to host
 duch.cloud: could not connect to host
 duelsow.eu: could not connect to host
 dujsq.com: could not connect to host
 dujsq.top: could not connect to host
 duks.com.br: could not connect to host
 duo.money: could not connect to host
 durangoenergyllc.com: could not connect to host
-dutchwanderers.nl: could not connect to host
 dwnld.me: could not connect to host
 dynts.pro: could not connect to host
 dzyabchenko.com: could not connect to host
 e-mak.eu: could not connect to host
 e-wishlist.net: could not connect to host
 earth-people.org: could not connect to host
-earvinkayonga.com: could not connect to host
 eatfitoutlet.com.br: could not connect to host
 eatry.io: could not connect to host
 ebonyriddle.com: could not connect to host
 eccux.com: could not connect to host
 ectora.com: could not connect to host
 edgecustomersportal.com: could not connect to host
 eduif.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 115"  data: no]
 eeb98.com: could not connect to host
@@ -597,27 +584,26 @@ elenorsmadness.org: could not connect to
 elevateandprosper.com: could not connect to host
 elitesensual.com.br: could not connect to host
 elonbase.com: could not connect to host
 elsword.moe: could not connect to host
 eltransportquevolem.org: could not connect to host
 embellir-aroma.com: could not connect to host
 embellir-kyujin.com: could not connect to host
 embracethedarkness.co.uk: could not connect to host
+emeraldcoastrideshare.com: could not connect to host
 emilyjohnson.ga: could not connect to host
-emporiovinareal.com.br: could not connect to host
 emrenovation.com: could not connect to host
 endohaus.us: could not connect to host
 endspamwith.us: could not connect to host
 enoou.com: could not connect to host
 er-music.com: could not connect to host
 erspro.net: could not connect to host
 erwinwensveen.nl: could not connect to host
 esoterik.link: could not connect to host
-espanova.com: could not connect to host
 ethicaltek.com: could not connect to host
 ethiobaba.com: could not connect to host
 euexia.fr: could not connect to host
 eung.ga: could not connect to host
 eurostrategy.vn.ua: could not connect to host
 evankurniawan.com: could not connect to host
 eveshaiwu.com: could not connect to host
 eworksmedia.com: could not connect to host
@@ -646,17 +632,16 @@ famer.me: could not connect to host
 fameuxhosting.co.uk: could not connect to host
 familie-sander.rocks: could not connect to host
 fancy-bridge.com: could not connect to host
 faretravel.co.uk: could not connect to host
 farm24.co.uk: could not connect to host
 fastaim.de: could not connect to host
 fastbackmbg.be: could not connect to host
 faxreader.net: could not connect to host
-fdlibre.eu: could not connect to host
 feac.us: could not connect to host
 fed51.com: could not connect to host
 fedn.it: could not connect to host
 feedstringer.com: could not connect to host
 feirlane.org: could not connect to host
 feisbed.com: could not connect to host
 feist.io: could not connect to host
 fengyadi.com: could not connect to host
@@ -673,30 +658,30 @@ filebox.space: could not connect to host
 fileio.io: could not connect to host
 findmybottleshop.com.au: could not connect to host
 findyour.diet: could not connect to host
 fingerscrossed.style: could not connect to host
 finstererlebnis.de: could not connect to host
 fioulmarket.fr: could not connect to host
 firehost.com: could not connect to host
 firexarxa.de: could not connect to host
+first-time-offender.com: could not connect to host
 fix-the-timeline.com: could not connect to host
 fix-the-timeline.org: could not connect to host
 fixmyglitch.com: could not connect to host
 fixthetimeline.com: could not connect to host
 fixthetimeline.org: could not connect to host
 flamingcow.tv: could not connect to host
 flow.su: could not connect to host
 flugplatz-edvc.de: could not connect to host
 fly.moe: could not connect to host
 flygpost.com: could not connect to host
 flyingdoggy.net: could not connect to host
 focalforest.com: could not connect to host
 fojing.com: could not connect to host
-foodacademy.capetown: could not connect to host
 forcamp.ga: could not connect to host
 forschbach-janssen.de: could not connect to host
 forsyththeatre.com: could not connect to host
 fortuna-loessnitz.de: could not connect to host
 foshanshequ.com: could not connect to host
 fossewayflowers.co.uk: could not connect to host
 fossewayflowers.com: could not connect to host
 foudufafa.de: could not connect to host
@@ -719,26 +704,24 @@ frickenate.com: could not connect to hos
 friedhelm-wolf.de: could not connect to host
 friller.com.au: could not connect to host
 frodriguez.xyz: could not connect to host
 frolov.net: could not connect to host
 fromlemaytoz.com: could not connect to host
 frosty-gaming.xyz: could not connect to host
 frp-roleplay.de: could not connect to host
 frusky.net: could not connect to host
-fs-gamenet.de: could not connect to host
 fsfi.is: could not connect to host
 fsradio.eu: could not connect to host
 ftgho.com: could not connect to host
 fuckcf.cf: could not connect to host
 fugle.de: could not connect to host
 fuitedeau.ch: could not connect to host
 fukuko.biz: could not connect to host
 fukuko.xyz: could not connect to host
-fukuoka-cityliner.jp: could not connect to host
 fun9.cc: could not connect to host
 fun99.cc: could not connect to host
 funksteckdosen24.de: could not connect to host
 funoverip.net: could not connect to host
 funspins.com: could not connect to host
 futos.de: could not connect to host
 fuzoku-sodan.com: could not connect to host
 fyol.pw: could not connect to host
@@ -774,16 +757,17 @@ geek.ch: could not connect to host
 gehrke.nrw: could not connect to host
 geigr.de: could not connect to host
 generationnext.pl: could not connect to host
 geneve.guide: could not connect to host
 genoog.com: could not connect to host
 genossen.ru: could not connect to host
 georgescarryout.com: could not connect to host
 geri.be: could not connect to host
+getdigitized.net: could not connect to host
 getfilterlive.org: could not connect to host
 getgeek.dk: could not connect to host
 getgeek.ee: could not connect to host
 getgeek.fi: could not connect to host
 getgeek.fr: could not connect to host
 getgeek.io: could not connect to host
 getgeek.no: could not connect to host
 getgeek.nu: could not connect to host
@@ -791,48 +775,46 @@ getgeek.pl: could not connect to host
 getitpeople.com: could not connect to host
 getwarden.net: could not connect to host
 getyourphix.tk: could not connect to host
 gevaulug.fr: could not connect to host
 gfoss.gr: could not connect to host
 gglks.com: could not connect to host
 ggss.cf: could not connect to host
 gh16.com.ar: could not connect to host
-giacomodrago.com: could not connect to host
-giacomodrago.it: could not connect to host
 gifzilla.net: could not connect to host
 gina-architektur.design: could not connect to host
 git.co: could not connect to host
 gix.net.pl: could not connect to host
+globalvisions-events.ch: could not connect to host
 glutenfreelife.co.nz: could not connect to host
 gmantra.org: could not connect to host
 gmanukyan.com: could not connect to host
 gnom.me: could not connect to host
 gnosticjade.net: could not connect to host
 godrealms.com: could not connect to host
 goiaspropaganda.com.br: could not connect to host
 gongjuhao.com: could not connect to host
 google.ax: could not connect to host
 goranrango.ch: could not connect to host
 gottfridsberg.org: could not connect to host
 gozadentro.com: could not connect to host
 gradsm-ci.net: could not connect to host
 granth.io: could not connect to host
+grassenberg.de: could not connect to host
 gratisonlinesex.com: could not connect to host
 greenitpark.net: could not connect to host
 greggsfoundation.org.uk: could not connect to host
 gregmartyn.com: could not connect to host
 greuel.online: could not connect to host
-greybit.net: could not connect to host
 gritte.net: could not connect to host
 grossmisconduct.news: could not connect to host
 gugaltika-ipb.org: could not connect to host
 guinea-pig.co: could not connect to host
 guishem.com: could not connect to host
-gunwatch.co.uk: could not connect to host
 gurochan.ch: could not connect to host
 gus.moe: could not connect to host
 gvchannel.xyz: could not connect to host
 gzpblog.com: could not connect to host
 habeo.si: could not connect to host
 hackbubble.me: could not connect to host
 hackingsafe.com: could not connect to host
 hackmeplz.com: could not connect to host
@@ -847,17 +829,16 @@ handinhandfoundation.org.uk: could not c
 hapijs.cn: could not connect to host
 happytiger.eu: could not connect to host
 hapvm.com: could not connect to host
 harald-d.dyndns.org: could not connect to host
 harrypottereditor.net: could not connect to host
 hasabig.wang: could not connect to host
 hasalittle.wang: could not connect to host
 hashplex.com: could not connect to host
-haucke.xyz: could not connect to host
 hbbet.com: could not connect to host
 hbvip.com: could not connect to host
 hcstr.com: could not connect to host
 hdy.nz: could not connect to host
 healthyandnaturalliving.com: could not connect to host
 hearingshofar.com: could not connect to host
 hearty.ink: could not connect to host
 heavenlyseals.com: could not connect to host
@@ -887,24 +868,26 @@ hill.selfip.net: could not connect to ho
 hintermeier-rae.at: could not connect to host
 hirte-digital.de: could not connect to host
 hitchunion.org: could not connect to host
 hjes.com.ve: could not connect to host
 hohm.in: could not connect to host
 holidayincotswolds.co.uk: could not connect to host
 homoglyph.net: could not connect to host
 hondenoppasfraneker.nl: could not connect to host
+honeycome.net: could not connect to host
 hoodoo.io: could not connect to host
 hoodoo.tech: could not connect to host
 hopglass.eu: could not connect to host
 hopglass.net: could not connect to host
 horvathd.eu: could not connect to host
 hosted-oswa.org: could not connect to host
 hotelmadhuwanvihar.com: could not connect to host
 hozinga.de: could not connect to host
+hpctecnologias.com: could not connect to host
 hr98.tk: could not connect to host
 hserver.top: could not connect to host
 httptest.net: could not connect to host
 huangzenghao.cn: could not connect to host
 huangzenghao.com: could not connect to host
 hudingyuan.cn: could not connect to host
 huiser.nl: could not connect to host
 hukkatavara.com: could not connect to host
@@ -958,42 +941,40 @@ insouciant.org: could not connect to hos
 inst.mobi: could not connect to host
 instasex.ch: could not connect to host
 intelldynamics.com: could not connect to host
 interspot.nl: could not connect to host
 interviewpipeline.co.uk: could not connect to host
 invenio.software: could not connect to host
 investingdiary.cn: could not connect to host
 investorloanshub.com: could not connect to host
-iocheck.com: could not connect to host
+invisionita.com: could not connect to host
 iodu.re: could not connect to host
 ip.or.at: could not connect to host
 iphonechina.net: could not connect to host
 iplog.info: could not connect to host
 ipnetworking.net: could not connect to host
 irinkeby.nu: could not connect to host
 isamiok.com: could not connect to host
 isisfighters.info: could not connect to host
 iskkk.com: could not connect to host
 isscouncil.com: could not connect to host
 isthefieldcontrolsystemdown.com: could not connect to host
 isz.no: could not connect to host
 itad.top: could not connect to host
-iteli.eu: could not connect to host
 itpro-mg.de: could not connect to host
 its-schindler.de: could not connect to host
 itsatrap.nl: could not connect to host
 ivanilla.org: could not connect to host
 ivanpolchenko.com: could not connect to host
 ivystech.com: could not connect to host
 ixio.cz: could not connect to host
 j0ng.xyz: could not connect to host
 jaimechanaga.com: could not connect to host
 jaion.ml: could not connect to host
-jakeguild.com: could not connect to host
 jakincode.army: could not connect to host
 jaksel.id: could not connect to host
 jaksi.io: could not connect to host
 jamesheald.com: could not connect to host
 janheidler.dynv6.net: could not connect to host
 janssen.fm: could not connect to host
 japan4you.org: could not connect to host
 jardins-utopie.net: could not connect to host
@@ -1004,17 +985,16 @@ jccars-occasions.be: could not connect t
 jccrew.org: could not connect to host
 jcraft.us: could not connect to host
 jean-remy.ch: could not connect to host
 jeffersonregan.org: could not connect to host
 jens.hk: could not connect to host
 jhburton.co.uk: could not connect to host
 jiangzm.com: could not connect to host
 jiaqiang.vip: could not connect to host
-jiid.ga: could not connect to host
 jmb.lc: could not connect to host
 jmk.hu: could not connect to host
 jobmedic.com: could not connect to host
 joecod.es: could not connect to host
 joetyson.io: could not connect to host
 johngo.tk: could not connect to host
 johnkastler.net: could not connect to host
 johntomasowa.com: could not connect to host
@@ -1022,30 +1002,30 @@ jonathansanchez.pro: could not connect t
 jonfor.net: could not connect to host
 jonpads.com: could not connect to host
 jooto.com: could not connect to host
 josephsniderman.net: could not connect to host
 jpod.cc: could not connect to host
 js88.sg: could not connect to host
 jsc7776.com: could not connect to host
 jsjyhzy.cc: could not connect to host
+jslidong.top: could not connect to host
 juliaoantiguidades.com.br: could not connect to host
 juliawebber.co.za: could not connect to host
 jumbopan.com: could not connect to host
 jumbopan.net: could not connect to host
 just-pools.co.za: could not connect to host
 justinharrison.ca: could not connect to host
 justzz.xyz: could not connect to host
 juventusmania1897.com: could not connect to host
 k33k00.com: could not connect to host
 kaika-facilitymanagement.de: could not connect to host
 kaloix.de: could not connect to host
 kamalame.co: could not connect to host
 kamitech.ch: could not connect to host
-kanar.nl: could not connect to host
 kandalife.com: could not connect to host
 kanganer.com: could not connect to host
 kangzaber.com: could not connect to host
 kapo.info: could not connect to host
 karamna.com: could not connect to host
 karuneshjohri.com: could not connect to host
 kat.al: could not connect to host
 katzen.me: could not connect to host
@@ -1058,25 +1038,25 @@ kela.jp: could not connect to host
 kellyandantony.com: could not connect to host
 kelm.me: could not connect to host
 kermadec.com: could not connect to host
 keshausconsulting.com: could not connect to host
 kevinbowers.me: could not connect to host
 kevindekoninck.com: could not connect to host
 kevinfoley.cc: could not connect to host
 kevinfoley.org: could not connect to host
+keyihao.cn: could not connect to host
 keyserver.sexy: could not connect to host
 kgb.us: could not connect to host
 kidbacker.com: could not connect to host
 kieranweightman.me: could not connect to host
 kikuzuki.org: could not connect to host
 kinepolis-studio.ga: could not connect to host
 kingbird.me: could not connect to host
 kingclass.cn: could not connect to host
-kinmunity.com: could not connect to host
 kirill.ws: could not connect to host
 kj1396.net: could not connect to host
 kjoglum.me: could not connect to host
 kleinblogje.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 115"  data: no]
 klingeletest.de: could not connect to host
 knarcraft.net: could not connect to host
 kngk-azs.ru: could not connect to host
 knightsweep.com: could not connect to host
@@ -1093,32 +1073,32 @@ kopular.com: could not connect to host
 kostya.net: could not connect to host
 kotorimusic.ga: could not connect to host
 kozmik.co: could not connect to host
 krampus-fischamend.at: could not connect to host
 kriegskindernothilfe.de: could not connect to host
 ktube.yt: could not connect to host
 kubusadvocaten.nl: could not connect to host
 kuko-crews.org: could not connect to host
+kupiec.eu.org: could not connect to host
 kwikmed.eu: could not connect to host
 kyle.place: could not connect to host
 kylebaldw.in: could not connect to host
 kylling.io: could not connect to host
 kyujin-office.net: could not connect to host
 l18.io: could not connect to host
 laboutiquemarocaineduconvoyeur.com: could not connect to host
 laboutiquemarocaineduconvoyeur.ma: could not connect to host
 lacasa.fr: could not connect to host
 lacasabelucci.com: could not connect to host
 lacasseroy.com: could not connect to host
 ladylikeit.com: could not connect to host
 lafr4nc3.net: could not connect to host
 lafr4nc3.xyz: could not connect to host
 lakewoodcomputerservices.com: could not connect to host
-lamboo.be: could not connect to host
 landell.ml: could not connect to host
 lanonfire.com: could not connect to host
 lateliercantaldeco.fr: could not connect to host
 lathamlabs.com: could not connect to host
 lathamlabs.net: could not connect to host
 lathamlabs.org: could not connect to host
 lazulu.com: could not connect to host
 lbarrios.es: could not connect to host
@@ -1128,32 +1108,32 @@ ldcraft.pw: could not connect to host
 leaderoftheresistance.com: could not connect to host
 leaderoftheresistance.net: could not connect to host
 leaks.directory: could not connect to host
 lebal.se: could not connect to host
 leebiblestudycentre.net: could not connect to host
 leebiblestudycentre.org: could not connect to host
 legal.farm: could not connect to host
 legaltip.eu: could not connect to host
+leiming.co: could not connect to host
 leolana.com: could not connect to host
 leonardcamacho.me: could not connect to host
 lerlivros.online: could not connect to host
 lescomptoirsdepierrot.com: could not connect to host
 lesdouceursdeliyana.com: could not connect to host
 lessets-graphiques.com: could not connect to host
 letsgetintouch.com: could not connect to host
 leveredge.net: could not connect to host
 lezdomsm.com: could not connect to host
 lfaz.org: could not connect to host
 lheinrich.org: could not connect to host
 lhsj28.com: could not connect to host
 lhsj68.com: could not connect to host
 lhsj78.com: could not connect to host
 liaozheqi.cn: could not connect to host
-libbitcoin.org: could not connect to host
 libertas-tech.com: could not connect to host
 libscode.com: could not connect to host
 likenosis.com: could not connect to host
 linkages.org: could not connect to host
 linksanitizer.com: could not connect to host
 linksextremist.at: could not connect to host
 linley.de: could not connect to host
 linostassi.net: could not connect to host
@@ -1187,17 +1167,16 @@ ltransferts.com: could not connect to ho
 luav.org: could not connect to host
 lubot.net: could not connect to host
 lucascodes.com: could not connect to host
 lucidlogs.com: could not connect to host
 lukasunger.cz: could not connect to host
 lukasunger.net: could not connect to host
 lukasztkacz.com: could not connect to host
 luom.net: could not connect to host
-luxcraft.eng.br: could not connect to host
 luxonetwork.com: could not connect to host
 lycly.me: could not connect to host
 m-generator.com: could not connect to host
 m4570.xyz: could not connect to host
 m4g.ru: could not connect to host
 maartenterpstra.xyz: could not connect to host
 macustar.eu: could not connect to host
 madeintucson.org: could not connect to host
@@ -1205,23 +1184,21 @@ madusecurity.com: could not connect to h
 magicball.co: could not connect to host
 magnacumlaude.co: could not connect to host
 maik-mahlow.de: could not connect to host
 mailon.ga: could not connect to host
 makeit-so.de: could not connect to host
 malesbdsm.com: could not connect to host
 malgraph.net: could not connect to host
 mamastore.eu: could not connect to host
-manufacturing.gov: could not connect to host
 marcdorka.de: could not connect to host
 marcelmarnitz.com: could not connect to host
 marche-nordic-jorat.ch: could not connect to host
 mardelcupon.com: could not connect to host
 mare92.cz: could not connect to host
-marilsnijders.nl: could not connect to host
 mariusschulte.de: could not connect to host
 marketingdesignu.cz: could not connect to host
 marko-fenster24.de: could not connect to host
 martins.im: could not connect to host
 marxist.party: could not connect to host
 mashandco.it: could not connect to host
 mastodon.expert: could not connect to host
 mastodon.my: could not connect to host
@@ -1272,32 +1249,30 @@ metrix-money-ptc.com: could not connect 
 metrix.design: could not connect to host
 mexior.nl: could not connect to host
 meyeraviation.com: could not connect to host
 mhjuma.com: could not connect to host
 michaelkuchta.me: could not connect to host
 michaelsulzer.com: could not connect to host
 michaelsulzer.eu: could not connect to host
 mieterschutzkartei.de: could not connect to host
-migueldominguez.ch: could not connect to host
 mikeybot.com: could not connect to host
 min.kiwi: could not connect to host
 mingy.ddns.net: could not connect to host
 mingyueli.com: could not connect to host
 minitruckin.net: could not connect to host
-mixnshake.com: could not connect to host
 mjmnagy.info: could not connect to host
 mkfs.fr: could not connect to host
 mkplay.io: could not connect to host
 mmstick.tk: could not connect to host
 mneeb.de: could not connect to host
 mobile.eti.br: could not connect to host
 mobmp4.co: could not connect to host
-mobmp4.info: could not connect to host
 modded-minecraft-server-list.com: could not connect to host
+modernibytovytextil.cz: could not connect to host
 moderntld.net: could not connect to host
 moe-max.jp: could not connect to host
 moefi.xyz: could not connect to host
 moeyi.xyz: could not connect to host
 mongla168.net: could not connect to host
 mongla88.net: could not connect to host
 monitori.ng: could not connect to host
 moobo.xyz: could not connect to host
@@ -1327,28 +1302,29 @@ msz-fotografie.de: could not connect to 
 mtirc.co: could not connect to host
 mtn.cc: could not connect to host
 muchohentai.com: could not connect to host
 muj-svet.cz: could not connect to host
 multivpn.fr: could not connect to host
 munduch.cz: could not connect to host
 murraycolin.org: could not connect to host
 murz.tv: could not connect to host
+music-project.eu: could not connect to host
 muslimbanter.co.za: could not connect to host
 mxawei.cn: could not connect to host
 mxlife.org: could not connect to host
 my-dick.ru: could not connect to host
 mybeautyjobs.de: could not connect to host
 mycamda.com: could not connect to host
 myfappening.org: could not connect to host
 myfunworld.de: could not connect to host
 mygreatjob.eu: could not connect to host
 mygreatjobs.de: could not connect to host
 mykeepsake.xyz: could not connect to host
-mysterysear.ch: could not connect to host
+myndcommunication.com: could not connect to host
 mytravelblog.de: could not connect to host
 mzlog.win: could not connect to host
 n0099.cf: could not connect to host
 naano.org: could not connect to host
 naphex.rocks: could not connect to host
 narodsovety.ru: could not connect to host
 nassi.me: could not connect to host
 nastysclaw.com: could not connect to host
@@ -1410,28 +1386,28 @@ off-the-clock.us: could not connect to h
 offgames.pro: could not connect to host
 office-ruru.com: could not connect to host
 ohyooo.com: could not connect to host
 oinky.ddns.net: could not connect to host
 oldchaphome.nl: could not connect to host
 oldtimer-trifft-flugplatz.de: could not connect to host
 oliverspringer.eu: could not connect to host
 omnibot.tv: could not connect to host
+onetly.com: could not connect to host
 onewebdev.info: could not connect to host
 onsite4u.de: could not connect to host
 onstud.com: could not connect to host
 onwie.fr: could not connect to host
 ooeste.com: could not connect to host
 open-desk.org: could not connect to host
 opinion8td.com: could not connect to host
 optimist.bg: could not connect to host
 oscarmashauri.com: could not connect to host
 oscsdp.cz: could not connect to host
 osmanlitorunu.com: could not connect to host
-ospree.me: could not connect to host
 osterkraenzchen.de: could not connect to host
 otinane.eu: could not connect to host
 ourchoice2016.com: could not connect to host
 owlscrap.ru: could not connect to host
 oxynux.xyz: could not connect to host
 pabloartea.ga: could not connect to host
 packetcrash.net: could not connect to host
 paichai.space: could not connect to host
@@ -1466,31 +1442,30 @@ payload.tech: could not connect to host
 paymon.tj: could not connect to host
 paypod.org: could not connect to host
 pbytes.com: could not connect to host
 pcvirusclear.com: could not connect to host
 pear2pear.de: could not connect to host
 peirong.me: could not connect to host
 pengisatelier.net: could not connect to host
 pepper.dog: could not connect to host
-perezdecastro.org: could not connect to host
 persjrp.ca: could not connect to host
 persoform.ch: could not connect to host
 petlife.od.ua: could not connect to host
 peuf.shop: could not connect to host
 peykezamin.ir: could not connect to host
 pgmsource.com: could not connect to host
+phantasie.cc: could not connect to host
 phdwuda.com: could not connect to host
 phelx.de: could not connect to host
 phil.tw: could not connect to host
 philippa.cool: could not connect to host
 photographyforchange.com: could not connect to host
 photographyforchange.org: could not connect to host
 photops.fr: could not connect to host
-phoxmeh.com: could not connect to host
 pianetaottica.eu: could not connect to host
 pianetaottica.info: could not connect to host
 picallo.es: could not connect to host
 picone.com.au: could not connect to host
 picsandtours.com: could not connect to host
 pierrejeansuau.fr: could not connect to host
 pieterhordijk.com: could not connect to host
 pimspage.nl: could not connect to host
@@ -1515,17 +1490,16 @@ poolinstallers.co.za: could not connect 
 popkins.cf: could not connect to host
 popkins.ga: could not connect to host
 popkins.gq: could not connect to host
 popkins.tk: could not connect to host
 pornblog.org: could not connect to host
 porschen.fr: could not connect to host
 portalisapres.cl: could not connect to host
 post.com.ar: could not connect to host
-postcardpayment.com: could not connect to host
 posters.win: could not connect to host
 potbar.com: could not connect to host
 potlytics.com: could not connect to host
 pouets.ovh: could not connect to host
 powerentertainment.tv: could not connect to host
 poy-tech.com: could not connect to host
 ppmathis.ch: could not connect to host
 ppmathis.com: could not connect to host
@@ -1556,16 +1530,17 @@ pruikshop.nl: could not connect to host
 prytkov.com: could not connect to host
 pseudo.coffee: could not connect to host
 psncardplus.be: could not connect to host
 psncardplus.com: could not connect to host
 psncardplus.dk: could not connect to host
 psncardplus.nl: could not connect to host
 psncardplus.se: could not connect to host
 psychoco.net: could not connect to host
+psylab.re: could not connect to host
 publimepa.it: could not connect to host
 pugilares.com.pl: could not connect to host
 puhe.se: could not connect to host
 pwdgen.net: could not connect to host
 pypa.io: could not connect to host
 pythia.nz: could not connect to host
 qbin.io: could not connect to host
 qforum.org: could not connect to host
@@ -1658,21 +1633,21 @@ safedevice.net: could not connect to hos
 safejourney.education: could not connect to host
 saferedirectlink.com: could not connect to host
 sallysubs.com: could not connect to host
 salzamt.tk: could not connect to host
 samaritan.tech: could not connect to host
 samsonova.de: could not connect to host
 sanael.net: could not connect to host
 sanatrans.com: could not connect to host
-santojuken.co.jp: could not connect to host
 sarahlicity.me.uk: could not connect to host
 sarindia.com: could not connect to host
 sarindia.de: could not connect to host
 sarndipity.com: could not connect to host
+sash.pw: could not connect to host
 savethedogfishfoundation.org: could not connect to host
 savingbytes.com: could not connect to host
 sbm.cloud: could not connect to host
 schaafenstrasse.koeln: could not connect to host
 schmidttulskie.de: could not connect to host
 schnapke.name: could not connect to host
 schwarzegar.de: could not connect to host
 sciencemonster.co.uk: could not connect to host
@@ -1691,35 +1666,30 @@ secure-automotive-cloud.org: could not c
 secureindia.co: could not connect to host
 security.xn--q9jyb4c: could not connect to host
 securitymap.wiki: could not connect to host
 securitysoapbox.com: could not connect to host
 securon.io: could not connect to host
 securoswiss.ch: could not connect to host
 seefirm.com: could not connect to host
 seen.life: could not connect to host
-selcusters.nl: could not connect to host
 seleondar.ru: could not connect to host
 selfserverx.com: could not connect to host
 sellmoretires.com: could not connect to host
 seoscribe.net: could not connect to host
-seproco.com: could not connect to host
 serverlauget.no: could not connect to host
 servfefe.com: could not connect to host
 seryovpn.com: could not connect to host
 sesha.co.za: could not connect to host
 sessionslogning.dk: could not connect to host
 shadiku.com: could not connect to host
 shadowplus.net: could not connect to host
 shadowrocket.net: could not connect to host
 shang-yu.cn: could not connect to host
 shanxiapark.com: could not connect to host
-sharperedge.pw: could not connect to host
-sharperedgecomputers.com: could not connect to host
-shatorin.com: could not connect to host
 shavingks.com: could not connect to host
 sheying.tm: could not connect to host
 shinko-osaka.jp: could not connect to host
 shirakaba-cc.com: could not connect to host
 shirt2go.shop: could not connect to host
 shred.ch: could not connect to host
 shredoptics.ch: could not connect to host
 shurita.org: could not connect to host
@@ -1792,39 +1762,41 @@ sqzryang.com: could not connect to host
 sritest.io: could not connect to host
 srvc.io: could not connect to host
 srvonfire.com: could not connect to host
 stadionmanager.com: could not connect to host
 stadtgartenla.com: could not connect to host
 stalkthe.net: could not connect to host
 startup.melbourne: could not connect to host
 startupum.ru: could not connect to host
+stassi.ch: could not connect to host
 statgram.me: could not connect to host
 static-assets.io: could not connect to host
 static.hosting: could not connect to host
 staticisnoise.com: could not connect to host
 statusbot.io: could not connect to host
+staxflax.tk: could not connect to host
 steffi-in-australien.com: could not connect to host
 steven-bennett.com: could not connect to host
 stickswag.cf: could not connect to host
 stilettomoda.com.br: could not connect to host
 stonefusion.org.uk: could not connect to host
 stonemanbrasil.com.br: could not connect to host
 stpip.com: could not connect to host
 streams.dyndns.org: could not connect to host
 stressfreehousehold.com: could not connect to host
 stylle.me: could not connect to host
+subrain.com: could not connect to host
 sudo.im: could not connect to host
 sudosu.fr: could not connect to host
 suitocracy.com: could not connect to host
 summer.ga: could not connect to host
 suneilpatel.com: could not connect to host
 sunfireshop.com.br: could not connect to host
 sunxchina.com: could not connect to host
-superbart.nl: could not connect to host
 superbdistribute.com: could not connect to host
 supermil.ch: could not connect to host
 superpase.com: could not connect to host
 surasak.io: could not connect to host
 surasak.org: could not connect to host
 surdam.casa: could not connect to host
 susastudentenjobs.de: could not connect to host
 suspiciousdarknet.xyz: could not connect to host
@@ -1833,17 +1805,16 @@ suzi3d.com: could not connect to host
 swaggerdile.com: could not connect to host
 sweetlegs.jp: could not connect to host
 swissentreprises.ch: could not connect to host
 syncmylife.net: could not connect to host
 synergisticsoccer.com: could not connect to host
 szunia.com: could not connect to host
 t3rror.net: could not connect to host
 tab.watch: could not connect to host
-taboragroup.com: could not connect to host
 tacoma-games.com: could not connect to host
 taidu.news: could not connect to host
 takusan.ru: could not connect to host
 tangyue.date: could not connect to host
 tangzhao.net: could not connect to host
 tapestries.tk: could not connect to host
 tarek.link: could not connect to host
 tcpweb.net: could not connect to host
@@ -1881,22 +1852,20 @@ thefox.co: could not connect to host
 thefrk.xyz: could not connect to host
 thelostyankee.com: could not connect to host
 thenrdhrd.nl: could not connect to host
 theoverfly.co: could not connect to host
 theprincegame.com: could not connect to host
 theprivacysolution.com: could not connect to host
 thequillmagazine.org: could not connect to host
 thermique.ch: could not connect to host
-thescientists.nl: could not connect to host
 thesehighsandlows.com: could not connect to host
 theserver201.tk: could not connect to host
 thetapirsmouth.com: could not connect to host
 thevoid.one: could not connect to host
-thewebdexter.com: could not connect to host
 thinkcash.nl: could not connect to host
 thompsonfamily.cloud: could not connect to host
 threatcentral.io: could not connect to host
 thynx.io: could not connect to host
 tianxicaipiao.com: could not connect to host
 tianxicaipiao.win: could not connect to host
 tianxicp.com: could not connect to host
 tibovanheule.site: could not connect to host
@@ -1907,17 +1876,16 @@ tink.network: could not connect to host
 tkanemoto.com: could not connect to host
 tnb-plattform.de: could not connect to host
 todosrv.com: could not connect to host
 tofa-koeln.de: could not connect to host
 tokoindo.top: could not connect to host
 tollsjekk.no: could not connect to host
 tomm.yt: could not connect to host
 tommounsey.com: could not connect to host
-toncusters.nl: could not connect to host
 tooolroc.org: could not connect to host
 top10mountainbikes.info: could not connect to host
 topanlage.de: could not connect to host
 topdetoxcleanse.com: could not connect to host
 topnotchendings.com: could not connect to host
 tor2web.org: could not connect to host
 totallynotaserver.com: could not connect to host
 totch.de: could not connect to host
@@ -1998,16 +1966,17 @@ vernonfigureskatingclub.com: could not c
 versfin.net: could not connect to host
 veryyounglesbians.com: could not connect to host
 vgatest.nl: could not connect to host
 vicenage.com: could not connect to host
 viciousviscosity.xyz: could not connect to host
 videorullen.se: could not connect to host
 vikasbabyworld.de: could not connect to host
 vilaydin.com: could not connect to host
+villainsclothing.com.au: could not connect to host
 vimeosucks.nyc: could not connect to host
 vinesauce.info: could not connect to host
 vinetalk.net: could not connect to host
 vipnettikasinoklubi.com: could not connect to host
 visiongamestudios.com: could not connect to host
 visionthroughknowledge.com: could not connect to host
 visiontree-beta.eu: could not connect to host
 visiontree.eu: could not connect to host
@@ -2020,38 +1989,35 @@ volcain.io: could not connect to host
 vorderklier.de: could not connect to host
 vorlif.org: could not connect to host
 vorodevops.com: could not connect to host
 votresiteweb.ch: could not connect to host
 vrtouring.org: could not connect to host
 vsund.de: could not connect to host
 vucdn.com: could not connect to host
 vxapps.com: could not connect to host
-w4nvu.org: could not connect to host
 wabifoggynuts.com: could not connect to host
 waixingrenfuli.vip: could not connect to host
 wanashi.com: could not connect to host
 wanda76.com: could not connect to host
 wanda78.com: could not connect to host
 wanda79.com: could not connect to host
 wanda96.com: could not connect to host
 wanda97.com: could not connect to host
 wanda98.com: could not connect to host
-warezaddict.com: could not connect to host
 warlions.info: could not connect to host
 warp-radio.com: could not connect to host
 warp-radio.tv: could not connect to host
 wassim.is: could not connect to host
 watashi.bid: could not connect to host
 watchweasel.com: could not connect to host
 watersb.org: could not connect to host
 waxdramatic.com: could not connect to host
 we.serveftp.net: could not connect to host
 weareincognito.org: could not connect to host
-web-wave.jp: could not connect to host
 webart-factory.de: could not connect to host
 webbson.net: could not connect to host
 webgears.com: could not connect to host
 webhackspro.com: could not connect to host
 webproject.rocks: could not connect to host
 webspotter.nl: could not connect to host
 webtar.info: could not connect to host
 webtech.com.br: could not connect to host
@@ -2065,34 +2031,32 @@ wejumall.com: could not connect to host
 wekibe.de: could not connect to host
 welby.cat: could not connect to host
 wendigo.pl: could not connect to host
 werbik.at: could not connect to host
 wereldplanner.nl: could not connect to host
 werhatunsverraten.eu: could not connect to host
 wespeakgeek.co.za: could not connect to host
 wetthost.com: could not connect to host
-wevg.org: could not connect to host
 wg-tools.de: could not connect to host
 whereisjason.com: could not connect to host
 whereismyorigin.cf: could not connect to host
 wherephoto.com: could not connect to host
 whilsttraveling.com: could not connect to host
 whitworth.nyc: could not connect to host
 whoneedstobeprimaried.today: could not connect to host
 wibuw.com: could not connect to host
 wilfrid-calixte.fr: could not connect to host
 wilhelm-nathan.de: could not connect to host
 willkommen-fuerstenberg.de: could not connect to host
 winnersports.co: could not connect to host
 winsufi.biz: could not connect to host
 wisak.eu: could not connect to host
 wishesbee.com: could not connect to host
 wissl.org: could not connect to host
-withoutacrystalball.com: could not connect to host
 wizznab.tk: could not connect to host
 wk577.com: could not connect to host
 wlog.it: could not connect to host
 wmawri.com: could not connect to host
 wolfemg.com: could not connect to host
 wollongongbaptist.hopto.org: could not connect to host
 wonderbooks.club: could not connect to host
 woomu.me: could not connect to host
@@ -2158,23 +2122,23 @@ yotilabs.com: could not connect to host
 youruseragent.info: could not connect to host
 yourznc.com: could not connect to host
 yousite.by: could not connect to host
 yude.ml: could not connect to host
 yum.beer: could not connect to host
 yurimoens.be: could not connect to host
 yux.fr: could not connect to host
 yveshield.com: could not connect to host
+yvesx.com: could not connect to host
 z0rro.net: could not connect to host
 zachbolinger.com: could not connect to host
 zaoext.com: could not connect to host
 zbchen.com: could not connect to host
 zeitzer-turngala.de: could not connect to host
 zemlova.cz: could not connect to host
-zenghx.tk: could not connect to host
 zero-x-baadf00d.com: could not connect to host
 zerosource.net: could not connect to host
 zertif.info: could not connect to host
 zeug.co: could not connect to host
 zhangfangzhou.com: could not connect to host
 zhangsir.net: could not connect to host
 zhaochen.xyz: could not connect to host
 zhenmeish.com: could not connect to host
@@ -2194,17 +2158,17 @@ zypr.pw: could not connect to host
 zyx.im: could not connect to host
 zzw.ca: could not connect to host
 00001.am: did not receive HSTS header
 00002.am: did not receive HSTS header
 0005.com: could not connect to host
 0005aa.com: could not connect to host
 007sascha.de: did not receive HSTS header
 020wifi.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 115"  data: no]
-0222aa.com: could not connect to host
+0222aa.com: did not receive HSTS header
 040fit.nl: did not receive HSTS header
 048.ag: could not connect to host
 050508.com: could not connect to host
 0f.io: could not connect to host
 0fl.com: did not receive HSTS header
 0g.org.uk: could not connect to host
 0o0.ooo: could not connect to host
 0p.no: did not receive HSTS header
@@ -2306,26 +2270,27 @@ 3dproteinimaging.com: did not receive HS
 3fl.com: did not receive HSTS header
 3mbo.de: did not receive HSTS header
 3sreporting.com: did not receive HSTS header
 3wecommerce.com.br: could not connect to host
 404.sh: could not connect to host
 404404.info: could not connect to host
 420dongstorm.com: could not connect to host
 42ms.org: could not connect to host
+440hz-radio.de: did not receive HSTS header
 4455software.com: could not connect to host
 44957.com: could not connect to host
 4679.space: could not connect to host
 49889.com: could not connect to host
 4azino777.ru: did not receive HSTS header
 4cclothing.com: could not connect to host
 4eyes.ch: did not receive HSTS header
 4miners.net: could not connect to host
 4mybaby.ch: did not receive HSTS header
-4ourty2.org: could not connect to host
+4ourty2.org: did not receive HSTS header
 4sqsu.eu: could not connect to host
 4w-performers.link: could not connect to host
 50millionablaze.org: could not connect to host
 513vpn.net: did not receive HSTS header
 518maicai.com: did not receive HSTS header
 540.co: did not receive HSTS header
 54bf.com: could not connect to host
 555fl.com: did not receive HSTS header
@@ -2443,17 +2408,17 @@ adboos.com: could not connect to host
 addaxpetroleum.com: could not connect to host
 addvocate.com: could not connect to host
 adelevie.com: could not connect to host
 adelinlydia-coach.com: did not receive HSTS header
 adequatetechnology.com: could not connect to host
 aderal.io: could not connect to host
 adesa-asesoria.com: did not receive HSTS header
 adfa-1.com: could not connect to host
-adhigamindia.com: could not connect to host
+adhigamindia.com: did not receive HSTS header
 adhosting.nl: did not receive HSTS header
 adhs-chaoten.net: did not receive HSTS header
 adindexr.com: could not connect to host
 admiral.dp.ua: did not receive HSTS header
 admitcard.co.in: did not receive HSTS header
 admsel.ec: could not connect to host
 adoal.net: did not receive HSTS header
 adoge.me: could not connect to host
@@ -2624,16 +2589,17 @@ amoory.com: could not connect to host
 amorimendes.com.br: could not connect to host
 amri.nl: did not receive HSTS header
 anabol.nl: could not connect to host
 anacruz.es: did not receive HSTS header
 anadoluefessporkulubu.org: could not connect to host
 anagra.ms: could not connect to host
 analytic-s.ml: could not connect to host
 analyticsinmotion.net: could not connect to host
+ancestramil.fr: did not receive HSTS header
 ancientkarma.com: could not connect to host
 andere-gedanken.net: max-age too low: 10
 anderslind.dk: could not connect to host
 andre-ballensiefen.de: did not receive HSTS header
 andreasanti.net: did not receive HSTS header
 andreasbreitenlohner.de: max-age too low: 600000
 andreasfritz-fotografie.de: could not connect to host
 andreastoneman.com: could not connect to host
@@ -2695,17 +2661,16 @@ antimine.kr: could not connect to host
 antoine-roux.fr: could not connect to host
 antoined.fr: did not receive HSTS header
 antoinemary.io: could not connect to host
 antoineschaller.ch: did not receive HSTS header
 antoniomarques.eu: did not receive HSTS header
 antoniorequena.com.ve: could not connect to host
 antscript.com: did not receive HSTS header
 anycoin.me: could not connect to host
-anymetrix.io: did not receive HSTS header
 aocast.info: could not connect to host
 aojf.fr: could not connect to host
 aov.io: could not connect to host
 aozora.moe: could not connect to host
 apachelounge.com: did not receive HSTS header
 apadrinaunolivo.org: did not receive HSTS header
 apaginastore.com.br: could not connect to host
 apeasternpower.com: could not connect to host
@@ -2743,17 +2708,17 @@ arabdigitalexpression.org: did not recei
 aradulconteaza.ro: could not connect to host
 aran.me.uk: could not connect to host
 arboineuropa.nl: did not receive HSTS header
 arboleda-hurtado.com: could not connect to host
 arbu.eu: max-age too low: 2419200
 arcbit.io: did not receive HSTS header
 archii.ca: did not receive HSTS header
 architecte-interieur.be: did not receive HSTS header
-arcusnova.de: did not receive HSTS header
+arcusnova.de: could not connect to host
 ardao.me: did not receive HSTS header
 ardorlabs.se: could not connect to host
 arewedubstepyet.com: did not receive HSTS header
 areyouever.me: did not receive HSTS header
 argennon.xyz: could not connect to host
 arguggi.co.uk: could not connect to host
 ariacreations.net: did not receive HSTS header
 arislight.com: could not connect to host
@@ -2781,17 +2746,17 @@ artegusto.ru: did not receive HSTS heade
 artesupra.com: did not receive HSTS header
 arthan.me: could not connect to host
 artifex21.com: could not connect to host
 artifex21.fr: could not connect to host
 artiming.com: could not connect to host
 artisavotins.com: could not connect to host
 artistnetwork.nl: did not receive HSTS header
 arturkohut.com: could not connect to host
-artyland.ru: did not receive HSTS header
+artyland.ru: could not connect to host
 arvamus.eu: could not connect to host
 arzaroth.com: did not receive HSTS header
 as.se: could not connect to host
 as9178.net: could not connect to host
 asahikoji.net: could not connect to host
 asasuou.pw: could not connect to host
 asc16.com: could not connect to host
 ascamso.com: could not connect to host
@@ -2804,16 +2769,17 @@ asianodor.com: could not connect to host
 ask.pe: did not receive HSTS header
 askfit.cz: did not receive HSTS header
 asmui.ga: could not connect to host
 asmui.ml: could not connect to host
 ass.org.au: could not connect to host
 assekuranzjobs.de: could not connect to host
 asset-alive.com: did not receive HSTS header
 asset-alive.net: did not receive HSTS header
+assurancesmons.be: did not receive HSTS header
 astraalivankila.net: did not receive HSTS header
 astral.gq: did not receive HSTS header
 astrolpost.com: could not connect to host
 astromelody.com: did not receive HSTS header
 asuhe.cc: did not receive HSTS header
 atacadodesandalias.com.br: did not receive HSTS header
 atavio.at: could not connect to host
 atavio.ch: could not connect to host
@@ -2877,16 +2843,17 @@ autumnwindsagility.com: could not connec
 auverbox.ovh: could not connect to host
 auvious.com: did not receive HSTS header
 aux-arts-de-la-table.com: did not receive HSTS header
 auxetek.se: could not connect to host
 auxiliumincrementum.co.uk: could not connect to host
 av.de: did not receive HSTS header
 avadatravel.com: did not receive HSTS header
 avantmfg.com: did not receive HSTS header
+avastantivirus.ro: did not receive HSTS header
 avec-ou-sans-ordonnance.fr: could not connect to host
 aveling-adventure.co.uk: did not receive HSTS header
 avepol.cz: did not receive HSTS header
 avepol.eu: did not receive HSTS header
 aviacao.pt: did not receive HSTS header
 avidcruiser.com: did not receive HSTS header
 aviodeals.com: could not connect to host
 avqueen.cn: could not connect to host
@@ -2967,16 +2934,17 @@ barrelhead.org: could not connect to hos
 barrut.me: did not receive HSTS header
 barshout.co.uk: could not connect to host
 bartbania.com: did not receive HSTS header
 barunisystems.com: could not connect to host
 bashcode.ninja: could not connect to host
 basicsolutionsus.com: did not receive HSTS header
 basilisk.io: could not connect to host
 basketsbymaurice.com: did not receive HSTS header
+baskettemple.com: did not receive HSTS header
 bassh.net: did not receive HSTS header
 baud.ninja: could not connect to host
 baudairenergyservices.com: did not receive HSTS header
 baum.ga: could not connect to host
 baumstark.ca: could not connect to host
 baysse.eu: could not connect to host
 bazarstupava.sk: could not connect to host
 bazisszoftver.hu: did not receive HSTS header
@@ -2998,16 +2966,17 @@ bcnx.de: max-age too low: 0
 bcsytv.com: could not connect to host
 bcweightlifting.ca: could not connect to host
 bddemir.com: could not connect to host
 bde-epitech.fr: could not connect to host
 be-real.life: did not receive HSTS header
 beach-inspector.com: did not receive HSTS header
 beachi.es: could not connect to host
 beaglewatch.com: could not connect to host
+bearden.io: did not receive HSTS header
 beardydave.com: did not receive HSTS header
 beastlog.tk: could not connect to host
 beastowner.com: did not receive HSTS header
 beavers.io: could not connect to host
 bebeefy.uk: could not connect to host
 bebesurdoue.com: could not connect to host
 bedabox.com: max-age too low: 0
 bedeta.de: could not connect to host
@@ -3019,17 +2988,17 @@ befundup.com: could not connect to host
 behere.be: could not connect to host
 beholdthehurricane.com: could not connect to host
 beier.io: did not receive HSTS header
 beikeil.de: max-age too low: 86400
 belairsewvac.com: could not connect to host
 belewpictures.com: could not connect to host
 belgien.guide: could not connect to host
 belize-firmengruendung.com: could not connect to host
-belliash.eu.org: did not receive HSTS header
+belliash.eu.org: could not connect to host
 belltower.io: could not connect to host
 belmontprom.com: could not connect to host
 bemyvictim.com: max-age too low: 2678400
 bendechrai.com: did not receive HSTS header
 beneffy.com: did not receive HSTS header
 benjakesjohnson.com: could not connect to host
 benk.press: could not connect to host
 benny003.de: could not connect to host
@@ -3192,17 +3161,16 @@ bloomzoomy.ru: max-age too low: 172800
 blowjs.com: could not connect to host
 bls-fiduciaire.be: did not receive HSTS header
 bltc.co: could not connect to host
 blubbablasen.de: could not connect to host
 blucas.org: did not receive HSTS header
 blue17.co.uk: did not receive HSTS header
 bluebill.net: did not receive HSTS header
 bluecon.eu: did not receive HSTS header
-bluedeck.org: did not receive HSTS header
 bluefrag.com: did not receive HSTS header
 blueglobalmedia.com: did not receive HSTS header
 blueliv.com: did not receive HSTS header
 bluescloud.xyz: could not connect to host
 bluetenmeer.com: did not receive HSTS header
 bluketing.com: did not receive HSTS header
 bluserv.net: could not connect to host
 bluteklab.com: did not receive HSTS header
@@ -3228,30 +3196,30 @@ boneko.de: could not connect to host
 bonitabrazilian.co.nz: did not receive HSTS header
 bonnin.fr: did not receive HSTS header
 bonop.com: did not receive HSTS header
 bonta.one: did not receive HSTS header
 book-of-ra.de: did not receive HSTS header
 bookcelerator.com: did not receive HSTS header
 booked.holiday: could not connect to host
 bookofraonlinecasinos.com: could not connect to host
-booktracker-org.appspot.com: did not receive HSTS header
 boomerang.com: did not receive HSTS header
 boosterlearnpro.com: did not receive HSTS header
 booth.in.th: could not connect to host
 bootikexpress.fr: did not receive HSTS header
 borderlinegroup.com: could not connect to host
 boringsecurity.net: could not connect to host
 boris.one: did not receive HSTS header
 borisavstankovic.rs: did not receive HSTS header
 borrelioz.com: did not receive HSTS header
 borscheid-wenig.com: did not receive HSTS header
 boschee.net: could not connect to host
 botox.bz: did not receive HSTS header
 botstack.host: did not receive HSTS header
+bottineauneighborhood.org: did not receive HSTS header
 bounceboxspc.com: did not receive HSTS header
 bouncecoffee.com: did not receive HSTS header
 bouncelanduk.co.uk: did not receive HSTS header
 bouncycastleandparty.co.uk: did not receive HSTS header
 bourhis.info: did not receive HSTS header
 bouwbedrijfpurmerend.nl: could not connect to host
 bowlroll.net: max-age too low: 0
 boxcryptor.com: did not receive HSTS header
@@ -3414,16 +3382,17 @@ cabsites.com: could not connect to host
 cabusar.fr: did not receive HSTS header
 caconnect.org: could not connect to host
 cadao.me: did not receive HSTS header
 cadenadg.gr: did not receive HSTS header
 caesreon.com: could not connect to host
 cafe-murr.de: could not connect to host
 cafe-scientifique.org.ec: could not connect to host
 cafe-service.ru: could not connect to host
+cafeobscura.nl: did not receive HSTS header
 caim.cz: did not receive HSTS header
 cajapopcorn.com: did not receive HSTS header
 cake.care: could not connect to host
 calcularpagerank.com.br: could not connect to host
 calgaryconstructionjobs.com: did not receive HSTS header
 calix.com: max-age too low: 0
 calltrackingreports.com: could not connect to host
 calomel.org: max-age too low: 2764800
@@ -3496,17 +3465,17 @@ catarsisvr.com: could not connect to hos
 catinmay.com: did not receive HSTS header
 catnapstudios.com: could not connect to host
 cavaleria.ro: did not receive HSTS header
 caveclan.org: did not receive HSTS header
 cavedevs.de: could not connect to host
 cavedroid.xyz: could not connect to host
 cavern.tv: did not receive HSTS header
 cayafashion.de: did not receive HSTS header
-cbengineeringinc.com: could not connect to host
+cbengineeringinc.com: max-age too low: 86400
 cbhq.net: could not connect to host
 ccblog.de: did not receive HSTS header
 ccretreatandfarm.com: did not receive HSTS header
 cctech.ph: did not receive HSTS header
 cd0.us: could not connect to host
 cdnb.co: could not connect to host
 cdndepo.com: could not connect to host
 cdreporting.co.uk: did not receive HSTS header
@@ -3765,17 +3734,16 @@ comfy.cafe: did not receive HSTS header
 comfy.moe: did not receive HSTS header
 comico.info: did not receive HSTS header
 comicspines.com: could not connect to host
 comitesaustria.at: could not connect to host
 comiteshopping.com: could not connect to host
 commerciallocker.com: did not receive HSTS header
 commercialplanet.eu: could not connect to host
 commune-preuilly.fr: did not receive HSTS header
-community-cupboard.org: did not receive HSTS header
 comocurarlashemorroides.org: could not connect to host
 comocurarlashemorroidesya.com: did not receive HSTS header
 comotalk.com: could not connect to host
 compalytics.com: could not connect to host
 comparamejor.com: did not receive HSTS header
 compareandrecycle.co.uk: did not receive HSTS header
 comparejewelleryprices.co.uk: could not connect to host
 comparetravelinsurance.com.au: did not receive HSTS header
@@ -3796,16 +3764,17 @@ congz.me: could not connect to host
 connect.ua: could not connect to host
 connected-verhuurservice.nl: did not receive HSTS header
 connectfss.com: could not connect to host
 connectingconcepts.com: did not receive HSTS header
 consciousandglamorous.com: could not connect to host
 consciousbrand.org.au: could not connect to host
 consciousbranding.org.au: could not connect to host
 consciousbrands.net.au: could not connect to host
+consideredgifts.com: did not receive HSTS header
 console.python.org: did not receive HSTS header
 console.support: did not receive HSTS header
 contactbig.com: did not receive HSTS header
 contaimo.com: did not receive HSTS header
 container-lion.com: did not receive HSTS header
 containerstatistics.com: could not connect to host
 contarkos.xyz: could not connect to host
 content-design.de: did not receive HSTS header
@@ -3926,17 +3895,16 @@ csohack.tk: could not connect to host
 cspbuilder.info: could not connect to host
 cssps.org: could not connect to host
 cssu.in: did not receive HSTS header
 csvape.com: did not receive HSTS header
 ct-status.org: could not connect to host
 ct-watches.dk: did not receive HSTS header
 cthulhuden.com: could not connect to host
 ctrl.blog: did not receive HSTS header
-cu247secure.ie: did not receive HSTS header
 cuanhua3s.com: did not receive HSTS header
 cubecart-demo.co.uk: did not receive HSTS header
 cubecart-hosting.co.uk: did not receive HSTS header
 cubecart.net: did not receive HSTS header
 cubeserver.eu: could not connect to host
 cubewano.com: could not connect to host
 cucc.date: did not receive HSTS header
 cuecamania.com.br: could not connect to host
@@ -3954,16 +3922,17 @@ cusfit.com: did not receive HSTS header
 custe.rs: could not connect to host
 customadesign.com: did not receive HSTS header
 cutorrent.com: could not connect to host
 cuvva.insure: did not receive HSTS header
 cvjm-memmingen.de: did not receive HSTS header
 cvtparking.co.uk: did not receive HSTS header
 cwage.com: could not connect to host
 cyanogenmod.xxx: could not connect to host
+cyber-konzept.de: did not receive HSTS header
 cybercecurity.com: did not receive HSTS header
 cyberfrancais.ro: did not receive HSTS header
 cyberlab.kiev.ua: did not receive HSTS header
 cyberlab.team: did not receive HSTS header
 cyberpunk.ca: could not connect to host
 cybersafesolutions.com: did not receive HSTS header
 cybershambles.com: could not connect to host
 cycleluxembourg.lu: did not receive HSTS header
@@ -4066,16 +4035,17 @@ dccoffeeproducts.com: did not receive HS
 dccraft.net: could not connect to host
 dcpower.eu: max-age too low: 600
 dctxf.com: did not receive HSTS header
 dcuofriends.net: could not connect to host
 dcurt.is: did not receive HSTS header
 dcw.io: did not receive HSTS header
 ddatsh.com: did not receive HSTS header
 deadsoul.net: max-age too low: 0
+dealbanana.it: did not receive HSTS header
 debank.tv: did not receive HSTS header
 debatch.se: could not connect to host
 debian-vhost.de: could not connect to host
 debiton.dk: could not connect to host
 debtkit.co.uk: did not receive HSTS header
 debtprotectionreporting.com: did not receive HSTS header
 decafu.co: could not connect to host
 decesus.com: could not connect to host
@@ -4106,17 +4076,17 @@ dekasan.ru: could not connect to host
 delayrefunds.co.uk: could not connect to host
 deliverance.co.uk: could not connect to host
 deltaconcepts.de: did not receive HSTS header
 delvj.org: could not connect to host
 demdis.org: could not connect to host
 demilitarized.ninja: could not connect to host
 demo-server.us: could not connect to host
 demo.swedbank.se: did not receive HSTS header
-demomanca.com: did not receive HSTS header
+demomanca.com: could not connect to host
 demotops.com: could not connect to host
 dempsters.ca: max-age too low: 86400
 denh.am: did not receive HSTS header
 denisjean.fr: could not connect to host
 dentaldomain.org: did not receive HSTS header
 dentaldomain.ph: did not receive HSTS header
 denvercybersecurity.com: did not receive HSTS header
 denverprophit.us: did not receive HSTS header
@@ -4304,16 +4274,17 @@ dot42.no: could not connect to host
 dotadata.me: could not connect to host
 dotspaperie.com: could not connect to host
 doublethink.online: could not connect to host
 doubleyummy.uk: did not receive HSTS header
 doujin.nagoya: did not receive HSTS header
 dovecotadmin.org: could not connect to host
 doveholesband.co.uk: did not receive HSTS header
 dovetailnow.com: could not connect to host
+dowc.org: did not receive HSTS header
 download.jitsi.org: did not receive HSTS header
 downsouthweddings.com.au: could not connect to host
 doxcelerate.com: max-age too low: 69
 dr-becarelli-philippe.chirurgiens-dentistes.fr: did not receive HSTS header
 drabim.org: did not receive HSTS header
 drach.xyz: did not receive HSTS header
 dragonisles.net: could not connect to host
 dragons-of-highlands.cz: did not receive HSTS header
@@ -4323,16 +4294,17 @@ dragonteam.ninja: could not connect to h
 drainagebuizen.nl: did not receive HSTS header
 drakefortreasurer.sexy: could not connect to host
 drakenson.de: did not receive HSTS header
 dralexjimenez.com: did not receive HSTS header
 drastosasports.com.br: could not connect to host
 drawvesly.ovh: did not receive HSTS header
 drdevil.ru: could not connect to host
 dreadbyte.com: could not connect to host
+dreadd.org: did not receive HSTS header
 dreamcatcherblog.de: could not connect to host
 dreamlighteyeserum.com: could not connect to host
 dreamsforabetterworld.com.au: did not receive HSTS header
 dredgepress.com: did not receive HSTS header
 drewgle.net: could not connect to host
 drhopeson.com: could not connect to host
 drinknaturespower.com: could not connect to host
 drinkvabeer.com: could not connect to host
@@ -4379,17 +4351,16 @@ duuu.ch: could not connect to host
 duyao.de: max-age too low: 86400
 dv189.com: did not receive HSTS header
 dycem-ns.com: did not receive HSTS header
 dycontrol.de: could not connect to host
 dylanscott.com.au: did not receive HSTS header
 dymersion.com: did not receive HSTS header
 dynamic-innovations.net: could not connect to host
 dynamize.solutions: did not receive HSTS header
-dynastic.co: did not receive HSTS header
 dzimejl.sk: did not receive HSTS header
 dzlibs.io: could not connect to host
 e-aut.net: could not connect to host
 e-deca2.org: did not receive HSTS header
 e-isfa.eu: did not receive HSTS header
 e-newshub.com: could not connect to host
 e-pokupki.eu: did not receive HSTS header
 e-rickroll-r.pw: could not connect to host
@@ -4509,17 +4480,16 @@ elemenx.com: could not connect to host
 elemprendedor.com.ve: could not connect to host
 elena-baykova.ru: did not receive HSTS header
 elenag.ga: could not connect to host
 elenagherta.ga: could not connect to host
 elenoon.ir: did not receive HSTS header
 elgacien.de: could not connect to host
 elglobo.com.mx: max-age too low: 86400
 elimdengelen.com: did not receive HSTS header
-elite-porno.ru: did not receive HSTS header
 elitecovering.fr: did not receive HSTS header
 elitefishtank.com: could not connect to host
 elmar-kraamzorg.nl: did not receive HSTS header
 elna-service.com.ua: did not receive HSTS header
 elnutricionista.es: could not connect to host
 elohna.ch: did not receive HSTS header
 elpay.kz: did not receive HSTS header
 elpo.xyz: could not connect to host
@@ -4538,23 +4508,23 @@ emilyhorsman.com: did not receive HSTS h
 eminovic.me: could not connect to host
 emjainteractive.com: did not receive HSTS header
 emjimadhu.com: could not connect to host
 emmable.com: could not connect to host
 emnitech.com: could not connect to host
 empleosentorreon.mx: could not connect to host
 empleostampico.com: did not receive HSTS header
 employeestore.org: did not receive HSTS header
+emporiovinareal.com.br: did not receive HSTS header
 empty-r.com: could not connect to host
 emptypath.com: did not receive HSTS header
 enaia.fr: did not receive HSTS header
 encode.space: could not connect to host
 encode.uk.com: did not receive HSTS header
 encoder.pw: could not connect to host
-encoderx.uk: could not connect to host
 encontrebarato.com.br: did not receive HSTS header
 encryptio.com: could not connect to host
 end.pp.ua: could not connect to host
 endlessdark.net: max-age too low: 600
 endlesshorizon.net: could not connect to host
 endlesstone.com: did not receive HSTS header
 endohaus.ca: could not connect to host
 endohaus.com: could not connect to host
@@ -4852,32 +4822,34 @@ fintechnics.com: did not receive HSTS he
 fiodental.com.br: did not receive HSTS header
 firebaseio-demo.com: could not connect to host
 firebird.io: could not connect to host
 firefall.rocks: could not connect to host
 fireinthedeep.com: could not connect to host
 firemail.io: could not connect to host
 firenza.org: did not receive HSTS header
 fireorbit.de: did not receive HSTS header
+fireworkcoaching.com: did not receive HSTS header
 firmament.space: could not connect to host
 firmenverzeichnis.nu: could not connect to host
 firstdogonthemoon.com.au: did not receive HSTS header
 firstforex.co.uk: did not receive HSTS header
 firstlook.org: did not receive HSTS header
 fit4medien.de: did not receive HSTS header
 fitbylo.com: did not receive HSTS header
 fitea.cz: could not connect to host
 fitiapp.com: could not connect to host
 fitnesswerk.de: could not connect to host
 fitshop.com.br: could not connect to host
 fitsw.com: did not receive HSTS header
 five.vn: did not receive HSTS header
 fivestarsitters.com: did not receive HSTS header
 fivestepfunnels.com: could not connect to host
 fivezerocreative.com: did not receive HSTS header
+fixate.ru: max-age too low: 3153600
 fixico-staging.nl: could not connect to host
 fixingdns.com: could not connect to host
 fixtectools.co.za: could not connect to host
 fjruiz.es: did not receive HSTS header
 fkcovering.be: could not connect to host
 fl0000.com: did not receive HSTS header
 fl010.com: did not receive HSTS header
 fl0111.com: did not receive HSTS header
@@ -4925,16 +4897,17 @@ fm83.nl: could not connect to host
 fm992.com: did not receive HSTS header
 fnvsecurity.com: could not connect to host
 fobc-usa.org: did not receive HSTS header
 fojtova.cz: did not receive HSTS header
 fojtovi.cz: did not receive HSTS header
 fokan.ch: did not receive HSTS header
 foliekonsulenten.dk: did not receive HSTS header
 folioapp.io: did not receive HSTS header
+follandviolins.com: did not receive HSTS header
 followback.net: did not receive HSTS header
 fonetiq.io: could not connect to host
 food4health.guide: could not connect to host
 foodbuddy.ch: could not connect to host
 foodiebox.no: did not receive HSTS header
 foodies.my: did not receive HSTS header
 foodievenues.com: could not connect to host
 foodsafetyworkinggroup.gov: could not connect to host
@@ -5024,16 +4997,17 @@ fuckgfw233.org: could not connect to hos
 fukushima-web.com: did not receive HSTS header
 fuli.am: did not receive HSTS header
 fulilingyu.info: could not connect to host
 fuliydys.com: did not receive HSTS header
 fullytrained.co.uk: did not receive HSTS header
 fumiware.com: could not connect to host
 funarena.com.ua: did not receive HSTS header
 fundacionhijosdelsol.org: could not connect to host
+funderburg.me: max-age too low: 0
 fungame.eu: did not receive HSTS header
 funkes-ferien.de: did not receive HSTS header
 funkyweddingideas.com.au: could not connect to host
 funnyang.com: could not connect to host
 funrun.com: did not receive HSTS header
 funtastic-event-hire.co.uk: did not receive HSTS header
 fuorifuocogenova.it: did not receive HSTS header
 furiffic.com: did not receive HSTS header
@@ -5181,17 +5155,17 @@ getremembrall.com: could not connect to 
 getronics.care: could not connect to host
 getsello.com: could not connect to host
 getspeaker.com: did not receive HSTS header
 getwashdaddy.com: could not connect to host
 gfbouncycastles.co.uk: did not receive HSTS header
 gfhgiro.nl: max-age too low: 0
 gfm.tech: could not connect to host
 gfwsb.ml: could not connect to host
-ggrks-asano.com: did not receive HSTS header
+ggrks-asano.com: could not connect to host
 ggss.ml: could not connect to host
 gheorghe-sarcov.ga: could not connect to host
 gheorghesarcov.ga: could not connect to host
 gheorghesarcov.tk: could not connect to host
 ghi.gov: could not connect to host
 ghid-pitesti.ro: did not receive HSTS header
 ghkim.net: could not connect to host
 giakki.eu: could not connect to host
@@ -5218,19 +5192,17 @@ gipsic.com: did not receive HSTS header
 gis3m.org: did not receive HSTS header
 gistfy.com: could not connect to host
 git-stuff.tk: could not connect to host
 givemyanswer.com: could not connect to host
 gizzo.sk: could not connect to host
 glasslikes.com: did not receive HSTS header
 glbg.eu: did not receive HSTS header
 glentakahashi.com: could not connect to host
-glittersjabloon.nl: did not receive HSTS header
 glitzmirror.com: could not connect to host
-global-adult-webcams.com: did not receive HSTS header
 globalado.com: could not connect to host
 globalbridge-japan.com: did not receive HSTS header
 globalexpert.co.nz: could not connect to host
 globalinsights.xyz: could not connect to host
 globalittech.com: could not connect to host
 globalmusic.ga: could not connect to host
 globalsites.nl: did not receive HSTS header
 glotter.com: did not receive HSTS header
@@ -5273,17 +5245,16 @@ goodwin43.ru: could not connect to host
 googley.fr: max-age too low: 0
 goolok.com: could not connect to host
 goozz.nl: did not receive HSTS header
 gopay.cz: did not receive HSTS header
 gopokego.cz: could not connect to host
 gorgiaxx.com: could not connect to host
 gorilla-gym.site: could not connect to host
 gorillow.com: could not connect to host
-gosharewood.com: did not receive HSTS header
 goshop.cz: did not receive HSTS header
 gostream.asia: could not connect to host
 gotgenes.com: could not connect to host
 goto.msk.ru: did not receive HSTS header
 gotobrno.cz: did not receive HSTS header
 gotocloud.ru: did not receive HSTS header
 gotowned.org: max-age too low: 0
 gotspot.com: could not connect to host
@@ -5443,17 +5414,17 @@ hakugin.org: could not connect to host
 halo.red: could not connect to host
 halyul.cc: did not receive HSTS header
 halyul.com: did not receive HSTS header
 haman.nl: could not connect to host
 hancc.net: could not connect to host
 handenafvanhetmedischdossier.nl: could not connect to host
 handicapindeles.nl: did not receive HSTS header
 handiworker.com: could not connect to host
-handleidingkwijt.com: did not receive HSTS header
+handleidingkwijt.com: max-age too low: 604800
 handsandall.com: did not receive HSTS header
 hanfu.la: could not connect to host
 hangar18-modelismo.com.br: could not connect to host
 hanimalis.fr: could not connect to host
 hans-natur.de: did not receive HSTS header
 hao2taiwan.com: max-age too low: 0
 haobo111.com: could not connect to host
 haobo1111.com: could not connect to host
@@ -5548,31 +5519,30 @@ helgakristoffer.wedding: could not conne
 helioanodyne.eu: did not receive HSTS header
 helixflight.com: did not receive HSTS header
 helloworldhost.com: did not receive HSTS header
 hellscanyonraft.com: did not receive HSTS header
 helpadmin.net: could not connect to host
 helpium.de: could not connect to host
 helpmebuild.com: did not receive HSTS header
 hemlockhillscabinrentals.com: did not receive HSTS header
-hemnet.se: did not receive HSTS header
 hencagon.com: could not connect to host
 hendersonrealestatepros.com: did not receive HSTS header
 hepteract.us: did not receive HSTS header
 herbertmouwen.nl: could not connect to host
 here4funpartysolutions.ie: did not receive HSTS header
 heritagedentistry.ca: did not receive HSTS header
 heroin.org.uk: did not receive HSTS header
 herpaderp.net: could not connect to host
 herrenfahrt.com: did not receive HSTS header
 herzbotschaft.de: did not receive HSTS header
 hetmer.com: did not receive HSTS header
 hetmer.cz: did not receive HSTS header
 hetmer.net: did not receive HSTS header
-heutger.net: could not connect to host
+heutger.net: did not receive HSTS header
 hex2013.com: did not receive HSTS header
 hexhu.com: could not connect to host
 heyguevara.com: did not receive HSTS header
 heywoodtown.co.uk: did not receive HSTS header
 hfcbank.com.gh: did not receive HSTS header
 hibilog.com: could not connect to host
 hicn.gq: could not connect to host
 hiddendepth.ie: max-age too low: 0
@@ -5599,16 +5569,17 @@ hintergedanken.com: did not receive HSTS
 hipercultura.com: did not receive HSTS header
 hiphopconvention.nl: could not connect to host
 hipnos.net: did not receive HSTS header
 hirefitness.co.uk: did not receive HSTS header
 hirokilog.com: could not connect to host
 hititgunesi-tr.com: did not receive HSTS header
 hitoy.org: did not receive HSTS header
 hittipps.com: did not receive HSTS header
+hknet.at: did not receive HSTS header
 hlacosedora.com: max-age too low: 7889238
 hlyue.com: did not receive HSTS header
 hm1ch.ovh: could not connect to host
 hmksq.ae: max-age too low: 7776000
 hmm.nyc: could not connect to host
 hoast.xyz: could not connect to host
 hobaugh.social: could not connect to host
 hodamakade.com: could not connect to host
@@ -5668,17 +5639,17 @@ hotelvillahermosa-mailing.com: did not r
 hotelvue.nl: could not connect to host
 houkago-step.com: did not receive HSTS header
 housemaadiah.org: did not receive HSTS header
 housingstudents.org.uk: could not connect to host
 howfargames.com: could not connect to host
 howrandom.org: could not connect to host
 howtocuremysciatica.com: could not connect to host
 hpepub.asia: could not connect to host
-hpepub.com: could not connect to host
+hpepub.com: did not receive HSTS header
 hpepub.org: could not connect to host
 hppub.info: could not connect to host
 hppub.org: could not connect to host
 hppub.site: could not connect to host
 hqhost.net: did not receive HSTS header
 hr-intranet.com: could not connect to host
 hrackydomino.cz: did not receive HSTS header
 hrk.io: could not connect to host
@@ -6045,16 +6016,17 @@ ja-publications.com: did not receive HST
 jaan.su: could not connect to host
 jackalworks.com: could not connect to host
 jackdoan.com: did not receive HSTS header
 jackfahnestock.com: could not connect to host
 jacobparry.ca: did not receive HSTS header
 jacobsenarquitetura.com: max-age too low: 5184000
 jagido.de: did not receive HSTS header
 jahliveradio.com: could not connect to host
+jakeguild.com: did not receive HSTS header
 jamanji.com.ng: could not connect to host
 james-parker.com: did not receive HSTS header
 james.je: could not connect to host
 jamesandanneke.com: did not receive HSTS header
 jamesandpame.la: could not connect to host
 jamesburton.london: could not connect to host
 jamesbywater.co.uk: could not connect to host
 jamesbywater.com: could not connect to host
@@ -6081,16 +6053,17 @@ jangho.me: could not connect to host
 janking.de: could not connect to host
 janmachynka.cz: did not receive HSTS header
 jannyrijneveld.nl: did not receive HSTS header
 janus-engineering.de: did not receive HSTS header
 japaripark.com: could not connect to host
 japlex.com: could not connect to host
 jaqen.ch: could not connect to host
 jaredbates.net: did not receive HSTS header
+jarivisual.com: did not receive HSTS header
 jarnail.ca: did not receive HSTS header
 jaroslavtrsek.cz: did not receive HSTS header
 jarsater.com: could not connect to host
 jartza.org: could not connect to host
 jasmineconseil.com: did not receive HSTS header
 jasoncosper.com: did not receive HSTS header
 jasonroe.me: did not receive HSTS header
 jasperespejo.com: max-age too low: 0
@@ -6226,16 +6199,17 @@ jpaglier.com: could not connect to host
 jpbike.cz: did not receive HSTS header
 jpeaches.xyz: could not connect to host
 jproxx.com: did not receive HSTS header
 jptun.com: could not connect to host
 jrgold.me: could not connect to host
 jrmd.io: could not connect to host
 jrvar.com: could not connect to host
 jsanders.us: did not receive HSTS header
+jsevilleja.org: did not receive HSTS header
 jsg-technologies.de: did not receive HSTS header
 jualautoclave.com: did not receive HSTS header
 jualssh.com: could not connect to host
 juandesouza.com: did not receive HSTS header
 juka.pp.ua: did not receive HSTS header
 juliamweber.de: could not connect to host
 julian-kipka.de: did not receive HSTS header
 julian-witusch.de: could not connect to host
@@ -6261,33 +6235,34 @@ justudin.com: did not receive HSTS heade
 justwood.cz: did not receive HSTS header
 jutella.de: did not receive HSTS header
 juvenex.co: could not connect to host
 juwairen.cn: could not connect to host
 jvoice.net: could not connect to host
 jvwdev.nl: did not receive HSTS header
 jwilsson.me: could not connect to host
 jxm.in: could not connect to host
-jym.fit: did not receive HSTS header
+jym.fit: could not connect to host
 jysperm.me: did not receive HSTS header
 jznet.org: could not connect to host
 k-dev.de: could not connect to host
 k-rickroll-g.pw: could not connect to host
 k-wallet.com: could not connect to host
 k1cp.com: could not connect to host
 ka-clan.com: could not connect to host
 kaanduman.com: did not receive HSTS header
 kaasbijwijn.nl: did not receive HSTS header
 kabinapp.com: could not connect to host
 kabuabc.com: could not connect to host
 kackscharf.de: could not connect to host
 kadioglumakina.com.tr: did not receive HSTS header
 kaela.design: could not connect to host
 kahopoon.net: could not connect to host
 kaika-hms.de: did not receive HSTS header
+kainz.bayern: did not receive HSTS header
 kaisers.de: did not receive HSTS header
 kaiyuewu.com: could not connect to host
 kaketalk.com: did not receive HSTS header
 kalami.nl: could not connect to host
 kaleidomarketing.com: did not receive HSTS header
 kambodja.guide: could not connect to host
 kamcvicit.sk: could not connect to host
 kamikano.com: could not connect to host
@@ -6487,17 +6462,17 @@ kryptomech.com: could not connect to hos
 ksfh-mail.de: could not connect to host
 kstan.me: could not connect to host
 ksukelife.com: did not receive HSTS header
 kswriter.com: could not connect to host
 kteen.info: did not receive HSTS header
 kuba.guide: could not connect to host
 kucom.it: could not connect to host
 kudo.co.id: did not receive HSTS header
-kuechenplan.online: could not connect to host
+kuechenplan.online: did not receive HSTS header
 kueulangtahunanak.net: could not connect to host
 kultmobil.se: did not receive HSTS header
 kum.com: could not connect to host
 kummerlaender.eu: did not receive HSTS header
 kupelne-ptacek.sk: did not receive HSTS header
 kuppingercole.com: did not receive HSTS header
 kura.io: max-age too low: 0
 kurehun.org: could not connect to host
@@ -6527,17 +6502,17 @@ laboiteapc.fr: did not receive HSTS head
 labordata.io: could not connect to host
 laborie.io: could not connect to host
 labrador-retrievers.com.au: did not receive HSTS header
 labrasaq8.com: did not receive HSTS header
 labs.directory: could not connect to host
 labs.moscow: did not receive HSTS header
 lacarpesaintaubinoise.fr: did not receive HSTS header
 lacaverne.nl: could not connect to host
-lacentral.com: could not connect to host
+lacentral.com: did not receive HSTS header
 lachlankidson.net: did not receive HSTS header
 lacledeslan.ninja: could not connect to host
 lacocinadelila.com: did not receive HSTS header
 ladylucks.co.uk: did not receive HSTS header
 laemen.com: did not receive HSTS header
 laemen.nl: could not connect to host
 laf.in.net: could not connect to host
 lagalerievirtuelle.fr: did not receive HSTS header
@@ -6570,16 +6545,17 @@ landscapingmedic.com: did not receive HS
 langbein.org: did not receive HSTS header
 langenbach.rocks: could not connect to host
 langendries.eu: could not connect to host
 langhun.me: did not receive HSTS header
 laniakean.com: could not connect to host
 lansinoh.co.uk: did not receive HSTS header
 lanzainc.xyz: did not receive HSTS header
 laobox.fr: could not connect to host
+laospage.com: did not receive HSTS header
 laplaceduvillage.net: could not connect to host
 laquack.com: could not connect to host
 laredsemanario.com: could not connect to host
 lasepiataca.com: did not receive HSTS header
 lasercloud.ml: could not connect to host
 laserfuchs.de: did not receive HSTS header
 lashstuff.com: did not receive HSTS header
 lasnaves.com: did not receive HSTS header
@@ -6761,16 +6737,17 @@ localdrive.me: could not connect to host
 localnetwork.nz: could not connect to host
 locksmithrandburg24-7.co.za: could not connect to host
 locktheirphone.com: could not connect to host
 lockyourcomputer.pw: did not receive HSTS header
 locomotive.ca: did not receive HSTS header
 locvis.ru: did not receive HSTS header
 loftboard.eu: could not connect to host
 log2n.uk: could not connect to host
+loganparkneighborhood.org: did not receive HSTS header
 logario.com.br: could not connect to host
 logicaladvertising.com: could not connect to host
 login.persona.org: could not connect to host
 loginseite.com: could not connect to host
 logistify.com.mx: did not receive HSTS header
 lognot.net: could not connect to host
 logymedia.com: could not connect to host
 loisircreatif.net: did not receive HSTS header
@@ -6804,16 +6781,17 @@ lotuscloud.org: could not connect to hos
 lotz.li: did not receive HSTS header
 louduniverse.net: did not receive HSTS header
 louiewatch.com: could not connect to host
 loveable.de: could not connect to host
 lovelifelovelive.com: could not connect to host
 lovelyblogacademy.com: did not receive HSTS header
 lovelycorral.com: did not receive HSTS header
 lovelyfriends.org: did not receive HSTS header
+lovemysafetynet.com: did not receive HSTS header
 loveto.at: could not connect to host
 lovingearth.net: max-age too low: 0
 lowhangingfruitgrabber.com: could not connect to host
 lowtherpavilion.co.uk: did not receive HSTS header
 loxis.be: did not receive HSTS header
 lpak.nl: could not connect to host
 lpgram.ga: could not connect to host
 lrhsclubs.com: could not connect to host
@@ -6835,17 +6813,16 @@ ludwig.click: did not receive HSTS heade
 lufthansaexperts.com: max-age too low: 2592000
 luis-checa.com: could not connect to host
 lukaszdolan.com: did not receive HSTS header
 lukeng.me: could not connect to host
 lukonet.com: did not receive HSTS header
 luludapomerania.com: could not connect to host
 lumd.me: could not connect to host
 lumi.do: did not receive HSTS header
-lumi.pw: could not connect to host
 lunarift.com: could not connect to host
 lunarlog.com: could not connect to host
 lunarrift.net: could not connect to host
 luneta.nearbuysystems.com: could not connect to host
 luno.io: could not connect to host
 lunorian.is: did not receive HSTS header
 luody.info: could not connect to host
 luoe.ml: could not connect to host
@@ -6884,16 +6861,17 @@ macchaberrycream.com: could not connect 
 macchedil.com: did not receive HSTS header
 macdj.tk: could not connect to host
 macedopesca.com.br: did not receive HSTS header
 macgeneral.de: did not receive HSTS header
 mach1club.com: did not receive HSTS header
 macleodnc.com: did not receive HSTS header
 macsandcheesedreams.com: could not connect to host
 madars.org: did not receive HSTS header
+madbin.com: did not receive HSTS header
 maddin.ga: could not connect to host
 madebyfalcon.co.uk: did not receive HSTS header
 madebymagnitude.com: did not receive HSTS header
 madeinorder.com: did not receive HSTS header
 mademoiselle-emma.be: did not receive HSTS header
 mademoiselle-emma.fr: did not receive HSTS header
 maderwin.com: did not receive HSTS header
 madesoftware.com.br: could not connect to host
@@ -6938,17 +6916,16 @@ malwaretips.com: did not receive HSTS he
 malwre.io: could not connect to host
 malya.fr: could not connect to host
 mamaison.io: could not connect to host
 mamaxi.org: did not receive HSTS header
 mammothmail.com: could not connect to host
 mammothmail.net: could not connect to host
 mammothmail.org: could not connect to host
 mammut.space: could not connect to host
-mamospienas.lt: did not receive HSTS header
 manaboutahor.se: did not receive HSTS header
 manage.zenpayroll.com: did not receive HSTS header
 manage4all.com: could not connect to host
 manageall.de: could not connect to host
 manageforall.com: could not connect to host
 manageforall.de: could not connect to host
 managemynetsuite.com: did not receive HSTS header
 manantial.mx: could not connect to host
@@ -6986,16 +6963,17 @@ marialempke.com: max-age too low: 0
 mariannematthew.com: could not connect to host
 marie-curie.fr: could not connect to host
 marie-elisabeth.dk: did not receive HSTS header
 marie-en-provence.com: did not receive HSTS header
 marienschule-sundern.de: did not receive HSTS header
 marinela.com.mx: max-age too low: 86400
 marinelausa.com: max-age too low: 86400
 mariogeckler.de: did not receive HSTS header
+maritim.go.id: did not receive HSTS header
 markaconnor.com: did not receive HSTS header
 markayapilandirma.com: could not connect to host
 markcp.me: could not connect to host
 marketespace.fr: did not receive HSTS header
 marketingvirtuales.com: did not receive HSTS header
 markorszulak.com: did not receive HSTS header
 markrobin.de: did not receive HSTS header
 marksill.com: could not connect to host
@@ -7033,17 +7011,17 @@ mastimtibetano.com: could not connect to
 mastod.life: could not connect to host
 mastodon.co.nz: could not connect to host
 mastodon.direct: could not connect to host
 mastodon.engineering: could not connect to host
 mastodon.pl: could not connect to host
 mastodones.club: could not connect to host
 masty.nl: could not connect to host
 matatall.com: did not receive HSTS header
-matchneedle.com: could not connect to host
+matchneedle.com: did not receive HSTS header
 maternalsafety.org: did not receive HSTS header
 mateusmeyer.com.br: could not connect to host
 mathers.ovh: did not receive HSTS header
 matillat.ovh: did not receive HSTS header
 matomeplus.co: could not connect to host
 matrict.com: could not connect to host
 matrip.de: could not connect to host
 matrixcheats.net: could not connect to host
@@ -7097,28 +7075,28 @@ mecenat-cassous.com: did not receive HST
 mechmk1.me: did not receive HSTS header
 medallia.io: could not connect to host
 media-access.online: did not receive HSTS header
 mediacru.sh: could not connect to host
 mediafinancelab.org: did not receive HSTS header
 mediamag.am: max-age too low: 0
 mediawikicn.org: could not connect to host
 medienservice-fritz.de: did not receive HSTS header
-medifab.online: did not receive HSTS header
 medirich.co: could not connect to host
 meditek-dv.ru: could not connect to host
 mediterenopmaandag.nl: did not receive HSTS header
 medm-test.com: could not connect to host
 medzinenews.com: did not receive HSTS header
 meedoennoordkop.nl: did not receive HSTS header
 meedoenzaanstad.nl: did not receive HSTS header
 meetfinch.com: could not connect to host
 meetingmanage.nl: did not receive HSTS header
 meetingmanager.ovh: did not receive HSTS header
 meetscompany.jp: did not receive HSTS header
+megablogging.org: did not receive HSTS header
 megakiste.de: could not connect to host
 megashur.se: did not receive HSTS header
 meghudson.com: could not connect to host
 meifrench.com: could not connect to host
 mein-gesundheitsmanager.com: max-age too low: 0
 meincloudspeicher.de: could not connect to host
 meinebo.it: could not connect to host
 mekatrotekno.com: did not receive HSTS header
@@ -7162,17 +7140,17 @@ metin2blog.de: did not receive HSTS head
 metis.pw: could not connect to host
 metrans-spedition.de: could not connect to host
 metricaid.com: did not receive HSTS header
 metzgerei-birkenhof.de: could not connect to host
 meucosmetico.com.br: could not connect to host
 meuemail.pro: could not connect to host
 mexbt.com: could not connect to host
 mexicanbusinessweb.mx: did not receive HSTS header
-mexicansbook.ru: did not receive HSTS header
+mexicansbook.ru: could not connect to host
 mfcatalin.com: could not connect to host
 mfedderke.com: could not connect to host
 mgdigital.fr: did not receive HSTS header
 mgiay.com: did not receive HSTS header
 mh-bloemen.co.jp: could not connect to host
 mhdsyarif.com: did not receive HSTS header
 mhealthdemocamp.com: could not connect to host
 mhertel.com: did not receive HSTS header
@@ -7187,17 +7165,16 @@ michaeln.net: did not receive HSTS heade
 michaelscrivo.com: did not receive HSTS header
 michaelwaite.org: could not connect to host
 michal-kral.cz: could not connect to host
 michalborka.cz: could not connect to host
 michiganmetalartwork.com: max-age too low: 7889238
 miconware.de: could not connect to host
 micro-dv.ru: could not connect to host
 micro-rain-systems.com: did not receive HSTS header
-microme.ga: could not connect to host
 micropple.net: could not connect to host
 microtalk.org: could not connect to host
 midirs.org: did not receive HSTS header
 midonet.org: did not receive HSTS header
 midriversmotorsllc.com: did not receive HSTS header
 midwestwomenworkers.org: could not connect to host
 miegl.cz: could not connect to host
 miemie.jp: could not connect to host
@@ -7279,17 +7256,16 @@ mitarbeiter-pc.de: did not receive HSTS 
 mitchellrenouf.ca: could not connect to host
 mitm-software.badssl.com: could not connect to host
 mittenhacks.com: could not connect to host
 mivcon.net: could not connect to host
 mizd.at: could not connect to host
 mizi.name: could not connect to host
 mjcaffarattilaw.com: did not receive HSTS header
 mjhsc.nl: did not receive HSTS header
-mjscustomcreations.com.au: did not receive HSTS header
 mk-dizajn.com: did not receive HSTS header
 mkfs.be: could not connect to host
 mlcdn.co: could not connect to host
 mlpchan.net: could not connect to host
 mlpepilepsy.org: could not connect to host
 mlpvc-rr.ml: did not receive HSTS header
 mmgazhomeloans.com: did not receive HSTS header
 mmmm.com: could not connect to host
@@ -7412,16 +7388,17 @@ mrawe.com: could not connect to host
 mrdani.net: could not connect to host
 mredsanders.net: did not receive HSTS header
 mrettich.org: did not receive HSTS header
 mrhee.com: did not receive HSTS header
 mrksk.com: did not receive HSTS header
 mrning.com: did not receive HSTS header
 mrnonz.com: max-age too low: 0
 mrpopat.in: did not receive HSTS header
+mrpropop.com: did not receive HSTS header
 mrs-shop.com: did not receive HSTS header
 mrsbairds.com: max-age too low: 86400
 msc-seereisen.net: max-age too low: 0
 mstd.tokyo: did not receive HSTS header
 mstdn-tech.jp: could not connect to host
 mszaki.com: did not receive HSTS header
 mt.me.uk: could not connect to host
 mtamaki.com: could not connect to host
@@ -7716,19 +7693,21 @@ nolte.work: could not connect to host
 nomorebytes.de: could not connect to host
 noodlesandwich.com: did not receive HSTS header
 nootropicsource.com: did not receive HSTS header
 nope.website: could not connect to host
 nopex.no: could not connect to host
 nopol.de: could not connect to host
 norandom.com: could not connect to host
 norb.at: could not connect to host
+nordiccasinocommunity.com: did not receive HSTS header
 nordlicht.photography: did not receive HSTS header
 norge.guide: could not connect to host
 northcutt.com: did not receive HSTS header
+northfieldyarn.com: did not receive HSTS header
 northwest-events.co.uk: did not receive HSTS header
 nosecretshop.com: could not connect to host
 nostraspace.com: did not receive HSTS header
 notadd.io: could not connect to host
 notarankastojkovic.me: could not connect to host
 notarobot.fr: did not receive HSTS header
 notenoughtime.de: could not connect to host
 nothing.net.nz: max-age too low: 7776000
@@ -7856,16 +7835,17 @@ ollehbizev.co.kr: could not connect to h
 olswangtrainees.com: could not connect to host
 omacostudio.com: could not connect to host
 omgaanmetidealen.com: could not connect to host
 ominto.com: did not receive HSTS header
 omniti.com: max-age too low: 1
 omquote.gq: could not connect to host
 omskit.ru: did not receive HSTS header
 omyogarishikesh.com: did not receive HSTS header
+on-te.ch: did not receive HSTS header
 one-pe.com: did not receive HSTS header
 onearth.one: did not receive HSTS header
 oneb4nk.com: could not connect to host
 onecycling.my: could not connect to host
 onecycling.world: could not connect to host
 onefour.co: could not connect to host
 onehourloan.com: could not connect to host
 onehourloan.sg: did not receive HSTS header
@@ -7915,17 +7895,16 @@ ooooush.co.uk: could not connect to host
 oopsmycase.com: could not connect to host
 oopsorup.com: could not connect to host
 oost.io: could not connect to host
 open-mx.de: could not connect to host
 open-to-repair.fr: max-age too low: 86400
 openas.org: could not connect to host
 openconcept.no: did not receive HSTS header
 opendesk.cc: did not receive HSTS header
-openfitapi-falke.azurewebsites.net: did not receive HSTS header
 opengateway.fr: did not receive HSTS header
 openmind-shop.de: did not receive HSTS header
 openmtbmap.org: did not receive HSTS header
 openpriv.pw: could not connect to host
 openprovider.nl: did not receive HSTS header
 openshift.redhat.com: did not receive HSTS header
 opensourcehouse.net: could not connect to host
 openspace.xxx: did not receive HSTS header
@@ -7991,17 +7970,17 @@ ovenapp.io: did not receive HSTS header
 over25tips.com: did not receive HSTS header
 override.io: could not connect to host
 oversight.io: could not connect to host
 ovuscloud.de: could not connect to host
 ovvy.net: did not receive HSTS header
 owennelson.me: could not connect to host
 owncloud.help: could not connect to host
 ownmovies.fr: could not connect to host
-oxro.co: could not connect to host
+oxro.co: did not receive HSTS header
 oxygaming.com: did not receive HSTS header
 oxygenabsorbers.com: did not receive HSTS header
 oxymc.com: did not receive HSTS header
 oxynux.fr: could not connect to host
 oyste.in: could not connect to host
 ozoz.cc: could not connect to host
 p-rickroll-o.pw: could not connect to host
 p.linode.com: could not connect to host
@@ -8086,17 +8065,16 @@ pastaf.com: could not connect to host
 pastdream.xyz: could not connect to host
 paste.linode.com: could not connect to host
 pastebin.linode.com: could not connect to host
 pastenib.com: could not connect to host
 paster.li: did not receive HSTS header
 pataua.kiwi: did not receive HSTS header
 paternitydnatest.com: could not connect to host
 patfs.com: did not receive HSTS header
-pathwaystoresilience.org: did not receive HSTS header
 patientinsight.net: did not receive HSTS header
 patt.us: did not receive HSTS header
 patterson.mp: could not connect to host
 paul-kerebel.pro: could not connect to host
 paulbunyanmls.com: did not receive HSTS header
 paulerhof.com: did not receive HSTS header
 paulproell.at: could not connect to host
 paulyang.cn: did not receive HSTS header
@@ -8180,17 +8158,17 @@ petsittersservices.com: could not connec
 pettsy.com: could not connect to host
 pewboards.com: could not connect to host
 pexieapp.com: did not receive HSTS header
 peytonfarrar.com: did not receive HSTS header
 pfgshop.com.br: could not connect to host
 pflegedienst-gratia.de: max-age too low: 300
 pgcpbc.com: could not connect to host
 pgpm.io: could not connect to host
-pgtb.be: did not receive HSTS header
+pgtb.be: could not connect to host
 phalconist.com: could not connect to host
 pharmgkb.org: could not connect to host
 phdsupply.com: could not connect to host
 philadelphiacandies.com: did not receive HSTS header
 phillmoore.com: did not receive HSTS header
 phillprice.com: did not receive HSTS header
 philpropertygroup.com: could not connect to host
 phoebe.co.nz: did not receive HSTS header
@@ -8309,37 +8287,37 @@ pol.in.th: could not connect to host
 polarityschule.com: did not receive HSTS header
 pole.net.nz: could not connect to host
 polen.guide: could not connect to host
 policeiwitness.sg: could not connect to host
 polimat.org: could not connect to host
 politically-incorrect.xyz: could not connect to host
 politiewervingshop.nl: did not receive HSTS header
 politologos.org: did not receive HSTS header
+polkam.go.id: did not receive HSTS header
 polycoise.com: could not connect to host
 polycrypt.us: could not connect to host
 polypho.nyc: could not connect to host
 pompefunebrilariviera.it: could not connect to host
 pompompoes.com: could not connect to host
 pontokay.com.br: could not connect to host
 pontualcomp.com: could not connect to host
 pony.today: could not connect to host
 ponythread.com: did not receive HSTS header
 poolsandstuff.com: did not receive HSTS header
 poon.tech: could not connect to host
 popi.se: did not receive HSTS header
 popkins.ml: could not connect to host
 poris.web.id: could not connect to host
-porno-gif.ru: did not receive HSTS header
 pornstars.me: did not receive HSTS header
 portalm.tk: could not connect to host
 portalplatform.net: could not connect to host
 portaluniversalista.org: could not connect to host
 poshpak.com: max-age too low: 86400
-postcodewise.co.uk: did not receive HSTS header
+postcodewise.co.uk: could not connect to host
 postscheduler.org: could not connect to host
 posylka.de: did not receive HSTS header
 potatoheads.net: could not connect to host
 potentialproject.com: did not receive HSTS header
 potsky.com: did not receive HSTS header
 pottshome.co.uk: did not receive HSTS header
 pourmesloisirs.com: did not receive HSTS header
 poussinooz.fr: could not connect to host
@@ -8383,17 +8361,16 @@ prettyphotoart.de: did not receive HSTS 
 pretzlaff.info: did not receive HSTS header
 preworkout.me: could not connect to host
 prgslab.net: could not connect to host
 pridoc.se: did not receive HSTS header
 prilock.com: did not receive HSTS header
 primecaplending.com: could not connect to host
 primotiles.co.uk: did not receive HSTS header
 prinbanat.ngo: did not receive HSTS header
-princesparktouch.com: did not receive HSTS header
 printerest.io: could not connect to host
 printersonline.be: did not receive HSTS header
 printery.be: could not connect to host
 priolkar.com: did not receive HSTS header
 privacylabs.io: did not receive HSTS header
 privacyrup.net: could not connect to host
 privytime.com: could not connect to host
 prnt.li: did not receive HSTS header
@@ -8446,17 +8423,16 @@ prstatic.com: did not receive HSTS heade
 prxio.date: could not connect to host
 prxio.site: could not connect to host
 pscleaningsolutions.co.uk: could not connect to host
 pshostpk.com: did not receive HSTS header
 psicologia.co.ve: could not connect to host
 pstudio.me: did not receive HSTS header
 psw.academy: could not connect to host
 psw.consulting: could not connect to host
-psylab.cc: did not receive HSTS header
 ptn.moscow: could not connect to host
 ptonet.com: could not connect to host
 ptrujillo.com: did not receive HSTS header
 pubkey.is: could not connect to host
 publications.qld.gov.au: did not receive HSTS header
 publicidadnovagrass.com.mx: could not connect to host
 publicspeakingcamps.com: could not connect to host
 puentes.info: did not receive HSTS header
@@ -8631,17 +8607,17 @@ rechat.com: did not receive HSTS header
 redable.nl: did not receive HSTS header
 redair.es: did not receive HSTS header
 redar.xyz: could not connect to host
 reddit.com: did not receive HSTS header
 rede.ca: did not receive HSTS header
 redhorsemountainranch.com: did not receive HSTS header
 redicabo.de: could not connect to host
 redirectman.com: did not receive HSTS header
-redlatam.org: did not receive HSTS header
+redlatam.org: could not connect to host
 redmbk.com: did not receive HSTS header
 redner.cc: did not receive HSTS header
 rednertv.de: did not receive HSTS header
 redoakmedia.net: did not receive HSTS header
 redports.org: could not connect to host
 redra.ws: did not receive HSTS header
 redy.host: did not receive HSTS header
 referenten.org: did not receive HSTS header
@@ -8801,16 +8777,17 @@ rondoniatec.com.br: did not receive HSTS
 ronvandordt.info: could not connect to host
 ronwo.de: max-age too low: 1
 rootforum.org: did not receive HSTS header
 rootservice.org: did not receive HSTS header
 rootwpn.com: could not connect to host
 rop.io: could not connect to host
 roquecenter.org: did not receive HSTS header
 rorymcdaniel.com: did not receive HSTS header
+rosabellas.co.uk: did not receive HSTS header
 rossen.be: did not receive HSTS header
 rotex1840.de: did not receive HSTS header
 rotter-dam.nl: did not receive HSTS header
 rough.nu: could not connect to host
 roundtheme.com: did not receive HSTS header
 rous.se: could not connect to host
 rouvray.org: could not connect to host
 royal-forest.org: max-age too low: 0
@@ -8906,17 +8883,17 @@ sandviks.com: did not receive HSTS heade
 sanguoxiu.com: could not connect to host
 sanhei.ch: did not receive HSTS header
 sanik.my: did not receive HSTS header
 sanissimo.com.mx: max-age too low: 86400
 sansage.com.br: could not connect to host
 sansdev.com: could not connect to host
 sansemea.com: did not receive HSTS header
 santi.eu: did not receive HSTS header
-santing.net: could not connect to host
+santing.net: did not receive HSTS header
 santorinibbs.com: did not receive HSTS header
 santouri.be: could not connect to host
 saotn.org: did not receive HSTS header
 sapk.fr: did not receive HSTS header
 sarah-beckett-harpist.com: did not receive HSTS header
 sarahsweetlife.com: could not connect to host
 sarahsweger.com: could not connect to host
 sarakas.com: could not connect to host
@@ -8999,16 +8976,17 @@ screenresolution.space: could not connec
 screensaversplanet.com: did not receive HSTS header
 scribbleserver.com: could not connect to host
 scribe.systems: could not connect to host
 scrion.com: could not connect to host
 scriptenforcer.net: did not receive HSTS header
 scriptict.nl: could not connect to host
 scrollstory.com: did not receive HSTS header
 sdhmanagementgroup.com: could not connect to host
+sdho.org: did not receive HSTS header
 sdia.ru: could not connect to host
 sdmoscow.ru: could not connect to host
 sdrobs.com: did not receive HSTS header
 sdsl-speedtest.de: could not connect to host
 se7ensins.com: did not receive HSTS header
 seans.cc: did not receive HSTS header
 searchgov.gov.il: did not receive HSTS header
 seavancouver.com: could not connect to host
@@ -9082,33 +9060,31 @@ semps-servers.de: could not connect to h
 semps.de: did not receive HSTS header
 sendash.com: could not connect to host
 sendmeback.de: did not receive HSTS header
 senedirect.com: could not connect to host
 sens2lavie.com: could not connect to host
 senseofnumber.co.uk: did not receive HSTS header
 sensiblemn.org: could not connect to host
 sensibus.com: did not receive HSTS header
-seo-lagniappe.com: did not receive HSTS header
 seobot.com.au: could not connect to host
 seomobo.com: could not connect to host
 seosanantonioinc.com: did not receive HSTS header
 seowarp.net: did not receive HSTS header
 sep23.ru: did not receive HSTS header
 seq.tf: did not receive HSTS header
 serathius.ovh: could not connect to host
 serbien.guide: could not connect to host
 serenitycreams.com: did not receive HSTS header
 serfdom.io: did not receive HSTS header
 serized.pw: could not connect to host
 serverangels.co.uk: did not receive HSTS header
 servercode.ca: did not receive HSTS header
 serverdensity.io: did not receive HSTS header
 servergno.me: did not receive HSTS header
-serverlog.net: did not receive HSTS header
 servermonkey.nl: could not connect to host
 servicevie.com: did not receive HSTS header
 servu.de: did not receive HSTS header
 seryo.moe: could not connect to host
 seryo.net: could not connect to host
 setphaserstostun.org: could not connect to host
 setuid.de: could not connect to host
 setuid.io: did not receive HSTS header
@@ -9150,16 +9126,17 @@ shareeri.com: did not receive HSTS heade
 shareimg.xyz: could not connect to host
 sharejoy.cn: did not receive HSTS header
 sharekey.com: did not receive HSTS header
 sharepass.pw: could not connect to host
 sharepic.xyz: could not connect to host
 sharesplitter.com: did not receive HSTS header
 sharezen.de: could not connect to host
 sharingcode.com: did not receive HSTS header
+shatorin.com: did not receive HSTS header
 shauncrowley.co.uk: could not connect to host
 shaunwheelhou.se: could not connect to host
 shavegazette.com: did not receive HSTS header
 shawnbsmith.me: did not receive HSTS header
 shawnh.net: could not connect to host
 shellsec.pw: did not receive HSTS header
 shep.co.il: did not receive HSTS header
 sheratan.web.id: max-age too low: 2592000
@@ -9219,17 +9196,17 @@ silentlink.io: could not connect to host
 silicagelpackets.ca: did not receive HSTS header
 silver-drachenkrieger.de: did not receive HSTS header
 silverhome.ninja: could not connect to host
 silverpvp.com: could not connect to host
 simbast.com: could not connect to host
 simbihaiti.com: max-age too low: 7889238
 simccorp.com: did not receive HSTS header
 simeon.us: max-age too low: 2592000
-simfri.com: did not receive HSTS header
+simfri.com: could not connect to host
 simnovo.net: did not receive HSTS header
 simobilklub.si: could not connect to host
 simod.org: could not connect to host
 simon-pokorny.com: did not receive HSTS header
 simon.butcher.name: max-age too low: 2629743
 simongong.net: did not receive HSTS header
 simonsaxon.com: did not receive HSTS header
 simpan.id: did not receive HSTS header
@@ -9350,16 +9327,17 @@ snapworks.net: did not receive HSTS head
 snekchat.moe: could not connect to host
 snelwerk.be: could not connect to host
 sng.my: could not connect to host
 snip.host: could not connect to host
 snippet.host: could not connect to host
 snod.land: did not receive HSTS header
 snoozedds.com: max-age too low: 600
 snoqualmiefiber.org: could not connect to host
+snovey.com: did not receive HSTS header
 sobabox.ru: could not connect to host
 soccergif.com: could not connect to host
 social-journey.com: could not connect to host
 socialbillboard.com: could not connect to host
 socialcs.xyz: could not connect to host
 socialgrowing.cl: did not receive HSTS header
 socialhead.io: could not connect to host
 socialhub.com: did not receive HSTS header
@@ -9557,16 +9535,17 @@ stmbgr.com: could not connect to host
 stn.me.uk: did not receive HSTS header
 stockseyeserum.com: could not connect to host
 stocktrade.de: could not connect to host
 stoffe-monster.de: did not receive HSTS header
 stoick.me: could not connect to host
 stole-my.bike: could not connect to host
 stole-my.tv: could not connect to host
 stonecutterscommunity.com: could not connect to host
+stopbreakupnow.org: did not receive HSTS header
 stopwoodfin.org: could not connect to host
 storbritannien.guide: could not connect to host
 store-host.com: did not receive HSTS header
 storecove.com: did not receive HSTS header
 storeden.com: did not receive HSTS header
 storefrontify.com: did not receive HSTS header
 storiesofhealth.org: did not receive HSTS header
 stormhub.org: could not connect to host
@@ -9586,17 +9565,16 @@ strivephysmed.com: did not receive HSTS 
 stroeercrm.de: could not connect to host
 strongest-privacy.com: could not connect to host
 stuartbaxter.co: could not connect to host
 student-scientist.org: did not receive HSTS header
 studentrdh.com: did not receive HSTS header
 studentresearcher.org: did not receive HSTS header
 studentskydenik.cz: could not connect to host
 studenttravel.cz: did not receive HSTS header
-studienservice.de: max-age too low: 7889238
 studinf.xyz: could not connect to host
 studio-panic.com: did not receive HSTS header
 studiozelden.com: did not receive HSTS header
 studybay.com: did not receive HSTS header
 studydrive.net: did not receive HSTS header
 studyhub.cf: did not receive HSTS header
 stugb.de: could not connect to host
 sturbock.me: did not receive HSTS header
@@ -9625,17 +9603,17 @@ suncountrymarine.com: did not receive HS
 sundaycooks.com: max-age too low: 2592000
 sunflyer.cn: did not receive HSTS header
 sunlandsg.vn: did not receive HSTS header
 sunnyfruit.ru: could not connect to host
 sunshinepress.org: could not connect to host
 sunyanzi.tk: could not connect to host
 suos.io: could not connect to host
 supcro.com: could not connect to host
-super-erotica.ru: did not receive HSTS header
+super-erotica.ru: could not connect to host
 super-garciniaslim.com: could not connect to host
 super-radiant-skin.com: could not connect to host
 super-ripped-power.com: could not connect to host
 super-slim-coffee.com: could not connect to host
 superbabysitting.ch: could not connect to host
 superbike.tw: could not connect to host
 supercreepsvideo.com: could not connect to host
 supereight.net: did not receive HSTS header
@@ -9710,19 +9688,19 @@ t-complex.space: could not connect to ho
 t-ken.xyz: could not connect to host
 t-point.eu: did not receive HSTS header
 t-tz.com: could not connect to host
 t0dd.eu: could not connect to host
 t4c-rebirth.com: could not connect to host
 t4x.org: could not connect to host
 taabe.xyz: could not connect to host
 taberu-fujitsubo.com: did not receive HSTS header
+tabitatsu.jp: did not receive HSTS header
 tadigitalstore.com: could not connect to host
 tafoma.com: did not receive HSTS header
-tagdocumentary.com: max-age too low: 2592000
 tageau.com: could not connect to host
 taglondon.org: did not receive HSTS header
 tahakomat.cz: could not connect to host
 tahf.net: did not receive HSTS header
 tailify.com: did not receive HSTS header
 tails.com.ar: did not receive HSTS header
 takumi-s.net: did not receive HSTS header
 talentuar.com: did not receive HSTS header
@@ -9801,16 +9779,17 @@ techelements.co: did not receive HSTS he
 techfactslive.com: did not receive HSTS header
 techhipster.net: could not connect to host
 techhub.ml: could not connect to host
 techllage.com: could not connect to host
 techloaner.com: could not connect to host
 techmasters.andover.edu: did not receive HSTS header
 techmatehq.com: could not connect to host
 technicalpenguins.com: did not receive HSTS header
+techniclab.net: did not receive HSTS header
 technogroup.cz: did not receive HSTS header
 technosavvyport.com: did not receive HSTS header
 technotonic.com.au: did not receive HSTS header
 techpointed.com: could not connect to host
 techproud.com: did not receive HSTS header
 techreview.link: could not connect to host
 techtoy.store: did not receive HSTS header
 techtraveller.com.au: did not receive HSTS header
@@ -9898,17 +9877,16 @@ thebrotherswarde.com: could not connect 
 thecapitalbank.com: did not receive HSTS header
 thecharlestonwaldorf.com: did not receive HSTS header
 theclementinebutchers.com: could not connect to host
 theclubjersey.com: did not receive HSTS header
 thecodeninja.net: did not receive HSTS header
 thecoffeehouse.xyz: could not connect to host
 thedrinks.co: did not receive HSTS header
 thedrop.pw: did not receive HSTS header
-thedrunkencabbage.com: did not receive HSTS header
 thedystance.com: could not connect to host
 theelitebuzz.com: did not receive HSTS header
 theemasphere.com: did not receive HSTS header
 theendofzion.com: did not receive HSTS header
 theepankar.com: could not connect to host
 theescapistswiki.com: could not connect to host
 theeyeopener.com: did not receive HSTS header
 thefarbeyond.com: could not connect to host
@@ -9998,32 +9976,33 @@ thorncreek.net: did not receive HSTS hea
 thriveapproach.co.uk: did not receive HSTS header
 thrivewellnesshub.co.za: did not receive HSTS header
 throughthelookingglasslens.co.uk: could not connect to host
 thumbtack.com: did not receive HSTS header
 thundercampaign.com: could not connect to host
 ti.blog.br: could not connect to host
 tianxing.pro: did not receive HSTS header
 tianxingvpn.pro: could not connect to host
+tibbitshall.ca: did not receive HSTS header
 ticketoplichting.nl: did not receive HSTS header
 tickopa.co.uk: could not connect to host
 tickreport.com: did not receive HSTS header
 ticktock.today: did not receive HSTS header
 tictactux.de: could not connect to host
 tidmore.us: could not connect to host
 tie-online.org: did not receive HSTS header
 tiendschuurstraat.nl: could not connect to host
 tiensnet.com: could not connect to host
 tierrarp.com: could not connect to host
 tightlineproductions.com: did not receive HSTS header
 tikutiku.pl: could not connect to host
 tildebot.com: could not connect to host
 tilient.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 115"  data: no]
 tilikum.io: did not receive HSTS header
-tilkah.com.au: could not connect to host
+tilkah.com.au: did not receive HSTS header
 tillcraft.com: could not connect to host
 timbeilby.com: could not connect to host
 timbuktutimber.com: did not receive HSTS header
 timcamara.com: could not connect to host
 time-river.xyz: could not connect to host
 timeatlas.com: did not receive HSTS header
 timesavingplugins.com: could not connect to host
 timesavingplugins.net: could not connect to host
@@ -10066,16 +10045,17 @@ tlsbv.nl: did not receive HSTS header
 tlshost.net: could not connect to host
 tm-solutions.eu: could not connect to host
 tmaward.net: could not connect to host
 tmhlive.com: could not connect to host
 tmitchell.io: could not connect to host
 tmprod.com: did not receive HSTS header
 tmtradingmorocco.ma: did not receive HSTS header
 tncnanet.com.br: could not connect to host
+tniad.mil.id: did not receive HSTS header
 tno.io: could not connect to host
 tnrsca.jp: did not receive HSTS header
 tobaby.com.br: could not connect to host
 tobaccore.eu: could not connect to host
 tobaccore.sk: could not connect to host
 tobias-bielefeld.de: did not receive HSTS header
 tobiasmathes.com: could not connect to host
 tobiasmathes.name: could not connect to host
@@ -10331,17 +10311,16 @@ ultimate-neuroplus.com: could not connec
 ultros.io: did not receive HSTS header
 umaimise.info: did not receive HSTS header
 umgardi.ca: could not connect to host
 umidev.com: did not receive HSTS header
 umie.cc: did not receive HSTS header
 umwandeln-online.de: did not receive HSTS header
 unart.info: could not connect to host
 unbanthe.net: could not connect to host
-unblock-zh.org: did not receive HSTS header
 unblockat.tk: could not connect to host
 unblocked-networks.org: could not connect to host
 unblocked.date: could not connect to host
 unblocked.faith: could not connect to host
 unblocked.host: could not connect to host
 unblocked.party: could not connect to host
 unblocked.st: did not receive HSTS header
 unblocked.today: could not connect to host
@@ -10501,17 +10480,17 @@ vemokin.net: could not connect to host
 venixplays-stream.ml: could not connect to host
 venmos.com: could not connect to host
 vennet.fr: max-age too low: 0
 venninvestorplatform.com: did not receive HSTS header
 venoom.eu: did not receive HSTS header
 venturepro.com: did not receive HSTS header
 ventzke.com: did not receive HSTS header
 venzocrm.com: did not receive HSTS header
-verifiedinvesting.com: did not receive HSTS header
+verifiedinvesting.com: could not connect to host
 verifikatorindonesia.com: could not connect to host
 veristor.com: did not receive HSTS header
 vermontcareergateway.org: could not connect to host
 versia.ru: did not receive HSTS header
 veryhax.de: could not connect to host
 vestacp.top: could not connect to host
 vetdnacenter.com: did not receive HSTS header
 veterinaire-cazeres-foucault.fr: could not connect to host
@@ -10647,29 +10626,29 @@ vyncke.org: max-age too low: 2678400
 vyvybean.cf: could not connect to host
 vyvygen.com: did not receive HSTS header
 vzk.io: could not connect to host
 w2gshop.com.br: could not connect to host
 w4a.fr: could not connect to host
 w4xzr.top: could not connect to host
 w4xzr.xyz: could not connect to host
 wachtwoordencheck.nl: could not connect to host
-wahhoi.net: could not connect to host
+wahhoi.net: did not receive HSTS header
 wait.moe: could not connect to host
 waixingrenfuli7.vip: could not connect to host
 wakapp.de: could not connect to host
 wakened.net: did not receive HSTS header
 walkeryoung.ca: could not connect to host
 wallabag.it: did not receive HSTS header
 wallabag.org: did not receive HSTS header
 wallsblog.dk: could not connect to host
 walnutgaming.co.uk: could not connect to host
 walterlynnmosley.com: did not receive HSTS header
 wanban.io: could not connect to host
-wangjun.me: could not connect to host
+wangjun.me: did not receive HSTS header
 wangkezun.com: could not connect to host
 wangqiliang.cn: did not receive HSTS header
 wangqiliang.org: did not receive HSTS header
 wangqiliang.xn--fiqs8s: could not connect to host
 wangzuan168.cc: could not connect to host
 wapjt.cn: could not connect to host
 wapt.fr: did not receive HSTS header
 warandpeace.xyz: could not connect to host
@@ -10769,16 +10748,17 @@ westsussexconnecttosupport.org: could no
 wetoxic.com: did not receive HSTS header
 wettbonus.info: did not receive HSTS header
 wettbuero.de: did not receive HSTS header
 wetten.eu: did not receive HSTS header
 wettertoertchen.com: could not connect to host
 wetttipps.com: could not connect to host
 wetttipps.de: could not connect to host
 wevahoo.com: could not connect to host
+wevg.org: did not receive HSTS header
 wevolver.com: did not receive HSTS header
 wewillgo.com: did not receive HSTS header
 wewillgo.org: did not receive HSTS header
 wewlad.me: did not receive HSTS header
 wftda.com: did not receive HSTS header
 whatnext.limited: did not receive HSTS header
 whats.io: could not connect to host
 whatsstalk.me: could not connect to host
@@ -10916,17 +10896,17 @@ www-1117.com: could not connect to host
 www-39988.com: did not receive HSTS header
 www-507.net: could not connect to host
 www-746.com: could not connect to host
 www-771122.com: did not receive HSTS header
 www-8003.com: did not receive HSTS header
 www-88599.com: did not receive HSTS header
 www-9995.com: did not receive HSTS header
 www-djbet.com: did not receive HSTS header
-www-jinshavip.com: could not connect to host
+www-jinshavip.com: did not receive HSTS header
 www.cueup.com: could not connect to host
 www.cyveillance.com: did not receive HSTS header
 www.developer.mydigipass.com: could not connect to host
 www.elanex.biz: did not receive HSTS header
 www.gamesdepartment.co.uk: did not receive HSTS header
 www.gpo.gov: did not receive HSTS header
 www.greplin.com: could not connect to host
 www.jitsi.org: did not receive HSTS header
@@ -10954,17 +10934,17 @@ x3led.com: could not connect to host
 x509.pub: could not connect to host
 x509.pw: could not connect to host
 xanderweaver.com: did not receive HSTS header
 xandocs.com: could not connect to host
 xat.re: did not receive HSTS header
 xavierbarroso.com: could not connect to host
 xbind.io: could not connect to host
 xchating.com: could not connect to host
-xcoop.me: could not connect to host
+xcoop.me: did not receive HSTS header
 xdd.io: could not connect to host
 xehoivn.vn: could not connect to host
 xellos.ga: could not connect to host
 xellos.ml: could not connect to host
 xenesisziarovky.sk: could not connect to host
 xett.com: did not receive HSTS header
 xf-liam.com: did not receive HSTS header
 xfd3.de: did not receive HSTS header
@@ -11034,16 +11014,17 @@ xn--zck9a4b352yuua.jp: did not receive H
 xobox.me: could not connect to host
 xoda.pw: did not receive HSTS header
 xoffy.com: did not receive HSTS header
 xom.party: could not connect to host
 xor-a.net: could not connect to host
 xperiacodes.com: could not connect to host
 xpi.fr: could not connect to host
 xpj.sx: could not connect to host
+xpressprint.com.br: did not receive HSTS header
 xrp.pw: could not connect to host
 xtom.email: could not connect to host
 xtream-hosting.com: could not connect to host
 xtream-hosting.de: could not connect to host
 xtream-hosting.eu: could not connect to host
 xtreamhosting.eu: could not connect to host
 xtrim.ru: did not receive HSTS header
 xuexb.com: did not receive HSTS header
@@ -11100,16 +11081,17 @@ yoloboatrentals.com: did not receive HST
 yolocelebs.com: did not receive HSTS header
 yoloprod.fr: could not connect to host
 yoloseo.com: could not connect to host
 yomepre.com: could not connect to host
 yopers.com: did not receive HSTS header
 yoru.me: could not connect to host
 youcaitian.com: did not receive HSTS header
 youcontrol.ru: could not connect to host
+youdamom.com: did not receive HSTS header
 youfencun.com: did not receive HSTS header
 youlog.net: could not connect to host
 youngandunited.nl: did not receive HSTS header
 youon.tokyo: could not connect to host
 yourbapp.ch: could not connect to host
 yourcomputer.expert: did not receive HSTS header
 yourgame.co.il: did not receive HSTS header
 yourhair.net: did not receive HSTS header
@@ -11123,17 +11105,17 @@ yu.vc: max-age too low: 2592000
 yu7.jp: did not receive HSTS header
 yudan.com.br: could not connect to host
 yufan.me: did not receive HSTS header
 yuhen.ru: did not receive HSTS header
 yukiminami.net: could not connect to host
 yuko.moe: could not connect to host
 yukonrefugees.com: could not connect to host
 yummyfamilyrecipes.com: could not connect to host
-yunpan.blue: did not receive HSTS header
+yunpan.blue: could not connect to host
 yuntama.xyz: could not connect to host
 yunzhan.io: did not receive HSTS header
 yunzhu.org: could not connect to host
 yuriykuzmin.com: did not receive HSTS header
 yutabon.com: could not connect to host
 yuushou.com: could not connect to host
 yux.io: did not receive HSTS header
 ywei.org: could not connect to host
@@ -11145,16 +11127,17 @@ zadieheimlich.com: did not receive HSTS 
 zakoncontrol.com: did not receive HSTS header
 zamorano.edu: could not connect to host
 zamos.ru: max-age too low: 0
 zaneweb.org: could not connect to host
 zao.fi: could not connect to host
 zaoshanghao-dajia.rhcloud.com: could not connect to host
 zap.yt: did not receive HSTS header
 zarooba.com: could not connect to host
+zary.me: did not receive HSTS header
 zavca.com: did not receive HSTS header
 zbasenem.pl: did not receive HSTS header
 zbigniewgalucki.eu: did not receive HSTS header
 zdravotnickasluzba.eu: could not connect to host
 zdrowiepaleo.pl: did not receive HSTS header
 zdx.ch: max-age too low: 0
 zebbra.ro: did not receive HSTS header
 zebrababy.cn: could not connect to host
@@ -11192,33 +11175,32 @@ zhendingresources.com: did not receive H
 zhh.in: could not connect to host
 zhihua-lai.com: did not receive HSTS header
 zhiin.net: could not connect to host
 zhuji.com.cn: could not connect to host
 zi0r.com: did not receive HSTS header
 zian.online: could not connect to host
 zicklam.com: could not connect to host
 zigcore.com.br: could not connect to host
-zihao.me: could not connect to host
 zinc-x.com: did not receive HSTS header
 zinenapse.info: could not connect to host
 zippy-download.com: could not connect to host
 zippy-download.de: could not connect to host
 zirtue.io: could not connect to host
 zivagold.com: did not receive HSTS header
 zivy-ruzenec.cz: did not receive HSTS header
 ziyuanabc.xyz: could not connect to host
 zizoo.com: did not receive HSTS header
 zju.tv: could not connect to host
 zjubtv.com: could not connect to host
 zjutv.com: could not connect to host
 zkillboard.com: did not receive HSTS header
 zking.ga: could not connect to host
 zlcp.com: could not connect to host
-zmsastro.co.za: could not connect to host
+zmsastro.co.za: did not receive HSTS header
 zmy.im: could not connect to host
 znacite.com: did not receive HSTS header
 znd.jp: did not receive HSTS header
 zocken.com: did not receive HSTS header
 zoe.vc: could not connect to host
 zohar.link: could not connect to host
 zolotoy-standart.com.ua: did not receive HSTS header
 zomiac.pp.ua: could not connect to host
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*****************************************************************************/
 /* This is an automatically generated file. If you're not                    */
 /* nsSiteSecurityService.cpp, you shouldn't be #including it.     */
 /*****************************************************************************/
 
 #include <stdint.h>
-const PRTime gPreloadListExpirationTime = INT64_C(1529351401947000);
+const PRTime gPreloadListExpirationTime = INT64_C(1529437033578000);
 %%
 0-1.party, 1
 0.me.uk, 1
 0005pay.com, 1
 00100010.net, 1
 0010100.net, 1
 00120012.net, 1
 00130013.net, 1
@@ -384,17 +384,16 @@ 411movie.com, 1
 41844.de, 1
 41where.com, 1
 420java.com, 1
 42day.info, 1
 42entrepreneurs.fr, 1
 42t.ru, 1
 439050.com, 1
 439191.com, 1
-440hz-radio.de, 0
 441jj.com, 0
 44scc.com, 1
 4500.co.il, 1
 47tech.com, 1
 491mhz.net, 1
 49948522.com, 1
 49dollaridahoregisteredagent.com, 1
 4baby.com.br, 1
@@ -1777,17 +1776,16 @@ analyzemyfriends.com, 1
 ananke.io, 1
 anankecosmetics.com, 1
 anantshri.info, 1
 anarchistischegroepnijmegen.nl, 0
 anarka.org, 1
 anassiriphotography.com, 0
 anastasia-shamara.ru, 1
 anastasiafond.com, 1
-ancestramil.fr, 1
 anchev.net, 1
 anchorgrounds.com, 1
 anchorinmarinainc.com, 1
 anchovy.nz, 0
 ancient-gates.de, 1
 ancientcraft.eu, 1
 ancolies-andre.com, 1
 anconaswine.com, 1
@@ -2043,16 +2041,17 @@ anttitenhunen.com, 1
 antyblokada.pl, 1
 anulowano.pl, 1
 anvartay.com, 1
 anwaltsindex.com, 1
 anxietyspace.com, 1
 anxiolytics.com, 1
 any.pm, 0
 anyfood.fi, 1
+anymetrix.io, 1
 anynode.net, 1
 anyon.com, 1
 anypeer.net, 1
 anyprime.net, 1
 anystack.xyz, 1
 anytonetech.com, 1
 anyways.at, 1
 anzeiger.ag, 1
@@ -2525,17 +2524,16 @@ assguidesporrentruy.ch, 1
 assign-it.co.uk, 1
 assindia.nl, 1
 assistance-personnes-agees.ch, 1
 assistcart.com, 1
 assistenzamicroonde.org, 1
 assodigitale.it, 1
 asspinter.me, 1
 assumptionpj.org, 1
-assurancesmons.be, 1
 asta-bar.de, 0
 astal.rs, 1
 astaninki.com, 1
 astarbouncycastles.co.uk, 1
 astarmathsandphysics.com, 1
 astec-informatica.com, 1
 astengox.com, 1
 astenotarili.online, 1
@@ -2802,17 +2800,16 @@ availablecastles.com, 1
 avalon-island.ru, 1
 avalon-studios.de, 1
 avanet.ch, 1
 avanet.com, 1
 avanovum.de, 1
 avaq.fr, 1
 avarty.com, 1
 avarty.net, 1
-avastantivirus.ro, 1
 avatarrecruit.co.uk, 1
 avcd.cz, 1
 avdagic.net, 1
 avdelivers.com, 1
 avdh.top, 1
 ave.zone, 1
 aveapps.com, 0
 avedesk.org, 0
@@ -3284,17 +3281,16 @@ basedonline.nl, 1
 baselang.com, 1
 basementdoctor.com, 1
 basementdoctornorthwest.com, 1
 bashc.at, 1
 bashstreetband.co.uk, 1
 basilicaknights.org, 1
 basilm.co, 1
 basketball-brannenburg.de, 1
-baskettemple.com, 1
 basnieuwenhuizen.nl, 1
 basnoslovno.com.ua, 1
 basnoslovno.ru, 1
 bass-pro.ru, 1
 bassblog.net, 1
 bassment.ph, 1
 bastelzauberwelt.de, 1
 bastianstalder.ch, 1
@@ -3430,17 +3426,16 @@ beadare.com, 1
 beagreenbean.co.uk, 1
 bealpha.pl, 1
 beamitapp.com, 1
 beanjuice.me, 1
 beans-one.com, 0
 beanworks.ca, 1
 bearcosports.com.br, 1
 bearded.sexy, 1
-bearden.io, 1
 bearingworks.com, 1
 beasel.biz, 1
 beastowner.li, 1
 beatfeld.de, 1
 beatnikbreaks.com, 1
 beatrizaebischer.ch, 1
 beaute-eternelle.ch, 1
 beauty-italy.ru, 1
@@ -4325,16 +4320,17 @@ bludnykoren.ml, 1
 blue-leaf81.net, 1
 blue42.net, 1
 blueblou.com, 1
 bluecardlottery.eu, 1
 bluecards.eu, 1
 bluechilli.com, 1
 bluecon.ninja, 1
 blued.moe, 1
+bluedeck.org, 1
 bluefinger.nl, 1
 blueflare.org, 1
 bluefuzz.nl, 1
 blueimp.net, 1
 blueliquiddesigns.com.au, 1
 bluemeda.web.id, 1
 bluemoonroleplaying.com, 1
 bluemosh.com, 1
@@ -4497,16 +4493,17 @@ bookingdeluxesp.com, 1
 bookingready.com, 1
 bookluk.com, 1
 bookmakersfreebets.com.au, 1
 bookmein.in, 1
 bookourdjs.com, 1
 bookreport.ga, 1
 booksearch.jp, 1
 bookshopofindia.com, 1
+booktracker-org.appspot.com, 1
 bookwitty.social, 1
 bool.be, 1
 boomersurf.com, 1
 boomsaki.com, 1
 boomsakis.com, 1
 boomshelf.com, 1
 boomshelf.org, 1
 boonbox.com, 1
@@ -4551,17 +4548,16 @@ boss.az, 1
 bostadsportal.se, 1
 bosufitness.cz, 1
 bosun.io, 1
 bosworthdental.co.uk, 1
 botlab.ch, 1
 botmanager.pl, 1
 botserver.de, 1
 bottaerisposta.net, 1
-bottineauneighborhood.org, 1
 bottke.berlin, 1
 bou.lt, 1
 bouah.net, 1
 bouchard-mathieux.com, 1
 bouchonville-knifemaker.com, 1
 bouckaert-usedcars.be, 1
 boudah.pl, 1
 boueki.jp, 1
@@ -5306,17 +5302,16 @@ cadoth.net, 1
 cadra.nl, 1
 cadsys.net, 1
 cadusilva.com, 1
 caerostris.com, 1
 caesarkabalan.com, 1
 cafechesscourt.com, 1
 cafefresco.pe, 1
 cafelandia.net, 1
-cafeobscura.nl, 1
 caferagazzi.de, 1
 cafesg.net, 1
 caffeinatedcode.com, 1
 cainhosting.com, 0
 caipai.fm, 1
 cairnterrier.com.br, 1
 cais.de, 1
 caitcs.com, 1
@@ -6366,17 +6361,17 @@ circulatedigital.com, 1
 cirfi.com, 1
 ciri.com.co, 1
 cirope.com, 1
 cirrus0.de, 1
 cirugiasplasticas.com.mx, 1
 cirujanooral.com, 1
 cirurgicagervasio.com.br, 1
 cirurgicalucena.com.br, 1
-ciscodude.net, 1
+ciscodude.net, 0
 cisoaid.com, 1
 ciss.ltd, 1
 cisy.me, 1
 citationgurus.com, 1
 citcuit.in, 1
 citimarinestore.com, 1
 citizen-cam.de, 1
 citizensbankal.com, 1
@@ -6893,16 +6888,17 @@ commco.nl, 1
 commechezvous.ch, 1
 commencepayments.com, 1
 commercial-academy.fr, 1
 commitsandrebases.com, 1
 common.io, 1
 commoncode.com.au, 1
 commoncode.io, 1
 commoncore4kids.com, 1
+community-cupboard.org, 1
 communityblog.fedoraproject.org, 1
 communitycodeofconduct.com, 1
 communityflow.info, 1
 communote.net, 1
 comodesinflamarlashemorroides.org, 1
 comodo.nl, 1
 comodormirmasrapido.com, 1
 comoeliminarlaspapulasperladasenelglande.com, 1
@@ -7024,17 +7020,16 @@ conrad.am, 1
 conradkostecki.de, 1
 consciousbrand.co, 1
 consciouschoices.net, 1
 conseil-gli.fr, 1
 consejosdehogar.com, 1
 consejosdenutricion.com, 1
 conservados.com.br, 1
 conservatoriesincornwall.com, 1
-consideredgifts.com, 1
 consilium-vitae.ch, 1
 consiliumvitae.ch, 1
 consill.com, 1
 console.ninja, 1
 console.rest, 1
 consommateuraverti.com, 1
 consonare.de, 1
 constancechen.me, 1
@@ -7541,16 +7536,17 @@ ctliu.com, 1
 ctnguyen.de, 1
 ctnguyen.net, 1
 ctns.de, 1
 ctoforhire.com.au, 1
 ctomp.io, 1
 ctpe.net, 1
 ctrld.me, 1
 ctyi.me, 1
+cu247secure.ie, 1
 cub-bouncingcastles.co.uk, 1
 cube-cloud.com, 1
 cube.de, 1
 cubecraft.net, 1
 cubecraftstore.com, 1
 cubecraftstore.net, 1
 cubekrowd.net, 1
 cubela.tech, 1
@@ -7667,17 +7663,16 @@ cw-bw.de, 1
 cw.center, 1
 cwagner.me, 1
 cwmart.in, 1
 cwningen.cymru, 0
 cwrcoding.com, 1
 cy.technology, 1
 cybbh.space, 1
 cyber-computer.club, 1
-cyber-konzept.de, 1
 cyber-perikarp.eu, 1
 cyber.cafe, 1
 cybercloud.cc, 1
 cybercrew.cc, 1
 cyberdos.de, 1
 cyberduck.io, 1
 cybergrx.com, 1
 cyberguerrilla.info, 1
@@ -8170,17 +8165,16 @@ dealapp.nl, 1
 dealbanana.at, 1
 dealbanana.be, 1
 dealbanana.ch, 1
 dealbanana.co.uk, 1
 dealbanana.com, 1
 dealbanana.de, 1
 dealbanana.fi, 1
 dealbanana.fr, 1
-dealbanana.it, 1
 dealbanana.se, 1
 dealcruiser.nl, 1
 dealinflatables.co.uk, 1
 dealpass.no, 1
 deamuseum.org, 1
 deanbank.com, 1
 deanisa.ninja, 1
 deanjerkovich.com, 1
@@ -9187,17 +9181,16 @@ doubleup.com.au, 1
 doucheba.gs, 0
 dougferris.id.au, 1
 doujin-domain.cz, 1
 doujinshi.info, 1
 dounats.com, 1
 douzer.de, 1
 dovenzorgmalawi.nl, 1
 dovro.de, 1
-dowc.org, 1
 downloadaja.com, 1
 downloadgamemods.com, 1
 downloadgram.com, 1
 downloadsoftwaregratisan.com, 1
 downrightcute.com, 1
 downtimerobot.com, 1
 downtimerobot.nl, 1
 downtownvernon.com, 1
@@ -9265,17 +9258,16 @@ draw.uy, 1
 drawesome.uy, 1
 drawingcode.net, 1
 drbethanybarnes.com, 1
 drchristinehatfield.ca, 1
 drchristophepanthier.com, 1
 drdavidgilpin.com, 1
 drdim.ru, 1
 drdipilla.com, 1
-dreadd.org, 1
 dreamaholic.club, 1
 dreamcreator108.com, 1
 dreamhack.com, 1
 dreamhostremixer.com, 1
 dreaming.solutions, 1
 dreamithost.com.au, 1
 dreamlandmagic.com, 1
 dreamlinehost.com, 0
@@ -9535,16 +9527,17 @@ dyn.im, 1
 dynaloop.net, 1
 dynamic-networks.be, 1
 dynamicnet.net, 0
 dynamics-365.no, 1
 dynamics365.no, 1
 dynamicsnetwork.net, 1
 dynamictostatic.com, 1
 dynamicyou.co.uk, 1
+dynastic.co, 1
 dynn.be, 1
 dynorphin.com, 1
 dynorphins.com, 1
 dynts.pro, 0
 dynx.pl, 1
 dyrenesverden.no, 1
 dyrkar.com, 1
 dysthymia.com, 1
@@ -10061,16 +10054,17 @@ eliolita.com, 1
 eliott.be, 0
 elisa.ee, 0
 elisabeth-kostecki.de, 1
 elisabeth-strunz.de, 1
 elisabethkostecki.de, 1
 elistor6100.xyz, 1
 elite-box.com, 1
 elite-box.org, 1
+elite-porno.ru, 1
 elite12.de, 1
 elitebouncingfun.com, 1
 elitegameservers.net, 1
 elitehosting.de, 1
 elitesensual.com.br, 1
 elixir.bzh, 1
 eliyah.co.il, 1
 elizabethbuitrago.com, 1
@@ -10192,17 +10186,16 @@ empese.com, 1
 empire24.co, 1
 empireauto-2000.com, 1
 employer.gov, 1
 employer.guru, 1
 employer411.com, 1
 emporiodascalcinhas.com.br, 1
 emporiodosperfumes.com.br, 1
 emporiopatanegra.com.br, 1
-emporiovinareal.com.br, 1
 emporioviverbem.com.br, 1
 empower.net, 1
 empowerdb.com, 1
 emprego.pt, 1
 empyrean-advisors.com, 1
 emrenovation.com, 1
 emresaglam.com, 1
 emultiagent.pl, 1
@@ -10218,16 +10211,17 @@ en4u.org, 1
 enaah.de, 1
 enaim.de, 1
 enamae.net, 1
 encadrer-mon-enfant.com, 1
 encfs.win, 1
 encircleapp.com, 1
 encnet.de, 1
 encode.host, 1
+encoderx.uk, 1
 encouragemarketing.com, 1
 encredible.de, 0
 encredible.org, 0
 encretplomb.ch, 1
 encryptallthethings.net, 1
 encrypted.google.com, 1
 encryptedaudience.com, 1
 encuentraprecios.es, 1
@@ -11618,17 +11612,16 @@ firegoby.jp, 1
 firehost.com, 1
 firemudfm.com, 1
 fireportal.cz, 1
 fireshellsecurity.team, 1
 firesofheaven.org, 1
 firetotheprisons.org, 1
 firevap.org, 1
 firewallconsultants.com, 1
-fireworkcoaching.com, 1
 fireworksshowvr.com, 1
 firexarxa.de, 1
 firma-cerny.cz, 1
 firma-offshore.com, 1
 firmale.com, 1
 firmapi.com, 1
 first-house.no, 1
 first-time-offender.com, 1
@@ -11669,17 +11662,16 @@ fitseven.ru, 1
 fittelo.cz, 1
 fitzsim.org, 1
 fiuxy.bz, 1
 fiuxy.co, 1
 fiveboosts.xyz, 1
 fiws.net, 1
 fix-the-timeline.com, 1
 fix-the-timeline.org, 1
-fixate.ru, 1
 fixatom.com, 1
 fixeaide.com, 1
 fixeaider.com, 1
 fixel.express, 1
 fixforce.nl, 1
 fixhotsauce.com, 1
 fixmyalarmpanel.co.uk, 1
 fixmycomputerdude.com, 1
@@ -11878,17 +11870,16 @@ foia.gov, 1
 foiaonline.gov, 1
 fojing.com, 1
 fokan.be, 1
 fokkusu.fi, 1
 fol.tf, 1
 foljeton.dk, 1
 folkadelic.de, 1
 folkfests.org, 1
-follandviolins.com, 1
 followerrocket.com, 1
 followersya.com, 1
 followthatpage.com, 1
 folv.es, 1
 fomopop.com, 1
 fondanastasia.ru, 1
 fondationwiggli.ch, 1
 fondy.eu, 1
@@ -12382,17 +12373,16 @@ funbouncelincs.co.uk, 1
 funchestra.at, 0
 functional.cc, 1
 functions-online.com, 1
 fundacionfranciscofiasco.org, 1
 fundayltd.com, 1
 fundays.nl, 1
 fundchan.com, 1
 fundeego.com, 1
-funderburg.me, 1
 fundingempire.com, 1
 fundort.ch, 1
 funerariahogardecristo.cl, 1
 funfactorleeds.co.uk, 1
 funfoodco.co.uk, 1
 funfunmstdn.tokyo, 1
 funhouse-inflatables.co.uk, 1
 funi4u.com, 1
@@ -13128,18 +13118,20 @@ glcastlekings.co.uk, 1
 gleanview.com, 1
 glencarbide.com, 1
 glendarraghbouncycastles.co.uk, 1
 glenhuntlyapartments.com.au, 1
 glenshere.com, 1
 glidingshop.cz, 1
 glidingshop.de, 1
 glidingshop.eu, 1
+glittersjabloon.nl, 1
 glloq.org, 1
 glob-coin.com, 1
+global-adult-webcams.com, 1
 global-lights.ma, 1
 global-office.com, 1
 global-village.koeln, 1
 global.hr, 1
 globalchokepoints.org, 1
 globalcomix.com, 1
 globalelite.black, 1
 globalgivingtime.com, 1
@@ -13321,16 +13313,17 @@ gorf.club, 1
 gorgias.me, 1
 gorky.media, 1
 gorn.ch, 1
 gorod74.ru, 0
 gorognyelv.hu, 1
 gorschenin.com, 1
 gosccs.com, 1
 gosciencegirls.com, 1
+gosharewood.com, 1
 goshawkdb.io, 1
 goshin-group.co.jp, 1
 gospelfollower.com, 1
 gospelofmark.ch, 1
 gospelvestcination.de, 1
 gostudy.net, 1
 gosuland.org, 1
 gotech.com.eg, 0
@@ -13483,17 +13476,17 @@ green-light.ml, 1
 greenaddress.it, 1
 greencircleplantnursery.com.au, 1
 greencircleplantnursery.net.au, 1
 greenglam.biz, 1
 greengoblindev.com, 1
 greenitpark.net, 1
 greenliquidsystem.com, 1
 greenlungs.net, 1
-greenoutdoor.dk, 1
+greenoutdoor.dk, 0
 greenpartyofnewmilford.org, 1
 greenpeace-magazin.de, 1
 greenpeace.berlin, 1
 greenroach.ru, 1
 greensdictofslang.com, 1
 greensquare.tk, 1
 greenteamtwente.nl, 1
 greenville.ag, 1
@@ -14259,16 +14252,17 @@ helpstarloja.com.br, 1
 helpverif.com, 1
 helpwithmybank.gov, 1
 helsingfors.guide, 1
 helsinki.dating, 1
 helup.com, 1
 helvella.de, 1
 hematoonkologia.pl, 1
 hemdal.se, 1
+hemnet.se, 1
 hen.ne.ke, 1
 hendric.us, 1
 hendrinortier.nl, 1
 hendyisaac.com, 1
 hengelsportdeal.com, 1
 hengstumone.com, 1
 henhenlu.com, 1
 henkboelman.com, 1
@@ -14524,17 +14518,16 @@ hizzacked.xxx, 1
 hj.rs, 1
 hjartasmarta.se, 1
 hjes.com.ve, 1
 hjf-immobilien.de, 1
 hjortland.org, 1
 hjw-kunstwerk.de, 1
 hk.search.yahoo.com, 0
 hkdobrev.com, 1
-hknet.at, 1
 hkustmbajp.com, 1
 hl7999.com, 1
 hl8999.com, 1
 hlavacek.us, 1
 hledejlevne.cz, 1
 hledejpravnika.cz, 1
 hlfh.space, 1
 hloe0xff.ru, 1
@@ -15814,17 +15807,17 @@ intradayseasonals.com, 1
 intranetsec-regionra.fr, 1
 intraobes.com, 1
 intrasoft.com.au, 1
 intraxia.com, 1
 introvertedtravel.space, 1
 intune.life, 1
 intux.be, 0
 intvonline.com, 1
-intxt.net, 1
+intxt.net, 0
 inusasha.de, 1
 inuyasha-petition.tk, 1
 invasion.com, 1
 invenio.software, 1
 inventaire.ch, 1
 inventionsteps.com.au, 1
 inventix.nl, 1
 inventoryexpress.xyz, 1
@@ -16283,17 +16276,16 @@ jaion.ml, 1
 jaispirit.com, 0
 jaitnetworking.com, 0
 jak-na-les.cz, 1
 jakarta.dating, 1
 jake.eu.org, 1
 jake.ml, 1
 jake.nom.za, 1
 jakecurtis.de, 1
-jakeguild.com, 1
 jakenbake.com, 1
 jakereynolds.co, 1
 jakerullman.com, 1
 jaketremper.com, 1
 jakewalker.xyz, 1
 jakincode.army, 1
 jakob-server.tk, 1
 jakobejitblokaci.cz, 1
@@ -16383,17 +16375,16 @@ japanwatches.xyz, 1
 jape.today, 1
 jardin-exotique-rennes.fr, 1
 jardinderline.ch, 1
 jardiniersduminotaure.fr, 1
 jardins-utopie.net, 1
 jaredeberle.org, 0
 jaredfernandez.com, 1
 jaredfraser.com, 1
-jarivisual.com, 1
 jarl.ninja, 1
 jarniashop.se, 1
 jaroku.com, 1
 jarondl.net, 1
 jarrettgraham.com, 1
 jarroba.com, 1
 jas-team.net, 1
 jasl.works, 1
@@ -16911,17 +16902,16 @@ jsbentertainment.nl, 1
 jsbevents.nl, 1
 jsblights.nl, 1
 jsc7776.com, 1
 jschoi.org, 1
 jschumacher.info, 1
 jsd-cog.org, 1
 jselby.net, 1
 jsent.co.uk, 1
-jsevilleja.org, 1
 jsjyhzy.cc, 1
 jskier.com, 0
 jskoelliken.ch, 1
 jslidong.top, 1
 jsmetallerie.fr, 1
 json-viewer.com, 1
 jstelecom.com.br, 1
 jsteward.moe, 1
@@ -17121,17 +17111,16 @@ kafoom.de, 1
 kaheim.de, 0
 kai-ratzeburg.de, 1
 kai.cool, 1
 kaibol.com, 1
 kaigojj.com, 1
 kaika-facilitymanagement.de, 1
 kaileymslusser.com, 1
 kainetsoft.com, 1
-kainz.bayern, 1
 kainz.be, 1
 kairion.de, 1
 kaisakura.net, 1
 kaisev.net, 1
 kaiusaltd.com, 1
 kaizenreporting.com, 1
 kaizeronion.com, 1
 kajak.land, 1
@@ -18308,17 +18297,17 @@ landell.ml, 1
 landflair-magazin.de, 1
 landhaus-christmann.de, 1
 landinfo.no, 1
 landofelves.net, 1
 landyparts.nl, 1
 lanetix.com, 1
 lang-php.com, 1
 langatang.com, 1
-langendorf-ernaehrung-training.de, 1
+langendorf-ernaehrung-training.de, 0
 langguth.io, 1
 langkahteduh.com, 1
 langly.fr, 1
 langstreckensaufen.de, 1
 languageterminal.com, 1
 langworth.com, 1
 lanna.io, 1
 lannainnovation.com, 1
@@ -18332,17 +18321,16 @@ lanternalauth.com, 1
 lanternhealth.org, 1
 lantian.pub, 1
 lanturtle.com, 1
 lanuovariviera.it, 1
 lanyang.tk, 1
 lanzamientovirtual.es, 1
 lanzarote-online.info, 1
 laos.dating, 1
-laospage.com, 1
 laozhu.me, 1
 lapassiondutrading.com, 1
 lapetition.be, 1
 lapidge.net, 1
 laplanetebleue.com, 1
 lapolla.com, 1
 lapotagere.ch, 1
 lapparente-aise.ch, 1
@@ -18410,17 +18398,17 @@ latetrain.cn, 1
 lathamlabs.com, 1
 lathamlabs.net, 1
 lathamlabs.org, 1
 lathen-wahn.de, 1
 latiendadelbebefeliz.com, 1
 latino.dating, 1
 latinphone.com, 1
 latintoy.com, 1
-latitude42technology.com, 1
+latitude42technology.com, 0
 latitudesign.com, 1
 latour-managedcare.ch, 1
 latremebunda.com, 1
 latrine.cz, 1
 latterdaybride.com, 1
 lattyware.co.uk, 1
 lattyware.com, 1
 laubacher.io, 1
@@ -19215,17 +19203,16 @@ lodgesdureynou.fr, 1
 loeildansledoigt.fr, 1
 loenshotel.de, 1
 loew.de, 1
 loforo.com, 1
 lofttravel.com, 1
 log.my, 0
 logaldeveloper.com, 1
 loganmarchione.com, 1
-loganparkneighborhood.org, 1
 logbook.ch, 1
 logbot.info, 1
 logcat.info, 1
 logement-saisonnier.com, 1
 logement.com, 1
 logentries.com, 0
 logexplorer.net, 1
 logfile.at, 1
@@ -19393,17 +19380,16 @@ loveismore.sk, 0
 loveisourweapon.com, 1
 lovelens.ch, 1
 lovelens.li, 1
 lovelive-anime.tk, 1
 lovelive.us, 1
 lovelivewiki.com, 1
 lovelytimes.net, 1
 lovemomiji.com, 1
-lovemysafetynet.com, 1
 lovenwishes.com, 1
 loveph.one, 1
 lover-bg.com, 1
 loveread-ec.appspot.com, 1
 loverepublic.ru, 1
 lovesmagical.com, 1
 lovesupremefestival.com, 1
 lovetravel360.com, 1
@@ -19524,16 +19510,17 @@ lukatz.de, 1
 luke.ch, 1
 lukeistschuld.de, 1
 lukeng.net, 1
 lukesbouncycastlehire.com, 1
 lukestebbing.com, 1
 lukmanulhakim.id, 1
 lukull-pizza.de, 1
 lumer.tech, 1
+lumi.pw, 1
 lumiere.com, 1
 luminancy.com, 1
 lumitop.com, 1
 lunafag.ru, 1
 lunakit.org, 1
 lunapps.com, 1
 lunar6.ch, 1
 lunarshark.com, 1
@@ -19678,17 +19665,16 @@ macnetwork.net, 1
 maco.org.uk, 1
 maconnerie-dcs.ch, 1
 macosxfilerecovery.com, 1
 macoun.de, 1
 macstore.pe, 1
 mactools.com.co, 1
 macustar.eu, 1
 madae.nl, 1
-madbin.com, 1
 madbouncycastles.co.uk, 1
 madcatdesign.de, 1
 maddi.biz, 1
 maddreefer.com, 1
 made-in-earth.co.jp, 1
 madebyshore.com, 1
 madeglobal.com, 1
 madeinchezmoi.net, 1
@@ -19872,16 +19858,17 @@ mamafit.club, 1
 mamanecesitaungintonic.com, 1
 mamastore.eu, 1
 mamiecouscous.com, 1
 mammals.net, 1
 mammaw.com, 1
 mammeitalianeavienna.com, 1
 mammooc.org, 1
 mamochka.org.ua, 1
+mamospienas.lt, 1
 mamot.fr, 0
 mamout.xyz, 1
 mamuko.nl, 1
 man3s.jp, 1
 manage.cm, 1
 manage4all.de, 1
 manageathome.co.uk, 1
 management-companie.ro, 1
@@ -20019,17 +20006,16 @@ marinazarza.es, 1
 marinbusinesscenter.ch, 1
 marine.gov, 1
 marinekaplama.com, 1
 marines-shop.com, 1
 mario.party, 0
 marioabela.com, 1
 mariposah.ch, 1
 marisamorby.com, 1
-maritim.go.id, 0
 mariushubatschek.de, 1
 mariusschulte.de, 1
 mariviolin.com, 1
 marix.ro, 1
 marjoleindens.be, 1
 marjoriecarvalho.com.br, 1
 mark-a-hydrant.com, 1
 mark-armstrong-gaming.com, 1
@@ -20467,16 +20453,17 @@ mediawiki.org, 1
 mediawin.pl, 1
 medic-world.com, 1
 medicalcountermeasures.gov, 1
 medicinesfast.com, 0
 medicinia.com.br, 1
 medicinskavranje.edu.rs, 1
 medicocompetente.it, 1
 medicoresponde.com.br, 1
+medifab.online, 1
 medifi.com, 1
 medinside.ch, 1
 medinside.li, 1
 medinsider.ch, 1
 medinsider.li, 1
 medireport.fr, 1
 medium.com, 1
 mediumraw.org, 1
@@ -20509,17 +20496,16 @@ meetmygoods.com, 1
 meeusen-usedcars.be, 1
 meeztertom.nl, 1
 meg-a-bounce.co.uk, 1
 mega-byte.nl, 1
 mega-feeling.de, 1
 mega.co.nz, 1
 mega.nz, 1
 mega.online, 1
-megablogging.org, 1
 megabounce.co.uk, 1
 megabounceni.co.uk, 1
 megabouncingcastles.com, 1
 megadrol.com, 1
 megaflix.nl, 1
 megaflowers.ru, 1
 megagifs.de, 1
 megainflatables.co.uk, 1
@@ -20822,16 +20808,17 @@ microbiote-insectes-vecteurs.group, 1
 microblading.pe, 1
 microco.sm, 1
 microcomploja.com.br, 1
 microdesic.com, 1
 microdots.de, 1
 microlinks.org, 1
 microlog.org, 1
 micromata.de, 1
+microme.ga, 1
 microsoftaffiliates.azurewebsites.net, 1
 microvb.com, 1
 midair.io, 1
 midkam.ca, 1
 midlandgate.de, 1
 midlandleisuresales.co.uk, 1
 midlandsfundays.co.uk, 1
 midlandsphotobooths.co.uk, 1
@@ -21102,16 +21089,17 @@ mizque.ch, 1
 mizumax.me, 1
 mj420.com, 1
 mjacobson.net, 1
 mjanja.ch, 1
 mjasm.org, 1
 mjec.net, 1
 mjlaurindo.pt, 1
 mjmnagy.info, 1
+mjscustomcreations.com.au, 1
 mk89.de, 1
 mkacg.com, 1
 mkaciuba.com, 1
 mkakh.com, 1
 mkakh.xyz, 1
 mkasu.org, 1
 mkbouncycastles.co.uk, 1
 mkbouncyhire.co.uk, 1
@@ -21553,17 +21541,16 @@ mrkapowski.com, 1
 mrketolocksmith.com, 1
 mrknee.gr, 1
 mrleonardo.com, 1
 mrliu.me, 1
 mrmoregame.de, 1
 mrnh.de, 1
 mrnh.tk, 1
 mrparker.pw, 1
-mrpropop.com, 1
 mrs-labo.jp, 1
 mrserge.lv, 1
 mrsk.me, 1
 mrstat.co.uk, 1
 mrx.one, 1
 ms-alternativ.de, 1
 ms-host.fr, 1
 msa-aesch.ch, 1
@@ -22897,17 +22884,16 @@ noorsolidarity.com, 1
 nootropic.com, 1
 noovell.com, 1
 nopaste.xyz, 1
 nopaynocure.com, 1
 norad.sytes.net, 1
 nord-sud.be, 1
 nordakademie.de, 1
 nordic-survival.de, 1
-nordiccasinocommunity.com, 1
 nordicirc.com, 1
 nordinfo.fi, 1
 nordlichter-brv.de, 1
 nordmoregatebilklubb.com, 1
 nordnetz-hamburg.de, 1
 nordor.homeip.net, 1
 nordseeblicke.de, 1
 nordwaldzendo.de, 1
@@ -22931,17 +22917,16 @@ northconsulting.fr, 1
 northcountykiaparts.com, 1
 northdevonbouncycastles.co.uk, 1
 northeastcdc.org, 1
 northeastrodeo.co.uk, 1
 northern-lakes.com, 1
 northernhamsterclub.com, 1
 northernmuscle.ca, 1
 northernselfstorage.co.za, 1
-northfieldyarn.com, 1
 northokanaganbookkeeping.com, 1
 northpennvwparts.com, 1
 northpole.dance, 1
 northridgeelectrical.com, 1
 northumbriagames.co.uk, 1
 northwoodsfish.com, 1
 nos-medias.fr, 1
 nos-oignons.net, 1
@@ -23423,17 +23408,16 @@ omniscimus.net, 0
 omnisiens.se, 1
 omnitrack.org, 1
 omniverse.ru, 1
 omorashi.org, 1
 omoteura.com, 1
 omranic.com, 1
 omronwellness.com, 1
 omsdieppe.fr, 1
-on-te.ch, 1
 on-tech.co.uk, 1
 ona.io, 1
 onaboat.se, 1
 onahonavi.com, 1
 onarto.com, 1
 onceuponarainbow.co.uk, 1
 oncf.asso.fr, 1
 oncodedesign.com, 1
@@ -23578,16 +23562,17 @@ opencad.io, 1
 opencircuit.nl, 1
 openclima.com, 1
 opencluster.at, 1
 openconnect.com.au, 1
 opendataincubator.eu, 1
 opendecide.com, 1
 openevic.info, 1
 openfir.st, 1
+openfitapi-falke.azurewebsites.net, 1
 opengg.me, 0
 openings.ninja, 1
 openintelligence.uk, 1
 openiocdb.com, 1
 openitforum.pl, 1
 openkim.org, 1
 openkvk.nl, 1
 openmirrors.cf, 1
@@ -24198,16 +24183,17 @@ pataterosviajeros.com, 1
 patbatesremodeling.com, 0
 patdorf.com, 1
 patechmasters.com, 1
 patentados.com, 1
 patentfamily.de, 1
 paterno-gaming.com, 1
 patflix.com, 1
 pathagoras.com, 1
+pathwaystoresilience.org, 1
 pathwaytofaith.com, 1
 patika-biztositas.hu, 1
 patikabiztositas.hu, 1
 patouille-et-gribouille.fr, 1
 patralos.at, 0
 patriaco.net, 1
 patric-lenhart.de, 1
 patrick-othmer.de, 1
@@ -25105,17 +25091,16 @@ policereferencecheck.com, 1
 polis.or.at, 1
 polis.to, 0
 polish.directory, 1
 polit.im, 1
 politeiaudesa.org, 1
 politic.org.ua, 1
 politik-bei-uns.de, 1
 polizeiwallis.ch, 1
-polkam.go.id, 0
 pollet-ghijs.be, 1
 pollet-ghys.be, 1
 polletmera.com, 1
 pollingplace.uk, 1
 pollpodium.nl, 1
 polsport.live, 1
 poly-fast.com, 1
 polyfill.io, 1
@@ -25175,16 +25160,17 @@ poquvi.net, 1
 porg.es, 1
 pork.org.uk, 1
 porn77.info, 1
 pornbase.info, 0
 pornbay.org, 1
 pornblog.org, 1
 porncandi.com, 1
 pornfacefinder.com, 1
+porno-gif.ru, 1
 pornohub.su, 1
 pornolab-net.appspot.com, 0
 pornomens.be, 1
 porschen.fr, 1
 port.im, 1
 port.social, 1
 port443.hamburg, 1
 port443.se, 1
@@ -25418,16 +25404,17 @@ primaconsulting.net, 1
 primalinea.pro, 1
 primates.com, 1
 primewho.org, 1
 primordialsnooze.com, 1
 primorus.lt, 1
 primotilesandbathrooms.co.uk, 1
 princeagency.com, 1
 princeofwhales.com, 1
+princesparktouch.com, 1
 princessbackpack.de, 1
 princessmargaretlotto.com, 1
 principalstest.com, 1
 principaltoolbox.com, 1
 principia-journal.de, 1
 principia-magazin.de, 1
 principia-online.de, 1
 princovi.cz, 1
@@ -25728,16 +25715,17 @@ psychic-healer-mariya-i-petrova-boyankin
 psychintervention.com, 1
 psycho-lobby.com, 1
 psycho.space, 1
 psychoactive.com, 1
 psychoco.net, 1
 psychotherapie-kp.de, 1
 psydix.org, 1
 psyk.yt, 1
+psylab.cc, 1
 psylab.re, 1
 psylab.vip, 1
 psynapse.net.au, 1
 pt-server.de, 1
 ptal.eu, 1
 ptbi.org.pl, 1
 ptbx.co, 1
 pterodactylus.cz, 1
@@ -27074,17 +27062,16 @@ roots-example-project.com, 1
 roots.io, 1
 rootsandrain.com, 1
 rootsbar.fr, 1
 rootscope.co.uk, 1
 rootswitch.com, 1
 rootusers.com, 1
 ropd.info, 1
 roryneville.com, 1
-rosabellas.co.uk, 1
 rosbass.ru, 1
 rose-prism.org, 1
 rosehosting.reviews, 1
 roseitsolutions.co.uk, 1
 roseitsolutions.uk, 1
 roseliere.ch, 1
 roseliere.com, 1
 roseluna.com, 1
@@ -27941,17 +27928,16 @@ scul.net, 1
 sculpture.support, 1
 scuolaguidalame.ch, 1
 scw.com, 1
 scw.nz, 1
 scwilliams.co.uk, 1
 scwilliams.uk, 1
 sd.af, 1
 sdcardrecovery.de, 1
-sdho.org, 1
 sdns.fr, 1
 sdsi.us, 1
 sdsmanagement.me, 1
 sdsmt.engineering, 1
 sdvigpress.org, 1
 sdvx.net, 1
 sdxcentral.com, 1
 se.search.yahoo.com, 0
@@ -28215,16 +28201,17 @@ sensoft-int.com, 1
 sensoft-int.net, 1
 sensualism.com, 1
 sentinel.gov, 1
 sentinelproject.io, 1
 sentry.io, 1
 sentry.nu, 1
 senzaparole.de, 1
 seo-analyse.com, 1
+seo-lagniappe.com, 1
 seo-linz.at, 1
 seo-nerd.de, 1
 seo-portal.de, 1
 seo.consulting, 1
 seo.london, 1
 seo.tl, 1
 seoagentur2go.de, 1
 seoarchive.org, 1
@@ -28294,16 +28281,17 @@ server-essentials.com, 1
 server-eye.com, 1
 server-eye.de, 1
 server.pk, 1
 serveradminz.com, 1
 serverco.com, 1
 serverd.de, 1
 serverfrog.de, 1
 serverlauget.no, 1
+serverlog.net, 1
 serveroffline.net, 0
 serverpedia.de, 1
 servers4all.co.uk, 1
 serversftw.com, 1
 serverstuff.info, 1
 serversuit.com, 1
 servertastic.com, 1
 servethecity-karlsruhe.de, 1
@@ -28453,17 +28441,16 @@ shariahlawcenter.org, 1
 sharialawcenter.com, 1
 sharialawcenter.org, 1
 shark5060.net, 1
 sharperedge.pw, 1
 sharperedgecomputers.com, 1
 sharu.me, 1
 sharvey.ca, 1
 shasso.com, 1
-shatorin.com, 1
 shaun.net, 1
 shaunandamyswedding.com, 1
 shaunc.com, 1
 shaundanielz.com, 1
 shaunharker.com, 1
 shav.it, 1
 shavingks.com, 1
 shawcentral.ca, 0
@@ -28798,17 +28785,17 @@ simfed.org, 1
 simhaf.cf, 1
 simivalleyelectrical.com, 1
 simlau.net, 1
 simmis.fr, 1
 simoesgoulart.com.br, 1
 simon-hofmann.org, 1
 simon-mueller.de, 1
 simon.lc, 1
-simon3k.moe, 0
+simon3k.moe, 1
 simonberard.garden, 1
 simonbondo.dk, 1
 simoncommunity.org.uk, 1
 simoncook.org, 1
 simonfischer.info, 1
 simonhirscher.de, 1
 simonkjellberg.com, 1
 simonkjellberg.se, 1
@@ -29260,17 +29247,16 @@ sniderman.us, 1
 sniderman.xyz, 1
 sniep.net, 1
 snight.co, 1
 snille.com, 1
 snip.run, 1
 snl.no, 1
 snote.io, 1
 snoupon.com, 1
-snovey.com, 1
 snow-online.com, 1
 snow-online.de, 1
 snow.dog, 1
 snowalerts.eu, 1
 snowalerts.nl, 1
 snowchamps.nl, 1
 snowcrestdesign.com, 1
 snowdy.dk, 1
@@ -30114,17 +30100,16 @@ stonedworms.de, 1
 stonefusion.org.uk, 1
 stonehammerhead.org, 1
 stonemain.eu, 1
 stonemanbrasil.com.br, 1
 stonewuu.com, 1
 stony.com, 1
 stonystratford.org, 1
 stopakwardhandshakes.org, 1
-stopbreakupnow.org, 1
 stopbullying.gov, 1
 stopfraud.gov, 1
 stopthethyroidmadness.com, 1
 stordbatlag.no, 1
 store10.de, 0
 storedsafe.com, 1
 storgom.ua, 0
 storillo.com, 1
@@ -30212,16 +30197,17 @@ studentfinancecountdown.com, 1
 studentforums.biz, 1
 studentite.bg, 0
 studentloans.gov, 1
 studentrightsadvocate.org, 1
 studenttenant.com, 1
 studer.su, 1
 studiemeter.nl, 1
 studienportal.eu, 1
+studienservice.de, 1
 studiereader.nl, 1
 studio-architetto.com, 1
 studio-fotografico.ru, 1
 studiodentisticosanmarco.it, 1
 studiodewit.nl, 1
 studiodoprazer.com.br, 1
 studiogavioli.com, 1
 studiograou.com, 1
@@ -30664,17 +30650,16 @@ ta-65.com, 1
 ta-sports.net, 1
 ta65.com, 1
 taabe.net, 1
 taartenfeesies.nl, 1
 tab.watch, 1
 tabarnak.ga, 1
 tabernadovinho.com.br, 1
 tabino.top, 1
-tabitatsu.jp, 1
 tabithawebb.co.uk, 1
 tabla-periodica.com, 1
 tabledusud.be, 1
 tabledusud.nl, 1
 tablescraps.com, 1
 tablet.facebook.com, 0
 tablotv.com, 0
 taboragroup.com, 0
@@ -30686,16 +30671,17 @@ tacoma-games.com, 1
 tacomafia.net, 0
 tacotown.tk, 1
 tacticalsquare.com, 1
 tadata.me, 1
 tadcastercircuit.org.uk, 1
 tadluedtke.com, 1
 tadtadya.com, 1
 tadu.de, 1
+tagdocumentary.com, 1
 tagesmutter-in-bilm.de, 1
 taggedpdf.com, 0
 taglioepiega.com, 1
 taglioepiega.eu, 1
 taglioepiega.it, 1
 tahosa.co, 1
 tahosalodge.org, 1
 tai-in.com, 1
@@ -30957,17 +30943,16 @@ techinet.pl, 1
 techjoe.co, 1
 techmajesty.com, 1
 techmasters.io, 1
 techmunchies.net, 0
 technicabv.nl, 1
 technicalbrothers.cf, 1
 technicalforensic.com, 1
 technicallyeasy.net, 1
-techniclab.net, 1
 technifocal.com, 1
 technikrom.org, 1
 technoinfogroup.it, 1
 technologie-innovation.fr, 1
 technologyand.me, 1
 technologysi.com, 1
 technoparcepsilon.fr, 1
 technoscoots.com, 1
@@ -31306,16 +31291,17 @@ thedevilwearswibra.nl, 1
 thedevrycommonsbrasil.com, 0
 thediaryofadam.com, 1
 thedisc.nl, 1
 thediscovine.com, 1
 thedocumentrefinery.com, 1
 thedominatorsclan.com, 1
 thedreamtravelgroup.co.uk, 1
 thedronechart.com, 1
+thedrunkencabbage.com, 1
 thedutchmarketers.com, 1
 theebookkeepers.co.za, 1
 theeducationchannel.info, 1
 theeducationdirectory.org, 1
 theevergreen.me, 1
 theexpatriate.de, 1
 thefanimatrix.net, 1
 thefasterweb.com, 1
@@ -31641,17 +31627,16 @@ ti-planet.org, 1
 tiacollection.com, 1
 tiagonunes.pt, 1
 tiaki.org, 1
 tianeptine.com, 1
 tianshili.me, 1
 tianxicaipiao.com, 1
 tianxicaipiao.win, 1
 tianxicp.com, 1
-tibbitshall.ca, 1
 tibipg.com, 1
 tibovanheule.site, 1
 ticfleet.com, 1
 ticketluck.com, 1
 ticketmates.com.au, 1
 ticketpro.ca, 1
 ticketslover.com, 1
 ticketsmate.com, 1
@@ -31840,17 +31825,16 @@ tmm.cx, 1
 tmonitoring.com, 1
 tmpraider.net, 1
 tmpsantos.com.br, 1
 tmtopup.com, 1
 tn0.club, 1
 tnb-plattform.de, 1
 tndentalwellness.com, 1
 tnes.dk, 1
-tniad.mil.id, 0
 tntmobi.com, 1
 tny.link, 1
 to2mbn.org, 1
 toad.ga, 1
 toast.al, 0
 tob-rulez.de, 1
 tobacco.gov, 1
 tobedo.net, 1
@@ -32811,16 +32795,17 @@ umenlisam.com, 1
 umisonoda.com, 1
 umkmjogja.com, 1
 ump45.moe, 1
 umsapi.com, 1
 un-zero-un.fr, 1
 unapolegetic.co, 1
 unapp.me, 1
 unbelievableplaces.de, 1
+unblock-zh.org, 1
 unblockall.xyz, 1
 unblocked.at, 1
 unblocked.bet, 1
 unblocked.bid, 1
 unblocked.blue, 1
 unblocked.cam, 1
 unblocked.ink, 1
 unblocked.live, 1
@@ -33744,17 +33729,17 @@ vorderklier.de, 1
 vorkbaard.nl, 1
 vorlicek.de, 1
 vorlif.org, 1
 vorm2.com, 1
 vorodevops.com, 1
 vos-fleurs.ch, 1
 vos-fleurs.com, 1
 vosgym.jp, 1
-voshod.org, 1
+voshod.org, 0
 vosjesweb.nl, 1
 vosky.fr, 1
 vostronet.com, 1
 voter-info.uk, 1
 votercircle.com, 1
 voterstartingpoint.uk, 1
 votocek.cz, 1
 votockova.cz, 1
@@ -34352,17 +34337,16 @@ westmidlandsinflatables.co.uk, 1
 westsuburbanbank.com, 1
 westtulsa.com, 1
 westwood.no, 1
 wetherbymethodist.org.uk, 1
 wetherbyweather.org.uk, 1
 wetofu.top, 1
 wetthost.com, 1
 wevenues.com, 1
-wevg.org, 1
 wexfordbouncycastles.ie, 1
 weyland-yutani.org, 1
 weyland.tech, 1
 wezl.net, 1
 wf-bigsky-master.appspot.com, 1
 wf-demo-eu.appspot.com, 1
 wf-demo-hrd.appspot.com, 1
 wf-dogfood-hrd.appspot.com, 1
@@ -35310,17 +35294,16 @@ xotika.tv, 1
 xp2.de, 1
 xpd.se, 1
 xpenology-fr.net, 1
 xperidia.com, 1
 xpj.bet, 1
 xpjcunkuan.com, 1
 xpletus.nl, 1
 xplore-dna.net, 1
-xpressprint.com.br, 1
 xps2pdf.co.uk, 1
 xpwn.cz, 1
 xqin.net, 1
 xr.cx, 1
 xrippedhd.com, 1
 xrockx.de, 1
 xroot.org, 1
 xs2a.no, 1
@@ -35580,17 +35563,16 @@ yotilab.com, 1
 yotilabs.com, 1
 yotta-zetta.com, 1
 yotubaiotona.net, 1
 you.com.br, 1
 youcancraft.de, 1
 youcanfuckoff.xyz, 1
 youcanmakeit.at, 1
 youcruit.com, 1
-youdamom.com, 0
 youdowell.com, 1
 youdungoofd.com, 1
 youftp.tk, 1
 yougee.ml, 1
 youhacked.me, 1
 youhavewords.com, 1
 youhua.ru, 1
 youkaryote.com, 1
@@ -35797,17 +35779,16 @@ zaoext.com, 1
 zapatoshechoamano.pe, 1
 zapier.com, 1
 zappbuildapps.com, 0
 zaratan.fr, 1
 zargaripour.com, 1
 zargescases.co.uk, 1
 zarmarket.org, 1
 zarpo.com.br, 1
-zary.me, 1
 zaufanatrzeciastrona.pl, 1
 zavec.com.ec, 1
 zavetaji.lv, 1
 zawo-electric.de, 1
 zbchen.com, 1
 zberger.com, 1
 zbetcheck.in, 1
 zbp.at, 0
@@ -35923,16 +35904,17 @@ zhuweiyou.com, 1
 zi.is, 1
 ziegler-family.com, 1
 ziegler-heizung-frankfurt.de, 1
 ziemlich-zackig.de, 1
 ziemlichzackig.de, 1
 zifb.in, 1
 zigi.io, 1
 zigzagmart.com, 1
+zihao.me, 1
 ziin.de, 0
 zijung.me, 1
 zikirakhirzaman.com, 1
 zillertaleralpen.net, 1
 zilon.com.co, 1
 zilore.com, 1
 zilsen.com, 1
 zima.io, 1
--- a/servo/components/layout/query.rs
+++ b/servo/components/layout/query.rs
@@ -5,34 +5,38 @@
 //! Utilities for querying the layout, as needed by the layout thread.
 
 use app_units::Au;
 use construct::ConstructionResult;
 use context::LayoutContext;
 use euclid::{Point2D, Vector2D, Rect, Size2D};
 use flow::{Flow, GetBaseFlow};
 use fragment::{Fragment, FragmentBorderBoxIterator, SpecificFragmentInfo};
-use gfx::display_list::{DisplayList, OpaqueNode, ScrollOffsetMap};
+use gfx::display_list::{DisplayItem, DisplayList, OpaqueNode, ScrollOffsetMap};
 use inline::InlineFragmentNodeFlags;
 use ipc_channel::ipc::IpcSender;
 use msg::constellation_msg::PipelineId;
 use opaque_node::OpaqueNodeMethods;
+use script_layout_interface::{LayoutElementType, LayoutNodeType};
+use script_layout_interface::StyleData;
 use script_layout_interface::rpc::{ContentBoxResponse, ContentBoxesResponse, LayoutRPC};
 use script_layout_interface::rpc::{NodeGeometryResponse, NodeScrollIdResponse};
 use script_layout_interface::rpc::{OffsetParentResponse, ResolvedStyleResponse, StyleResponse};
 use script_layout_interface::rpc::TextIndexResponse;
 use script_layout_interface::wrapper_traits::{LayoutNode, ThreadSafeLayoutElement, ThreadSafeLayoutNode};
 use script_traits::LayoutMsg as ConstellationMsg;
 use script_traits::UntrustedNodeAddress;
 use sequential;
 use std::cmp::{min, max};
+use std::collections::HashMap;
 use std::ops::Deref;
 use std::sync::{Arc, Mutex};
 use style::computed_values::display::T as Display;
 use style::computed_values::position::T as Position;
+use style::computed_values::visibility::T as Visibility;
 use style::context::{StyleContext, ThreadLocalStyleContext};
 use style::dom::TElement;
 use style::logical_geometry::{WritingMode, BlockFlowDirection, InlineBaseDirection};
 use style::properties::{style_structs, PropertyId, PropertyDeclarationId, LonghandId};
 use style::selector_parser::PseudoElement;
 use style_traits::ToCss;
 use webrender_api::ExternalScrollId;
 use wrapper::LayoutNodeLayoutData;
@@ -74,16 +78,19 @@ pub struct LayoutThreadData {
     /// Scroll offsets of scrolling regions.
     pub scroll_offsets: ScrollOffsetMap,
 
     /// Index in a text fragment. We need this do determine the insertion point.
     pub text_index_response: TextIndexResponse,
 
     /// A queued response for the list of nodes at a given point.
     pub nodes_from_point_response: Vec<UntrustedNodeAddress>,
+
+    /// A queued response for the inner text of a given element.
+    pub element_inner_text_response: String,
 }
 
 pub struct LayoutRPCImpl(pub Arc<Mutex<LayoutThreadData>>);
 
 // https://drafts.csswg.org/cssom-view/#overflow-directions
 fn overflow_direction(writing_mode: &WritingMode) -> OverflowDirection {
     match (writing_mode.block_flow_direction(), writing_mode.inline_base_direction()) {
         (BlockFlowDirection::TopToBottom, InlineBaseDirection::LeftToRight) |
@@ -156,16 +163,22 @@ impl LayoutRPC for LayoutRPCImpl {
         rw_data.style_response.clone()
     }
 
     fn text_index(&self) -> TextIndexResponse {
         let &LayoutRPCImpl(ref rw_data) = self;
         let rw_data = rw_data.lock().unwrap();
         rw_data.text_index_response.clone()
     }
+
+    fn element_inner_text(&self) -> String {
+        let &LayoutRPCImpl(ref rw_data) = self;
+        let rw_data = rw_data.lock().unwrap();
+        rw_data.element_inner_text_response.clone()
+    }
 }
 
 struct UnioningFragmentBorderBoxIterator {
     node_address: OpaqueNode,
     rect: Option<Rect<Au>>,
 }
 
 impl UnioningFragmentBorderBoxIterator {
@@ -859,8 +872,172 @@ pub fn process_offset_parent_query<N: La
 
 pub fn process_style_query<N: LayoutNode>(requested_node: N)
         -> StyleResponse {
     let element = requested_node.as_element().unwrap();
     let data = element.borrow_data();
 
     StyleResponse(data.map(|d| d.styles.primary().clone()))
 }
+
+enum InnerTextItem {
+    Text(String),
+    RequiredLineBreakCount(u32),
+}
+
+// https://html.spec.whatwg.org/multipage/#the-innertext-idl-attribute
+pub fn process_element_inner_text_query<N: LayoutNode>(node: N,
+                                                       display_list: &Option<Arc<DisplayList>>) -> String {
+    if !display_list.is_some() {
+        warn!("We should have a display list at this point. Cannot get inner text");
+        return String::new();
+    }
+
+    // Step 1.
+    let mut results = Vec::new();
+    // Step 2.
+    inner_text_collection_steps(node, display_list.as_ref().unwrap(), &mut results);
+    let mut max_req_line_break_count = 0;
+    let mut inner_text = Vec::new();
+    for item in results {
+        match item {
+            InnerTextItem::Text(s) => {
+                if max_req_line_break_count > 0 {
+                    // Step 5.
+                    for _ in 0..max_req_line_break_count {
+                        inner_text.push("\u{000A}".to_owned());
+                    }
+                    max_req_line_break_count = 0;
+                }
+                // Step 3.
+                if !s.is_empty() {
+                    inner_text.push(s.to_owned());
+                }
+            },
+            InnerTextItem::RequiredLineBreakCount(count) => {
+                // Step 4.
+                if inner_text.len() == 0 {
+                    // Remove required line break count at the start.
+                    continue;
+                }
+                // Store the count if it's the max of this run,
+                // but it may be ignored if no text item is found afterwards,
+                // which means that these are consecutive line breaks at the end.
+                if count > max_req_line_break_count {
+                    max_req_line_break_count = count;
+                }
+            }
+        }
+    }
+    inner_text.into_iter().collect()
+}
+
+// https://html.spec.whatwg.org/multipage/#inner-text-collection-steps
+#[allow(unsafe_code)]
+fn inner_text_collection_steps<N: LayoutNode>(node: N,
+                                              display_list: &Arc<DisplayList>,
+                                              results: &mut Vec<InnerTextItem>) {
+    // Extracts the text nodes from the display list to avoid traversing it
+    // for each child node.
+    let mut text = HashMap::new();
+    for item in &display_list.as_ref().list {
+        if let &DisplayItem::Text(ref text_content) = item {
+            let entries = text.entry(&item.base().metadata.node).or_insert(Vec::new());
+            entries.push(&text_content.text_run.text);
+        }
+    }
+
+    let mut items = Vec::new();
+    for child in node.traverse_preorder() {
+        let node = match child.type_id() {
+            LayoutNodeType::Text => {
+                child.parent_node().unwrap()
+            },
+            _ => child,
+        };
+
+        let element_data = unsafe {
+            node.get_style_and_layout_data().map(|d| {
+                &(*(d.ptr.as_ptr() as *mut StyleData)).element_data
+            })
+        };
+
+        if element_data.is_none() {
+            continue;
+        }
+
+        let style = match element_data.unwrap().borrow().styles.get_primary() {
+            None => continue,
+            Some(style) => style.clone(),
+        };
+
+        // Step 2.
+        if style.get_inheritedbox().visibility != Visibility::Visible {
+            continue;
+        }
+
+        // Step 3.
+        let display = style.get_box().display;
+        if !child.is_in_document() || display == Display::None {
+            continue;
+        }
+
+        match child.type_id() {
+            LayoutNodeType::Text => {
+                // Step 4.
+                if let Some(text_content) = text.get(&child.opaque()) {
+                    for content in text_content {
+                        items.push(InnerTextItem::Text(content.to_string()));
+                    }
+                }
+            },
+            LayoutNodeType::Element(LayoutElementType::HTMLBRElement) => {
+                // Step 5.
+                items.push(InnerTextItem::Text(String::from("\u{000A}" /* line feed */)));
+            },
+            LayoutNodeType::Element(LayoutElementType::HTMLParagraphElement) => {
+                // Step 8.
+                items.insert(0, InnerTextItem::RequiredLineBreakCount(2));
+                items.push(InnerTextItem::RequiredLineBreakCount(2));
+            }
+            _ => {},
+
+        }
+
+        match display {
+            Display::TableCell if !is_last_table_cell() => {
+                // Step 6.
+                items.push(InnerTextItem::Text(String::from("\u{0009}" /* tab */)));
+            },
+            Display::TableRow if !is_last_table_row() => {
+                // Step 7.
+                items.push(InnerTextItem::Text(String::from("\u{000A}" /* line feed */)));
+            },
+            _ => (),
+        }
+
+        // Step 9.
+        if is_block_level_or_table_caption(&display) {
+            items.insert(0, InnerTextItem::RequiredLineBreakCount(1));
+            items.push(InnerTextItem::RequiredLineBreakCount(1));
+        }
+    }
+
+    results.append(&mut items);
+}
+
+fn is_last_table_cell() -> bool {
+    // FIXME(ferjm) Implement this.
+    false
+}
+
+fn is_last_table_row() -> bool {
+    // FIXME(ferjm) Implement this.
+    false
+}
+
+fn is_block_level_or_table_caption(display: &Display) -> bool {
+    match *display {
+        Display::Block | Display::Flex |
+        Display::TableCaption | Display::Table => true,
+        _ => false,
+    }
+}
--- a/servo/components/layout_thread/lib.rs
+++ b/servo/components/layout_thread/lib.rs
@@ -71,19 +71,19 @@ use layout::context::malloc_size_of_pers
 use layout::display_list::ToLayout;
 use layout::display_list::WebRenderDisplayListConverter;
 use layout::flow::{Flow, GetBaseFlow, ImmutableFlowUtils, MutableOwnedFlowUtils};
 use layout::flow_ref::FlowRef;
 use layout::incremental::{LayoutDamageComputation, RelayoutMode, SpecialRestyleDamage};
 use layout::layout_debug;
 use layout::parallel;
 use layout::query::{LayoutRPCImpl, LayoutThreadData, process_content_box_request, process_content_boxes_request};
-use layout::query::{process_node_geometry_request, process_node_scroll_area_request};
-use layout::query::{process_node_scroll_id_request, process_offset_parent_query, process_resolved_style_request};
-use layout::query::process_style_query;
+use layout::query::{process_element_inner_text_query, process_node_geometry_request};
+use layout::query::{process_node_scroll_area_request, process_node_scroll_id_request};
+use layout::query::{process_offset_parent_query, process_resolved_style_request, process_style_query};
 use layout::sequential;
 use layout::traversal::{ComputeStackingRelativePositions, PreorderFlowTraversal, RecalcStyleAndConstructFlows};
 use layout::wrapper::LayoutNodeLayoutData;
 use layout_traits::LayoutThreadFactory;
 use libc::c_void;
 use malloc_size_of::{MallocSizeOf, MallocSizeOfOps};
 use metrics::{PaintTimeMetrics, ProfilerMetadataFactory, ProgressiveWebMetric};
 use msg::constellation_msg::PipelineId;
@@ -521,16 +521,17 @@ impl LayoutThread {
                     scroll_id_response: None,
                     scroll_area_response: Rect::zero(),
                     resolved_style_response: String::new(),
                     offset_parent_response: OffsetParentResponse::empty(),
                     style_response: StyleResponse(None),
                     scroll_offsets: HashMap::new(),
                     text_index_response: TextIndexResponse(None),
                     nodes_from_point_response: vec![],
+                    element_inner_text_response: String::new(),
                 })),
             webrender_image_cache:
                 Arc::new(RwLock::new(FnvHashMap::default())),
             timer:
                 if PREFS.get("layout.animations.test.enabled")
                            .as_boolean().unwrap_or(false) {
                    Timer::test_mode()
                 } else {
@@ -1102,16 +1103,19 @@ impl LayoutThread {
                         rw_data.offset_parent_response = OffsetParentResponse::empty();
                     },
                     ReflowGoal::StyleQuery(_) => {
                         rw_data.style_response = StyleResponse(None);
                     },
                     ReflowGoal::TextIndexQuery(..) => {
                         rw_data.text_index_response = TextIndexResponse(None);
                     }
+                    ReflowGoal::ElementInnerTextQuery(_) => {
+                        rw_data.element_inner_text_response = String::new();
+                    },
                     ReflowGoal::Full | ReflowGoal:: TickAnimations => {}
                 }
                 return;
             },
             Some(x) => x,
         };
 
         debug!("layout: processing reflow request for: {:?} ({}) (query={:?})",
@@ -1414,17 +1418,21 @@ impl LayoutThread {
                     client_point,
                     flags
                 );
 
                 rw_data.nodes_from_point_response = results.items.iter()
                    .map(|item| UntrustedNodeAddress(item.tag.0 as *const c_void))
                    .collect()
             },
-
+            ReflowGoal::ElementInnerTextQuery(node) => {
+                let node = unsafe { ServoLayoutNode::new(&node) };
+                rw_data.element_inner_text_response =
+                    process_element_inner_text_query(node, &rw_data.display_list);
+            },
             ReflowGoal::Full | ReflowGoal::TickAnimations => {}
         }
     }
 
     fn set_scroll_states<'a, 'b>(&mut self,
                                  new_scroll_states: Vec<ScrollState>,
                                  possibly_locked_rw_data: &mut RwData<'a, 'b>) {
         let mut rw_data = possibly_locked_rw_data.lock();
--- a/servo/components/script/dom/element.rs
+++ b/servo/components/script/dom/element.rs
@@ -352,17 +352,17 @@ impl Element {
     /// layout box iff it doesn't have `display: none`.
     fn style(&self) -> Option<Arc<ComputedValues>> {
         window_from_node(self).style_query(
             self.upcast::<Node>().to_trusted_node_address()
         )
     }
 
     // https://drafts.csswg.org/cssom-view/#css-layout-box
-    fn has_css_layout_box(&self) -> bool {
+    pub fn has_css_layout_box(&self) -> bool {
         self.style()
             .map_or(false, |s| !s.get_box().clone_display().is_none())
     }
 
     // https://drafts.csswg.org/cssom-view/#potentially-scrollable
     fn potentially_scrollable(&self) -> bool {
         self.has_css_layout_box() && !self.has_any_visible_overflow()
     }
--- a/servo/components/script/dom/htmlelement.rs
+++ b/servo/components/script/dom/htmlelement.rs
@@ -3,16 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 use dom::activation::{ActivationSource, synthetic_click_activation};
 use dom::attr::Attr;
 use dom::bindings::codegen::Bindings::ElementBinding::ElementMethods;
 use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
 use dom::bindings::codegen::Bindings::HTMLElementBinding;
 use dom::bindings::codegen::Bindings::HTMLElementBinding::HTMLElementMethods;
+use dom::bindings::codegen::Bindings::NodeBinding::NodeBinding::NodeMethods;
 use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
 use dom::bindings::error::{Error, ErrorResult};
 use dom::bindings::inheritance::{ElementTypeId, HTMLElementTypeId, NodeTypeId};
 use dom::bindings::inheritance::Castable;
 use dom::bindings::root::{Dom, DomRoot, MutNullableDom, RootedReference};
 use dom::bindings::str::DOMString;
 use dom::cssstyledeclaration::{CSSModificationAccess, CSSStyleDeclaration, CSSStyleOwner};
 use dom::document::{Document, FocusType};
@@ -23,18 +24,20 @@ use dom::htmlbodyelement::HTMLBodyElemen
 use dom::htmlframesetelement::HTMLFrameSetElement;
 use dom::htmlhtmlelement::HTMLHtmlElement;
 use dom::htmlinputelement::{HTMLInputElement, InputType};
 use dom::htmllabelelement::HTMLLabelElement;
 use dom::node::{Node, NodeFlags};
 use dom::node::{document_from_node, window_from_node};
 use dom::nodelist::NodeList;
 use dom::virtualmethods::VirtualMethods;
+use dom::window::ReflowReason;
 use dom_struct::dom_struct;
 use html5ever::{LocalName, Prefix};
+use script_layout_interface::message::ReflowGoal;
 use std::collections::HashSet;
 use std::default::Default;
 use std::rc::Rc;
 use style::attr::AttrValue;
 use style::element_state::*;
 
 #[dom_struct]
 pub struct HTMLElement {
@@ -395,16 +398,37 @@ impl HTMLElementMethods for HTMLElement 
     // https://drafts.csswg.org/cssom-view/#dom-htmlelement-offsetheight
     fn OffsetHeight(&self) -> i32 {
         let node = self.upcast::<Node>();
         let window = window_from_node(self);
         let (_, rect) = window.offset_parent_query(node.to_trusted_node_address());
 
         rect.size.height.to_nearest_px()
     }
+
+    // https://html.spec.whatwg.org/multipage/#the-innertext-idl-attribute
+    fn InnerText(&self) -> DOMString {
+        let node = self.upcast::<Node>();
+        let window = window_from_node(node);
+        let element = self.upcast::<Element>();
+
+        // Step 1.
+        let element_not_rendered = !node.is_in_doc() || !element.has_css_layout_box();
+        if element_not_rendered {
+            return node.GetTextContent().unwrap();
+        }
+
+        window.reflow(ReflowGoal::ElementInnerTextQuery(node.to_trusted_node_address()), ReflowReason::Query);
+        DOMString::from(window.layout().element_inner_text())
+    }
+
+    // https://html.spec.whatwg.org/multipage/#the-innertext-idl-attribute
+    fn SetInnerText(&self, _: DOMString) {
+        // XXX (ferjm) implement this.
+    }
 }
 
 // https://html.spec.whatwg.org/multipage/#attr-data-*
 
 static DATA_PREFIX: &str = "data-";
 static DATA_HYPHEN_SEPARATOR: char = '\x2d';
 
 fn is_ascii_uppercase(c: char) -> bool {
--- a/servo/components/script/dom/node.rs
+++ b/servo/components/script/dom/node.rs
@@ -2736,26 +2736,30 @@ impl Into<LayoutNodeType> for NodeTypeId
         }
     }
 }
 
 impl Into<LayoutElementType> for ElementTypeId {
     #[inline(always)]
     fn into(self) -> LayoutElementType {
         match self {
+            ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLBRElement) =>
+                LayoutElementType::HTMLBRElement,
             ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLCanvasElement) =>
                 LayoutElementType::HTMLCanvasElement,
             ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLIFrameElement) =>
                 LayoutElementType::HTMLIFrameElement,
             ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLImageElement) =>
                 LayoutElementType::HTMLImageElement,
             ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLInputElement) =>
                 LayoutElementType::HTMLInputElement,
             ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLObjectElement) =>
                 LayoutElementType::HTMLObjectElement,
+            ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLParagraphElement) =>
+                LayoutElementType::HTMLParagraphElement,
             ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableCellElement(_)) =>
                 LayoutElementType::HTMLTableCellElement,
             ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableColElement) =>
                 LayoutElementType::HTMLTableColElement,
             ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableElement) =>
                 LayoutElementType::HTMLTableElement,
             ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableRowElement) =>
                 LayoutElementType::HTMLTableRowElement,
--- a/servo/components/script/dom/webidls/HTMLElement.webidl
+++ b/servo/components/script/dom/webidls/HTMLElement.webidl
@@ -41,16 +41,18 @@ interface HTMLElement : Element {
   // [CEReactions]
   //         attribute boolean draggable;
   // [SameObject, PutForwards=value] readonly attribute DOMTokenList dropzone;
   //         attribute HTMLMenuElement? contextMenu;
   // [CEReactions]
   //         attribute boolean spellcheck;
   // void forceSpellCheck();
 
+  [TreatNullAs=EmptyString] attribute DOMString innerText;
+
   // command API
   // readonly attribute DOMString? commandType;
   // readonly attribute DOMString? commandLabel;
   // readonly attribute DOMString? commandIcon;
   // readonly attribute boolean? commandHidden;
   // readonly attribute boolean? commandDisabled;
   // readonly attribute boolean? commandChecked;
 };
--- a/servo/components/script/dom/window.rs
+++ b/servo/components/script/dom/window.rs
@@ -1893,16 +1893,17 @@ fn debug_reflow_events(id: PipelineId, r
         ReflowGoal::NodeGeometryQuery(_n) => "\tNodeGeometryQuery",
         ReflowGoal::NodeScrollGeometryQuery(_n) => "\tNodeScrollGeometryQuery",
         ReflowGoal::NodeScrollIdQuery(_n) => "\tNodeScrollIdQuery",
         ReflowGoal::ResolvedStyleQuery(_, _, _) => "\tResolvedStyleQuery",
         ReflowGoal::OffsetParentQuery(_n) => "\tOffsetParentQuery",
         ReflowGoal::StyleQuery(_n) => "\tStyleQuery",
         ReflowGoal::TextIndexQuery(..) => "\tTextIndexQuery",
         ReflowGoal::TickAnimations => "\tTickAnimations",
+        ReflowGoal::ElementInnerTextQuery(_) => "\tElementInnerTextQuery",
     });
 
     debug_msg.push_str(match *reason {
         ReflowReason::CachedPageNeededReflow => "\tCachedPageNeededReflow",
         ReflowReason::RefreshTick => "\tRefreshTick",
         ReflowReason::FirstLoad => "\tFirstLoad",
         ReflowReason::KeyEvent => "\tKeyEvent",
         ReflowReason::MouseEvent => "\tMouseEvent",
--- a/servo/components/script_layout_interface/lib.rs
+++ b/servo/components/script_layout_interface/lib.rs
@@ -103,21 +103,23 @@ impl DomParallelInfo {
 pub enum LayoutNodeType {
     Element(LayoutElementType),
     Text,
 }
 
 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
 pub enum LayoutElementType {
     Element,
+    HTMLBRElement,
     HTMLCanvasElement,
     HTMLIFrameElement,
     HTMLImageElement,
     HTMLInputElement,
     HTMLObjectElement,
+    HTMLParagraphElement,
     HTMLTableCellElement,
     HTMLTableColElement,
     HTMLTableElement,
     HTMLTableRowElement,
     HTMLTableSectionElement,
     HTMLTextAreaElement,
     SVGSVGElement,
 }
--- a/servo/components/script_layout_interface/message.rs
+++ b/servo/components/script_layout_interface/message.rs
@@ -116,43 +116,46 @@ pub enum ReflowGoal {
     NodeScrollIdQuery(TrustedNodeAddress),
     NodeGeometryQuery(TrustedNodeAddress),
     NodeScrollGeometryQuery(TrustedNodeAddress),
     ResolvedStyleQuery(TrustedNodeAddress, Option<PseudoElement>, PropertyId),
     OffsetParentQuery(TrustedNodeAddress),
     StyleQuery(TrustedNodeAddress),
     TextIndexQuery(TrustedNodeAddress, Point2D<f32>),
     NodesFromPointQuery(Point2D<f32>, NodesFromPointQueryType),
+    ElementInnerTextQuery(TrustedNodeAddress),
 }
 
 impl ReflowGoal {
     /// Returns true if the given ReflowQuery needs a full, up-to-date display list to
     /// be present or false if it only needs stacking-relative positions.
     pub fn needs_display_list(&self) -> bool {
         match *self {
             ReflowGoal::NodesFromPointQuery(..) | ReflowGoal::TextIndexQuery(..) |
-            ReflowGoal::TickAnimations | ReflowGoal::Full => true,
+            ReflowGoal::TickAnimations | ReflowGoal::ElementInnerTextQuery(_) |
+            ReflowGoal::Full => true,
             ReflowGoal::ContentBoxQuery(_) | ReflowGoal::ContentBoxesQuery(_) |
             ReflowGoal::NodeGeometryQuery(_) | ReflowGoal::NodeScrollGeometryQuery(_) |
             ReflowGoal::NodeScrollIdQuery(_) |
             ReflowGoal::ResolvedStyleQuery(..) | ReflowGoal::OffsetParentQuery(_) |
-            ReflowGoal::StyleQuery(_)  => false,
+            ReflowGoal::StyleQuery(_) => false,
         }
     }
 
     /// Returns true if the given ReflowQuery needs its display list send to WebRender or
     /// false if a layout_thread display list is sufficient.
     pub fn needs_display(&self) -> bool {
         match *self {
             ReflowGoal::StyleQuery(_)  | ReflowGoal::TextIndexQuery(..) |
             ReflowGoal::ContentBoxQuery(_) | ReflowGoal::ContentBoxesQuery(_) |
             ReflowGoal::NodeGeometryQuery(_) | ReflowGoal::NodeScrollGeometryQuery(_) |
             ReflowGoal::NodeScrollIdQuery(_) | ReflowGoal::ResolvedStyleQuery(..) |
             ReflowGoal::OffsetParentQuery(_) => false,
             ReflowGoal::NodesFromPointQuery(..) | ReflowGoal::Full |
+            ReflowGoal::ElementInnerTextQuery(_) |
             ReflowGoal::TickAnimations => true,
         }
     }
 }
 
 /// Information needed for a reflow.
 pub struct Reflow {
     ///  A clipping rectangle for the page, an enlarged rectangle containing the viewport.
--- a/servo/components/script_layout_interface/rpc.rs
+++ b/servo/components/script_layout_interface/rpc.rs
@@ -33,17 +33,18 @@ pub trait LayoutRPC {
     fn resolved_style(&self) -> ResolvedStyleResponse;
     fn offset_parent(&self) -> OffsetParentResponse;
     /// Requests the styles for an element. Contains a `None` value if the element is in a `display:
     /// none` subtree.
     fn style(&self) -> StyleResponse;
     fn text_index(&self) -> TextIndexResponse;
     /// Requests the list of nodes from the given point.
     fn nodes_from_point_response(&self) -> Vec<UntrustedNodeAddress>;
-
+    /// Query layout to get the inner text for a given element.
+    fn element_inner_text(&self) -> String;
 }
 
 pub struct ContentBoxResponse(pub Option<Rect<Au>>);
 
 pub struct ContentBoxesResponse(pub Vec<Rect<Au>>);
 
 pub struct NodeGeometryResponse {
     pub client_rect: Rect<i32>,
--- a/startupcache/test/TestStartupCache.cpp
+++ b/startupcache/test/TestStartupCache.cpp
@@ -60,22 +60,28 @@ protected:
 
   nsCOMPtr<nsIFile> mSCFile;
 };
 
 TestStartupCache::TestStartupCache()
 {
   NS_GetSpecialDirectory(NS_OS_TEMP_DIR, getter_AddRefs(mSCFile));
   mSCFile->AppendNative(NS_LITERAL_CSTRING("test-startupcache.tmp"));
+#ifdef XP_WIN
+  nsAutoString env(NS_LITERAL_STRING("MOZ_STARTUP_CACHE="));
+  env.Append(mSCFile->NativePath());
+  _wputenv(env.get());
+#else
   nsAutoCString path;
   mSCFile->GetNativePath(path);
   char* env = mozilla::Smprintf("MOZ_STARTUP_CACHE=%s", path.get()).release();
   PR_SetEnv(env);
   // We intentionally leak `env` here because it is required by PR_SetEnv
   MOZ_LSAN_INTENTIONALLY_LEAK_OBJECT(env);
+#endif
   StartupCache::GetSingleton()->InvalidateCache();
 }
 TestStartupCache::~TestStartupCache()
 {
   PR_SetEnv("MOZ_STARTUP_CACHE=");
   StartupCache::GetSingleton()->InvalidateCache();
 }
 
--- a/taskcluster/ci/toolchain/linux.yml
+++ b/taskcluster/ci/toolchain/linux.yml
@@ -86,16 +86,42 @@ linux64-clang-6-pre:
         resources:
             - 'build/build-clang/build-clang.py'
             - 'build/build-clang/clang-6-pre-linux64.json'
             - 'taskcluster/scripts/misc/tooltool-download.sh'
         toolchain-artifact: public/build/clang.tar.xz
     toolchains:
         - linux64-gcc-4.9
 
+linux64-clang-6-pre-macosx-cross:
+    description: "Clang 6 Pre toolchain build with MacOS Compiler RT libs"
+    treeherder:
+        kind: build
+        platform: toolchains/opt
+        symbol: TL(clang6p-macosx-cross)
+        tier: 1
+    worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+    worker:
+        max-run-time: 36000
+        env:
+            TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/macosx64/cross-clang.manifest"
+    run:
+        using: toolchain-script
+        script: build-clang-6-pre-linux-macosx-cross.sh
+        resources:
+            - 'build/build-clang/build-clang.py'
+            - 'build/build-clang/clang-6-pre-macosx64.json'
+            - 'taskcluster/scripts/misc/tooltool-download.sh'
+        toolchain-artifact: public/build/clang.tar.xz
+        tooltool-downloads: internal
+    toolchains:
+        - linux64-cctools-port
+        - linux64-clang-6-pre
+        - linux64-gcc-4.9
+
 linux64-clang-tidy:
     description: "Clang-tidy build"
     index:
         product: static-analysis
         job-name: linux64-clang-tidy
     treeherder:
         kind: build
         platform: toolchains/opt
new file mode 100755
--- /dev/null
+++ b/taskcluster/scripts/misc/build-clang-6-pre-linux-macosx-cross.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -x -e -v
+
+# This script is for building clang for Mac OS X targets on a Linux host,
+# including native Mac OS X Compiler-RT libraries and llvm-symbolizer.
+WORKSPACE=$HOME/workspace
+HOME_DIR=$WORKSPACE/build
+UPLOAD_DIR=$HOME/artifacts
+
+cd $HOME_DIR/src
+
+. taskcluster/scripts/misc/tooltool-download.sh
+
+# ld needs libLTO.so from llvm
+export LD_LIBRARY_PATH=$HOME_DIR/src/clang/lib
+# these variables are used in build-clang.py
+export CROSS_CCTOOLS_PATH=$HOME_DIR/src/cctools
+export CROSS_SYSROOT=$HOME_DIR/src/MacOSX10.11.sdk
+# cmake doesn't allow us to specify a path to lipo on the command line.
+export PATH=$PATH:$CROSS_CCTOOLS_PATH/bin
+ln -sf $CROSS_CCTOOLS_PATH/bin/x86_64-apple-darwin11-lipo $CROSS_CCTOOLS_PATH/bin/lipo
+
+# gets a bit too verbose here
+set +x
+
+cd build/build-clang
+# |mach python| sets up a virtualenv for us!
+../../mach python ./build-clang.py -c clang-6-pre-macosx64.json --skip-tar
+
+# We now have a native macosx64 toolchain.
+# What we want is a native linux64 toolchain which can target macosx64 and use the sanitizer dylibs.
+# Overlay the linux64 toolchain that we used for this build (except llvm-symbolizer).
+(
+cd "$WORKSPACE/moz-toolchain/build/stage1"
+# Need the macosx64 native llvm-symbolizer since this gets shipped with sanitizer builds
+mv clang/bin/llvm-symbolizer $HOME_DIR/src/clang/bin/
+cp --remove-destination -lr $HOME_DIR/src/clang/* clang/
+tar -c -J -f $HOME_DIR/src/build/build-clang/clang.tar.xz clang
+)
+
+set -x
+
+# Put a tarball in the artifacts dir
+mkdir -p $UPLOAD_DIR
+cp clang.tar.* $UPLOAD_DIR
--- a/testing/mozharness/scripts/desktop_unittest.py
+++ b/testing/mozharness/scripts/desktop_unittest.py
@@ -332,17 +332,17 @@ class DesktopUnittest(TestingMixin, Merc
             self.abs_res_dir = abs_app_dir
         return self.abs_res_dir
 
     @PreScriptAction('create-virtualenv')
     def _pre_create_virtualenv(self, action):
         dirs = self.query_abs_dirs()
 
         self.register_virtualenv_module(name='pip>=1.5')
-        self.register_virtualenv_module('psutil==3.1.1', method='pip')
+        self.register_virtualenv_module('psutil==5.4.3', method='pip')
         self.register_virtualenv_module(name='mock')
         self.register_virtualenv_module(name='simplejson')
 
         requirements_files = [os.path.join(dirs['abs_test_install_dir'],
                               'config', 'marionette_requirements.txt')]
 
         if self._query_specified_suites('mochitest') is not None:
             # mochitest is the only thing that needs this
--- a/testing/tools/websocketprocessbridge/websocketprocessbridge_requirements.txt
+++ b/testing/tools/websocketprocessbridge/websocketprocessbridge_requirements.txt
@@ -1,13 +1,13 @@
 twisted==10.2.0
 
 # websocket adapter for twisted, might be built into twisted someday
 txws==0.9.1
 
-psutil==3.1.1
+psutil==5.4.3
 
 # needed by txws, but pypi doesn't know about it
 six==1.10.0
 
 # Needed by iceserver
 ipaddr==2.1.11
 passlib==1.6.5
--- a/third_party/python/psutil/CREDITS
+++ b/third_party/python/psutil/CREDITS
@@ -15,30 +15,69 @@ Really thanks to all of you.
 Author
 ======
 
 N: Giampaolo Rodola'
 C: Italy
 E: g.rodola@gmail.com
 W: http://grodola.blogspot.com/
 
+Experts
+=======
+
+Github usernames of people to CC on github when in need of help.
+
+- NetBSD:
+    - 0-wiz-0, Thomas Klausner
+    - ryoqun, Ryo Onodera
+- OpenBSD:
+    - landryb, Landry Breuil
+- FreeBSD:
+    - glebius, Gleb Smirnoff (#1013)
+    - sunpoet, Po-Chuan Hsieh (pkg maintainer, #1105)
+    - kostikbel, Konstantin Belousov (#1105)
+- OSX:
+    - whitlockjc, Jeremy Whitlock
+- Windows:
+    - mrjefftang, Jeff Tang
+    - wj32, Wen Jia Liu
+    - fbenkstein, Frank Benkstein
+- SunOS:
+    - wiggin15, Arnon Yaari
+    - alxchk, Oleksii Shevchuk
+- AIX:
+    - wiggin15, Arnon Yaari (maintainer)
+
 Contributors
 ============
 
 N: Jay Loden
 C: NJ, USA
 E: jloden@gmail.com
 D: original co-author, initial design/bootstrap and occasional bug fixes
 W: http://www.jayloden.com
 
+N: Arnon Yaari (wiggin15)
+W: https://github.com/wiggin15
+I: 517, 607, 610, 1131, 1123, 1130, 1154, 1164, 1174, 1177
+
+N: Jeff Tang
+W: https://github.com/mrjefftang
+I: 340, 529, 616, 653, 654, 648, 641
+
 N: Jeremy Whitlock
 E: jcscoobyrs@gmail.com
 D: great help with OSX C development.
 I: 125, 150, 174, 206
 
+N: Landry Breuil
+W: https://github.com/landryb
+D: OpenBSD implementation.
+I: 615
+
 N: wj32
 E: wj32.64@gmail.com
 D: process username() and get_connections() on Windows
 I: 114, 115
 
 N: Yan Raber
 C: Bologna, Italy
 E: yanraber@gmail.com
@@ -51,16 +90,24 @@ I: 18
 
 N: Dave Daeschler
 C: USA
 E: david.daeschler@gmail.com
 W: http://daviddaeschler.com
 D: some contributions to initial design/bootstrap plus occasional bug fixing
 I: 522, 536
 
+N: Thomas Klausner
+W: https://github.com/0-wiz-0
+I: #557
+
+N: Ryo Onodera
+W: https://github.com/ryoon
+I: #557
+
 N: cjgohlke
 E: cjgohlke@gmail.com
 D: Windows 64 bit support
 I: 107
 
 N: Jeffery Kline
 E: jeffery.kline@gmail.com
 I: 130
@@ -248,32 +295,29 @@ I: 497
 N: Szigeti Gabor Niif
 E: szigeti.gabor.niif@gmail.com
 I: 446
 
 N: msabramo
 E: msabramo@gmail.com
 I: 492
 
-N: Jeff Tang
-W: https://github.com/mrjefftang
-I: 340, 529, 616, 653, 654
-
 N: Yaolong Huang
 E: airekans@gmail.com
 W: http://airekans.github.io/
 I: 530
 
 N: Anders Chrigström
 W: https://github.com/anders-chrigstrom
 I: 496
 
 N: spacewander
+W: https://github.com/spacewander
 E: spacewanderlzx@gmail.com
-I: 561
+I: 561, 603
 
 N: Sylvain Mouquet
 E: sylvain.mouquet@gmail.com
 I: 565
 
 N: karthikrev
 I: 568
 
@@ -303,8 +347,171 @@ N: John Burnett
 W: http://www.johnburnett.com/
 C: Irvine, CA, US
 I: 614
 
 N: Árni Már Jónsson
 E: Reykjavik, Iceland
 E: https://github.com/arnimarj
 I: 634
+
+N: Bart van Kleef
+W: https://github.com/bkleef
+I: 664
+
+N: Steven Winfield
+W: https://github.com/stevenwinfield
+I: 672
+
+N: sk6249
+W: https://github.com/sk6249
+I: 670
+
+N: maozguttman
+W: https://github.com/maozguttman
+I: 659
+
+N: dasumin
+W: https://github.com/dasumin
+I: 541
+
+N: Mike Sarahan
+W: https://github.com/msarahan
+I: 688
+
+N: Syohei YOSHIDA
+W: https://github.com/syohex
+I: 730
+
+N: Frank Benkstein
+W: https://github.com/fbenkstein
+I: 732, 733
+
+N: Visa Hankala
+E: visa@openbsd.org
+I: 741
+
+N: Sebastian-Gabriel Brestin
+C: Romania
+E: sebastianbrestin@gmail.com
+I: 704
+
+N: Timmy Konick
+W: https://github.com/tijko
+I: 751
+
+N: mpderbec
+W: https://github.com/mpderbec
+I: 660
+
+N: Mozilla Foundation
+D: sample code for process USS memory.
+
+N: wxwright
+W: https://github.com/wxwright
+I: 776
+
+N: Farhan Khan
+E: khanzf@gmail.com
+I: 823
+
+N: Jake Omann
+E: https://github.com/jomann09
+I: 816, 775
+
+N: Jeremy Humble
+W: https://github.com/jhumble
+I: 863
+
+N: Ilya Georgievsky
+W: https://github.com/xBeAsTx
+I: 870
+
+N: Yago Jesus
+W: https://github.com/YJesus
+I: 798
+
+N: Andre Caron
+C: Montreal, QC, Canada
+E: andre.l.caron@gmail.com
+W: https://github.com/AndreLouisCaron
+I: 880
+
+N: ewedlund
+W: https://github.com/ewedlund
+I: 874
+
+N: Arcadiy Ivanov
+W: https://github.com/arcivanov
+I: 919
+
+N: Max Bélanger
+W: https://github.com/maxbelanger
+I: 936, 1133
+
+N: Pierre Fersing
+C: France
+E: pierre.fersing@bleemeo.com
+I: 950
+
+N: Thiago Borges Abdnur
+W: https://github.com/bolaum
+I: 959
+
+N: Nicolas Hennion
+W: https://github.com/nicolargo
+I: 974
+
+N: Baruch Siach
+W: https://github.com/baruchsiach
+I: 872
+
+N: Danek Duvall
+W: https://github.com/dhduvall
+I: 1002
+
+N: Alexander Hasselhuhn
+C: Germany
+W: https://github.com/alexanha
+
+N: Himanshu Shekhar
+W: https://github.com/himanshub16
+I: 1036
+
+N: Yannick Gingras
+W: https://github.com/ygingras
+I: 1057
+
+N: Gleb Smirnoff
+W: https://github.com/glebius
+I: 1042, 1079
+
+N: Oleksii Shevchuk
+W: https://github.com/alxchk
+I: 1077, 1093, 1091
+
+N: Prodesire
+W: https://github.com/Prodesire
+I: 1138
+
+N: Sebastian Saip
+W: https://github.com/ssaip
+I: 1141
+
+N: Jakub Bacic
+W: https://github.com/jakub-bacic
+I: 1127
+
+N: Akos Kiss
+W: https://github.com/akosthekiss
+I: 1150
+
+N: Adrian Page
+W: https://github.com/adpag
+I: 1159, 1160, 1161
+
+N: Matthew Long
+W: https://github.com/matray