merge mozilla-central to autoland. r=merge a=merge
authorSebastian Hengst <archaeopteryx@coole-files.de>
Sat, 03 Jun 2017 20:16:49 +0200
changeset 412671 64c3afa3fabf81d5246676bccd559ff8db1be66e
parent 412670 0403297b318b4a77d9b9b4eccc28e20249ac3d0b (current diff)
parent 412659 130efc657df7e7fe291cc42307f3eb3cb0484dfc (diff)
child 412672 c3ac266d12a8c08eb4342030b55a07f28c8a839b
push id1490
push usermtabara@mozilla.com
push dateMon, 31 Jul 2017 14:08:16 +0000
treeherdermozilla-release@70e32e6bf15e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge, merge
milestone55.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 autoland. r=merge a=merge
devtools/server/actors/webextension-inspected-window.js
dom/base/messageWakeupService.js
dom/base/messageWakeupService.manifest
mobile/android/geckoview/src/main/java/org/mozilla/gecko/ContextGetter.java
testing/mochitest/tests/browser/browser_fail_add_task_uncaught_rejection.js
testing/mochitest/tests/browser/browser_fail_uncaught_rejection_expected.js
testing/mochitest/tests/browser/browser_fail_uncaught_rejection_expected_multi.js
testing/mochitest/tests/browser/browser_uncaught_rejection_expected.js
--- a/browser/base/content/pageinfo/pageInfo.js
+++ b/browser/base/content/pageinfo/pageInfo.js
@@ -850,92 +850,107 @@ function makePreview(row) {
     newImage.id = "thepreviewimage";
     var physWidth = 0, physHeight = 0;
     var width = 0, height = 0;
 
     if ((item.HTMLLinkElement || item.HTMLInputElement ||
          item.HTMLImageElement || item.SVGImageElement ||
          (item.HTMLObjectElement && mimeType && mimeType.startsWith("image/")) ||
          isBG) && isProtocolAllowed) {
-      newImage.setAttribute("src", url);
-      physWidth = newImage.width || 0;
-      physHeight = newImage.height || 0;
+      // We need to wait for the image to finish loading before using width & height
+      newImage.addEventListener("loadend", function() {
+        physWidth = newImage.width || 0;
+        physHeight = newImage.height || 0;
+
+        // "width" and "height" attributes must be set to newImage,
+        // even if there is no "width" or "height attribute in item;
+        // otherwise, the preview image cannot be displayed correctly.
+        // Since the image might have been loaded out-of-process, we expect
+        // the item to tell us its width / height dimensions. Failing that
+        // the item should tell us the natural dimensions of the image. Finally
+        // failing that, we'll assume that the image was never loaded in the
+        // other process (this can be true for favicons, for example), and so
+        // we'll assume that we can use the natural dimensions of the newImage
+        // we just created. If the natural dimensions of newImage are not known
+        // then the image is probably broken.
+        if (!isBG) {
+          newImage.width = ("width" in item && item.width) || newImage.naturalWidth;
+          newImage.height = ("height" in item && item.height) || newImage.naturalHeight;
+        } else {
+          // the Width and Height of an HTML tag should not be used for its background image
+          // (for example, "table" can have "width" or "height" attributes)
+          newImage.width = item.naturalWidth || newImage.naturalWidth;
+          newImage.height = item.naturalHeight || newImage.naturalHeight;
+        }
+
+        if (item.SVGImageElement) {
+          newImage.width = item.SVGImageElementWidth;
+          newImage.height = item.SVGImageElementHeight;
+        }
+
+        width = newImage.width;
+        height = newImage.height;
+
+        document.getElementById("theimagecontainer").collapsed = false
+        document.getElementById("brokenimagecontainer").collapsed = true;
 
-      // "width" and "height" attributes must be set to newImage,
-      // even if there is no "width" or "height attribute in item;
-      // otherwise, the preview image cannot be displayed correctly.
-      // Since the image might have been loaded out-of-process, we expect
-      // the item to tell us its width / height dimensions. Failing that
-      // the item should tell us the natural dimensions of the image. Finally
-      // failing that, we'll assume that the image was never loaded in the
-      // other process (this can be true for favicons, for example), and so
-      // we'll assume that we can use the natural dimensions of the newImage
-      // we just created. If the natural dimensions of newImage are not known
-      // then the image is probably broken.
-      if (!isBG) {
-        newImage.width = ("width" in item && item.width) || newImage.naturalWidth;
-        newImage.height = ("height" in item && item.height) || newImage.naturalHeight;
+        let imageSize = "";
+        if (url) {
+          if (width != physWidth || height != physHeight) {
+            imageSize = gBundle.getFormattedString("mediaDimensionsScaled",
+                                                   [formatNumber(physWidth),
+                                                    formatNumber(physHeight),
+                                                    formatNumber(width),
+                                                    formatNumber(height)]);
+          } else {
+            imageSize = gBundle.getFormattedString("mediaDimensions",
+                                                   [formatNumber(width),
+                                                    formatNumber(height)]);
+          }
+        }
+        setItemValue("imagedimensiontext", imageSize);
+      }, {once: true});
+
+      newImage.setAttribute("src", url);
+    } else {
+      // Handle the case where newImage is not used for width & height
+      if (item.HTMLVideoElement && isProtocolAllowed) {
+        newImage = document.createElementNS("http://www.w3.org/1999/xhtml", "video");
+        newImage.id = "thepreviewimage";
+        newImage.src = url;
+        newImage.controls = true;
+        width = physWidth = item.videoWidth;
+        height = physHeight = item.videoHeight;
+
+        document.getElementById("theimagecontainer").collapsed = false;
+        document.getElementById("brokenimagecontainer").collapsed = true;
+      } else if (item.HTMLAudioElement && isProtocolAllowed) {
+        newImage = new Audio;
+        newImage.id = "thepreviewimage";
+        newImage.src = url;
+        newImage.controls = true;
+        isAudio = true;
+
+        document.getElementById("theimagecontainer").collapsed = false;
+        document.getElementById("brokenimagecontainer").collapsed = true;
       } else {
-        // the Width and Height of an HTML tag should not be used for its background image
-        // (for example, "table" can have "width" or "height" attributes)
-        newImage.width = item.naturalWidth || newImage.naturalWidth;
-        newImage.height = item.naturalHeight || newImage.naturalHeight;
-      }
-
-      if (item.SVGImageElement) {
-        newImage.width = item.SVGImageElementWidth;
-        newImage.height = item.SVGImageElementHeight;
+        // fallback image for protocols not allowed (e.g., javascript:)
+        // or elements not [yet] handled (e.g., object, embed).
+        document.getElementById("brokenimagecontainer").collapsed = false;
+        document.getElementById("theimagecontainer").collapsed = true;
       }
 
-      width = newImage.width;
-      height = newImage.height;
-
-      document.getElementById("theimagecontainer").collapsed = false
-      document.getElementById("brokenimagecontainer").collapsed = true;
-    } else if (item.HTMLVideoElement && isProtocolAllowed) {
-      newImage = document.createElementNS("http://www.w3.org/1999/xhtml", "video");
-      newImage.id = "thepreviewimage";
-      newImage.src = url;
-      newImage.controls = true;
-      width = physWidth = item.videoWidth;
-      height = physHeight = item.videoHeight;
-
-      document.getElementById("theimagecontainer").collapsed = false;
-      document.getElementById("brokenimagecontainer").collapsed = true;
-    } else if (item.HTMLAudioElement && isProtocolAllowed) {
-      newImage = new Audio;
-      newImage.id = "thepreviewimage";
-      newImage.src = url;
-      newImage.controls = true;
-      isAudio = true;
-
-      document.getElementById("theimagecontainer").collapsed = false;
-      document.getElementById("brokenimagecontainer").collapsed = true;
-    } else {
-      // fallback image for protocols not allowed (e.g., javascript:)
-      // or elements not [yet] handled (e.g., object, embed).
-      document.getElementById("brokenimagecontainer").collapsed = false;
-      document.getElementById("theimagecontainer").collapsed = true;
-    }
-
-    let imageSize = "";
-    if (url && !isAudio) {
-      if (width != physWidth || height != physHeight) {
-        imageSize = gBundle.getFormattedString("mediaDimensionsScaled",
-                                               [formatNumber(physWidth),
-                                                formatNumber(physHeight),
-                                                formatNumber(width),
-                                                formatNumber(height)]);
-      } else {
+      let imageSize = "";
+      if (url && !isAudio) {
         imageSize = gBundle.getFormattedString("mediaDimensions",
                                                [formatNumber(width),
                                                 formatNumber(height)]);
       }
+      setItemValue("imagedimensiontext", imageSize);
     }
-    setItemValue("imagedimensiontext", imageSize);
 
     makeBlockImage(url);
 
     imageContainer.removeChild(oldImage);
     imageContainer.appendChild(newImage);
   });
 }
 
--- a/browser/base/content/test/general/browser_aboutSupport_newtab_security_state.js
+++ b/browser/base/content/test/general/browser_aboutSupport_newtab_security_state.js
@@ -1,11 +1,18 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: window.location is null");
+
+
 add_task(async function checkIdentityOfAboutSupport() {
   let tab = gBrowser.loadOneTab("about:support", {
     referrerURI: null,
     inBackground: false,
     allowThirdPartyFixup: false,
     relatedToCurrent: false,
     skipAnimation: true,
     allowMixedContent: false,
--- a/browser/base/content/test/general/browser_scope.js
+++ b/browser/base/content/test/general/browser_scope.js
@@ -1,4 +1,10 @@
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: this.docShell is null");
+
 function test() {
   ok(!!gBrowser, "gBrowser exists");
   is(gBrowser, getBrowser(), "both ways of getting tabbrowser work");
 }
--- a/browser/base/content/test/general/browser_tabs_owner.js
+++ b/browser/base/content/test/general/browser_tabs_owner.js
@@ -1,8 +1,20 @@
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: gBrowser._finalizeTabSwitch is not a function");
+
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: gBrowser._finalizeTabSwitch is not a function");
+
 function test() {
   BrowserTestUtils.addTab(gBrowser);
   BrowserTestUtils.addTab(gBrowser);
   BrowserTestUtils.addTab(gBrowser);
 
   var tabs = gBrowser.tabs;
   var owner;
 
--- a/browser/base/content/test/pageinfo/browser_pageinfo_image_info.js
+++ b/browser/base/content/test/pageinfo/browser_pageinfo_image_info.js
@@ -8,18 +8,18 @@ function test() {
   gBrowser.selectedBrowser.addEventListener("load", function() {
     var doc = gBrowser.contentDocument;
     var testImg = doc.getElementById("test-image");
     var pageInfo = BrowserPageInfo(gBrowser.selectedBrowser.currentURI.spec,
                                    "mediaTab", testImg);
 
     pageInfo.addEventListener("load", function() {
       pageInfo.onFinished.push(function() {
-        executeSoon(function() {
-          var pageInfoImg = pageInfo.document.getElementById("thepreviewimage");
+        var pageInfoImg = pageInfo.document.getElementById("thepreviewimage");
+        pageInfoImg.addEventListener("loadend", function() {
 
           is(pageInfoImg.src, testImg.src, "selected image has the correct source");
           is(pageInfoImg.width, testImg.width, "selected image has the correct width");
           is(pageInfoImg.height, testImg.height, "selected image has the correct height");
 
           pageInfo.close();
           gBrowser.removeCurrentTab();
           finish();
--- a/browser/base/content/test/performance/browser_startup.js
+++ b/browser/base/content/test/performance/browser_startup.js
@@ -23,32 +23,29 @@ const startupPhases = {
   // Consider loading your code after first paint instead,
   // eg. from nsBrowserGlue.js' _onFirstWindowLoaded method).
   "before profile selection": {whitelist: {
     components: new Set([
       "nsBrowserGlue.js",
       "MainProcessSingleton.js",
 
       // Bugs to fix: The following components shouldn't be initialized that early.
-      "WebContentConverter.js",
-      "nsSessionStartup.js",
-      "PushComponents.js",
+      "WebContentConverter.js", // bug 1369443
+      "nsSessionStartup.js", // bug 1369456
+      "PushComponents.js", // bug 1369436
     ]),
     modules: new Set([
       "resource://gre/modules/AppConstants.jsm",
       "resource://gre/modules/XPCOMUtils.jsm",
       "resource://gre/modules/Services.jsm",
 
       // Bugs to fix: Probably loaded too early, needs investigation.
-      "resource://gre/modules/Log.jsm",
-      "resource://gre/modules/AsyncPrefs.jsm",
-      "resource://gre/modules/RemotePageManager.jsm",
-      "resource://gre/modules/TelemetryStopwatch.jsm",
-      "resource://gre/modules/PrivateBrowsingUtils.jsm",
-      "resource://gre/modules/Promise.jsm"
+      "resource://gre/modules/AsyncPrefs.jsm", // bug 1369460
+      "resource://gre/modules/RemotePageManager.jsm", // bug 1369466
+      "resource://gre/modules/Promise.jsm" // bug 1368456
     ])
   }},
 
   // For the following phases of startup we have only a black list for now
 
   // We are at this phase after creating the first browser window (ie. after final-ui-startup).
   "before opening first browser window": {blacklist: {
     components: new Set([
--- a/browser/base/content/test/siteIdentity/browser_no_mcb_for_loopback.js
+++ b/browser/base/content/test/siteIdentity/browser_no_mcb_for_loopback.js
@@ -3,24 +3,16 @@
 
 // The test loads a HTTPS web page with active content from HTTP loopback URLs
 // and makes sure that the mixed content flags on the docshell are not set.
 //
 // Note that the URLs referenced within the test page intentionally use the
 // unassigned port 8 because we don't want to actually load anything, we just
 // want to check that the URLs are not blocked.
 
-// The following rejections should not be left uncaught. This test has been
-// whitelisted until the issue is fixed.
-if (!gMultiProcessBrowser) {
-  Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
-  PromiseTestUtils.expectUncaughtRejection(/NetworkError/);
-  PromiseTestUtils.expectUncaughtRejection(/NetworkError/);
-}
-
 const TEST_URL = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "https://example.com") + "test_no_mcb_for_loopback.html";
 
 const LOOPBACK_PNG_URL = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "http://127.0.0.1:8888") + "moz.png";
 
 const PREF_BLOCK_DISPLAY = "security.mixed_content.block_display_content";
 const PREF_BLOCK_ACTIVE = "security.mixed_content.block_active_content";
 
 registerCleanupFunction(function() {
--- a/browser/base/content/test/social/browser_social_activation.js
+++ b/browser/base/content/test/social/browser_social_activation.js
@@ -1,12 +1,19 @@
 /* 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/. */
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: Assert is null");
+
+
 var SocialService = Cu.import("resource:///modules/SocialService.jsm", {}).SocialService;
 
 var tabsToRemove = [];
 
 function removeProvider(provider) {
   return new Promise(resolve => {
     // a full install sets the manifest into a pref, addProvider alone doesn't,
     // make sure we uninstall if the manifest was added.
--- a/browser/base/content/test/sync/browser_aboutAccounts.js
+++ b/browser/base/content/test/sync/browser_aboutAccounts.js
@@ -1,12 +1,18 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/
  */
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: window.location is null");
+
 XPCOMUtils.defineLazyModuleGetter(this, "Promise",
   "resource://gre/modules/Promise.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "fxAccounts",
   "resource://gre/modules/FxAccounts.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
   "resource://gre/modules/FileUtils.jsm");
 
 const CHROME_BASE = "chrome://mochitests/content/browser/browser/base/content/test/sync/";
--- a/browser/base/content/test/webrtc/browser_devices_get_user_media_screen.js
+++ b/browser/base/content/test/webrtc/browser_devices_get_user_media_screen.js
@@ -1,21 +1,12 @@
 /* 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/. */
 
-// The rejection "The fetching process for the media resource was aborted by the
-// user agent at the user's request." is left unhandled in some cases. This bug
-// should be fixed, but for the moment this file is whitelisted.
-//
-// NOTE: Whitelisting a class of rejections should be limited. Normally you
-//       should use "expectUncaughtRejection" to flag individual failures.
-Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
-PromiseTestUtils.whitelistRejectionsGlobally(/aborted by the user agent/);
-
 const permissionError = "error: NotAllowedError: The request is not allowed " +
     "by the user agent or the platform in the current context.";
 
 const notFoundError =
     "error: NotFoundError: The object can not be found here.";
 
 var gTests = [
 
--- a/browser/components/extensions/ExtensionPopups.jsm
+++ b/browser/components/extensions/ExtensionPopups.jsm
@@ -103,18 +103,16 @@ class BasePopup {
     this.closePopup();
   }
 
   destroy() {
     this.extension.forgetOnClose(this);
 
     this.destroyed = true;
     this.browserLoadedDeferred.reject(new Error("Popup destroyed"));
-    // Ignore unhandled rejections if the "attach" method is not called.
-    this.browserLoaded.catch(() => {});
 
     BasePopup.instances.get(this.window).delete(this.extension);
 
     return this.browserReady.then(() => {
       if (this.browser) {
         this.destroyBrowser(this.browser, true);
         this.browser.remove();
       }
--- a/browser/components/extensions/test/browser/browser_ext_tabs_executeScript_bad.js
+++ b/browser/components/extensions/test/browser/browser_ext_tabs_executeScript_bad.js
@@ -1,19 +1,10 @@
 "use strict";
 
-// Various "Missing host permission" rejections are left uncaught. This may be
-// caused by issues in the test, in the testing framework, or in production
-// code. This bug should be fixed, but for the moment this file is whitelisted.
-//
-// NOTE: Whitelisting a class of rejections should be limited. Normally you
-//       should use "expectUncaughtRejection" to flag individual failures.
-Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
-PromiseTestUtils.whitelistRejectionsGlobally(/Missing host permission/);
-
 // This is a pretty terrible hack, but it's the best we can do until we
 // support |executeScript| callbacks and |lastError|.
 async function testHasNoPermission(params) {
   let contentSetup = params.contentSetup || (() => Promise.resolve());
 
   async function background(contentSetup) {
     browser.runtime.onMessage.addListener((msg, sender) => {
       browser.test.assertEq(msg, "second script ran", "second script ran");
--- a/browser/components/extensions/test/browser/head.js
+++ b/browser/components/extensions/test/browser/head.js
@@ -16,26 +16,16 @@
  *          imageBuffer imageBufferFromDataURI
  *          getListStyleImage getPanelForNode
  *          awaitExtensionPanel awaitPopupResize
  *          promiseContentDimensions alterContent
  *          promisePrefChangeObserved openContextMenuInFrame
  *          promiseAnimationFrame
  */
 
-// There are shutdown issues for which multiple rejections are left uncaught.
-// This bug should be fixed, but for the moment this directory is whitelisted.
-//
-// NOTE: Entire directory whitelisting should be kept to a minimum. Normally you
-//       should use "expectUncaughtRejection" to flag individual failures.
-const {PromiseTestUtils} = Cu.import("resource://testing-common/PromiseTestUtils.jsm", {});
-PromiseTestUtils.whitelistRejectionsGlobally(/Message manager disconnected/);
-PromiseTestUtils.whitelistRejectionsGlobally(/No matching message handler/);
-PromiseTestUtils.whitelistRejectionsGlobally(/Receiving end does not exist/);
-
 const {AppConstants} = Cu.import("resource://gre/modules/AppConstants.jsm", {});
 const {CustomizableUI} = Cu.import("resource:///modules/CustomizableUI.jsm", {});
 
 // We run tests under two different configurations, from browser.ini and
 // browser-remote.ini. When running from browser-remote.ini, the tests are
 // copied to the sub-directory "test-oop-extensions", which we detect here, and
 // use to select our configuration.
 if (gTestPath.includes("test-oop-extensions")) {
--- a/browser/components/feeds/WebContentConverter.js
+++ b/browser/components/feeds/WebContentConverter.js
@@ -1,16 +1,17 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* 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/. */
 
 Components.utils.import("resource://gre/modules/Services.jsm");
 Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-Components.utils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils",
+  "resource://gre/modules/PrivateBrowsingUtils.jsm");
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 const Cr = Components.results;
 
 function LOG(str) {
   dump("*** " + str + "\n");
 }
--- a/browser/components/sessionstore/SessionStore.jsm
+++ b/browser/components/sessionstore/SessionStore.jsm
@@ -1305,17 +1305,17 @@ var SessionStoreInternal = {
         }
         TelemetryStopwatch.start("FX_SESSION_RESTORE_STARTUP_ONLOAD_INITIAL_WINDOW_MS");
         this.initializeWindow(aWindow, initialState);
         TelemetryStopwatch.finish("FX_SESSION_RESTORE_STARTUP_ONLOAD_INITIAL_WINDOW_MS");
 
         // Let everyone know we're done.
         this._deferredInitialized.resolve();
       }
-    }).catch(console.error);
+    }, console.error);
   },
 
   /**
    * On window close...
    * - remove event listeners from tabs
    * - save all window data
    * @param aWindow
    *        Window reference
--- a/browser/components/sessionstore/nsSessionStartup.js
+++ b/browser/components/sessionstore/nsSessionStartup.js
@@ -32,28 +32,28 @@
 /* :::::::: Constants and Helpers ::::::::::::::: */
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 const Cr = Components.results;
 const Cu = Components.utils;
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/TelemetryStopwatch.jsm");
-Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
 Cu.import("resource://gre/modules/Promise.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "console",
   "resource://gre/modules/Console.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "SessionFile",
   "resource:///modules/sessionstore/SessionFile.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "StartupPerformance",
   "resource:///modules/sessionstore/StartupPerformance.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "CrashMonitor",
   "resource://gre/modules/CrashMonitor.jsm");
+XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils",
+  "resource://gre/modules/PrivateBrowsingUtils.jsm");
 
 const STATE_RUNNING_STR = "running";
 
 // 'browser.startup.page' preference value to resume the previous session.
 const BROWSER_STARTUP_RESUME_SESSION = 3;
 
 function debug(aMsg) {
   aMsg = ("SessionStartup: " + aMsg).replace(/\S{80}/g, "$&\n");
--- a/browser/components/sessionstore/test/browser_354894_perwindowpb.js
+++ b/browser/components/sessionstore/test/browser_354894_perwindowpb.js
@@ -19,25 +19,16 @@
  * not enabled on that platform (platform shim; the application is kept running
  * although there are no windows left)
  * @note There is a difference when closing a browser window with
  * BrowserTryToCloseWindow() as opposed to close(). The former will make
  * nsSessionStore restore a window next time it gets a chance and will post
  * notifications. The latter won't.
  */
 
-// The rejection "RecentWindow.getMostRecentBrowserWindow(...) is null" is left
-// unhandled in some cases. This bug should be fixed, but for the moment this
-// file is whitelisted.
-//
-// NOTE: Whitelisting a class of rejections should be limited. Normally you
-//       should use "expectUncaughtRejection" to flag individual failures.
-Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
-PromiseTestUtils.whitelistRejectionsGlobally(/getMostRecentBrowserWindow/);
-
 // Some urls that might be opened in tabs and/or popups
 // Do not use about:blank:
 // That one is reserved for special purposes in the tests
 const TEST_URLS = ["about:mozilla", "about:buildconfig"];
 
 // Number of -request notifications to except
 // remember to adjust when adding new tests
 const NOTIFICATIONS_EXPECTED = 6;
new file mode 100644
--- /dev/null
+++ b/browser/config/mozconfigs/linux64/noopt-debug
@@ -0,0 +1,7 @@
+# Developers often build with these options for a better debugging experience.
+. "$topsrcdir/browser/config/mozconfigs/linux64/debug"
+
+# We add this last to guard against inadvertent changes in the debug config.
+# It may conflict with settings from mozconfig.override, but that seems
+# unlikely.
+ac_add_options --disable-optimize
new file mode 100644
--- /dev/null
+++ b/browser/config/mozconfigs/macosx64/cross-noopt-debug
@@ -0,0 +1,7 @@
+# Developers often build with these options for a better debugging experience.
+. "$topsrcdir/browser/config/mozconfigs/macosx64/debug"
+
+# We add this last to guard against inadvertent changes in the debug config.
+# It may conflict with settings from mozconfig.override, but that seems
+# unlikely.
+ac_add_options --disable-optimize
new file mode 100644
--- /dev/null
+++ b/browser/config/mozconfigs/win32/noopt-debug
@@ -0,0 +1,7 @@
+# Developers often build with these options for a better debugging experience.
+. "$topsrcdir/browser/config/mozconfigs/win32/debug"
+
+# We add this last to guard against inadvertent changes in the debug config.
+# It may conflict with settings from mozconfig.override, but that seems
+# unlikely.
+ac_add_options --disable-optimize
new file mode 100644
--- /dev/null
+++ b/browser/config/mozconfigs/win64/noopt-debug
@@ -0,0 +1,7 @@
+# Developers often build with these options for a better debugging experience.
+. "$topsrcdir/browser/config/mozconfigs/win64/debug"
+
+# We add this last to guard against inadvertent changes in the debug config.
+# It may conflict with settings from mozconfig.override, but that seems
+# unlikely.
+ac_add_options --disable-optimize
--- a/browser/config/tooltool-manifests/win64/clang.manifest
+++ b/browser/config/tooltool-manifests/win64/clang.manifest
@@ -1,19 +1,19 @@
 [
   {
     "size": 266240,
     "digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
     "algorithm": "sha512",
     "filename": "mozmake.exe"
   },
   {
-    "version": "rustc 1.17.0 (56124baa9 2017-04-24) repack with cargo 0.19.0-beta.1 (03efb7fc8 2017-04-23)",
-    "size": 83368214,
-    "digest": "2f1dda29e495e9707a0e22cde5c80525bd202be9a3381dd053edf08e1a54cd7fa4106e8f1cec336daaae62252ef02cf5b76079c0495a90f1ac0b823a16fd27dc",
+    "version": "1.18.0-beta.4 (0308c9865 2017-05-27)",
+    "size": 98338423,
+    "digest": "126dd7054f4d2a705e3abf0f916b62904ae5097b70f67c9d048e031e42a19208c41885c0d479a6f3591f2c74725c4e80ed3dfa4452301618cc7ac0f0820d5683",
     "algorithm": "sha512",
     "visibility": "public",
     "filename": "rustc.tar.bz2",
     "unpack": true
   },
   {
     "version": "sccache rev d3aa1116844b50c03015266d2f48235509fa7deb",
     "algorithm": "sha512",
--- a/browser/config/tooltool-manifests/win64/releng.manifest
+++ b/browser/config/tooltool-manifests/win64/releng.manifest
@@ -1,19 +1,19 @@
 [
   {
     "size": 266240,
     "digest": "bb345b0e700ffab4d09436981f14b5de84da55a3f18a7f09ebc4364a4488acdeab8d46f447b12ac70f2da1444a68b8ce8b8675f0dae2ccf845e966d1df0f0869",
     "algorithm": "sha512",
     "filename": "mozmake.exe"
   },
   {
-    "version": "rustc 1.17.0 (56124baa9 2017-04-24) repack with cargo 0.19.0-beta.1 (03efb7fc8 2017-04-23)",
-    "size": 83368214,
-    "digest": "2f1dda29e495e9707a0e22cde5c80525bd202be9a3381dd053edf08e1a54cd7fa4106e8f1cec336daaae62252ef02cf5b76079c0495a90f1ac0b823a16fd27dc",
+    "version": "1.18.0-beta.4 (0308c9865 2017-05-27)",
+    "size": 98338423,
+    "digest": "126dd7054f4d2a705e3abf0f916b62904ae5097b70f67c9d048e031e42a19208c41885c0d479a6f3591f2c74725c4e80ed3dfa4452301618cc7ac0f0820d5683",
     "algorithm": "sha512",
     "visibility": "public",
     "filename": "rustc.tar.bz2",
     "unpack": true
   },
   {
     "version": "sccache rev d3aa1116844b50c03015266d2f48235509fa7deb",
     "algorithm": "sha512",
--- a/browser/extensions/shield-recipe-client/lib/PreferenceExperiments.jsm
+++ b/browser/extensions/shield-recipe-client/lib/PreferenceExperiments.jsm
@@ -250,18 +250,17 @@ this.PreferenceExperiments = {
         `An observer for the preference experiment ${experimentName} is already active.`
       );
     }
 
     const observerInfo = {
       preferenceName,
       observer(newValue) {
         if (newValue !== preferenceValue) {
-          PreferenceExperiments.stop(experimentName, false)
-                               .catch(Cu.reportError);
+          PreferenceExperiments.stop(experimentName, false);
         }
       },
     };
     experimentObservers.set(experimentName, observerInfo);
     Preferences.observe(preferenceName, observerInfo.observer);
   },
 
   /**
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -506,18 +506,16 @@
 @RESPATH@/components/CaptivePortalDetectComponents.manifest
 @RESPATH@/components/captivedetect.js
 @RESPATH@/components/servicesComponents.manifest
 @RESPATH@/components/cryptoComponents.manifest
 @RESPATH@/components/TelemetryStartup.js
 @RESPATH@/components/TelemetryStartup.manifest
 @RESPATH@/components/XULStore.js
 @RESPATH@/components/XULStore.manifest
-@RESPATH@/components/messageWakeupService.js
-@RESPATH@/components/messageWakeupService.manifest
 @RESPATH@/components/recording-cmdline.js
 @RESPATH@/components/recording-cmdline.manifest
 @RESPATH@/components/htmlMenuBuilder.js
 @RESPATH@/components/htmlMenuBuilder.manifest
 
 @RESPATH@/components/NotificationStorage.js
 @RESPATH@/components/NotificationStorage.manifest
 @RESPATH@/components/Push.js
--- a/browser/modules/ContentCrashHandlers.jsm
+++ b/browser/modules/ContentCrashHandlers.jsm
@@ -378,17 +378,17 @@ this.TabCrashHandler = {
     // with the empty string.
     if (!includeURL) {
       extraExtraKeyVals["URL"] = "";
     }
 
     CrashSubmit.submit(dumpID, {
       recordSubmission: true,
       extraExtraKeyVals,
-    }).catch(Cu.reportError);
+    }).then(null, Cu.reportError);
 
     this.prefs.setBoolPref("sendReport", true);
     this.prefs.setBoolPref("includeURL", includeURL);
     this.prefs.setBoolPref("emailMe", emailMe);
     if (emailMe) {
       this.prefs.setCharPref("email", email);
     } else {
       this.prefs.setCharPref("email", "");
@@ -876,17 +876,17 @@ this.UnsubmittedCrashHandler = {
    *        The array of reportIDs to submit.
    */
   submitReports(reportIDs) {
     for (let reportID of reportIDs) {
       CrashSubmit.submit(reportID, {
         extraExtraKeyVals: {
           "SubmittedFromInfobar": true,
         },
-      }).catch(Cu.reportError);
+      });
     }
   },
 };
 
 this.PluginCrashReporter = {
   /**
    * Makes the PluginCrashReporter ready to hear about and
    * submit crash reports.
@@ -990,17 +990,17 @@ this.PluginCrashReporter = {
     let { pluginDumpID, browserDumpID } = this.crashReports.get(runID);
 
     let submissionPromise = CrashSubmit.submit(pluginDumpID, {
       recordSubmission: true,
       extraExtraKeyVals: keyVals,
     });
 
     if (browserDumpID)
-      CrashSubmit.submit(browserDumpID).catch(Cu.reportError);
+      CrashSubmit.submit(browserDumpID);
 
     this.broadcastState(runID, "submitting");
 
     submissionPromise.then(() => {
       this.broadcastState(runID, "success");
     }, () => {
       this.broadcastState(runID, "failed");
     });
--- a/devtools/client/debugger/new/test/mochitest/.eslintrc
+++ b/devtools/client/debugger/new/test/mochitest/.eslintrc
@@ -21,16 +21,17 @@
     "is": false,
     "isnot": false,
     "ok": false,
     "registerCleanupFunction": false,
     "requestLongerTimeout": false,
     "SimpleTest": false,
     "SpecialPowers": false,
     "TestUtils": false,
+    "thisTestLeaksUncaughtRejectionsAndShouldBeFixed": false,
     "todo": false,
     "todo_is": false,
     "todo_isnot": false,
     "waitForClipboard": false,
     "waitForExplicitFinish": false,
     "waitForFocus": false,
 
     // Globals introduced in debugger-specific head.js
--- a/devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-01.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-01.js
@@ -1,13 +1,19 @@
 /* -*- 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/ */
 
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejections should be fixed.
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("[object Object]");
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed(
+  "TypeError: this.transport is null");
+
 /**
  * Tests that event listeners aren't fetched when the events tab isn't selected.
  */
 
 const TAB_URL = EXAMPLE_URL + "doc_event-listeners-02.html";
 
 function test() {
   let options = {
--- a/devtools/client/debugger/test/mochitest/browser_dbg_promises-rejection-stack.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_promises-rejection-stack.js
@@ -8,23 +8,16 @@
  */
 
 "use strict";
 
 const TAB_URL = EXAMPLE_URL + "doc_promise-get-rejection-stack.html";
 const { PromisesFront } = require("devtools/shared/fronts/promises");
 var events = require("sdk/event/core");
 
-// The code in the document above leaves an uncaught rejection. This is only
-// reported to the testing framework if the code is loaded in the main process.
-if (!gMultiProcessBrowser) {
-  Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
-  PromiseTestUtils.expectUncaughtRejection(/hello/);
-}
-
 const TEST_DATA = [
   {
     functionDisplayName: "returnPromise/<",
     line: 19,
     column: 47
   },
   {
     functionDisplayName: "returnPromise",
--- a/devtools/client/debugger/test/mochitest/browser_dbg_terminate-on-tab-close.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_terminate-on-tab-close.js
@@ -1,24 +1,21 @@
 /* -*- 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/ */
 
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejections should be fixed.
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("[object Object]");
+
 /**
  * Tests that debuggee scripts are terminated on tab closure.
  */
 
-// The following rejection should not be left uncaught. This test has been
-// whitelisted until the issue is fixed.
-if (!gMultiProcessBrowser) {
-  Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
-  PromiseTestUtils.expectUncaughtRejection(/error\.message is undefined/);
-}
-
 const TAB_URL = EXAMPLE_URL + "doc_terminate-on-tab-close.html";
 
 function test() {
   let options = {
     source: TAB_URL,
     line: 1
   };
   initDebugger(TAB_URL, options).then(([aTab,, aPanel]) => {
--- a/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-04.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-04.js
@@ -1,20 +1,12 @@
 // Check that the date and regexp previewers work in the console of a worker debugger.
 
 "use strict";
 
-// The following intermittent rejection should not be left uncaught. This test
-// has been whitelisted until the issue is fixed.
-//
-// NOTE: Whitelisting a class of rejections should be limited. Normally you
-//       should use "expectUncaughtRejection" to flag individual failures.
-Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
-PromiseTestUtils.whitelistRejectionsGlobally(/[object Object]/);
-
 const TAB_URL = EXAMPLE_URL + "doc_WorkerActor.attachThread-tab.html";
 const WORKER_URL = "code_WorkerActor.attachThread-worker.js";
 
 add_task(function* testPausedByConsole() {
   let {client, tab, workerClient, toolbox} =
     yield initWorkerDebugger(TAB_URL, WORKER_URL);
 
   info("Check Date objects can be used in the console");
--- a/devtools/client/debugger/test/mochitest/browser_dbg_worker-window.js
+++ b/devtools/client/debugger/test/mochitest/browser_dbg_worker-window.js
@@ -1,17 +1,16 @@
 // Check to make sure that a worker can be attached to a toolbox
 // directly, and that the toolbox has expected properties.
 
 "use strict";
 
-// The following "connectionClosed" rejection should not be left uncaught. This
-// test has been whitelisted until the issue is fixed.
-Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
-PromiseTestUtils.expectUncaughtRejection(/[object Object]/);
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejections should be fixed.
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("[object Object]");
 
 var TAB_URL = EXAMPLE_URL + "doc_WorkerActor.attachThread-tab.html";
 var WORKER_URL = "code_WorkerActor.attachThread-worker.js";
 
 add_task(function* () {
   yield pushPrefs(["devtools.scratchpad.enabled", true]);
 
   DebuggerServer.init();
--- a/devtools/client/framework/test/browser_devtools_api.js
+++ b/devtools/client/framework/test/browser_devtools_api.js
@@ -1,13 +1,22 @@
 /* -*- 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/ */
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejections should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: this.docShell is null");
+
+// When running in a standalone directory, we get this error
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: this.doc is undefined");
+
 // Tests devtools API
 
 "use strict";
 
 const toolId1 = "test-tool-1";
 const toolId2 = "test-tool-2";
 
 function test() {
--- a/devtools/client/framework/test/browser_toolbox_tool_ready.js
+++ b/devtools/client/framework/test/browser_toolbox_tool_ready.js
@@ -2,16 +2,23 @@
 /* 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";
 
 requestLongerTimeout(5);
 
+/**
+ * Whitelisting this test.
+ * As part of bug 1077403, the leaking uncaught rejection should be fixed.
+ */
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("Error: Shader Editor is " +
+  "still waiting for a WebGL context to be created.");
+
 function performChecks(target) {
   return Task.spawn(function* () {
     let toolIds = gDevTools.getToolDefinitionArray()
                            .filter(def => def.isTargetSupported(target))
                            .map(def => def.id);
 
     let toolbox;
     for (let index = 0; index < toolIds.length; index++) {
--- a/devtools/client/framework/test/browser_toolbox_tool_remote_reopen.js
+++ b/devtools/client/framework/test/browser_toolbox_tool_remote_reopen.js
@@ -1,15 +1,22 @@
 /* -*- 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";
 
+/**
+ * Whitelisting this test.
+ * As part of bug 1077403, the leaking uncaught rejection should be fixed.
+ */
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("Error: Shader Editor is " +
+  "still waiting for a WebGL context to be created.");
+
 const { DebuggerServer } = require("devtools/server/main");
 const { DebuggerClient } = require("devtools/shared/client/main");
 
 // Bug 1277805: Too slow for debug runs
 requestLongerTimeout(2);
 
 /**
  * Bug 979536: Ensure fronts are destroyed after toolbox close.
--- a/devtools/client/framework/test/shared-head.js
+++ b/devtools/client/framework/test/shared-head.js
@@ -14,32 +14,16 @@ const {classes: Cc, interfaces: Ci, util
   = Components;
 
 function scopedCuImport(path) {
   const scope = {};
   Cu.import(path, scope);
   return scope;
 }
 
-// There are shutdown issues for which multiple rejections are left uncaught.
-// This bug should be fixed, but for the moment devtools are whitelisted.
-//
-// NOTE: Entire directory whitelisting should be kept to a minimum. Normally you
-//       should use "expectUncaughtRejection" to flag individual failures.
-const {PromiseTestUtils} = scopedCuImport("resource://testing-common/PromiseTestUtils.jsm");
-PromiseTestUtils.whitelistRejectionsGlobally(/Component not initialized/);
-PromiseTestUtils.whitelistRejectionsGlobally(/Connection closed/);
-PromiseTestUtils.whitelistRejectionsGlobally(/destroy/);
-PromiseTestUtils.whitelistRejectionsGlobally(/is no longer, usable/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\._urls is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.tabTarget is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.toolbox is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.webConsoleClient is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.worker is null/);
-
 const {console} = scopedCuImport("resource://gre/modules/Console.jsm");
 const {ScratchpadManager} = scopedCuImport("resource://devtools/client/scratchpad/scratchpad-manager.jsm");
 const {loader, require} = scopedCuImport("resource://devtools/shared/Loader.jsm");
 
 const {gDevTools} = require("devtools/client/framework/devtools");
 const {TargetFactory} = require("devtools/client/framework/target");
 const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 const flags = require("devtools/shared/flags");
--- a/devtools/client/inspector/computed/test/browser_computed_style-editor-link.js
+++ b/devtools/client/inspector/computed/test/browser_computed_style-editor-link.js
@@ -1,14 +1,18 @@
 /* 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";
 
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("Error: Unknown sheet source");
+
 // Tests the links from the computed view to the style editor.
 
 const STYLESHEET_URL = "data:text/css," + encodeURIComponent(
   ".highlight {color: blue}");
 
 const DOCUMENT_URL = "data:text/html;charset=utf-8," + encodeURIComponent(
   `<html>
    <head>
--- a/devtools/client/inspector/markup/test/browser_markup_links_06.js
+++ b/devtools/client/inspector/markup/test/browser_markup_links_06.js
@@ -2,21 +2,16 @@
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Tests that the contextual menu items shown when clicking on linked attributes
 // for <script> and <link> tags actually open the right tools.
 
-// The following rejection should not be left uncaught. This test has been
-// whitelisted until the issue is fixed.
-Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
-PromiseTestUtils.expectUncaughtRejection(/NS_ERROR_NOT_INITIALIZED/);
-
 const TEST_URL = URL_ROOT + "doc_markup_links.html";
 
 add_task(function* () {
   let {toolbox, inspector} = yield openInspectorForURL(TEST_URL);
 
   info("Select a node with a cssresource attribute");
   yield selectNode("link", inspector);
 
--- a/devtools/client/inspector/rules/test/browser_rules_style-editor-link.js
+++ b/devtools/client/inspector/rules/test/browser_rules_style-editor-link.js
@@ -1,14 +1,18 @@
 /* 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";
 
+// FIXME: Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("Error: Unknown sheet source");
+
 // Test the links from the rule-view to the styleeditor
 
 const STYLESHEET_URL = "data:text/css," + encodeURIComponent(
   ["#first {",
    "color: blue",
    "}"].join("\n"));
 
 const EXTERNAL_STYLESHEET_FILE_NAME = "doc_style_editor_link.css";
--- a/devtools/client/inspector/test/browser_inspector_highlighter-comments.js
+++ b/devtools/client/inspector/test/browser_inspector_highlighter-comments.js
@@ -1,15 +1,21 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set 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";
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("false");
+
 // Test that hovering over the markup-view's containers doesn't always show the
 // highlighter, depending on the type of node hovered over.
 
 const TEST_PAGE = URL_ROOT +
   "doc_inspector_highlighter-comments.html";
 
 add_task(function* () {
   let {inspector, testActor} = yield openInspectorForURL(TEST_PAGE);
--- a/devtools/client/netmonitor/test/browser_net_simple-request-data.js
+++ b/devtools/client/netmonitor/test/browser_net_simple-request-data.js
@@ -2,24 +2,16 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 /**
  * Tests if requests render correct information in the menu UI.
  */
 
-// The following intermittent rejections should not be left uncaught. This test
-// has been whitelisted until the issue is fixed.
-//
-// NOTE: Whitelisting a class of rejections should be limited. Normally you
-//       should use "expectUncaughtRejection" to flag individual failures.
-Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
-PromiseTestUtils.whitelistRejectionsGlobally(/requestItem is undefined/);
-
 function test() {
   // Disable tcp fast open, because it is setting a response header indicator
   // (bug 1352274). TCP Fast Open is not present on all platforms therefore the
   // number of response headers will vary depending on the platform.
   Services.prefs.setBoolPref("network.tcp.tcp_fastopen_enable", false);
 
   let { L10N } = require("devtools/client/netmonitor/src/utils/l10n");
 
--- a/devtools/client/projecteditor/test/browser_projecteditor_editing_01.js
+++ b/devtools/client/projecteditor/test/browser_projecteditor_editing_01.js
@@ -1,14 +1,20 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("destroy");
+
 loadHelperScript("helper_edits.js");
 
 // Test ProjectEditor basic functionality
 add_task(function* () {
   let projecteditor = yield addProjectEditorTabForTempDirectory();
   let TEMP_PATH = projecteditor.project.allPaths()[0];
 
   is(getTempFile("").path, TEMP_PATH, "Temp path is set correctly.");
--- a/devtools/client/projecteditor/test/browser_projecteditor_editors_image.js
+++ b/devtools/client/projecteditor/test/browser_projecteditor_editors_image.js
@@ -1,14 +1,20 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("destroy");
+
 loadHelperScript("helper_edits.js");
 
 // Test ProjectEditor image editor functionality
 add_task(function* () {
   let projecteditor = yield addProjectEditorTabForTempDirectory();
   let TEMP_PATH = projecteditor.project.allPaths()[0];
 
   is(getTempFile("").path, TEMP_PATH, "Temp path is set correctly.");
--- a/devtools/client/projecteditor/test/browser_projecteditor_immediate_destroy.js
+++ b/devtools/client/projecteditor/test/browser_projecteditor_immediate_destroy.js
@@ -1,14 +1,21 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("destroy");
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: this.window is null");
+
 // Test that projecteditor can be destroyed in various states of loading
 // without causing any leaks or exceptions.
 
 add_task(function* () {
 
   info("Testing tab closure when projecteditor is in various states");
   let loaderUrl = "chrome://mochitests/content/browser/devtools/client/projecteditor/test/projecteditor-test.xul";
 
--- a/devtools/client/projecteditor/test/browser_projecteditor_saveall.js
+++ b/devtools/client/projecteditor/test/browser_projecteditor_saveall.js
@@ -1,14 +1,20 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("destroy");
+
 loadHelperScript("helper_edits.js");
 
 // Test ProjectEditor basic functionality
 add_task(function* () {
   let projecteditor = yield addProjectEditorTabForTempDirectory();
   let TEMP_PATH = projecteditor.project.allPaths()[0];
 
   is(getTempFile("").path, TEMP_PATH, "Temp path is set correctly.");
--- a/devtools/client/projecteditor/test/browser_projecteditor_tree_selection_02.js
+++ b/devtools/client/projecteditor/test/browser_projecteditor_tree_selection_02.js
@@ -1,14 +1,20 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("destroy");
+
 // Test that files get reselected in the tree when their editor
 // is focused.  https://bugzilla.mozilla.org/show_bug.cgi?id=1011116.
 
 add_task(function* () {
   let projecteditor = yield addProjectEditorTabForTempDirectory();
   let TEMP_PATH = projecteditor.project.allPaths()[0];
 
   is(getTempFile("").path, TEMP_PATH, "Temp path is set correctly.");
--- a/devtools/client/projecteditor/test/head.js
+++ b/devtools/client/projecteditor/test/head.js
@@ -1,30 +1,13 @@
 /* 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/. */
 
 var Cu = Components.utils;
-
-// There are shutdown issues for which multiple rejections are left uncaught.
-// This bug should be fixed, but for the moment devtools are whitelisted.
-//
-// NOTE: Entire directory whitelisting should be kept to a minimum. Normally you
-//       should use "expectUncaughtRejection" to flag individual failures.
-const {PromiseTestUtils} = Cu.import("resource://testing-common/PromiseTestUtils.jsm", {});
-PromiseTestUtils.whitelistRejectionsGlobally(/Component not initialized/);
-PromiseTestUtils.whitelistRejectionsGlobally(/Connection closed/);
-PromiseTestUtils.whitelistRejectionsGlobally(/destroy/);
-PromiseTestUtils.whitelistRejectionsGlobally(/is no longer, usable/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\._urls is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.tabTarget is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.toolbox is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.webConsoleClient is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.worker is null/);
-
 const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
 const {TargetFactory} = require("devtools/client/framework/target");
 const {console} = Cu.import("resource://gre/modules/Console.jsm", {});
 const promise = require("promise");
 const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", {});
 const {NetUtil} = Cu.import("resource://gre/modules/NetUtil.jsm", {});
 const ProjectEditor = require("devtools/client/projecteditor/lib/projecteditor");
 const DevToolsUtils = require("devtools/shared/DevToolsUtils");
--- a/devtools/client/responsivedesign/test/browser_responsive_cmd.js
+++ b/devtools/client/responsivedesign/test/browser_responsive_cmd.js
@@ -1,13 +1,19 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("destroy");
+
 function test() {
   let manager = ResponsiveUIManager;
   let done;
 
   function isOpen() {
     return gBrowser.getBrowserContainer(gBrowser.selectedBrowser)
                    .hasAttribute("responsivemode");
   }
--- a/devtools/client/shared/test/browser_telemetry_toolboxtabs_shadereditor.js
+++ b/devtools/client/shared/test/browser_telemetry_toolboxtabs_shadereditor.js
@@ -1,13 +1,20 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed(
+  "Error: Shader Editor is still waiting for a WebGL context to be created.");
+
 const TEST_URI = "data:text/html;charset=utf-8," +
   "<p>browser_telemetry_toolboxtabs_shadereditor.js</p>";
 
 // Because we need to gather stats for the period of time that a tool has been
 // opened we make use of setTimeout() to create tool active times.
 const TOOL_DELAY = 200;
 const TOOL_PREF = "devtools.shadereditor.enabled";
 
--- a/devtools/client/shared/test/browser_toolbar_tooltip.js
+++ b/devtools/client/shared/test/browser_toolbar_tooltip.js
@@ -1,15 +1,23 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Tests that the developer toolbar works properly
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed(
+  "Protocol error (unknownError): Error: Got an invalid root window in DocumentWalker"
+);
+
 const TEST_URI = "data:text/html;charset=utf-8,<p>Tooltip Tests</p>";
 const PREF_DEVTOOLS_THEME = "devtools.theme";
 
 registerCleanupFunction(() => {
   // Set preferences back to their original values
   Services.prefs.clearUserPref(PREF_DEVTOOLS_THEME);
 });
 
--- a/devtools/client/webaudioeditor/test/browser_wa_first-run.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_first-run.js
@@ -1,11 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("Error: Connection closed");
+
 /**
  * Tests that the reloading/onContentLoaded hooks work.
  */
 
 add_task(function* () {
   let { target, panel } = yield initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { gFront, $ } = panel.panelWin;
 
--- a/devtools/client/webaudioeditor/test/browser_wa_reset-01.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_reset-01.js
@@ -1,11 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("Error: Connection closed");
+
 /**
  * Tests that reloading a tab will properly listen for the `start-context`
  * event and reshow the tools after reloading.
  */
 
 add_task(function* () {
   let { target, panel } = yield initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { gFront, $ } = panel.panelWin;
--- a/devtools/client/webaudioeditor/test/browser_wa_reset-04.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_reset-04.js
@@ -1,11 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
+//
+// Whitelisting this test.
+// As part of bug 1077403, the leaking uncaught rejection should be fixed.
+//
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("Error: Connection closed");
+
 /**
  * Tests that switching to an iframe works fine.
  */
 
 add_task(function* () {
   Services.prefs.setBoolPref("devtools.command-button-frames.enabled", true);
 
   let { target, panel, toolbox } = yield initWebAudioEditor(IFRAME_CONTEXT_URL);
--- a/devtools/client/webaudioeditor/test/head.js
+++ b/devtools/client/webaudioeditor/test/head.js
@@ -1,30 +1,14 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 "use strict";
 
 var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
 
-// There are shutdown issues for which multiple rejections are left uncaught.
-// This bug should be fixed, but for the moment devtools are whitelisted.
-//
-// NOTE: Entire directory whitelisting should be kept to a minimum. Normally you
-//       should use "expectUncaughtRejection" to flag individual failures.
-const { PromiseTestUtils } = Cu.import("resource://testing-common/PromiseTestUtils.jsm", {});
-PromiseTestUtils.whitelistRejectionsGlobally(/Component not initialized/);
-PromiseTestUtils.whitelistRejectionsGlobally(/Connection closed/);
-PromiseTestUtils.whitelistRejectionsGlobally(/destroy/);
-PromiseTestUtils.whitelistRejectionsGlobally(/is no longer, usable/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\._urls is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.tabTarget is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.toolbox is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.webConsoleClient is null/);
-PromiseTestUtils.whitelistRejectionsGlobally(/this\.worker is null/);
-
 var { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
 var { Task } = require("devtools/shared/task");
 var Services = require("Services");
 var { gDevTools } = require("devtools/client/framework/devtools");
 var { TargetFactory } = require("devtools/client/framework/target");
 var { DebuggerServer } = require("devtools/server/main");
 var { generateUUID } = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
 
--- a/devtools/client/webconsole/test/browser_webconsole_output_01.js
+++ b/devtools/client/webconsole/test/browser_webconsole_output_01.js
@@ -4,16 +4,18 @@
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Whitelisting this test.
 // As part of bug 1077403, the leaking uncaught rejection should be fixed.
 //
 
 "use strict";
 
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("null");
+
 // Test the webconsole output for various types of objects.
 
 const TEST_URI = "data:text/html;charset=utf8,test for console output - 01";
 
 var {DebuggerServer} = require("devtools/server/main");
 
 var longString = (new Array(DebuggerServer.LONG_STRING_LENGTH + 4)).join("a");
 var initialString = longString.substring(0, DebuggerServer.LONG_STRING_INITIAL_LENGTH);
--- a/devtools/client/webconsole/test/browser_webconsole_output_04.js
+++ b/devtools/client/webconsole/test/browser_webconsole_output_04.js
@@ -4,16 +4,18 @@
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Whitelisting this test.
 // As part of bug 1077403, the leaking uncaught rejection should be fixed.
 //
 
 "use strict";
 
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("null");
+
 // Test the webconsole output for various types of objects.
 
 const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" +
                  "test/test-console-output-04.html";
 
 var inputTests = [
   // 0
   {
--- a/devtools/client/webconsole/test/browser_webconsole_output_dom_elements_01.js
+++ b/devtools/client/webconsole/test/browser_webconsole_output_dom_elements_01.js
@@ -3,16 +3,20 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Whitelisting this test.
 // As part of bug 1077403, the leaking uncaught rejections should be fixed.
 
 "use strict";
 
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed(null);
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed(
+  "TypeError: this.toolbox is null");
+
 // Test the webconsole output for various types of DOM Nodes.
 
 const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" +
                  "test/test-console-output-dom-elements.html";
 
 var inputTests = [
   {
     input: "testBodyNode()",
--- a/devtools/client/webconsole/test/browser_webconsole_output_events.js
+++ b/devtools/client/webconsole/test/browser_webconsole_output_events.js
@@ -3,16 +3,18 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Whitelisting this test.
 // As part of bug 1077403, the leaking uncaught rejection should be fixed.
 
 "use strict";
 
+thisTestLeaksUncaughtRejectionsAndShouldBeFixed("null");
+
 // Test the webconsole output for DOM events.
 
 const TEST_URI = "http://example.com/browser/devtools/client/webconsole/" +
                  "test/test-console-output-events.html";
 
 add_task(function* () {
   yield loadTab(TEST_URI);
 
--- a/devtools/server/actors/webextension-inspected-window.js
+++ b/devtools/server/actors/webextension-inspected-window.js
@@ -341,17 +341,17 @@ var WebExtensionInspectedWindowActor = p
             });
 
             this.customizedReload.start()
                 .then(() => {
                   delete this.customizedReload;
                 })
                 .catch(err => {
                   delete this.customizedReload;
-                  console.error(err);
+                  throw err;
                 });
           } catch (err) {
             // Cancel the customized reload (if any) on exception during the
             // reload setup.
             if (this.customizedReload) {
               this.customizedReload.stop(err);
             }
 
deleted file mode 100644
--- a/dom/base/messageWakeupService.js
+++ /dev/null
@@ -1,96 +0,0 @@
-/* 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/. */
-
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-const CATEGORY_WAKEUP_REQUEST = "wakeup-request";
-
-function MessageWakeupService() { };
-
-MessageWakeupService.prototype =
-{
-  classID:          Components.ID("{f9798742-4f7b-4188-86ba-48b116412b29}"),
-  QueryInterface:   XPCOMUtils.generateQI([Ci.nsIObserver]),
-
-  messagesData: [],
-
-  get messageManager() {
-    if (!this._messageManager)
-      this._messageManager = Cc["@mozilla.org/parentprocessmessagemanager;1"].
-                             getService(Ci.nsIMessageListenerManager);
-    return this._messageManager;
-  },
-
-  requestWakeup: function(aMessageName, aCid, aIid, aMethod) {
-    this.messagesData[aMessageName] = {
-      cid: aCid,
-      iid: aIid,
-      method: aMethod,
-    };
-
-    this.messageManager.addMessageListener(aMessageName, this);
-  },
-
-  receiveMessage: function(aMessage) {
-    let data = this.messagesData[aMessage.name];
-    // TODO: When bug 593407 is ready, stop doing the wrappedJSObject hack
-    //       and use this line instead:
-    //                  QueryInterface(Ci.nsIMessageListener);
-    let service = Cc[data.cid][data.method](Ci[data.iid]).
-                  wrappedJSObject;
-
-    // The receiveMessage() call itself may spin an event loop, and we
-    // do not want to swap listeners in that - it would cause the current
-    // message to be answered by two listeners. So, we call that first,
-    // then queue the swap for the next event loop
-    let ret = service.receiveMessage(aMessage);
-
-    if (data.timer) {
-      // Handle the case of two such messages happening in quick succession
-      data.timer.cancel();
-      data.timer = null;
-    }
-
-    data.timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
-    let self = this;
-    data.timer.initWithCallback(function() {
-      self.messageManager.addMessageListener(aMessage.name, service);
-      self.messageManager.removeMessageListener(aMessage.name, self);
-      delete self.messagesData[aMessage.name];
-    }, 0, Ci.nsITimer.TYPE_ONE_SHOT);
-
-    return ret;
-  },
-
-  observe: function TM_observe(aSubject, aTopic, aData) {
-    switch (aTopic) {
-      case "profile-after-change":
-        {
-          var catMan = Cc["@mozilla.org/categorymanager;1"].
-                           getService(Ci.nsICategoryManager);
-          var entries = catMan.enumerateCategory(CATEGORY_WAKEUP_REQUEST);
-          while (entries.hasMoreElements()) {
-            var entry = entries.getNext().QueryInterface(Ci.nsISupportsCString).data;
-            var value = catMan.getCategoryEntry(CATEGORY_WAKEUP_REQUEST, entry);
-            var parts = value.split(",");
-            var cid = parts[0];
-            var iid = parts[1];
-            var method = parts[2];
-            var messages = parts.slice(3);
-            messages.forEach(function(messageName) {
-              this.requestWakeup(messageName, cid, iid, method);
-            }, this);
-          }
-        }
-        break;
-    }
-  },
-};
-
-var components = [MessageWakeupService];
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory(components);
-
deleted file mode 100644
--- a/dom/base/messageWakeupService.manifest
+++ /dev/null
@@ -1,4 +0,0 @@
-component {f9798742-4f7b-4188-86ba-48b116412b29} messageWakeupService.js
-contract @mozilla.org/content/messagewakeupservice;1 {f9798742-4f7b-4188-86ba-48b116412b29}
-category profile-after-change messageWakeupService @mozilla.org/content/messagewakeupservice;1
-
--- a/dom/base/moz.build
+++ b/dom/base/moz.build
@@ -398,18 +398,16 @@ SOURCES += [
 # nsTextFragment.cpp
 if CONFIG['INTEL_ARCHITECTURE']:
     SOURCES += ['nsTextFragmentSSE2.cpp']
     SOURCES['nsTextFragmentSSE2.cpp'].flags += CONFIG['SSE2_FLAGS']
 
 EXTRA_COMPONENTS += [
     'contentAreaDropListener.js',
     'contentAreaDropListener.manifest',
-    'messageWakeupService.js',
-    'messageWakeupService.manifest',
     'ProcessSelector.js',
     'ProcessSelector.manifest',
     'SlowScriptDebug.js',
     'SlowScriptDebug.manifest',
 ]
 
 EXTRA_JS_MODULES += [
     'DOMRequestHelper.jsm',
--- a/dom/base/test/browser_timeout_throttling_with_audio_playback.js
+++ b/dom/base/test/browser_timeout_throttling_with_audio_playback.js
@@ -1,15 +1,8 @@
-// The tab closing code leaves an uncaught rejection. This test has been
-// whitelisted until the issue is fixed.
-if (!gMultiProcessBrowser) {
-  Cu.import("resource://testing-common/PromiseTestUtils.jsm", this);
-  PromiseTestUtils.expectUncaughtRejection(/is no longer, usable/);
-}
-
 const kBaseURI = "http://mochi.test:8888/browser/dom/base/test/empty.html";
 const kPluginJS = "chrome://mochitests/content/browser/dom/base/test/plugin.js";
 var testURLs = [
   "http://mochi.test:8888/browser/dom/base/test/file_audioLoop.html",
   "http://mochi.test:8888/browser/dom/base/test/file_audioLoopInIframe.html",
   "http://mochi.test:8888/browser/dom/base/test/file_pluginAudio.html",
   "http://mochi.test:8888/browser/dom/base/test/file_webaudioLoop.html",
 ];
--- a/dom/bindings/Codegen.py
+++ b/dom/bindings/Codegen.py
@@ -6777,18 +6777,20 @@ def getWrapTemplateForType(type, descrip
         if type.nullable():
             conversion = CGIfElseWrapper(
                 "%s.IsNull()" % result,
                 CGGeneric(setNull()),
                 CGGeneric(conversion)).define()
         return conversion, False
 
     if type.isCallback() or type.isCallbackInterface():
-        wrapCode = setObject(
-            "*GetCallbackFromCallbackObject(%(result)s)",
+        # Callbacks can store null if we nuked the compartments their
+        # objects lived in.
+        wrapCode = setObjectOrNull(
+            "GetCallbackFromCallbackObject(%(result)s)",
             wrapAsType=type)
         if type.nullable():
             wrapCode = (
                 "if (%(result)s) {\n" +
                 indent(wrapCode) +
                 "} else {\n" +
                 indent(setNull()) +
                 "}\n")
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -1694,19 +1694,19 @@ MediaManager::EnumerateRawDevices(uint64
     if (aVideoType == MediaSourceEnum::Camera) {
       videoLoopDev = Preferences::GetCString("media.video_loopback_dev");
     }
     if (aAudioType == MediaSourceEnum::Microphone) {
       audioLoopDev = Preferences::GetCString("media.audio_loopback_dev");
     }
   }
 
-  MediaManager::PostTask(NewTaskFrom([id, aWindowId, audioLoopDev,
-                                      videoLoopDev, aVideoType,
-                                      aAudioType, aFake]() mutable {
+  RefPtr<Runnable> task = NewTaskFrom([id, aWindowId, audioLoopDev,
+                                       videoLoopDev, aVideoType,
+                                       aAudioType, aFake]() mutable {
     // Only enumerate what's asked for, and only fake cams and mics.
     bool hasVideo = aVideoType != MediaSourceEnum::Other;
     bool hasAudio = aAudioType != MediaSourceEnum::Other;
     bool fakeCams = aFake && aVideoType == MediaSourceEnum::Camera;
     bool fakeMics = aFake && aAudioType == MediaSourceEnum::Microphone;
 
     RefPtr<MediaEngine> fakeBackend, realBackend;
     if (fakeCams || fakeMics) {
@@ -1743,17 +1743,38 @@ MediaManager::EnumerateRawDevices(uint64
         return NS_OK;
       }
       RefPtr<PledgeSourceSet> p = mgr->mOutstandingPledges.Remove(id);
       if (p) {
         p->Resolve(result.release());
       }
       return NS_OK;
     }));
-  }));
+  });
+
+  if (!aFake &&
+      (aVideoType == MediaSourceEnum::Camera ||
+       aAudioType == MediaSourceEnum::Microphone) &&
+      Preferences::GetBool("media.navigator.permission.device", false)) {
+    // Need to ask permission to retrieve list of all devices;
+    // notify frontend observer and wait for callback notification to post task.
+    const char16_t* const type =
+      (aVideoType != MediaSourceEnum::Camera)     ? u"audio" :
+      (aAudioType != MediaSourceEnum::Microphone) ? u"video" :
+                                                    u"all";
+    nsCOMPtr<nsIObserverService> obs = services::GetObserverService();
+    obs->NotifyObservers(static_cast<nsIRunnable*>(task),
+                         "getUserMedia:ask-device-permission",
+                         type);
+  } else {
+    // Don't need to ask permission to retrieve list of all devices;
+    // post the retrieval task immediately.
+    MediaManager::PostTask(task.forget());
+  }
+
   return p.forget();
 }
 
 MediaManager::MediaManager()
   : mMediaThread(nullptr)
   , mBackend(nullptr) {
   mPrefs.mFreq         = 1000; // 1KHz test tone
   mPrefs.mWidth        = 0; // adaptive default
@@ -1836,16 +1857,17 @@ MediaManager::Get() {
       MOZ_CRASH();
     }
 
     LOG(("New Media thread for gum"));
 
     nsCOMPtr<nsIObserverService> obs = services::GetObserverService();
     if (obs) {
       obs->AddObserver(sSingleton, "last-pb-context-exited", false);
+      obs->AddObserver(sSingleton, "getUserMedia:got-device-permission", false);
       obs->AddObserver(sSingleton, "getUserMedia:privileged:allow", false);
       obs->AddObserver(sSingleton, "getUserMedia:response:allow", false);
       obs->AddObserver(sSingleton, "getUserMedia:response:deny", false);
       obs->AddObserver(sSingleton, "getUserMedia:revoke", false);
       obs->AddObserver(sSingleton, "phone-state-changed", false);
     }
     // else MediaManager won't work properly and will leak (see bug 837874)
     nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
@@ -3014,16 +3036,23 @@ MediaManager::Observe(nsISupports* aSubj
       GetPrefs(branch,NS_ConvertUTF16toUTF8(aData).get());
       LOG(("%s: %dx%d @%dfps (min %d)", __FUNCTION__,
            mPrefs.mWidth, mPrefs.mHeight, mPrefs.mFPS, mPrefs.mMinFPS));
     }
   } else if (!strcmp(aTopic, "last-pb-context-exited")) {
     // Clear memory of private-browsing-specific deviceIds. Fire and forget.
     media::SanitizeOriginKeys(0, true);
     return NS_OK;
+  } else if (!strcmp(aTopic, "getUserMedia:got-device-permission")) {
+    MOZ_ASSERT(aSubject);
+    nsCOMPtr<nsIRunnable> task = do_QueryInterface(aSubject);
+    MediaManager::PostTask(NewTaskFrom([task] {
+      task->Run();
+    }));
+    return NS_OK;
   } else if (!strcmp(aTopic, "getUserMedia:privileged:allow") ||
              !strcmp(aTopic, "getUserMedia:response:allow")) {
     nsString key(aData);
     RefPtr<GetUserMediaTask> task;
     mActiveCallbacks.Remove(key, getter_AddRefs(task));
     if (!task) {
       return NS_OK;
     }
--- a/dom/media/gmp/GMPServiceParent.cpp
+++ b/dom/media/gmp/GMPServiceParent.cpp
@@ -268,17 +268,21 @@ GeckoMediaPluginServiceParent::Observe(n
       }
       if (crashNow) {
         nsCOMPtr<nsIThread> gmpThread;
         {
           MutexAutoLock lock(mMutex);
           gmpThread = mGMPThread;
         }
         if (gmpThread) {
-          gmpThread->Dispatch(WrapRunnable(this,
+          // Note: the GeckoMediaPluginServiceParent singleton is kept alive by a
+          // static refptr that is only cleared in the final stage of
+          // shutdown after everything else is shutdown, so this RefPtr<> is not
+          // strictly necessary so long as that is true, but it's safer.
+          gmpThread->Dispatch(WrapRunnable(RefPtr<GeckoMediaPluginServiceParent>(this),
                                            &GeckoMediaPluginServiceParent::CrashPlugins),
                               NS_DISPATCH_NORMAL);
         }
       }
     }
   } else if (!strcmp("profile-change-teardown", aTopic)) {
     mWaitingForPluginsSyncShutdown = true;
 
--- a/dom/media/tests/mochitest/dataChannel.js
+++ b/dom/media/tests/mochitest/dataChannel.js
@@ -42,25 +42,27 @@ var commandsWaitForDataChannel = [
     return test.pcRemote.nextDataChannel.then(channel => channel.opened);
   },
 ];
 
 var commandsCheckDataChannel = [
   function SEND_MESSAGE(test) {
     var message = "Lorem ipsum dolor sit amet";
 
+    info("Sending message:" + message);
     return test.send(message).then(result => {
       is(result.data, message, "Message correctly transmitted from pcLocal to pcRemote.");
     });
   },
 
   function SEND_BLOB(test) {
     var contents = "At vero eos et accusam et justo duo dolores et ea rebum.";
     var blob = new Blob([contents], { "type" : "text/plain" });
 
+    info("Sending blob");
     return test.send(blob).then(result => {
       ok(result.data instanceof Blob, "Received data is of instance Blob");
       is(result.data.size, blob.size, "Received data has the correct size.");
 
       return getBlobContent(result.data);
     }).then(recv_contents =>
             is(recv_contents, contents, "Received data has the correct content."));
   },
@@ -75,44 +77,47 @@ var commandsCheckDataChannel = [
       is(targetChannel.binaryType, "blob", targetChannel + " is of binary type 'blob'");
     });
   },
 
   function SEND_MESSAGE_THROUGH_LAST_OPENED_CHANNEL(test) {
     var channels = test.pcRemote.dataChannels;
     var message = "I am the Omega";
 
+    info("Sending message:" + message);
     return test.send(message).then(result => {
       is(channels.indexOf(result.channel), channels.length - 1, "Last channel used");
       is(result.data, message, "Received message has the correct content.");
     });
   },
 
 
   function SEND_MESSAGE_THROUGH_FIRST_CHANNEL(test) {
     var message = "Message through 1st channel";
     var options = {
       sourceChannel: test.pcLocal.dataChannels[0],
       targetChannel: test.pcRemote.dataChannels[0]
     };
 
+    info("Sending message:" + message);
     return test.send(message, options).then(result => {
       is(test.pcRemote.dataChannels.indexOf(result.channel), 0, "1st channel used");
       is(result.data, message, "Received message has the correct content.");
     });
   },
 
 
   function SEND_MESSAGE_BACK_THROUGH_FIRST_CHANNEL(test) {
     var message = "Return a message also through 1st channel";
     var options = {
       sourceChannel: test.pcRemote.dataChannels[0],
       targetChannel: test.pcLocal.dataChannels[0]
     };
 
+    info("Sending message:" + message);
     return test.send(message, options).then(result => {
       is(test.pcLocal.dataChannels.indexOf(result.channel), 0, "1st channel used");
       is(result.data, message, "Return message has the correct content.");
     });
   },
 
   function CREATE_NEGOTIATED_DATA_CHANNEL(test) {
     var options = {
@@ -156,16 +161,17 @@ var commandsCheckDataChannel = [
       */
     });
   },
 
   function SEND_MESSAGE_THROUGH_LAST_OPENED_CHANNEL2(test) {
     var channels = test.pcRemote.dataChannels;
     var message = "I am the walrus; Goo goo g'joob";
 
+    info("Sending message:" + message);
     return test.send(message).then(result => {
       is(channels.indexOf(result.channel), channels.length - 1, "Last channel used");
       is(result.data, message, "Received message has the correct content.");
     });
   },
 
   function CREATE_NEGOTIATED_MAXPACKET_LIFE_DATA_CHANNEL(test) {
     var options = {
@@ -182,30 +188,32 @@ var commandsCheckDataChannel = [
 
     });
   },
 
   function SEND_MESSAGE_THROUGH_LAST_OPENED_CHANNEL3(test) {
     var channels = test.pcRemote.dataChannels;
     var message = "Nice to see you working maxPacketLifeTime";
 
+    info("Sending message:" + message);
     return test.send(message).then(result => {
       is(channels.indexOf(result.channel), channels.length - 1, "Last channel used");
       is(result.data, message, "Received message has the correct content.");
     });
   }
 ];
 
 var commandsCheckLargeXfer = [
   function SEND_BIG_BUFFER(test) {
     var size = 512*1024; // SCTP internal buffer is 256K, so we'll have ~256K queued
     var buffer = new ArrayBuffer(size);
     // note: type received is always blob for binary data
     var options = {};
     options.bufferedAmountLowThreshold = 64*1024;
+    info("Sending arraybuffer");
     return test.send(buffer, options).then(result => {
       ok(result.data instanceof Blob, "Received data is of instance Blob");
       is(result.data.size, size, "Received data has the correct size.");
     });
   },
 ];
 
 function addInitialDataChannel(chain) {
--- a/dom/plugins/base/nsNPAPIPlugin.cpp
+++ b/dom/plugins/base/nsNPAPIPlugin.cpp
@@ -96,16 +96,17 @@ using mozilla::plugins::PluginModuleCont
 #include "mozilla/a11y/Compatibility.h"
 #endif
 #endif
 
 #ifdef MOZ_WIDGET_ANDROID
 #include <android/log.h>
 #include "android_npapi.h"
 #include "ANPBase.h"
+#include "FennecJNIWrappers.h"
 #include "GeneratedJNIWrappers.h"
 #undef LOG
 #define LOG(args...)  __android_log_print(ANDROID_LOG_INFO, "GeckoPlugins" , ## args)
 #endif
 
 #include "nsIAudioChannelAgent.h"
 #include "AudioChannelService.h"
 
@@ -2077,20 +2078,23 @@ NPError
 
     case kSupportedDrawingModel_ANPGetValue: {
       LOG("get supported drawing model");
       return NPERR_GENERIC_ERROR;
     }
 
     case kJavaContext_ANPGetValue: {
       LOG("get java context");
-      auto ret = java::GeckoAppShell::GetContext();
-      if (!ret)
+
+      auto ret = npp && jni::IsFennec()
+          ? java::GeckoApp::GetPluginContext()
+          : java::GeckoAppShell::GetApplicationContext();
+      if (!ret) {
         return NPERR_GENERIC_ERROR;
-
+      }
       *static_cast<jobject*>(result) = ret.Forget();
       return NPERR_NO_ERROR;
     }
 
     case kAudioTrackInterfaceV1_ANPGetValue: {
       LOG("get audio interface v1");
       ANPAudioTrackInterfaceV1 *i = (ANPAudioTrackInterfaceV1 *) result;
       InitAudioTrackInterfaceV1(i);
--- a/dom/tests/browser/helper_largeAllocation.js
+++ b/dom/tests/browser/helper_largeAllocation.js
@@ -288,17 +288,16 @@ function* largeAllocSuccessTests() {
     // process which was created for the normal content to be loaded into as the
     // browsing context was booted out of the fresh process. If we discover that
     // this was not a fresh process, we'll need to wait for another process.
     // Start listening now.
     epc = expectProcessCreated();
     if (!(yield getInLAProc(aBrowser))) {
       yield epc;
     } else {
-      epc.catch(() => {});
       epc.kill();
     }
 
     let pid3 = yield getPID(aBrowser);
 
     isnot(pid1, pid3, "PIDs 1 and 3 should not match");
     isnot(pid2, pid3, "PIDs 2 and 3 should not match");
     is(true, yield getInLAProc(aBrowser));
--- a/gfx/layers/ipc/UiCompositorControllerParent.cpp
+++ b/gfx/layers/ipc/UiCompositorControllerParent.cpp
@@ -260,17 +260,22 @@ UiCompositorControllerParent::Initialize
 {
   MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread());
   AddRef();
   LayerTreeState* state = CompositorBridgeParent::GetIndirectShadowTree(mRootLayerTreeId);
   MOZ_ASSERT(state);
   MOZ_ASSERT(state->mParent);
   state->mUiControllerParent = this;
 #if defined(MOZ_WIDGET_ANDROID)
-  state->mParent->GetAPZCTreeManager()->InitializeDynamicToolbarAnimator(mRootLayerTreeId);
+  RefPtr<APZCTreeManager> manager = state->mParent->GetAPZCTreeManager();
+  // Since this is called from the UI thread. It is possible the compositor has already
+  // started shutting down and the APZCTreeManager could be a nullptr.
+  if (manager) {
+    manager->InitializeDynamicToolbarAnimator(mRootLayerTreeId);
+  }
 #endif
 }
 
 void
 UiCompositorControllerParent::Open(Endpoint<PUiCompositorControllerParent>&& aEndpoint)
 {
   MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread());
   if (!aEndpoint.Bind(this)) {
--- a/layout/base/PresShell.cpp
+++ b/layout/base/PresShell.cpp
@@ -1157,16 +1157,22 @@ LogTextPerfStats(gfxTextPerfMetrics* aTe
   }
 }
 
 void
 PresShell::Destroy()
 {
   // Do not add code before this line please!
   if (mHaveShutDown) {
+    // If we never got a root frame the root view could exist now still.
+    // In that case assert that it has no children and no frame.
+    MOZ_RELEASE_ASSERT(!mViewManager || !mViewManager->GetRootView() ||
+      (!mViewManager->GetRootView()->GetFrame() &&
+       !mViewManager->GetRootView()->GetFirstChild()));
+    MOZ_RELEASE_ASSERT(!mFrameConstructor || !mFrameConstructor->GetRootFrame());
     return;
   }
 
   NS_ASSERTION(!nsContentUtils::IsSafeToRunScript(),
     "destroy called on presshell while scripts not blocked");
 
   // dump out cumulative text perf metrics
   gfxTextPerfMetrics* tp;
--- a/layout/base/nsDocumentViewer.cpp
+++ b/layout/base/nsDocumentViewer.cpp
@@ -404,16 +404,18 @@ protected:
   int32_t mHintCharsetSource;
   nsCString mHintCharset;
   nsCString mForceCharacterSet;
   
   bool mIsPageMode;
   bool mInitializedForPrintPreview;
   bool mHidden;
   bool mPrintRelated; // Only use for asserts.
+  bool mPresShellDestroyed; // Only use for asserts.
+  bool mDestroyWasFull; // Only use for asserts.
 };
 
 namespace mozilla {
 
 /**
  * A RAII class for automatic dispatch of the 'beforeprint' and 'afterprint'
  * events ('beforeprint' on construction, 'afterprint' on destruction).
  *
@@ -538,17 +540,19 @@ nsDocumentViewer::nsDocumentViewer()
 #ifdef DEBUG
     mDebugFile(nullptr),
 #endif // DEBUG
 #endif // NS_PRINTING
     mHintCharsetSource(kCharsetUninitialized),
     mIsPageMode(false),
     mInitializedForPrintPreview(false),
     mHidden(false),
-    mPrintRelated(false)
+    mPrintRelated(false),
+    mPresShellDestroyed(true),
+    mDestroyWasFull(false)
 {
   PrepareToStartLoad();
 }
 
 void
 nsDocumentViewer::SetPrintRelated()
 {
   if (!mPrintRelated) {
@@ -575,26 +579,41 @@ NS_INTERFACE_MAP_END
 
 nsDocumentViewer::~nsDocumentViewer()
 {
   if (mDocument) {
     Close(nullptr);
     mDocument->Destroy();
   }
 
+  nsIFrame* vmRootFrame =
+    mViewManager && mViewManager->GetRootView()
+      ? mViewManager->GetRootView()->GetFrame()
+      : nullptr;
+  nsIFrame* psRootFrame = mPresShell ? mPresShell->GetRootFrame() : nullptr;
+  MOZ_RELEASE_ASSERT(vmRootFrame == psRootFrame);
+
   NS_ASSERTION(!mPresShell && !mPresContext,
                "User did not call nsIContentViewer::Destroy");
   if (mPresShell || mPresContext) {
     // Make sure we don't hand out a reference to the content viewer to
     // the SHEntry!
     mSHEntry = nullptr;
-
+    mDestroyWasFull = false;
     Destroy();
+    MOZ_RELEASE_ASSERT(mDestroyWasFull);
   }
 
+  MOZ_RELEASE_ASSERT(mPresShellDestroyed);
+
+  MOZ_RELEASE_ASSERT(!mPresShell || !mPresShell->GetRootFrame());
+  MOZ_RELEASE_ASSERT(!mViewManager || !mViewManager->GetRootView() ||
+    (!mViewManager->GetRootView()->GetFrame() &&
+     !mViewManager->GetRootView()->GetFirstChild()));
+
   if (mSelectionListener) {
     mSelectionListener->Disconnect();
   }
 
   if (mFocusListener) {
     mFocusListener->Disconnect();
   }
 
@@ -703,16 +722,17 @@ nsDocumentViewer::InitPresentationStuff(
   StyleSetHandle styleSet = CreateStyleSet(mDocument);
 
   // Now make the shell for the document
   mPresShell = mDocument->CreateShell(mPresContext, mViewManager, styleSet);
   if (!mPresShell) {
     styleSet->Delete();
     return NS_ERROR_FAILURE;
   }
+  mPresShellDestroyed = false;
 
   // We're done creating the style set
   styleSet->EndUpdate();
 
   if (aDoInitialReflow) {
     // Since Initialize() will create frames for *all* items
     // that are currently in the document tree, we need to flush
     // any pending notifications to prevent the content sink from
@@ -1791,16 +1811,18 @@ nsDocumentViewer::Destroy()
   if (mPresContext) {
     DestroyPresContext();
   }
 
   mWindow = nullptr;
   mViewManager = nullptr;
   mContainer = WeakPtr<nsDocShell>();
 
+  mDestroyWasFull = true;
+
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsDocumentViewer::Stop(void)
 {
   NS_ASSERTION(mDocument, "Stop called too early or too late");
   if (mDocument) {
@@ -4652,25 +4674,43 @@ nsDocumentViewer::SetIsHidden(bool aHidd
 {
   mHidden = aHidden;
   return NS_OK;
 }
 
 void
 nsDocumentViewer::DestroyPresShell()
 {
+  nsIFrame* vmRootFrame =
+    mViewManager && mViewManager->GetRootView()
+      ? mViewManager->GetRootView()->GetFrame()
+      : nullptr;
+  nsIFrame* psRootFrame = mPresShell ? mPresShell->GetRootFrame() : nullptr;
+  MOZ_RELEASE_ASSERT(vmRootFrame == psRootFrame);
+
   // Break circular reference (or something)
   mPresShell->EndObservingDocument();
 
   RefPtr<mozilla::dom::Selection> selection = GetDocumentSelection();
   if (selection && mSelectionListener)
     selection->RemoveSelectionListener(mSelectionListener);
 
   nsAutoScriptBlocker scriptBlocker;
+  bool hadRootFrame = !!mPresShell->GetRootFrame();
   mPresShell->Destroy();
+  mPresShellDestroyed = true;
+  MOZ_RELEASE_ASSERT(!mPresShell->GetRootFrame());
+  // destroying the frame tree via presshell destroy should have done this
+  if (hadRootFrame) {
+    MOZ_RELEASE_ASSERT(!mViewManager || !mViewManager->GetRootView());
+  }
+  MOZ_RELEASE_ASSERT(!mViewManager || !mViewManager->GetRootView() ||
+    (!mViewManager->GetRootView()->GetFrame() &&
+     !mViewManager->GetRootView()->GetFirstChild()));
+
   mPresShell = nullptr;
 }
 
 void
 nsDocumentViewer::DestroyPresContext()
 {
   mPresContext->Detach();
   mPresContext = nullptr;
--- a/media/ffvpx/ffvpxcommon.mozbuild
+++ b/media/ffvpx/ffvpxcommon.mozbuild
@@ -38,17 +38,20 @@ ALLOW_COMPILER_WARNINGS = True
 if CONFIG['GNU_CC']:
     CFLAGS += [
         '-Wno-parentheses',
         '-Wno-pointer-sign',
         '-Wno-sign-compare',
         '-Wno-switch',
         '-Wno-type-limits',
         '-Wno-unused-function',
+        # XXX This does not seem to have any effect on some versions of GCC.
         '-Wno-deprecated-declarations',
+        '-Wno-discarded-qualifiers',
+        '-Wno-maybe-uninitialized',
     ]
     if CONFIG['CLANG_CXX']:
         CFLAGS += [
             '-Wno-incompatible-pointer-types-discards-qualifiers',
             '-Wno-logical-op-parentheses',
         ]
     # Force visibility of cpu and av_log symbols.
     CFLAGS += ['-include', 'libavutil_visibility.h']
--- a/media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp
+++ b/media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp
@@ -304,16 +304,17 @@ WebrtcGmpVideoEncoder::InitEncoderForSiz
 int32_t
 WebrtcGmpVideoEncoder::Encode(const webrtc::VideoFrame& aInputImage,
                               const webrtc::CodecSpecificInfo* aCodecSpecificInfo,
                               const std::vector<webrtc::FrameType>* aFrameTypes)
 {
   MOZ_ASSERT(aInputImage.width() >= 0 && aInputImage.height() >= 0);
   // Would be really nice to avoid this sync dispatch, but it would require a
   // copy of the frame, since it doesn't appear to actually have a refcount.
+  // Passing 'this' is safe since this is synchronous.
   mGMPThread->Dispatch(
       WrapRunnable(this,
                    &WebrtcGmpVideoEncoder::Encode_g,
                    &aInputImage,
                    aCodecSpecificInfo,
                    aFrameTypes),
       NS_DISPATCH_SYNC);
 
@@ -771,16 +772,17 @@ WebrtcGmpVideoDecoder::Decode(const webr
                               const webrtc::CodecSpecificInfo* aCodecSpecificInfo,
                               int64_t aRenderTimeMs)
 {
   int32_t ret;
   MOZ_ASSERT(mGMPThread);
   MOZ_ASSERT(!NS_IsMainThread());
   // Would be really nice to avoid this sync dispatch, but it would require a
   // copy of the frame, since it doesn't appear to actually have a refcount.
+  // Passing 'this' is safe since this is synchronous.
   mozilla::SyncRunnable::DispatchToThread(mGMPThread,
                 WrapRunnableRet(&ret, this,
                                 &WebrtcGmpVideoDecoder::Decode_g,
                                 aInputImage,
                                 aMissingFrames,
                                 aFragmentation,
                                 aCodecSpecificInfo,
                                 aRenderTimeMs));
--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.cpp
+++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.cpp
@@ -1132,16 +1132,17 @@ PeerConnectionMedia::ShutdownMediaTransp
   Telemetry::ScalarAdd(Telemetry::ScalarID::WEBRTC_NICER_TURN_403S,
                        stats.turn_403s);
   Telemetry::ScalarAdd(Telemetry::ScalarID::WEBRTC_NICER_TURN_438S,
                        stats.turn_438s);
 #endif
 
   mIceCtxHdlr = nullptr;
 
+  // we're holding a ref to 'this' that's released by SelfDestruct_m
   mMainThread->Dispatch(WrapRunnable(this, &PeerConnectionMedia::SelfDestruct_m),
                         NS_DISPATCH_NORMAL);
 }
 
 LocalSourceStreamInfo*
 PeerConnectionMedia::GetLocalStreamByIndex(int aIndex)
 {
   ASSERT_ON_THREAD(mMainThread);
--- a/media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp
+++ b/media/webrtc/signaling/src/peerconnection/WebrtcGlobalInformation.cpp
@@ -868,16 +868,18 @@ WebrtcGlobalChild::RecvGetLogRequest(con
     return IPC_OK();
   }
 
   nsresult rv;
   nsCOMPtr<nsIEventTarget> stsThread =
     do_GetService(NS_SOCKETTRANSPORTSERVICE_CONTRACTID, &rv);
 
   if (NS_SUCCEEDED(rv) && stsThread) {
+    // this is a singleton, so we shouldn't need to hold a ref for the
+    // request (and can't just add a ref here anyways)
     rv = RUN_ON_THREAD(stsThread,
                        WrapRunnableNM(&GetLogging_s, this, aRequestId, aPattern.get()),
                        NS_DISPATCH_NORMAL);
 
     if (NS_SUCCEEDED(rv)) {
       return IPC_OK();
     }
   }
--- a/media/webrtc/trunk/webrtc/modules/video_capture/android/device_info_android.cc
+++ b/media/webrtc/trunk/webrtc/modules/video_capture/android/device_info_android.cc
@@ -220,16 +220,17 @@ bool DeviceInfoAndroid::FindCameraIndex(
   return FindCameraIndexByName(deviceUniqueIdUTF8, index);
 }
 
 int32_t DeviceInfoAndroid::Init() {
   return 0;
 }
 
 uint32_t DeviceInfoAndroid::NumberOfDevices() {
+  Refresh();
   return g_camera_info->size();
 }
 
 int32_t DeviceInfoAndroid::GetDeviceName(
     uint32_t deviceNumber,
     char* deviceNameUTF8,
     uint32_t deviceNameLength,
     char* deviceUniqueIdUTF8,
--- a/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src/org/webrtc/videoengine/VideoCaptureDeviceInfoAndroid.java
+++ b/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src/org/webrtc/videoengine/VideoCaptureDeviceInfoAndroid.java
@@ -70,18 +70,18 @@ public class VideoCaptureDeviceInfoAndro
   }
 
   // Returns information about all cameras on the device.
   // Since this reflects static information about the hardware present, there is
   // no need to call this function more than once in a single process.  It is
   // marked "private" as it is only called by native code.
   @WebRTCJNITarget
   private static CaptureCapabilityAndroid[] getDeviceInfo() {
-      final boolean hasPermissions = Permissions.waitFor(
-              (Activity) GeckoAppShell.getContext(), Manifest.permission.CAMERA);
+      final boolean hasPermissions = Permissions.has(
+              GeckoAppShell.getApplicationContext(), Manifest.permission.CAMERA);
 
       if (hasPermissions) {
           return createDeviceList();
       } else {
           return new CaptureCapabilityAndroid[0];
       }
   }
 
--- a/mobile/android/app/mobile.js
+++ b/mobile/android/app/mobile.js
@@ -919,8 +919,11 @@ pref("webchannel.allowObject.urlWhitelis
 
 pref("media.openUnsupportedTypeWithExternalApp", true);
 
 pref("dom.keyboardevent.dispatch_during_composition", true);
 
 #if CPU_ARCH == aarch64
 pref("javascript.options.native_regexp", false);
 #endif
+
+// Ask for permission when enumerating WebRTC devices.
+pref("media.navigator.permission.device", true);
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
@@ -1788,17 +1788,17 @@ public class BrowserApp extends GeckoApp
                             menu.findItem(R.id.help).setEnabled(true);
                         }
                     }
                 });
 
                 // Display notification for Mozilla data reporting, if data should be collected.
                 if (AppConstants.MOZ_DATA_REPORTING &&
                         Restrictions.isAllowed(this, Restrictable.DATA_CHOICES)) {
-                    DataReportingNotification.checkAndNotifyPolicy(GeckoAppShell.getContext());
+                    DataReportingNotification.checkAndNotifyPolicy(this);
                 }
                 break;
 
             case "Gecko:DelayedStartup":
                 EventDispatcher.getInstance().unregisterUiThreadListener(this, "Gecko:DelayedStartup");
 
                 // Force tabs panel inflation once the initial pageload is finished.
                 ensureTabsPanelExists();
@@ -1984,22 +1984,22 @@ public class BrowserApp extends GeckoApp
                 break;
 
             case "Experiments:GetActive":
                 final List<String> experiments = SwitchBoard.getActiveExperiments(this);
                 callback.sendSuccess(experiments.toArray(new String[experiments.size()]));
                 break;
 
             case "Experiments:SetOverride":
-                Experiments.setOverride(getContext(), message.getString("name"),
+                Experiments.setOverride(this, message.getString("name"),
                                         message.getBoolean("isEnabled"));
                 break;
 
             case "Experiments:ClearOverride":
-                Experiments.clearOverride(getContext(), message.getString("name"));
+                Experiments.clearOverride(this, message.getString("name"));
                 break;
 
             case "Favicon:Request":
                 final String url = message.getString("url");
                 final boolean shouldSkipNetwork = message.getBoolean("skipNetwork");
 
                 if (TextUtils.isEmpty(url)) {
                     callback.sendError(null);
@@ -2035,17 +2035,17 @@ public class BrowserApp extends GeckoApp
 
             case "Sanitize:ClearHistory":
                 BrowserDB.from(getProfile()).clearHistory(
                         getContentResolver(), message.getBoolean("clearSearchHistory", false));
                 callback.sendSuccess(null);
                 break;
 
             case "Sanitize:ClearSyncedTabs":
-                FennecTabsRepository.deleteNonLocalClientsAndTabs(getContext());
+                FennecTabsRepository.deleteNonLocalClientsAndTabs(this);
                 callback.sendSuccess(null);
                 break;
 
             case "Settings:Show":
                 final Intent settingsIntent = new Intent(this, GeckoPreferences.class);
                 final String resource = message.getString(GeckoPreferences.INTENT_EXTRA_RESOURCES);
 
                 GeckoPreferences.setResourceToOpen(settingsIntent, resource);
@@ -2064,42 +2064,42 @@ public class BrowserApp extends GeckoApp
 
                 Telemetry.addToHistogram("PLACES_PAGES_COUNT", db.getCount(cr, "history"));
                 Telemetry.addToHistogram("FENNEC_BOOKMARKS_COUNT", db.getCount(cr, "bookmarks"));
                 Telemetry.addToHistogram("BROWSER_IS_USER_DEFAULT",
                         (isDefaultBrowser(Intent.ACTION_VIEW) ? 1 : 0));
                 Telemetry.addToHistogram("FENNEC_CUSTOM_HOMEPAGE",
                         (Tabs.hasHomepage(this) ? 1 : 0));
 
-                final SharedPreferences prefs = GeckoSharedPrefs.forProfile(getContext());
+                final SharedPreferences prefs = GeckoSharedPrefs.forProfile(this);
                 final boolean hasCustomHomepanels =
                         prefs.contains(HomeConfigPrefsBackend.PREFS_CONFIG_KEY) ||
                         prefs.contains(HomeConfigPrefsBackend.PREFS_CONFIG_KEY_OLD);
 
                 Telemetry.addToHistogram("FENNEC_HOMEPANELS_CUSTOM", hasCustomHomepanels ? 1 : 0);
 
                 Telemetry.addToHistogram("FENNEC_READER_VIEW_CACHE_SIZE",
-                        SavedReaderViewHelper.getSavedReaderViewHelper(getContext())
+                        SavedReaderViewHelper.getSavedReaderViewHelper(this)
                                              .getDiskSpacedUsedKB());
 
                 if (Versions.feature16Plus) {
                     Telemetry.addToHistogram("BROWSER_IS_ASSIST_DEFAULT",
                             (isDefaultBrowser(Intent.ACTION_ASSIST) ? 1 : 0));
                 }
 
                 Telemetry.addToHistogram("FENNEC_ORBOT_INSTALLED",
-                    ContextUtils.isPackageInstalled(getContext(), "org.torproject.android") ? 1 : 0);
+                    ContextUtils.isPackageInstalled(this, "org.torproject.android") ? 1 : 0);
                 break;
 
             case "Website:AppInstalled":
                 final String name = message.getString("name");
                 final String startUrl = message.getString("start_url");
                 final String manifestPath = message.getString("manifest_path");
                 final LoadFaviconResult loadIconResult = FaviconDecoder
-                    .decodeDataURI(getContext(), message.getString("icon"));
+                    .decodeDataURI(this, message.getString("icon"));
                 if (loadIconResult != null) {
                     final Bitmap icon = loadIconResult
                         .getBestBitmap(GeckoAppShell.getPreferredIconSize());
                     GeckoApplication.createAppShortcut(name, startUrl, manifestPath, icon);
                 } else {
                     Log.e(LOGTAG, "Failed to load icon!");
                 }
 
@@ -2826,19 +2826,19 @@ public class BrowserApp extends GeckoApp
                     delegate.onActivityResult(this, requestCode, resultCode, data);
                 }
 
                 super.onActivityResult(requestCode, resultCode, data);
         }
     }
 
     private void showFirstrunPager() {
-        if (Experiments.isInExperimentLocal(getContext(), Experiments.ONBOARDING3_A)) {
+        if (Experiments.isInExperimentLocal(this, Experiments.ONBOARDING3_A)) {
             Telemetry.startUISession(TelemetryContract.Session.EXPERIMENT, Experiments.ONBOARDING3_A);
-            GeckoSharedPrefs.forProfile(getContext()).edit().putString(Experiments.PREF_ONBOARDING_VERSION, Experiments.ONBOARDING3_A).apply();
+            GeckoSharedPrefs.forProfile(this).edit().putString(Experiments.PREF_ONBOARDING_VERSION, Experiments.ONBOARDING3_A).apply();
             Telemetry.stopUISession(TelemetryContract.Session.EXPERIMENT, Experiments.ONBOARDING3_A);
             return;
         }
 
         if (mFirstrunAnimationContainer == null) {
             final ViewStub firstrunPagerStub = (ViewStub) findViewById(R.id.firstrun_pager_stub);
             mFirstrunAnimationContainer = (FirstrunAnimationContainer) firstrunPagerStub.inflate();
             mFirstrunAnimationContainer.load(getApplicationContext(), getSupportFragmentManager());
@@ -4117,17 +4117,17 @@ public class BrowserApp extends GeckoApp
             startActivity(intent);
         } else {
             // By default this listener is used for lists where the offline reader-view icon
             // is shown - hence we need to redirect to the reader-view page by default.
             // However there are some cases where we might not want to use this, e.g.
             // for topsites where we do not indicate that a page is an offline reader-view bookmark too.
             final String pageURL;
             if (!flags.contains(OnUrlOpenListener.Flags.NO_READER_VIEW)) {
-                pageURL = SavedReaderViewHelper.getReaderURLIfCached(getContext(), url);
+                pageURL = SavedReaderViewHelper.getReaderURLIfCached(this, url);
             } else {
                 pageURL = url;
             }
 
             if (!maybeSwitchToTab(pageURL, flags)) {
                 openUrlAndStopEditing(pageURL);
                 clearSelectedTabApplicationId();
             }
@@ -4141,17 +4141,17 @@ public class BrowserApp extends GeckoApp
             throw new IllegalArgumentException("url must not be null");
         }
         if (flags == null) {
             throw new IllegalArgumentException("flags must not be null");
         }
 
         // We only use onUrlOpenInBackgroundListener for the homepanel context menus, hence
         // we should always be checking whether we want the readermode version
-        final String pageURL = SavedReaderViewHelper.getReaderURLIfCached(getContext(), url);
+        final String pageURL = SavedReaderViewHelper.getReaderURLIfCached(this, url);
 
         final boolean isPrivate = flags.contains(OnUrlOpenInBackgroundListener.Flags.PRIVATE);
 
         int loadFlags = Tabs.LOADURL_NEW_TAB | Tabs.LOADURL_BACKGROUND;
         if (isPrivate) {
             loadFlags |= Tabs.LOADURL_PRIVATE;
         }
 
--- a/mobile/android/base/java/org/mozilla/gecko/DownloadsIntegration.java
+++ b/mobile/android/base/java/org/mozilla/gecko/DownloadsIntegration.java
@@ -13,16 +13,17 @@ import org.mozilla.gecko.util.EventCallb
 import org.mozilla.gecko.util.GeckoBundle;
 
 import java.io.File;
 import java.lang.IllegalArgumentException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
+import android.app.Activity;
 import android.app.DownloadManager;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.media.MediaScannerConnection;
 import android.media.MediaScannerConnection.MediaScannerConnectionClient;
 import android.net.Uri;
 import android.os.Environment;
@@ -98,17 +99,19 @@ public class DownloadsIntegration implem
 
     private static boolean useSystemDownloadManager() {
         if (!AppConstants.ANDROID_DOWNLOADS_INTEGRATION) {
             return false;
         }
 
         int state = PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
         try {
-            state = GeckoAppShell.getContext().getPackageManager().getApplicationEnabledSetting("com.android.providers.downloads");
+            final PackageManager pm = GeckoAppShell.getApplicationContext()
+                                                   .getPackageManager();
+            state = pm.getApplicationEnabledSetting("com.android.providers.downloads");
         } catch (IllegalArgumentException e) {
             // Download Manager package does not exist
             return false;
         }
 
         return (PackageManager.COMPONENT_ENABLED_STATE_ENABLED == state ||
                 PackageManager.COMPONENT_ENABLED_STATE_DEFAULT == state);
     }
@@ -156,37 +159,46 @@ public class DownloadsIntegration implem
                 mimeType = UNKNOWN_MIME_TYPES.get(0);
             } else {
                 mimeType = aMimeType;
             }
         }
 
         if (useSystemDownloadManager()) {
             final File f = new File(aFile);
-            final DownloadManager dm = (DownloadManager) GeckoAppShell.getContext().getSystemService(Context.DOWNLOAD_SERVICE);
+            final DownloadManager dm = (DownloadManager)
+                    GeckoAppShell.getApplicationContext()
+                                 .getSystemService(Context.DOWNLOAD_SERVICE);
             dm.addCompletedDownload(f.getName(),
                     f.getName(),
                     true, // Media scanner should scan this
                     mimeType,
                     f.getAbsolutePath(),
                     Math.max(1, f.length()), // Some versions of Android require downloads to be at least length 1
                     false); // Don't show a notification.
         } else {
-            final Context context = GeckoAppShell.getContext();
-            final GeckoMediaScannerClient client = new GeckoMediaScannerClient(context, aFile, mimeType);
+            final Activity currentActivity =
+                    GeckoActivityMonitor.getInstance().getCurrentActivity();
+            if (currentActivity == null) {
+                return;
+            }
+            final GeckoMediaScannerClient client =
+                    new GeckoMediaScannerClient(currentActivity, aFile, mimeType);
             client.connect();
         }
     }
 
     public static void removeDownload(final Download download) {
         if (!useSystemDownloadManager()) {
             return;
         }
 
-        final DownloadManager dm = (DownloadManager) GeckoAppShell.getContext().getSystemService(Context.DOWNLOAD_SERVICE);
+        final DownloadManager dm = (DownloadManager)
+                GeckoAppShell.getApplicationContext()
+                             .getSystemService(Context.DOWNLOAD_SERVICE);
 
         Cursor c = null;
         try {
             c = dm.query((new DownloadManager.Query()).setFilterByStatus(DownloadManager.STATUS_SUCCESSFUL));
             if (c == null || !c.moveToFirst()) {
                 return;
             }
 
--- a/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java
@@ -123,17 +123,16 @@ import static org.mozilla.gecko.Tabs.INT
 import static org.mozilla.gecko.Tabs.INTENT_EXTRA_TAB_ID;
 import static org.mozilla.gecko.Tabs.INVALID_TAB_ID;
 import static org.mozilla.gecko.mma.MmaDelegate.DOWNLOAD_VIDEOS_OR_ANY_OTHER_MEDIA;
 import static org.mozilla.gecko.mma.MmaDelegate.LOADS_ARTICLES;
 
 public abstract class GeckoApp extends GeckoActivity
                                implements AnchoredPopup.OnVisibilityChangeListener,
                                           BundleEventListener,
-                                          ContextGetter,
                                           GeckoMenu.Callback,
                                           GeckoMenu.MenuPresenter,
                                           GeckoView.ContentListener,
                                           ScreenOrientationDelegate,
                                           Tabs.OnTabsChangedListener,
                                           ViewTreeObserver.OnGlobalLayoutListener {
 
     private static final String LOGTAG = "GeckoApp";
@@ -388,22 +387,16 @@ public abstract class GeckoApp extends G
             super(message);
         }
     }
 
     void toggleChrome(final boolean aShow) { }
 
     void focusChrome() { }
 
-    @Override
-    public Context getContext() {
-        return this;
-    }
-
-    @Override
     public SharedPreferences getSharedPreferences() {
         return GeckoSharedPrefs.forApp(this);
     }
 
     public SharedPreferences getSharedPreferencesForProfile() {
         return GeckoSharedPrefs.forProfile(this);
     }
 
@@ -1074,16 +1067,21 @@ public abstract class GeckoApp extends G
                 }
             });
         }
     }
 
     @WrapForJNI(calledFrom = "ui", dispatchTo = "gecko")
     private static native void onFullScreenPluginHidden(View view);
 
+    @WrapForJNI(calledFrom = "gecko")
+    private static Context getPluginContext() {
+        return GeckoActivityMonitor.getInstance().getCurrentActivity();
+    }
+
     private void showSetImageResult(final boolean success, final int message, final String path) {
         ThreadUtils.postToUiThread(new Runnable() {
             @Override
             public void run() {
                 if (!success) {
                     SnackbarBuilder.builder(GeckoApp.this)
                             .message(message)
                             .duration(Snackbar.LENGTH_LONG)
@@ -1274,23 +1272,16 @@ public abstract class GeckoApp extends G
         // business later and dispose of the reference.
         GeckoLoader.setLastIntent(intent);
 
         // Workaround for <http://code.google.com/p/android/issues/detail?id=20915>.
         try {
             Class.forName("android.os.AsyncTask");
         } catch (ClassNotFoundException e) { }
 
-        // GeckoAppShell is tightly coupled to us, rather than
-        // the app context, because various parts of Fennec (e.g.,
-        // GeckoScreenOrientation) use GAS to access the Activity in
-        // the guise of fetching a Context.
-        // When that's fixed, `this` can change to
-        // `(GeckoApplication) getApplication()` here.
-        GeckoAppShell.setContextGetter(this);
         GeckoAppShell.setScreenOrientationDelegate(this);
 
         // Tell Stumbler to register a local broadcast listener to listen for preference intents.
         // We do this via intents since we can't easily access Stumbler directly,
         // as it might be compiled outside of Fennec.
         getApplicationContext().sendBroadcast(
                 new Intent(INTENT_REGISTER_STUMBLER_LISTENER)
         );
--- a/mobile/android/base/java/org/mozilla/gecko/GeckoApplication.java
+++ b/mobile/android/base/java/org/mozilla/gecko/GeckoApplication.java
@@ -3,17 +3,16 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 package org.mozilla.gecko;
 
 import android.app.Application;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
-import android.content.SharedPreferences;
 import android.content.res.Configuration;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.net.Uri;
@@ -51,18 +50,17 @@ import org.mozilla.gecko.util.GeckoBundl
 import org.mozilla.gecko.util.HardwareUtils;
 import org.mozilla.gecko.util.PRNGFixes;
 import org.mozilla.gecko.util.ThreadUtils;
 
 import java.io.File;
 import java.lang.reflect.Method;
 import java.util.UUID;
 
-public class GeckoApplication extends Application
-    implements ContextGetter {
+public class GeckoApplication extends Application {
     private static final String LOG_TAG = "GeckoApplication";
     private static final String MEDIA_DECODING_PROCESS_CRASH = "MEDIA_DECODING_PROCESS_CRASH";
 
     private boolean mInBackground;
     private boolean mPausedGecko;
     private boolean mIsInitialResume;
 
     private LightweightTheme mLightweightTheme;
@@ -131,26 +129,16 @@ public class GeckoApplication extends Ap
         final Context context = GeckoAppShell.getApplicationContext();
         final Intent intent = new Intent();
         intent.setClass(context, Restarter.class)
               .putExtra("pid", Process.myPid())
               .putExtra(Intent.EXTRA_INTENT, restartIntent);
         context.startService(intent);
     }
 
-    @Override
-    public Context getContext() {
-        return this;
-    }
-
-    @Override
-    public SharedPreferences getSharedPreferences() {
-        return GeckoSharedPrefs.forApp(this);
-    }
-
     /**
      * We need to do locale work here, because we need to intercept
      * each hit to onConfigurationChanged.
      */
     @Override
     public void onConfigurationChanged(Configuration config) {
         Log.d(LOG_TAG, "onConfigurationChanged: " + config.locale +
                        ", background: " + mInBackground);
--- a/mobile/android/base/java/org/mozilla/gecko/ThumbnailHelper.java
+++ b/mobile/android/base/java/org/mozilla/gecko/ThumbnailHelper.java
@@ -62,17 +62,17 @@ public final class ThumbnailHelper {
 
     private final ArrayList<Tab> mPendingThumbnails;    // synchronized access only
     private volatile int mPendingWidth;
     private int mWidth;
     private int mHeight;
     private ByteBuffer mBuffer;
 
     private ThumbnailHelper() {
-        final Resources res = GeckoAppShell.getContext().getResources();
+        final Resources res = GeckoAppShell.getApplicationContext().getResources();
 
         mPendingThumbnails = new ArrayList<>();
         try {
             mPendingWidth = (int) res.getDimension(R.dimen.tab_thumbnail_width);
         } catch (Resources.NotFoundException nfe) {
         }
         mWidth = -1;
         mHeight = -1;
--- a/mobile/android/base/java/org/mozilla/gecko/prompts/PromptListItem.java
+++ b/mobile/android/base/java/org/mozilla/gecko/prompts/PromptListItem.java
@@ -25,17 +25,17 @@ public class PromptListItem {
     public final boolean showAsActions;
     public final boolean isParent;
 
     public Intent mIntent;
     public boolean mSelected;
     public Drawable mIcon;
 
     PromptListItem(GeckoBundle aObject) {
-        Context context = GeckoAppShell.getContext();
+        final Context context = GeckoAppShell.getApplicationContext();
         label = aObject.getString("label", "");
         isGroup = aObject.getBoolean("isGroup");
         inGroup = aObject.getBoolean("inGroup");
         disabled = aObject.getBoolean("disabled");
         id = aObject.getInt("id");
         mSelected = aObject.getBoolean("selected");
 
         GeckoBundle obj = aObject.getBundle("showAsActions");
--- a/mobile/android/base/java/org/mozilla/gecko/updater/PostUpdateHandler.java
+++ b/mobile/android/base/java/org/mozilla/gecko/updater/PostUpdateHandler.java
@@ -50,17 +50,17 @@ public class PostUpdateHandler extends B
     /**
      * Copies the /assets/features folder out of the APK and into the app's data directory.
      */
     private void copyFeaturesFromAPK(BrowserApp browserApp) {
         Log.d(LOGTAG, "Copying system add-ons from APK to dataDir");
 
         final String dataDir = browserApp.getApplicationInfo().dataDir;
         final SharedPreferences prefs = GeckoSharedPrefs.forApp(browserApp);
-        final AssetManager assetManager = browserApp.getContext().getAssets();
+        final AssetManager assetManager = browserApp.getAssets();
 
         try {
             final String[] assetNames = assetManager.list("features");
 
             for (int i = 0; i < assetNames.length; i++) {
                 final String assetPath = "features/" + assetNames[i];
 
                 Log.d(LOGTAG, "Copying '" + assetPath + "' from APK to dataDir");
--- a/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java
+++ b/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java
@@ -277,15 +277,15 @@ public class WebAppActivity extends Sing
     }
 
     private Bitmap readIconFromManifest(JSONObject manifest) {
         final String iconStr = manifest.optString("cached_icon", null);
         if (iconStr == null) {
             return null;
         }
         final LoadFaviconResult loadIconResult = FaviconDecoder
-            .decodeDataURI(getContext(), iconStr);
+            .decodeDataURI(this, iconStr);
         if (loadIconResult == null) {
             return null;
         }
         return loadIconResult.getBestBitmap(GeckoAppShell.getPreferredIconSize());
     }
 }
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -363,17 +363,16 @@ if CONFIG['MOZ_WEBRTC']:
     wrjar.javac_flags += ['-Xlint:all,-deprecation,-cast']
 
 gvjar = add_java_jar('gecko-view')
 
 gvjar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x
                   for x in [
     'AndroidGamepadManager.java',
     'Clipboard.java',
-    'ContextGetter.java',
     'CrashHandler.java',
     'EventDispatcher.java',
     'GeckoAccessibility.java',
     'GeckoAppShell.java',
     'GeckoBatteryManager.java',
     'GeckoEditable.java',
     'GeckoEditableChild.java',
     'GeckoEditableClient.java',
--- a/mobile/android/chrome/content/WebrtcUI.js
+++ b/mobile/android/chrome/content/WebrtcUI.js
@@ -23,19 +23,25 @@ var WebrtcUI = {
   //        break;
   //      ...
   //      default:
   //        return stockObserve.call(this, aSubject, aTopic, aData);
   //
   // See browser/modules/webrtcUI.jsm for details.
 
   observe: function(aSubject, aTopic, aData) {
-    if (aTopic === "getUserMedia:request") {
+    if (aTopic === "getUserMedia:ask-device-permission") {
       RuntimePermissions
-        .waitForPermissions(this._determineNeededRuntimePermissions(aSubject))
+        .waitForPermissions(this._determineNeededRuntimePermissions(aData))
+        .then(_ => {
+          Services.obs.notifyObservers(aSubject, "getUserMedia:got-device-permission");
+        });
+    } else if (aTopic === "getUserMedia:request") {
+      RuntimePermissions
+        .checkPermissions(this._determineNeededRuntimePermissions(aSubject))
         .then((permissionGranted) => {
           if (permissionGranted) {
             WebrtcUI.handleGumRequest(aSubject, aTopic, aData);
           } else {
             Services.obs.notifyObservers(null, "getUserMedia:response:deny", aSubject.callID);
           }});
     } else if (aTopic === "PeerConnection:request") {
       this.handlePCRequest(aSubject, aTopic, aData);
@@ -173,17 +179,26 @@ var WebrtcUI = {
       },
       positive: true
     }];
   },
 
   _determineNeededRuntimePermissions: function(aSubject) {
     let permissions = [];
 
-    let constraints = aSubject.getConstraints();
+    let constraints;
+    if (typeof aSubject === "string") {
+      constraints = {
+        video: aSubject === "video" || aSubject === "all",
+        audio: aSubject === "audio" || aSubject === "all",
+      };
+    } else {
+      constraints = aSubject.getConstraints();
+    }
+
     if (constraints.video) {
       permissions.push(RuntimePermissions.CAMERA);
     }
     if (constraints.audio) {
       permissions.push(RuntimePermissions.RECORD_AUDIO);
     }
 
     return permissions;
--- a/mobile/android/chrome/content/browser.js
+++ b/mobile/android/chrome/content/browser.js
@@ -154,17 +154,18 @@ lazilyLoadedBrowserScripts.forEach(funct
 
 var lazilyLoadedObserverScripts = [
   ["MemoryObserver", ["memory-pressure", "Memory:Dump"], "chrome://browser/content/MemoryObserver.js"],
   ["ConsoleAPI", ["console-api-log-event"], "chrome://browser/content/ConsoleAPI.js"],
 ];
 
 if (AppConstants.MOZ_WEBRTC) {
   lazilyLoadedObserverScripts.push(
-    ["WebrtcUI", ["getUserMedia:request",
+    ["WebrtcUI", ["getUserMedia:ask-device-permission",
+                  "getUserMedia:request",
                   "PeerConnection:request",
                   "recording-device-events",
                   "VideoCapture:Paused",
                   "VideoCapture:Resumed"], "chrome://browser/content/WebrtcUI.js"])
 }
 
 lazilyLoadedObserverScripts.forEach(function (aScript) {
   let [name, notifications, script] = aScript;
--- a/mobile/android/components/ContentPermissionPrompt.js
+++ b/mobile/android/components/ContentPermissionPrompt.js
@@ -2,18 +2,19 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const Ci = Components.interfaces;
 const Cr = Components.results;
 const Cu = Components.utils;
 const Cc = Components.classes;
 
+Cu.import("resource://gre/modules/RuntimePermissions.jsm");
+Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
 
 const kEntities = {
   "contacts": "contacts",
   "desktop-notification": "desktopNotification2",
   "geolocation": "geolocation",
   "flyweb-publish-server": "flyWebPublishServer",
 };
 
@@ -26,30 +27,30 @@ const PROMPT_FOR_UNKNOWN = [
 
 function ContentPermissionPrompt() {}
 
 ContentPermissionPrompt.prototype = {
   classID: Components.ID("{C6E8C44D-9F39-4AF7-BCC0-76E38A8310F5}"),
 
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPermissionPrompt]),
 
-  handleExistingPermission: function handleExistingPermission(request, type, denyUnknown) {
+  handleExistingPermission: function handleExistingPermission(request, type, denyUnknown, callback) {
     let result = Services.perms.testExactPermissionFromPrincipal(request.principal, type);
     if (result == Ci.nsIPermissionManager.ALLOW_ACTION) {
-      request.allow();
+      callback(/* allow */ true);
       return true;
     }
 
     if (result == Ci.nsIPermissionManager.DENY_ACTION) {
-      request.cancel();
+      callback(/* allow */ false);
       return true;
     }
 
     if (denyUnknown && result == Ci.nsIPermissionManager.UNKNOWN_ACTION) {
-      request.cancel();
+      callback(/* allow */ false);
       return true;
     }
 
     return false;
   },
 
   getChromeWindow: function getChromeWindow(aWindow) {
      let chromeWin = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
@@ -74,55 +75,73 @@ ContentPermissionPrompt.prototype = {
     let isApp = request.principal.appId !== Ci.nsIScriptSecurityManager.NO_APP_ID && request.principal.appId !== Ci.nsIScriptSecurityManager.UNKNOWN_APP_ID;
 
     // Only allow exactly one permission rquest here.
     let types = request.types.QueryInterface(Ci.nsIArray);
     if (types.length != 1) {
       request.cancel();
       return;
     }
+
     let perm = types.queryElementAt(0, Ci.nsIContentPermissionType);
 
+    let callback = (allow) => {
+      if (!allow) {
+        request.cancel();
+        return;
+      }
+      if (perm.type === "geolocation") {
+        RuntimePermissions.waitForPermissions(
+          RuntimePermissions.ACCESS_FINE_LOCATION).then((granted) => {
+            (granted ? request.allow : request.cancel)();
+          });
+        return;
+      }
+      request.allow();
+    };
+
     // Returns true if the request was handled
     let access = (perm.access && perm.access !== "unused") ?
                  (perm.type + "-" + perm.access) : perm.type;
     if (this.handleExistingPermission(request, access,
-          /* denyUnknown */ isApp || PROMPT_FOR_UNKNOWN.indexOf(perm.type) < 0))
+          /* denyUnknown */ isApp || PROMPT_FOR_UNKNOWN.indexOf(perm.type) < 0, callback)) {
        return;
+    }
 
     let chromeWin = this.getChromeForRequest(request);
     let tab = chromeWin.BrowserApp.getTabForWindow(request.window.top);
-    if (!tab)
+    if (!tab) {
       return;
+    }
 
     let browserBundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
     let entityName = kEntities[perm.type];
 
     let buttons = [{
       label: browserBundle.GetStringFromName(entityName + ".dontAllow"),
       callback: function(aChecked) {
         // If the user checked "Don't ask again" or this is a desktopNotification, make a permanent exception
         if (aChecked || entityName == "desktopNotification2")
           Services.perms.addFromPrincipal(request.principal, access, Ci.nsIPermissionManager.DENY_ACTION);
 
-        request.cancel();
+        callback(/* allow */ false);
       }
     },
     {
       label: browserBundle.GetStringFromName(entityName + ".allow"),
       callback: function(aChecked) {
         // If the user checked "Don't ask again" or this is a desktopNotification, make a permanent exception
         if (aChecked || entityName == "desktopNotification2") {
           Services.perms.addFromPrincipal(request.principal, access, Ci.nsIPermissionManager.ALLOW_ACTION);
         } else if (isApp) {
           // Otherwise allow the permission for the current session if the request comes from an app
           Services.perms.addFromPrincipal(request.principal, access, Ci.nsIPermissionManager.ALLOW_ACTION, Ci.nsIPermissionManager.EXPIRE_SESSION);
         }
 
-        request.allow();
+        callback(/* allow */ true);
       },
       positive: true
     }];
 
     let requestor = chromeWin.BrowserApp.manifest ? "'" + chromeWin.BrowserApp.manifest.name + "'" : request.principal.URI.host;
     let message = browserBundle.formatStringFromName(entityName + ".ask", [requestor], 1);
     // desktopNotification doesn't have a checkbox
     let options;
--- a/mobile/android/components/geckoview/GeckoViewPrompt.js
+++ b/mobile/android/components/geckoview/GeckoViewPrompt.js
@@ -135,36 +135,37 @@ PromptFactory.prototype = {
       // Cancel: !result
       if (!result || result.choices === undefined) {
         return;
       }
 
       let dispatchEvents = false;
       if (!aElement.multiple) {
         let elem = map[result.choices[0]];
-        if (elem) {
+        if (elem && elem instanceof win.HTMLOptionElement) {
           dispatchEvents = !elem.selected;
           elem.selected = true;
         } else {
           Cu.reportError("Invalid id for select result: " + result.choices[0]);
         }
       } else {
         for (let i = 0; i < id; i++) {
           let elem = map[i];
           let index = result.choices.indexOf(String(i));
-          if (elem.selected != (index >= 0)) {
+          if (elem instanceof win.HTMLOptionElement &&
+              elem.selected !== (index >= 0)) {
             // Current selected is not the same as the new selected state.
             dispatchEvents = true;
             elem.selected = !elem.selected;
-            result.choices[index] = undefined;
           }
+          result.choices[index] = undefined;
         }
         for (let i = 0; i < result.choices.length; i++) {
           if (result.choices[i] !== undefined && result.choices[i] !== null) {
-            Cu.reportError("Invalid id for select result: " + result.choices[0]);
+            Cu.reportError("Invalid id for select result: " + result.choices[i]);
             break;
           }
         }
       }
 
       if (dispatchEvents) {
         this._dispatchEvents(aElement);
       }
deleted file mode 100644
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/ContextGetter.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*-
- * 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/. */
-
-package org.mozilla.gecko;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-
-public interface ContextGetter {
-    Context getContext();
-    SharedPreferences getSharedPreferences();
-}
-
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
@@ -110,17 +110,17 @@ public class GeckoAppShell
     private static final CrashHandler CRASH_HANDLER = new CrashHandler() {
         @Override
         protected String getAppPackageName() {
             return AppConstants.ANDROID_PACKAGE_NAME;
         }
 
         @Override
         protected Context getAppContext() {
-            return sContextGetter != null ? getApplicationContext() : null;
+            return getApplicationContext();
         }
 
         @Override
         protected Bundle getCrashExtras(final Thread thread, final Throwable exc) {
             final Bundle extras = super.getCrashExtras(thread, exc);
 
             extras.putString("ProductName", AppConstants.MOZ_APP_BASENAME);
             extras.putString("ProductID", AppConstants.MOZ_APP_ID);
@@ -142,18 +142,19 @@ public class GeckoAppShell
 
             super.uncaughtException(thread, exc);
         }
 
         @Override
         public boolean reportException(final Thread thread, final Throwable exc) {
             try {
                 if (exc instanceof OutOfMemoryError) {
-                    SharedPreferences prefs = getSharedPreferences();
-                    SharedPreferences.Editor editor = prefs.edit();
+                    final SharedPreferences prefs =
+                            GeckoSharedPrefs.forApp(getApplicationContext());
+                    final SharedPreferences.Editor editor = prefs.edit();
                     editor.putBoolean(PREFS_OOM_EXCEPTION, true);
 
                     // Synchronously write to disk so we know it's done before we
                     // shutdown
                     editor.commit();
                 }
 
                 reportJavaCrash(exc, getExceptionStackTrace(exc));
@@ -280,17 +281,18 @@ public class GeckoAppShell
         CRASH_HANDLER.uncaughtException(null, e);
     }
 
     private static float getLocationAccuracy(Location location) {
         float radius = location.getAccuracy();
         return (location.hasAccuracy() && radius > 0) ? radius : 1001;
     }
 
-    @SuppressLint("MissingPermission") // Permissions are explicitly checked for in enableLocation()
+    // Permissions are explicitly checked when requesting content permission.
+    @SuppressLint("MissingPermission")
     private static Location getLastKnownLocation(LocationManager lm) {
         Location lastKnownLocation = null;
         List<String> providers = lm.getAllProviders();
 
         for (String provider : providers) {
             Location location = lm.getLastKnownLocation(provider);
             if (location == null) {
                 continue;
@@ -308,65 +310,68 @@ public class GeckoAppShell
                 lastKnownLocation = location;
             }
         }
 
         return lastKnownLocation;
     }
 
     @WrapForJNI(calledFrom = "gecko")
-    @SuppressLint("MissingPermission") // Permissions are explicitly checked for within this method
-    private static void enableLocation(final boolean enable) {
-        final Runnable requestLocation = new Runnable() {
-            @Override
-            public void run() {
-                LocationManager lm = getLocationManager(getApplicationContext());
-                if (lm == null) {
-                    return;
+    // Permissions are explicitly checked when requesting content permission.
+    @SuppressLint("MissingPermission")
+    /* package */ static void enableLocation(final boolean enable) {
+        if (!ThreadUtils.isOnUiThread()) {
+            ThreadUtils.postToUiThread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        enableLocation(enable);
+                    } catch (final SecurityException e) {
+                        Log.e(LOGTAG, "No location permission", e);
+                    }
                 }
+            });
+            return;
+        }
 
-                if (!enable) {
-                    lm.removeUpdates(getLocationListener());
-                    return;
-                }
-
-                Location lastKnownLocation = getLastKnownLocation(lm);
-                if (lastKnownLocation != null) {
-                    getLocationListener().onLocationChanged(lastKnownLocation);
-                }
+        LocationManager lm = getLocationManager(getApplicationContext());
+        if (lm == null) {
+            return;
+        }
 
-                Criteria criteria = new Criteria();
-                criteria.setSpeedRequired(false);
-                criteria.setBearingRequired(false);
-                criteria.setAltitudeRequired(false);
-                if (locationHighAccuracyEnabled) {
-                    criteria.setAccuracy(Criteria.ACCURACY_FINE);
-                    criteria.setCostAllowed(true);
-                    criteria.setPowerRequirement(Criteria.POWER_HIGH);
-                } else {
-                    criteria.setAccuracy(Criteria.ACCURACY_COARSE);
-                    criteria.setCostAllowed(false);
-                    criteria.setPowerRequirement(Criteria.POWER_LOW);
-                }
+        if (!enable) {
+            lm.removeUpdates(getLocationListener());
+            return;
+        }
+
+        Location lastKnownLocation = getLastKnownLocation(lm);
+        if (lastKnownLocation != null) {
+            getLocationListener().onLocationChanged(lastKnownLocation);
+        }
 
-                String provider = lm.getBestProvider(criteria, true);
-                if (provider == null)
-                    return;
+        Criteria criteria = new Criteria();
+        criteria.setSpeedRequired(false);
+        criteria.setBearingRequired(false);
+        criteria.setAltitudeRequired(false);
+        if (locationHighAccuracyEnabled) {
+            criteria.setAccuracy(Criteria.ACCURACY_FINE);
+            criteria.setCostAllowed(true);
+            criteria.setPowerRequirement(Criteria.POWER_HIGH);
+        } else {
+            criteria.setAccuracy(Criteria.ACCURACY_COARSE);
+            criteria.setCostAllowed(false);
+            criteria.setPowerRequirement(Criteria.POWER_LOW);
+        }
 
-                Looper l = Looper.getMainLooper();
-                lm.requestLocationUpdates(provider, 100, 0.5f, getLocationListener(), l);
-            }
-        };
+        String provider = lm.getBestProvider(criteria, true);
+        if (provider == null)
+            return;
 
-        Permissions
-                .from((Activity) getContext())
-                .withPermissions(Manifest.permission.ACCESS_FINE_LOCATION)
-                .onUIThread()
-                .doNotPromptIf(!enable)
-                .run(requestLocation);
+        Looper l = Looper.getMainLooper();
+        lm.requestLocationUpdates(provider, 100, 0.5f, getLocationListener(), l);
     }
 
     private static LocationManager getLocationManager(Context context) {
         try {
             return (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
         } catch (NoSuchFieldError e) {
             // Some Tegras throw exceptions about missing the CONTROL_LOCATION_UPDATES permission,
             // which allows enabling/disabling location update notifications from the cell radio.
@@ -1621,44 +1626,26 @@ public class GeckoAppShell
             return null;
         } catch (android.content.pm.PackageManager.NameNotFoundException nnfe) {
             Log.w(LOGTAG, "Couldn't find package.", nnfe);
             return null;
         }
     }
 
     private static Context sApplicationContext;
-    private static ContextGetter sContextGetter;
-
-    @Deprecated
-    @WrapForJNI
-    public static Context getContext() {
-        return sContextGetter.getContext();
-    }
-
-    public static void setContextGetter(ContextGetter cg) {
-        sContextGetter = cg;
-    }
 
     @WrapForJNI
     public static Context getApplicationContext() {
         return sApplicationContext;
     }
 
     public static void setApplicationContext(final Context context) {
         sApplicationContext = context;
     }
 
-    public static SharedPreferences getSharedPreferences() {
-        if (sContextGetter == null) {
-            throw new IllegalStateException("No ContextGetter; cannot fetch prefs.");
-        }
-        return sContextGetter.getSharedPreferences();
-    }
-
     public interface GeckoInterface {
         public boolean openUriExternal(String targetURI, String mimeType, String packageName, String className, String action, String title);
 
         public String[] getHandlersForMimeType(String mimeType, String action);
         public String[] getHandlersForURL(String url, String action);
     };
 
     private static GeckoInterface sGeckoInterface;
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoView.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoView.java
@@ -38,18 +38,17 @@ import android.os.SystemClock;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputConnection;
 
-public class GeckoView extends LayerView
-    implements ContextGetter {
+public class GeckoView extends LayerView {
 
     private static final String DEFAULT_SHARED_PREFERENCES_FILE = "GeckoView";
     private static final String LOGTAG = "GeckoView";
 
     private static final boolean DEBUG = false;
 
     /* package */ enum State implements NativeQueue.State {
         @WrapForJNI INITIAL(0),
@@ -313,22 +312,16 @@ public class GeckoView extends LayerView
         if (GeckoThread.initMainProcess(GeckoProfile.get(appContext),
                                         geckoArgs,
                                         /* debugging */ false)) {
             GeckoThread.launch();
         }
     }
 
     private void init(final Context context, final GeckoViewSettings settings) {
-        // Set the GeckoInterface if the context is an activity and the
-        // GeckoInterface has not already been set
-        if (context instanceof Activity && GeckoAppShell.getGeckoInterface() == null) {
-            GeckoAppShell.setContextGetter(this);
-        }
-
         preload(context);
 
         // Perform common initialization for Fennec/GeckoView.
         GeckoAppShell.setLayerView(this);
 
         initializeView();
         mListener.registerListeners();
 
@@ -1053,25 +1046,16 @@ public class GeckoView extends LayerView
             }
             default: {
                 callback.sendError("Invalid type");
                 break;
             }
         }
     }
 
-    protected String getSharedPreferencesFile() {
-        return DEFAULT_SHARED_PREFERENCES_FILE;
-    }
-
-    @Override
-    public SharedPreferences getSharedPreferences() {
-        return getContext().getSharedPreferences(getSharedPreferencesFile(), 0);
-    }
-
     public EventDispatcher getEventDispatcher() {
         return mEventDispatcher;
     }
 
     public interface ProgressListener {
         static final int STATE_IS_BROKEN = 1;
         static final int STATE_IS_SECURE = 2;
         static final int STATE_IS_INSECURE = 4;
--- a/mobile/android/geckoview_example/src/main/java/org/mozilla/geckoview_example/BasicGeckoViewPrompt.java
+++ b/mobile/android/geckoview_example/src/main/java/org/mozilla/geckoview_example/BasicGeckoViewPrompt.java
@@ -299,16 +299,21 @@ final class BasicGeckoViewPrompt impleme
         final Activity activity = getActivity(view);
         if (activity == null) {
             callback.dismiss();
             return;
         }
         final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
         addStandardLayout(builder, title, msg, callback);
 
+        final ListView list = new ListView(builder.getContext());
+        if (type == CHOICE_TYPE_MULTIPLE) {
+            list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
+        }
+
         final ArrayAdapter<GeckoBundle> adapter = new ArrayAdapter<GeckoBundle>(
                 builder.getContext(), android.R.layout.simple_list_item_1) {
             private static final int TYPE_MENU_ITEM = 0;
             private static final int TYPE_MENU_CHECK = 1;
             private static final int TYPE_SEPARATOR = 2;
             private static final int TYPE_GROUP = 3;
             private static final int TYPE_SINGLE = 4;
             private static final int TYPE_MULTIPLE = 5;
@@ -385,32 +390,34 @@ final class BasicGeckoViewPrompt impleme
                     view = mInflater.inflate(layoutId, parent, false);
                 }
 
                 final GeckoBundle item = getItem(position);
                 final TextView text = (TextView) view;
                 text.setEnabled(!item.getBoolean("disabled"));
                 text.setText(item.getString("label"));
                 if (view instanceof CheckedTextView) {
-                    ((CheckedTextView) view).setChecked(item.getBoolean("selected"));
+                    final boolean selected = item.getBoolean("selected");
+                    if (itemType == TYPE_MULTIPLE) {
+                        list.setItemChecked(position, selected);
+                    } else {
+                        ((CheckedTextView) view).setChecked(selected);
+                    }
                 }
                 return view;
             }
         };
         addChoiceItems(type, adapter, choices, /* indent */ null);
 
-        final ListView list = new ListView(builder.getContext());
         list.setAdapter(adapter);
-        if (type == CHOICE_TYPE_MULTIPLE) {
-            list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
-        }
         builder.setView(list);
 
-        final AlertDialog dialog = builder.create();
+        final AlertDialog dialog;
         if (type == CHOICE_TYPE_SINGLE || type == CHOICE_TYPE_MENU) {
+            dialog = builder.create();
             list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                 @Override
                 public void onItemClick(final AdapterView<?> parent, final View v,
                                         final int position, final long id) {
                     final GeckoBundle item = adapter.getItem(position);
                     if (type == CHOICE_TYPE_MENU) {
                         final GeckoBundle[] children = item.getBundleArray("items");
                         if (children != null) {
@@ -444,19 +451,20 @@ final class BasicGeckoViewPrompt impleme
                     final int len = adapter.getCount();
                     ArrayList<String> items = new ArrayList<>(len);
                     for (int i = 0; i < len; i++) {
                         final GeckoBundle item = adapter.getItem(i);
                         if (item.getBoolean("selected")) {
                             items.add(item.getString("id"));
                         }
                     }
-                    callback.confirm(items.toArray(new GeckoBundle[items.size()]));
+                    callback.confirm(items.toArray(new String[items.size()]));
                 }
             });
+            dialog = builder.create();
         } else {
             throw new UnsupportedOperationException();
         }
         dialog.show();
     }
 
     private static int parseColor(final String value, final int def) {
         try {
--- a/mobile/android/installer/package-manifest.in
+++ b/mobile/android/installer/package-manifest.in
@@ -346,18 +346,16 @@
 @BINPATH@/components/nsWebHandlerApp.manifest
 @BINPATH@/components/nsWebHandlerApp.js
 @BINPATH@/components/satchel.manifest
 @BINPATH@/components/nsFormAutoComplete.js
 @BINPATH@/components/FormHistoryStartup.js
 @BINPATH@/components/nsInputListAutoComplete.js
 @BINPATH@/components/contentAreaDropListener.manifest
 @BINPATH@/components/contentAreaDropListener.js
-@BINPATH@/components/messageWakeupService.js
-@BINPATH@/components/messageWakeupService.manifest
 @BINPATH@/components/nsINIProcessor.manifest
 @BINPATH@/components/nsINIProcessor.js
 @BINPATH@/components/servicesComponents.manifest
 
 #ifndef MOZ_GECKOVIEW_JAR
 @BINPATH@/components/TelemetryStartup.js
 @BINPATH@/components/TelemetryStartup.manifest
 #endif
--- a/mobile/android/modules/RuntimePermissions.jsm
+++ b/mobile/android/modules/RuntimePermissions.jsm
@@ -6,21 +6,23 @@
 
 const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
 
 this.EXPORTED_SYMBOLS = ["RuntimePermissions"];
 
 Cu.import("resource://gre/modules/Services.jsm");
 
 // See: http://developer.android.com/reference/android/Manifest.permission.html
+const ACCESS_FINE_LOCATION = "android.permission.ACCESS_FINE_LOCATION";
 const CAMERA = "android.permission.CAMERA";
+const RECORD_AUDIO = "android.permission.RECORD_AUDIO";
 const WRITE_EXTERNAL_STORAGE = "android.permission.WRITE_EXTERNAL_STORAGE";
-const RECORD_AUDIO = "android.permission.RECORD_AUDIO";
 
 var RuntimePermissions = {
+  ACCESS_FINE_LOCATION: ACCESS_FINE_LOCATION,
   CAMERA: CAMERA,
   RECORD_AUDIO: RECORD_AUDIO,
   WRITE_EXTERNAL_STORAGE: WRITE_EXTERNAL_STORAGE,
 
   /**
    * Check whether the permissions have been granted or not. If needed prompt the user to accept the permissions.
    *
    * @returns A promise resolving to true if all the permissions have been granted or false if any of the
--- a/mobile/android/tests/browser/chrome/test_jni.html
+++ b/mobile/android/tests/browser/chrome/test_jni.html
@@ -19,17 +19,17 @@ Migrated from Robocop: https://bugzilla.
     var jenv = null;
     try {
       jenv = JNI.GetForThread();
 
       // Test a simple static method.
       var geckoAppShell = JNI.LoadClass(jenv, "org.mozilla.gecko.GeckoAppShell", {
         static_methods: [
           { name: "getPreferredIconSize", sig: "()I" },
-          { name: "getContext", sig: "()Landroid/content/Context;" },
+          { name: "getApplicationContext", sig: "()Landroid/content/Context;" },
         ],
       });
 
       let iconSize = -1;
       iconSize = geckoAppShell.getPreferredIconSize();
       isnot(iconSize, -1, "icon size is valid");
 
       // Test GeckoNetworkManager methods that are accessed by PaymentsUI.js.
@@ -51,17 +51,17 @@ Migrated from Robocop: https://bugzilla.
           { name: "getClass", sig: "()Ljava/lang/Class;" },
         ],
       });
       JNI.LoadClass(jenv, "java.lang.Class", {
         methods: [
           { name: "getName", sig: "()Ljava/lang/String;" },
         ],
       });
-      is("org.mozilla.gecko.BrowserApp", JNI.ReadString(jenv, geckoAppShell.getContext().getClass().getName()), "class name is correct");
+      is("org.mozilla.gecko.GeckoApplication", JNI.ReadString(jenv, geckoAppShell.getApplicationContext().getClass().getName()), "class name is correct");
     } finally {
       if (jenv) {
         JNI.UnloadClasses(jenv);
       }
     }
   }
 
   test_JNI();
--- a/netwerk/sctp/datachannel/DataChannel.cpp
+++ b/netwerk/sctp/datachannel/DataChannel.cpp
@@ -63,16 +63,18 @@
 
 static bool sctp_initialized;
 
 namespace mozilla {
 
 LazyLogModule gDataChannelLog("DataChannel");
 static LazyLogModule gSCTPLog("SCTP");
 
+#define SCTP_LOG(args) MOZ_LOG(mozilla::gSCTPLog, mozilla::LogLevel::Debug, args)
+
 class DataChannelShutdown : public nsIObserver
 {
 public:
   // This needs to be tied to some form object that is guaranteed to be
   // around (singleton likely) unless we want to shutdown sctp whenever
   // we're not using it (and in which case we'd keep a refcnt'd object
   // ref'd by each DataChannelConnection to release the SCTP usrlib via
   // sctp_finish). Right now, the single instance of this class is
@@ -195,17 +197,17 @@ debug_printf(const char *format, ...)
 
   if (MOZ_LOG_TEST(gSCTPLog, LogLevel::Debug)) {
     va_start(ap, format);
 #ifdef _WIN32
     if (vsnprintf_s(buffer, sizeof(buffer), _TRUNCATE, format, ap) > 0) {
 #else
     if (VsprintfLiteral(buffer, format, ap) > 0) {
 #endif
-      PR_LogPrint("%s", buffer);
+      SCTP_LOG(("%s", buffer));
     }
     va_end(ap);
   }
 }
 
 DataChannelConnection::DataChannelConnection(DataConnectionListener *listener) :
    mLock("netwerk::sctp::DataChannelConnection")
 {
@@ -636,17 +638,17 @@ DataChannelConnection::ProcessQueuedOpen
 void
 DataChannelConnection::SctpDtlsInput(TransportFlow *flow,
                                      const unsigned char *data, size_t len)
 {
   if (MOZ_LOG_TEST(gSCTPLog, LogLevel::Debug)) {
     char *buf;
 
     if ((buf = usrsctp_dumppacket((void *)data, len, SCTP_DUMP_INBOUND)) != nullptr) {
-      PR_LogPrint("%s", buf);
+      SCTP_LOG(("%s", buf));
       usrsctp_freedumpbuffer(buf);
     }
   }
   // Pass the data to SCTP
   usrsctp_conninput(static_cast<void *>(this), data, len, 0);
 }
 
 int
@@ -666,17 +668,17 @@ DataChannelConnection::SctpDtlsOutput(vo
 {
   DataChannelConnection *peer = static_cast<DataChannelConnection *>(addr);
   int res;
 
   if (MOZ_LOG_TEST(gSCTPLog, LogLevel::Debug)) {
     char *buf;
 
     if ((buf = usrsctp_dumppacket(buffer, length, SCTP_DUMP_OUTBOUND)) != nullptr) {
-      PR_LogPrint("%s", buf);
+      SCTP_LOG(("%s", buf));
       usrsctp_freedumpbuffer(buf);
     }
   }
   // We're async proxying even if on the STSThread because this is called
   // with internal SCTP locks held in some cases (such as in usrsctp_connect()).
   // SCTP has an option for Apple, on IP connections only, to release at least
   // one of the locks before calling a packet output routine; with changes to
   // the underlying SCTP stack this might remove the need to use an async proxy.
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1156,9 +1156,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 = 480;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1504884031179000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1504971037040000);
--- a/security/manager/ssl/nsSTSPreloadList.errors
+++ b/security/manager/ssl/nsSTSPreloadList.errors
@@ -23,17 +23,16 @@ 10tacle.io: could not connect to host
 123test.de: did not receive HSTS header
 126ium.moe: could not connect to host
 127011-networks.ch: could not connect to host
 12vpnchina.com: could not connect to host
 163pwd.com: could not connect to host
 16packets.com: could not connect to host
 188betwarriors.co.uk: could not connect to host
 188trafalgar.ca: did not receive HSTS header
-1981612088.rsc.cdn77.org: did not receive HSTS header
 1a-jva.de: could not connect to host
 1cover.com: could not connect to host
 1k8b.com: could not connect to host
 1password.com: did not receive HSTS header
 1s.tn: did not receive HSTS header
 1stcapital.com.sg: did not receive HSTS header
 1xcess.com: did not receive HSTS header
 1years.cc: could not connect to host
@@ -59,40 +58,37 @@ 360gradus.com: did not receive HSTS head
 365.or.jp: could not connect to host
 368mibn.com: could not connect to host
 38sihu.com: could not connect to host
 39sihu.com: could not connect to host
 3chit.cf: could not connect to host
 3click-loan.com: could not connect to host
 3delivered.com: could not connect to host
 3dproteinimaging.com: did not receive HSTS header
-3phase.pw: could not connect to host
 3sreporting.com: did not receive HSTS header
 3yearloans.com: max-age too low: 0
 404.sh: max-age too low: 0
 404404.info: could not connect to host
 420dongstorm.com: could not connect to host
 42ms.org: could not connect to host
-441jj.com: did not receive HSTS header
 4455software.com: did not receive HSTS header
 4679.space: could not connect to host
 4azino777.ru: did not receive HSTS header
 4cclothing.com: could not connect to host
 4elements.com: did not receive HSTS header
 4eyes.ch: did not receive HSTS header
 4miners.net: could not connect to host
 4sqsu.eu: could not connect to host
 4w-performers.link: could not connect to host
 50millionablaze.org: could not connect to host
 540.co: did not receive HSTS header
 56ct.com: could not connect to host
 60ych.net: did not receive HSTS header
 6120.eu: did not receive HSTS header
 69square.com: could not connect to host
-724go.com: could not connect to host
 7kovrikov.ru: did not receive HSTS header
 808.lv: could not connect to host
 83i.net: could not connect to host
 911911.pw: could not connect to host
 922.be: could not connect to host
 960news.ca: could not connect to host
 9651678.ru: could not connect to host
 99511.fi: did not receive HSTS header
@@ -132,37 +128,39 @@ accessacademies.org: max-age too low: 0
 accountradar.com: could not connect to host
 accounts-p.com: could not connect to host
 accuenergy.com: max-age too low: 0
 acelpb.com: did not receive HSTS header
 acevik.de: could not connect to host
 acg18.us: did not receive HSTS header
 acgmoon.org: did not receive HSTS header
 acisonline.net: did not receive HSTS header
+acmle.com: could not connect to host
 acorns.com: did not receive HSTS header
 acr.im: could not connect to host
 acslimited.co.uk: did not receive HSTS header
 activateplay.com: did not receive HSTS header
 activeweb.top: could not connect to host
 activiti.alfresco.com: did not receive HSTS header
 actu-medias.com: did not receive HSTS header
 acuve.jp: could not connect to host
 ada.is: max-age too low: 2592000
 adajwells.me: could not connect to host
+adamgold.net: could not connect to host
 adams.net: max-age too low: 0
 adamwk.com: did not receive HSTS header
 addaxpetroleum.com: could not connect to host
 addvocate.com: could not connect to host
 adelevie.com: could not connect to host
 adequatetechnology.com: could not connect to host
 aderal.io: could not connect to host
 adhs-chaoten.net: did not receive HSTS header
 adindexr.com: could not connect to host
 admin.google.com: did not receive HSTS header (error ignored - included regardless)
-admitcard.co.in: could not connect to host
+admitcard.co.in: did not receive HSTS header
 admsel.ec: could not connect to host
 adopteunsiteflash.com: did not receive HSTS header
 adquisitio.co.uk: could not connect to host
 adquisitio.de: could not connect to host
 adquisitio.es: could not connect to host
 adquisitio.fr: could not connect to host
 adquisitio.it: could not connect to host
 adrianseo.ro: did not receive HSTS header
@@ -193,16 +191,17 @@ agentseeker.ca: did not receive HSTS hea
 agevio.com: could not connect to host
 agrimap.com: did not receive HSTS header
 agrios.de: did not receive HSTS header
 agro-id.gov.ua: did not receive HSTS header
 ahabingo.com: did not receive HSTS header
 ahoynetwork.com: did not receive HSTS header
 ahri.ovh: could not connect to host
 aidanwoods.com: did not receive HSTS header
+aids.gov: did not receive HSTS header
 airbnb.com: did not receive HSTS header
 aircomms.com: did not receive HSTS header
 airlea.com: could not connect to host
 airproto.com: could not connect to host
 aishnair.com: could not connect to host
 aiticon.de: did not receive HSTS header
 aiw-thkoeln.online: could not connect to host
 ajmahal.com: could not connect to host
@@ -313,16 +312,17 @@ aniplus.cf: could not connect to host
 aniplus.gq: could not connect to host
 aniplus.ml: could not connect to host
 anitklib.ml: could not connect to host
 ankakaak.com: could not connect to host
 ankaraprofesyonelnakliyat.com: did not receive HSTS header
 ankaraprofesyonelnakliyat.com.tr: did not receive HSTS header
 annabellaw.com: did not receive HSTS header
 anomaly.ws: did not receive HSTS header
+anongoth.pl: could not connect to host
 anonymo.co.uk: could not connect to host
 anonymo.uk: could not connect to host
 anonymousstatecollegelulzsec.com: could not connect to host
 anook.com: max-age too low: 0
 another.ch: could not connect to host
 anstoncs.com.au: max-age too low: 86400
 ant.land: could not connect to host
 anthenor.co.uk: could not connect to host
@@ -404,25 +404,23 @@ asdpress.cn: could not connect to host
 ashlane-cottages.com: could not connect to host
 asianodor.com: could not connect to host
 ask.pe: could not connect to host
 askfit.cz: did not receive HSTS header
 asm-x.com: could not connect to host
 asmui.ga: could not connect to host
 asmui.ml: could not connect to host
 asr.cloud: could not connect to host
-asr.li: could not connect to host
 asr.rocks: could not connect to host
 asr.solar: could not connect to host
 asrob.eu: could not connect to host
 ass.org.au: did not receive HSTS header
 assekuranzjobs.de: could not connect to host
 asset-alive.com: did not receive HSTS header
 asset-alive.net: did not receive HSTS header
-asspinter.me: could not connect to host
 astrath.net: 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
 asuhe.win: did not receive HSTS header
 atavio.at: could not connect to host
 atavio.ch: could not connect to host
 atavio.de: did not receive HSTS header
@@ -473,17 +471,16 @@ aviacao.pt: did not receive HSTS header
 avinet.com: max-age too low: 0
 avqueen.cn: did not receive HSTS header
 avus-automobile.com: did not receive HSTS header
 awanderlustadventure.com: did not receive HSTS header
 awg-mode.de: did not receive HSTS header
 awxg.com: could not connect to host
 axado.com.br: did not receive HSTS header
 axeny.com: did not receive HSTS header
-ayothemes.com: could not connect to host
 ayuru.info: could not connect to host
 az.search.yahoo.com: did not receive HSTS header
 azino777.ru: did not receive HSTS header
 azort.com: did not receive HSTS header
 azprep.us: did not receive HSTS header
 b-landia.net: could not connect to host
 b303.me: did not receive HSTS header
 b3orion.com: max-age too low: 0
@@ -595,17 +592,16 @@ bestlashesandbrows.com: did not receive 
 betcafearena.ro: could not connect to host
 bethditto.com: did not receive HSTS header
 betnet.fr: could not connect to host
 betplanning.it: did not receive HSTS header
 bets.de: did not receive HSTS header
 bettween.com: could not connect to host
 betz.ro: did not receive HSTS header
 bevapehappy.com: did not receive HSTS header
-bevinco2020.com: did not receive HSTS header
 beyond-edge.com: could not connect to host
 beyuna.co.uk: did not receive HSTS header
 beyuna.eu: did not receive HSTS header
 beyuna.nl: did not receive HSTS header
 bezorg.ninja: could not connect to host
 bf.am: max-age too low: 0
 bfelob.gov: max-age too low: 86400
 bffm.biz: max-age too low: 0
@@ -616,16 +612,17 @@ bi.search.yahoo.com: did not receive HST
 biblerhymes.com: did not receive HSTS header
 bidon.ca: did not receive HSTS header
 bieberium.de: could not connect to host
 bienenblog.cc: could not connect to host
 big-black.de: did not receive HSTS header
 bigbbqbrush.bid: could not connect to host
 bigbrownpromotions.com.au: did not receive HSTS header
 bigshinylock.minazo.net: could not connect to host
+biguixhe.net: could not connect to host
 bildiri.ci: did not receive HSTS header
 bildschirmflackern.de: did not receive HSTS header
 billaud.eu.org: could not connect to host
 billin.net: did not receive HSTS header
 billkiss.com: could not connect to host
 billninja.com: did not receive HSTS header
 billrusling.com: could not connect to host
 binderapp.net: could not connect to host
@@ -676,16 +673,17 @@ blha303.com.au: could not connect to hos
 blindsexdate.nl: could not connect to host
 blitzprog.org: could not connect to host
 blocksatz-medien.de: did not receive HSTS header
 blog-ritaline.com: could not connect to host
 blog.cyveillance.com: did not receive HSTS header
 blog.torproject.org: did not receive HSTS header
 blogabout.ru: did not receive HSTS header
 bloglikepro.com: could not connect to host
+blowjs.com: could not connect to host
 blubbablasen.de: could not connect to host
 blucas.org: did not receive HSTS header
 blueglobalmedia.com: could not connect to host
 blueliv.com: did not receive HSTS header
 bluescloud.xyz: could not connect to host
 bluetenmeer.com: did not receive HSTS header
 bluketing.com: could not connect to host
 bluserv.net: did not receive HSTS header
@@ -737,16 +735,17 @@ brainvation.de: did not receive HSTS hea
 bran.cc: could not connect to host
 branchtrack.com: did not receive HSTS header
 brandnewdays.nl: could not connect to host
 brandon.so: could not connect to host
 brandred.net: could not connect to host
 brandspray.com: could not connect to host
 bravz.de: could not connect to host
 bregnedalsystems.dk: did not receive HSTS header
+bremensaki.com: could not connect to host
 brettabel.com: did not receive HSTS header
 brickoo.com: could not connect to host
 bridholm.se: could not connect to host
 brightstarkids.com.au: did not receive HSTS header
 britzer-toner.de: did not receive HSTS header
 brks.xyz: could not connect to host
 broken-oak.com: could not connect to host
 brokenhands.io: could not connect to host
@@ -804,17 +803,16 @@ by4cqb.cn: could not connect to host
 bydisk.com: could not connect to host
 bypassed.press: could not connect to host
 bypassed.today: did not receive HSTS header
 bypassed.works: did not receive HSTS header
 bypassed.world: did not receive HSTS header
 bypro.xyz: could not connect to host
 bysymphony.com: max-age too low: 0
 byte.wtf: did not receive HSTS header
-bytejail.com: could not connect to host
 bytema.re: could not connect to host
 bytepark.de: did not receive HSTS header
 bytesund.biz: could not connect to host
 c0rn3j.com: did not receive HSTS header
 c1yd3i.me: could not connect to host
 c3b.info: could not connect to host
 cabarave.com: could not connect to host
 cabsites.com: could not connect to host
@@ -824,17 +822,17 @@ cadao.me: did not receive HSTS header
 cadoth.net: 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
 caim.cz: did not receive HSTS header
 cainhosting.com: did not receive HSTS header
 caizx.com: could not connect to host
 cajapopcorn.com: did not receive HSTS header
-cake.care: could not connect to host
+cake.care: did not receive HSTS header
 calcularpagerank.com.br: did not receive HSTS header
 calendarr.com: did not receive HSTS header
 calgaryconstructionjobs.com: did not receive HSTS header
 calix.com: max-age too low: 0
 callaction.co: max-age too low: 2628000
 calltrackingreports.com: could not connect to host
 caltonnutrition.com: did not receive HSTS header
 calvin.me: max-age too low: 2592000
@@ -883,20 +881,23 @@ cashmojo.com: could not connect to host
 cashmyphone.ch: could not connect to host
 casino-cashflow.ru: did not receive HSTS header
 casinostest.com: did not receive HSTS header
 casioshop.eu: did not receive HSTS header
 casovi.cf: could not connect to host
 catarsisvr.com: could not connect to host
 catinmay.com: did not receive HSTS header
 catnapstudios.com: could not connect to host
+cattivo.nl: did not receive HSTS header
+cavac.at: 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
+cbdev.de: could not connect to host
 cbengineeringinc.com: could not connect to host
 cbhq.net: could not connect to host
 ccblog.de: did not receive HSTS header
 cctech.ph: did not receive HSTS header
 cd.search.yahoo.com: 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
@@ -971,27 +972,27 @@ chotu.net: could not connect to host
 chris-web.info: could not connect to host
 chrisandsarahinasia.com: did not receive HSTS header
 chrisfaber.com: could not connect to host
 chriskyrouac.com: could not connect to host
 chrisopperwall.com: did not receive HSTS header
 christiaandruif.nl: could not connect to host
 christianbargon.de: did not receive HSTS header
 christianbro.gq: could not connect to host
-christianhoffmann.info: could not connect to host
 christophercolumbusfoundation.gov: did not receive HSTS header
 christophheich.me: could not connect to host
 chrisupjohn.com: could not connect to host
 chrome-devtools-frontend.appspot.com: did not receive HSTS header (error ignored - included regardless)
 chrome.google.com: did not receive HSTS header (error ignored - included regardless)
 chua.cf: could not connect to host
 chulado.com: did not receive HSTS header
 cidr.ml: could not connect to host
 cigarblogs.net: could not connect to host
 cigi.site: could not connect to host
+ciicutini.ro: did not receive HSTS header
 cim2b.de: could not connect to host
 cimalando.eu: could not connect to host
 cintdirect.com: could not connect to host
 ciplanutrition.com: did not receive HSTS header
 ciscommerce.net: [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 118"  data: no]
 citiagent.cz: could not connect to host
 cityoflaurel.org: did not receive HSTS header
 ciuciucadou.ro: could not connect to host
@@ -1066,17 +1067,16 @@ codealkemy.co: could not connect to host
 codeco.pw: could not connect to host
 codecontrollers.de: could not connect to host
 codeforce.io: could not connect to host
 codeforhakodate.org: could not connect to host
 codelayer.ca: could not connect to host
 codelitmus.com: did not receive HSTS header
 codemonkeyrawks.net: did not receive HSTS header
 codepoet.de: could not connect to host
-codepult.com: could not connect to host
 codepx.com: did not receive HSTS header
 codiva.io: max-age too low: 2592000
 coffeeetc.co.uk: did not receive HSTS header
 coffeestrategies.com: max-age too low: 0
 coiffeurschnittstelle.ch: did not receive HSTS header
 coindam.com: could not connect to host
 coldlostsick.net: could not connect to host
 collegepulse.org: did not receive HSTS header
@@ -1121,17 +1121,16 @@ contarkos.xyz: could not connect to host
 content-api-dev.azurewebsites.net: could not connect to host
 continuumgaming.com: could not connect to host
 controlcenter.gigahost.dk: did not receive HSTS header
 convert.zone: could not connect to host
 cooink.net: could not connect to host
 cookingreporter.com: did not receive HSTS header
 coolchevy.org.ua: did not receive HSTS header
 coole-meister.de: could not connect to host
-coolrc.me: could not connect to host
 cooxa.com: did not receive HSTS header
 cor-ser.es: could not connect to host
 coralproject.net: did not receive HSTS header
 coralrosado.com.br: did not receive HSTS header
 corbax.com: did not receive HSTS header
 corderoscleaning.com: did not receive HSTS header
 cordial-restaurant.com: did not receive HSTS header
 core.mx: could not connect to host
@@ -1141,16 +1140,18 @@ corgicloud.com: could not connect to hos
 corkyoga.site: could not connect to host
 cormactagging.ie: could not connect to host
 cormilu.com.br: did not receive HSTS header
 correctpaardbatterijnietje.nl: did not receive HSTS header
 corruption-mc.net: could not connect to host
 corruption-rsps.net: could not connect to host
 corruption-server.net: could not connect to host
 corsa-b.uk: could not connect to host
+coughlan.de: could not connect to host
+coumoul.fr: could not connect to host
 count.sh: could not connect to host
 countrybrewer.com.au: did not receive HSTS header
 courageousparentsnetwork.org: did not receive HSTS header
 couragewhispers.ca: did not receive HSTS header
 coursdeprogrammation.com: could not connect to host
 coursella.com: did not receive HSTS header
 covenantbank.net: could not connect to host
 coverduck.ru: could not connect to host
@@ -1227,16 +1228,18 @@ curlyroots.com: did not receive HSTS hea
 curroapp.com: could not connect to host
 curveweb.co.uk: did not receive HSTS header
 custe.rs: could not connect to host
 cuteys.de: max-age too low: 86400
 cutorrent.com: could not connect to host
 cuvva.eu: did not receive HSTS header
 cuvva.insure: did not receive HSTS header
 cuvva.io: did not receive HSTS header
+cuvva.it: did not receive HSTS header
+cuvva.me: did not receive HSTS header
 cuvva.org: did not receive HSTS header
 cyanogenmod.xxx: could not connect to host
 cyberdos.de: did not receive HSTS header
 cyberpunk.ca: could not connect to host
 cybershambles.com: could not connect to host
 cybersmart.co.uk: did not receive HSTS header
 cyberxpert.nl: could not connect to host
 cycleluxembourg.lu: did not receive HSTS header
@@ -1277,17 +1280,16 @@ dark-x.cf: could not connect to host
 darkengine.io: could not connect to host
 darkhole.cn: could not connect to host
 darkkeepers.dk: did not receive HSTS header
 darknebula.space: could not connect to host
 darkpony.ru: could not connect to host
 darksideof.it: could not connect to host
 darkstance.org: could not connect to host
 darrenellis.xyz: could not connect to host
-daryl.moe: could not connect to host
 dashburst.com: did not receive HSTS header
 dashnimorad.com: did not receive HSTS header
 data-abundance.com: could not connect to host
 datacalle.com: could not connect to host
 datahove.no: did not receive HSTS header
 datajapan.co.jp: could not connect to host
 datarank.com: max-age too low: 0
 dataretention.solutions: could not connect to host
@@ -1359,16 +1361,17 @@ desiccantpackets.com: did not receive HS
 designandmore.it: did not receive HSTS header
 designgears.com: did not receive HSTS header
 designthinking.or.jp: did not receive HSTS header
 desserteagleselvenar.tk: could not connect to host
 destinationbijoux.fr: could not connect to host
 destom.be: could not connect to host
 detector.exposed: could not connect to host
 detest.org: could not connect to host
+detutorial.com: max-age too low: 0
 deusu.org: did not receive HSTS header
 deux.solutions: could not connect to host
 deuxsol.co: could not connect to host
 deuxsol.com: could not connect to host
 deuxsolutions.com: could not connect to host
 deuxvia.com: could not connect to host
 devafterdark.com: could not connect to host
 devcu.com: could not connect to host
@@ -1399,17 +1402,16 @@ diezel.com: could not connect to host
 diferenca.com: did not receive HSTS header
 digioccumss.ddns.net: could not connect to host
 digitalbank.kz: could not connect to host
 digitaldaddy.net: could not connect to host
 digitalero.rip: did not receive HSTS header
 digitalriver.tk: could not connect to host
 digitalskillswap.com: could not connect to host
 dim.lighting: could not connect to host
-dimonb.com: could not connect to host
 dinamoelektrik.com: could not connect to host
 dineachook.com.au: did not receive HSTS header
 dingcc.me: could not connect to host
 dinkum.online: could not connect to host
 directhskincream.com: could not connect to host
 directorinegocis.cat: could not connect to host
 discovery.lookout.com: did not receive HSTS header
 dise-online.de: did not receive HSTS header
@@ -1465,16 +1467,17 @@ domaine-aigoual-cevennes.com: did not re
 domaris.de: did not receive HSTS header
 dominicpratt.de: did not receive HSTS header
 dominioanimal.com: could not connect to host
 dominique-mueller.de: did not receive HSTS header
 donmez.uk: could not connect to host
 donmez.ws: could not connect to host
 donttrustrobots.nl: could not connect to host
 donzelot.co.uk: max-age too low: 3600
+doodledraw.ninja: did not receive HSTS header
 dooku.cz: could not connect to host
 doomleika.com: could not connect to host
 doooonoooob.com: could not connect to host
 doridian.com: could not connect to host
 doridian.de: could not connect to host
 doridian.net: did not receive HSTS header
 doridian.org: could not connect to host
 dot42.no: could not connect to host
@@ -1537,17 +1540,16 @@ e-biografias.net: did not receive HSTS h
 e-deca2.org: did not receive HSTS header
 e-isfa.eu: did not receive HSTS header
 e-sa.com: did not receive HSTS header
 e3amn2l.com: could not connect to host
 earga.sm: could not connect to host
 earlybirdsnacks.com: could not connect to host
 earthrise16.com: could not connect to host
 easez.net: did not receive HSTS header
-eason-yang.com: could not connect to host
 easychiller.org: could not connect to host
 easyocm.hu: did not receive HSTS header
 easyplane.it: did not receive HSTS header
 eatlowcarb.de: did not receive HSTS header
 eauclairecommerce.com: could not connect to host
 ebankcbt.com: could not connect to host
 ebecs.com: did not receive HSTS header
 ebiografia.com: did not receive HSTS header
@@ -1628,33 +1630,36 @@ emilyhorsman.com: could not connect to 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
 empty-r.com: could not connect to host
+emrenovation.com: could not connect to host
 enaah.de: could not connect to host
 enargia.jp: max-age too low: 0
 encoder.pw: could not connect to host
 encontrebarato.com.br: did not receive HSTS header
 encrypted.google.com: did not receive HSTS header (error ignored - included regardless)
 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
 enefan.jp: could not connect to host
 engelwerbung.com: did not receive HSTS header
 enginsight.com: did not receive HSTS header
 englishyamal.ru: did not receive HSTS header
 enigmacpt.com: did not receive HSTS header
 enigmail.net: did not receive HSTS header
 enjoy-nepal.de: max-age too low: 0
 enjoymayfield.com: max-age too low: 0
+enlightenment.org: did not receive HSTS header
 enskat.de: could not connect to host
 enskatson-sippe.de: could not connect to host
 enteente.club: could not connect to host
 enteente.space: could not connect to host
 enteente.xyz: could not connect to host
 enterdev.co: did not receive HSTS header
 enterprise-threat-monitor.com: max-age too low: 0
 enterprisecarclub.co.uk: did not receive HSTS header
@@ -1776,16 +1781,17 @@ fail4free.de: did not receive HSTS heade
 failforward.org: max-age too low: 0
 fairkey.dk: did not receive HSTS header
 fairlyoddtreasures.com: did not receive HSTS header
 faizan.net: could not connect to host
 faizan.xyz: could not connect to host
 fakeletters.org: did not receive HSTS header
 faktura.pl: did not receive HSTS header
 falconfrag.com: could not connect to host
+falkhusemann.de: could not connect to host
 falkp.no: did not receive HSTS header
 fallenangelspirits.uk: could not connect to host
 familie-sprink.de: could not connect to host
 familie-zimmermann.at: could not connect to host
 famio.cn: could not connect to host
 fantasyfootballpundit.com: max-age too low: 300
 fanyl.cn: could not connect to host
 farhadexchange.com: did not receive HSTS header
@@ -1855,17 +1861,16 @@ fish2.me: did not receive HSTS header
 fishlinemedia.com: max-age too low: 0
 fit4medien.de: did not receive HSTS header
 fitbylo.com: did not receive HSTS header
 fitiapp.com: could not connect to host
 fitnesswerk.de: could not connect to host
 five.vn: did not receive HSTS header
 fivestarsitters.com: did not receive HSTS header
 fivezerocreative.com: did not receive HSTS header
-fixate.ru: could not connect to host
 fixatom.com: did not receive HSTS header
 fixingdns.com: did not receive HSTS header
 fixtectools.co.za: could not connect to host
 fj.search.yahoo.com: did not receive HSTS header
 fjruiz.es: did not receive HSTS header
 fkcovering.be: could not connect to host
 flags.ninja: could not connect to host
 flamewall.net: could not connect to host
@@ -1910,16 +1915,17 @@ foraje-profesionale.ro: did not receive 
 forbook.net: could not connect to host
 fordbydesign.com: could not connect to host
 foreignexchangeresource.com: did not receive HSTS header
 foreveralone.io: could not connect to host
 forex-dan.com: did not receive HSTS header
 forgix.com: could not connect to host
 formazioneopen.it: could not connect to host
 formula.cf: could not connect to host
+forty8creates.com: did not receive HSTS header
 fotiu.com: could not connect to host
 fotm.net: max-age too low: 30000
 fotocerita.net: could not connect to host
 fotografosexpertos.com: did not receive HSTS header
 fotopasja.info: could not connect to host
 foudufafa.de: could not connect to host
 foxdev.io: did not receive HSTS header
 foxley-farm.co.uk: did not receive HSTS header
@@ -1934,16 +1940,17 @@ frankwei.xyz: did not receive HSTS heade
 franta.biz: did not receive HSTS header
 franta.email: did not receive HSTS header
 franzt.de: could not connect to host
 franzt.ovh: could not connect to host
 frasesdeamizade.pt: could not connect to host
 frasys.io: could not connect to host
 frasys.net: could not connect to host
 fraurichter.net: could not connect to host
+frederik-braun.com: did not receive HSTS header
 fredvoyage.fr: did not receive HSTS header
 freeflow.tv: could not connect to host
 freelanced.co.za: could not connect to host
 freematthale.net: did not receive HSTS header
 freenetproject.org: did not receive HSTS header
 freesoftwaredriver.com: did not receive HSTS header
 freethought.org.au: could not connect to host
 freeutopia.org: did not receive HSTS header
@@ -2027,24 +2034,27 @@ gameparade.de: could not connect to host
 gamepiece.com: could not connect to host
 gamers-life.fr: could not connect to host
 gamerslair.org: did not receive HSTS header
 gamerz-point.de: could not connect to host
 gamesdepartment.co.uk: did not receive HSTS header
 gameserver-sponsor.de: could not connect to host
 gamingmedia.eu: could not connect to host
 gampenhof.de: did not receive HSTS header
+gapdirect.com: could not connect to host
 gaptek.id: did not receive HSTS header
 garageon.net: did not receive HSTS header
 garciamartin.me: could not connect to host
 garden.trade: max-age too low: 0
 gatapro.net: could not connect to host
 gatorsa.es: did not receive HSTS header
 gdegem.org: did not receive HSTS header
 gdpventure.com: max-age too low: 0
+gdz-spishy.com: did not receive HSTS header
+gdz.tv: did not receive HSTS header
 gedankenbude.info: could not connect to host
 geekcast.co.uk: did not receive HSTS header
 geeky.software: could not connect to host
 geemo.top: could not connect to host
 geeq.ch: could not connect to host
 geli-graphics.com: did not receive HSTS header
 genuu.com: could not connect to host
 genuxation.com: could not connect to host
@@ -2119,17 +2129,16 @@ globalbridge-japan.com: did not receive 
 globalexpert.co.nz: 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
 gm-assicurazioni.it: could not connect to host
 gm.search.yahoo.com: did not receive HSTS header
 gmail.com: did not receive HSTS header (error ignored - included regardless)
 gmoes.at: max-age too low: 600000
-gnetion.com: could not connect to host
 go.ax: did not receive HSTS header
 go2sh.de: did not receive HSTS header
 goabonga.com: could not connect to host
 goalsetup.com: did not receive HSTS header
 goaltree.ch: did not receive HSTS header
 goarmy.eu: could not connect to host
 goat.chat: did not receive HSTS header
 goat.xyz: did not receive HSTS header
@@ -2249,16 +2258,17 @@ gvt3.com: could not connect to host (err
 gw2reload.eu: could not connect to host
 gwijaya.com: could not connect to host
 gwtest.us: could not connect to host
 gxlrx.net: could not connect to host
 gyboche.com: could not connect to host
 gyboche.science: could not connect to host
 gycis.me: could not connect to host
 gylauto.fr: could not connect to host
+gyoza.beer: could not connect to host
 gypthecat.com: max-age too low: 604800
 gyz.io: could not connect to host
 h-og.com: could not connect to host
 h2check.org: could not connect to host
 haarkliniek.com: did not receive HSTS header
 habanaavenue.com: max-age too low: 0
 habbo.life: could not connect to host
 habbotalk.nl: could not connect to host
@@ -2337,23 +2347,26 @@ hdsmigrationtool.com: could not connect 
 hduin.xyz: could not connect to host
 hdwallpapers.net: did not receive HSTS header
 healtious.com: did not receive HSTS header
 heart.ge: did not receive HSTS header
 heartlandrentals.com: did not receive HSTS header
 hearty.space: could not connect to host
 heartyme.net: could not connect to host
 heathmanners.com: could not connect to host
+heavenlysmokenc.com: could not connect to host
 hebaus.com: could not connect to host
+hedonistic.org: could not connect to host
 heidilein.info: did not receive HSTS header
 heijblok.com: could not connect to host
 heimnetze.org: could not connect to host
 helgakristoffer.com: could not connect to host
 helgakristoffer.wedding: could not connect to host
 helingqi.com: could not connect to host
+hellomouse.cf: could not connect to host
 helloworldhost.com: did not receive HSTS header
 helpadmin.net: could not connect to host
 helpium.de: [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 118"  data: no]
 helpmebuild.com: did not receive HSTS header
 hemdal.se: could not connect to host
 hencagon.com: could not connect to host
 hepteract.us: could not connect to host
 heritagedentistry.ca: did not receive HSTS header
@@ -2377,16 +2390,17 @@ hikariempire.com: could not connect to h
 hilinemerchandising.com: did not receive HSTS header
 hillcity.org.nz: did not receive HSTS header
 hilnu.tk: could not connect to host
 hintergedanken.com: could not connect to host
 hipercultura.com: did not receive HSTS header
 hiphopconvention.nl: could not connect to host
 hitoy.org: did not receive HSTS header
 hittipps.com: did not receive HSTS header
+hiv.gov: did not receive HSTS header
 hjw-kunstwerk.de: could not connect to host
 hlyue.com: did not receive HSTS header
 hmm.nyc: could not connect to host
 hn.search.yahoo.com: did not receive HSTS header
 hodne.io: could not connect to host
 hoerbuecher-und-hoerspiele.de: could not connect to host
 hofiprojekt.cz: did not receive HSTS header
 hogar123.es: could not connect to host
@@ -2405,16 +2419,17 @@ horosho.in: could not connect to host
 horseboners.xxx: did not receive HSTS header
 hortifarm.ro: did not receive HSTS header
 horvathtom.com: could not connect to host
 hosteasy.nl: did not receive HSTS header
 hostedtalkgadget.google.com: did not receive HSTS header (error ignored - included regardless)
 hostelite.com: did not receive HSTS header
 hostgarou.com: did not receive HSTS header
 hostinaus.com.au: did not receive HSTS header
+hostingfj.com: did not receive HSTS header
 hostisan.com: could not connect to host
 hotartup.com: could not connect to host
 hotchillibox.co.za: could not connect to host
 hotchillibox.com: max-age too low: 0
 hotchoc.io: did not receive HSTS header
 hotelvue.nl: could not connect to host
 houkago-step.com: did not receive HSTS header
 housemaadiah.org: did not receive HSTS header
@@ -2446,17 +2461,16 @@ huskybutt.dog: could not connect to host
 hvh.no: could not connect to host
 hxying.com: could not connect to host
 hycken.com: did not receive HSTS header
 hydra.ws: could not connect to host
 hydra.zone: could not connect to host
 hydronium.cf: could not connect to host
 hydronium.ga: could not connect to host
 hydronium.me: could not connect to host
-hydronium.ml: could not connect to host
 hydronium.tk: could not connect to host
 hypa.net.au: did not receive HSTS header
 hyper69.com: did not receive HSTS header
 hysg.me: could not connect to host
 i-jp.net: could not connect to host
 i-partners.sk: did not receive HSTS header
 i10z.com: could not connect to host
 iamjoshellis.com: could not connect to host
@@ -2484,25 +2498,26 @@ idacmedia.com: max-age too low: 5184000
 ideal-envelopes.co.uk: did not receive HSTS header
 idealmykonos.com: did not receive HSTS header
 ideasmeetingpoint.com: could not connect to host
 ideation-inc.co.jp: could not connect to host
 idecode.net: could not connect to host
 idedr.com: could not connect to host
 identitylabs.uk: could not connect to host
 idgsupply.com: could not connect to host
-idinby.dk: did not receive HSTS header
+idid.tk: could not connect to host
 idlekernel.com: could not connect to host
 idontexist.me: did not receive HSTS header
 ie.search.yahoo.com: did not receive HSTS header
 iec.pe: could not connect to host
 ierna.com: did not receive HSTS header
 ies-italia.it: did not receive HSTS header
 ies.id.lv: could not connect to host
 ifad.org: did not receive HSTS header
+ifasec.de: could not connect to host
 ifastuniversity.com: did not receive HSTS header
 ifleurs.com: could not connect to host
 ifx.ee: could not connect to host
 ignatisd.gr: did not receive HSTS header
 igule.net: could not connect to host
 ihrlotto.de: could not connect to host
 ihrnationalrat.ch: could not connect to host
 ihsbsd.me: could not connect to host
@@ -2639,16 +2654,17 @@ iraqidinar.org: did not receive HSTS hea
 irazimina.ru: did not receive HSTS header
 irccloud.com: did not receive HSTS header
 iready.ro: could not connect to host
 irelandesign.com: did not receive HSTS header
 irmtrudjurke.de: did not receive HSTS header
 irukandjilabs.com: could not connect to host
 is-a-furry.org: did not receive HSTS header
 isabellehogarth.co.uk: could not connect to host
+isbc-telecom.ru: could not connect to host
 ischool.co.jp: did not receive HSTS header
 isdf.me: could not connect to host
 iseek.biz: max-age too low: 0
 iseulde.com: did not receive HSTS header
 ishillaryclintoninprisonyet.com: could not connect to host
 ishome.org: could not connect to host
 isitamor.pm: could not connect to host
 iskaz.rs: did not receive HSTS header
@@ -2658,17 +2674,16 @@ israkurort.com: did not receive HSTS hea
 istanbultravelguide.info: could not connect to host
 istaspirtslietas.lv: did not receive HSTS header
 it-go.net: did not receive HSTS header
 itechgeek.com: max-age too low: 0
 ithakama.com: did not receive HSTS header
 ithakama.cz: did not receive HSTS header
 itos.asia: did not receive HSTS header
 itos.pl: did not receive HSTS header
-itpros.ru: did not receive HSTS header
 itriskltd.com: could not connect to host
 itsadog.co.uk: did not receive HSTS header
 itsagadget.com: did not receive HSTS header
 itsamurai.ru: max-age too low: 2592000
 itsecurityassurance.pw: could not connect to host
 itsg-faq.de: could not connect to host
 itshost.ru: could not connect to host
 ivi-fertility.com: max-age too low: 0
@@ -2766,31 +2781,33 @@ jiaidu.com: could not connect to host
 jiangzm.com: could not connect to host
 jichi.io: did not receive HSTS header
 jikken.de: could not connect to host
 jimas.eu: did not receive HSTS header
 jimgao.tk: did not receive HSTS header
 jimmycai.org: could not connect to host
 jingyuesi.com: could not connect to host
 jirav.io: could not connect to host
+jitsi.org: did not receive HSTS header
 jiyue.com: could not connect to host
 jiyuu-ni.com: could not connect to host
 jiyuu-ni.net: could not connect to host
 jkb.pics: could not connect to host
 jkbuster.com: could not connect to host
 joakimalgroy.com: could not connect to host
 jobmedic.com: did not receive HSTS header
 jobss.co.uk: did not receive HSTS header
 joedavison.me: could not connect to host
 johannes-sprink.de: could not connect to host
 johnbrownphotography.ch: did not receive HSTS header
 johners.me: could not connect to host
 johnhgaunt.com: did not receive HSTS header
 johnrom.com: did not receive HSTS header
 jointoweb.com: could not connect to host
+jollausers.de: could not connect to host
 jonas-keidel.de: did not receive HSTS header
 jonasgroth.se: did not receive HSTS header
 jonathan.ir: could not connect to host
 jondarby.com: did not receive HSTS header
 jongha.me: could not connect to host
 jonn.me: could not connect to host
 joostbovee.nl: did not receive HSTS header
 jordanhamilton.me: could not connect to host
@@ -2844,37 +2861,37 @@ kaisers.de: did not receive HSTS header
 kaiyuewu.com: could not connect to host
 kalami.nl: could not connect to host
 kalevlamps.co.uk: could not connect to host
 kamalame.co: did not receive HSTS header
 kamikano.com: could not connect to host
 kanar.nl: could not connect to host
 kanehusky.com: could not connect to host
 kaneo-gmbh.de: did not receive HSTS header
-kaniklani.co.za: could not connect to host
 kaohub.com: could not connect to host
 kaplatz.is: could not connect to host
 kapucini.si: max-age too low: 0
 kaputt.com: could not connect to host
 karaoketonight.com: could not connect to host
+karhukamera.com: could not connect to host
 karlis-kavacis.id.lv: did not receive HSTS header
 karpanhellas.com: did not receive HSTS header
 kasilag.me: did not receive HSTS header
 katiaetdavid.fr: could not connect to host
 katproxy.online: could not connect to host
 katproxy.site: could not connect to host
 katproxy.tech: could not connect to host
 katproxy.top: could not connect to host
 kaufkraftkiel.de: could not connect to host
 kausch.at: did not receive HSTS header
 kavinvin.me: could not connect to host
 kawaiiku.com: could not connect to host
 kawaiiku.de: could not connect to host
 kaylyn.ink: could not connect to host
-kcolford.com: did not receive HSTS header
+kcolford.com: could not connect to host
 kd-plus.pp.ua: could not connect to host
 kdata.it: did not receive HSTS header
 kdm-online.de: did not receive HSTS header
 keeley.gq: could not connect to host
 keeley.ml: could not connect to host
 keeleysam.me: could not connect to host
 keepassa.co: could not connect to host
 keepclean.me: could not connect to host
@@ -2901,21 +2918,19 @@ kinderly.co.uk: did not receive HSTS hea
 kinderwagen-test24.de: could not connect to host
 kindof.ninja: could not connect to host
 kingmanhall.org: could not connect to host
 kinkdr.com: could not connect to host
 kinnon.enterprises: could not connect to host
 kintrip.com: did not receive HSTS header
 kionetworks.com: did not receive HSTS header
 kipin.fr: did not receive HSTS header
-kiraboshi.xyz: could not connect to host
 kirara.eu: could not connect to host
 kirkforcongress.com: could not connect to host
 kirkforsenate.com: could not connect to host
-kirkovsky.com: could not connect to host
 kirkpatrickdavis.com: could not connect to host
 kisa.io: could not connect to host
 kisalt.im: did not receive HSTS header
 kiss-register.org: did not receive HSTS header
 kissart.net: could not connect to host
 kisstyle.ru: did not receive HSTS header
 kitakemon.com: could not connect to host
 kitbag.com.au: did not receive HSTS header
@@ -2923,18 +2938,16 @@ kitchen-profi.ru: max-age too low: 25920
 kitchenchaos.de: could not connect to host
 kitchenpunx.com: [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 118"  data: no]
 kitk.at: could not connect to host
 kitsostech.com: could not connect to host
 kitsta.com: could not connect to host
 kiwiirc.com: max-age too low: 5256000
 kizil.net: could not connect to host
 kjaermaxi.me: did not receive HSTS header
-kksg.com: could not connect to host
-klausbrinch.dk: could not connect to host
 klauwd.com: did not receive HSTS header
 klaxn.org: could not connect to host
 kleertjesvoordelig.nl: did not receive HSTS header
 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 118"  data: no]
 kleppe.co: could not connect to host
 kletterkater.com: did not receive HSTS header
 klicktojob.de: could not connect to host
 kmartin.io: did not receive HSTS header
@@ -2966,28 +2979,27 @@ kori.ml: could not connect to host
 korni22.org: did not receive HSTS header
 korsanparti.org: could not connect to host
 kostuumstore.nl: could not connect to host
 kotois.com: could not connect to host
 kotonehoko.net: could not connect to host
 kotovstyle.ru: could not connect to host
 koukni.cz: could not connect to host
 kourpe.online: could not connect to host
+kpebetka.net: could not connect to host
 kprog.net: could not connect to host
 kr.search.yahoo.com: did not receive HSTS header
 kraftfleisch.de: did not receive HSTS header
 kralik.xyz: could not connect to host
-krasovsky.me: could not connect to host
 krayx.com: did not receive HSTS header
 kreavis.com: did not receive HSTS header
 kreb.io: could not connect to host
 kredite.sale: could not connect to host
 krestanskydarek.cz: [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 118"  data: no]
 kriegt.es: did not receive HSTS header
-kristikala.nl: could not connect to host
 kristofferkoch.com: could not connect to host
 krizevackapajdasija.hr: could not connect to host
 krizevci.info: did not receive HSTS header
 kroetenfuchs.de: could not connect to host
 kroodle.nl: did not receive HSTS header
 kroon.email: could not connect to host
 krunut.com: did not receive HSTS header
 krypteia.org: could not connect to host
@@ -3025,16 +3037,17 @@ la-grande-jaugue.fr: did not receive HST
 labaia.info: could not connect to host
 labina.com.tr: did not receive HSTS header
 laboiteapc.fr: did not receive HSTS header
 labordata.io: did not receive HSTS header
 laborie.io: could not connect to host
 labrador-retrievers.com.au: did not receive HSTS header
 labs.directory: could not connect to host
 labs.moscow: did not receive HSTS header
+lacasabelucci.com: could not connect to host
 lacaverne.nl: could not connect to host
 lachlankidson.net: did not receive HSTS header
 lacledeslan.ninja: could not connect to host
 lacocinadelila.com: did not receive HSTS header
 laf.in.net: could not connect to host
 lagalerievirtuelle.fr: did not receive HSTS header
 lagoza.name: could not connect to host
 lalaya.fr: could not connect to host
@@ -3057,36 +3070,34 @@ laredsemanario.com: could not connect to
 laserfuchs.de: did not receive HSTS header
 lashstuff.com: did not receive HSTS header
 latelierdekathy.com: max-age too low: 86400
 latinred.com: could not connect to host
 latus.xyz: could not connect to host
 launchkey.com: did not receive HSTS header
 laurasplacefamilysupport.org.au: did not receive HSTS header
 lausitzer-widerstand.de: did not receive HSTS header
+lavalite.de: could not connect to host
 lavine.ch: did not receive HSTS header
 lavito.cz: did not receive HSTS header
 lavval.com: could not connect to host
 lawly.org: could not connect to host
 laxatus.com: could not connect to host
 laxiongames.es: could not connect to host
-lazerus.net: did not receive HSTS header
 lbrt.xyz: could not connect to host
 ldarby.me.uk: could not connect to host
 leadership9.com: could not connect to host
 leardev.de: did not receive HSTS header
 learnfrenchfluently.com: did not receive HSTS header
 learningorder.com: could not connect to host
 ledgerscope.net: could not connect to host
 leen.io: did not receive HSTS header
 leermotorrijden.nl: max-age too low: 300
 lefebvristes.com: could not connect to host
 lefebvristes.fr: could not connect to host
-lega-dental.com: could not connect to host
-lega3.dk: could not connect to host
 legarage.org: did not receive HSTS header
 leinir.dk: did not receive HSTS header
 leitner.com.au: did not receive HSTS header
 leiyun.me: did not receive HSTS header
 lellyboi.ml: could not connect to host
 lelongbank.com: did not receive HSTS header
 lemp.io: did not receive HSTS header
 lenovogaming.com: did not receive HSTS header
@@ -3127,16 +3138,17 @@ lianye1.cc: could not connect to host
 lianye2.cc: could not connect to host
 lianye3.cc: could not connect to host
 lianye4.cc: could not connect to host
 lianye5.cc: could not connect to host
 lianye6.cc: could not connect to host
 lianyexiuchang.in: could not connect to host
 liaoshuma.com: could not connect to host
 libanco.com: could not connect to host
+libbitcoin.org: could not connect to host
 libertyrp.org: could not connect to host
 library-quest.com: could not connect to host
 library.linode.com: did not receive HSTS header
 libreboot.org: did not receive HSTS header
 librechan.net: could not connect to host
 libreduca.com: could not connect to host
 lidl-selection.at: could not connect to host
 lidlovajogurteka.si: could not connect to host
@@ -3200,17 +3212,16 @@ locomotive.ca: did not receive HSTS head
 loftboard.eu: could not connect to host
 logario.com.br: could not connect to host
 logcat.info: could not connect to host
 logicaladvertising.com: could not connect to host
 login.corp.google.com: max-age too low: 7776000 (error ignored - included regardless)
 login.persona.org: could not connect to host
 loginseite.com: could not connect to host
 lognot.net: could not connect to host
-loli.bz: could not connect to host
 lolicore.ch: could not connect to host
 lolidunno.com: could not connect to host
 london-transfers.com: did not receive HSTS header
 londoncalling.co: did not receive HSTS header
 londonlanguageexchange.com: could not connect to host
 lonerwolf.com: did not receive HSTS header
 longboarding-ulm.de: could not connect to host
 look-at-my.site: could not connect to host
@@ -3314,16 +3325,17 @@ mailhost.it: could not connect to host
 maintainerheaven.ch: could not connect to host
 majesnix.org: did not receive HSTS header
 makeitdynamic.com: could not connect to host
 makerstuff.net: did not receive HSTS header
 malena.com.ua: did not receive HSTS header
 malenyflorist.com.au: did not receive HSTS header
 malerversand.de: did not receive HSTS header
 malfait.nl: could not connect to host
+malinheadview.ie: did not receive HSTS header
 maljaars-media.nl: could not connect to host
 malkaso.com.ua: could not connect to host
 malmstroms-co.se: could not connect to host
 maltes.website: could not connect to host
 malwaretips.com: did not receive HSTS header
 malwre.io: could not connect to host
 mamaison.io: could not connect to host
 mamaxi.org: did not receive HSTS header
@@ -3365,17 +3377,17 @@ marleyresort.com: did not receive HSTS h
 marriottvetcareers.com: could not connect to host
 marshut.net: could not connect to host
 martiert.com: could not connect to host
 martijnvhoof.nl: could not connect to host
 martinec.co.uk: could not connect to host
 martineve.com: did not receive HSTS header
 martinp.no: could not connect to host
 marumagic.com: did not receive HSTS header
-mashnew.com: did not receive HSTS header
+mashnew.com: could not connect to host
 masjidtawheed.net: did not receive HSTS header
 masterapi.ninja: did not receive HSTS header
 masteringtheterminal.com: did not receive HSTS header
 mastimtibetano.com: could not connect to host
 masty.nl: did not receive HSTS header
 matatall.com: did not receive HSTS header
 matchneedle.com: could not connect to host
 maternalsafety.org: did not receive HSTS header
@@ -3404,16 +3416,17 @@ mazz-tech.com: could not connect to host
 mc-team.org: could not connect to host
 mc81.com: could not connect to host
 mca2017.org: did not receive HSTS header
 mcard.vn: did not receive HSTS header
 mcc.re: could not connect to host
 mcdonalds.ru: did not receive HSTS header
 mcga.media: could not connect to host
 mclab.su: could not connect to host
+mclist.it: could not connect to host
 mdfnet.se: did not receive HSTS header
 mdscomp.net: did not receive HSTS header
 meadowfen.farm: could not connect to host
 meamod.com: max-age too low: 0
 mecenat-cassous.com: did not receive HSTS header
 mechmk1.me: did not receive HSTS header
 medallia.io: could not connect to host
 mediacru.sh: did not receive HSTS header
@@ -3454,20 +3467,22 @@ meredithkm.info: could not connect to ho
 meritz.rocks: could not connect to host
 mersinunivercity.com: did not receive HSTS header
 merson.me: could not connect to host
 meshlab.co: could not connect to host
 meshok.ru: did not receive HSTS header
 mesmoque.com: did not receive HSTS header
 metagrader.com: could not connect to host
 metebalci.com: did not receive HSTS header
+meteosherbrooke.com: could not connect to host
 meteosky.net: could not connect to host
 metin2blog.de: did not receive HSTS header
 metis.pw: could not connect to host
 meuemail.pro: could not connect to host
+mevo.xyz: did not receive HSTS header
 mexbt.com: could not connect to host
 mexicanbusinessweb.mx: did not receive HSTS header
 mexicansbook.ru: did not receive HSTS header
 mfcatalin.com: could not connect to host
 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
@@ -3504,18 +3519,18 @@ mijn-email.org: could not connect to hos
 mikaelemilsson.net: did not receive HSTS header
 mikeburns.com: could not connect to host
 mikeg.de: did not receive HSTS header
 mikek.work: could not connect to host
 mikeology.org: could not connect to host
 mikeybot.com: could not connect to host
 mikonmaa.fi: could not connect to host
 mikrom.cz: did not receive HSTS header
-miku.be: could not connect to host
-miku.hatsune.my: did not receive HSTS header
+miku.be: did not receive HSTS header
+miku.hatsune.my: max-age too low: 5184000
 milatrans.pl: did not receive HSTS header
 milcoresonline.com: could not connect to host
 military-portal.cz: did not receive HSTS header
 mimoderoupa.pt: could not connect to host
 mindcraft.ga: could not connect to host
 mindoktor.se: did not receive HSTS header
 minecraftserverz.com: could not connect to host
 minecraftvoter.com: could not connect to host
@@ -3558,16 +3573,17 @@ mobilemedics.com: did not receive HSTS h
 mobilethreat.net: could not connect to host
 mobilethreatnetwork.net: could not connect to host
 mobilpass.no: could not connect to host
 mobiwalk.com: could not connect to host
 mobix5.com: did not receive HSTS header
 mocloud.eu: could not connect to host
 mocsuite.club: could not connect to host
 mocurio.com: could not connect to host
+modded-minecraft-server-list.com: could not connect to host
 moddedark.com: could not connect to host
 model9.io: did not receive HSTS header
 modemagazines.co.uk: could not connect to host
 modernibytovytextil.cz: could not connect to host
 modydev.club: could not connect to host
 moebel-nagel.de: did not receive HSTS header
 moellers.it: could not connect to host
 moelord.org: could not connect to host
@@ -3612,16 +3628,17 @@ morninglory.com: max-age too low: 259200
 mornings.com: did not receive HSTS header
 morpork.xyz: could not connect to host
 mortgagecentersmo.com: did not receive HSTS header
 mostwuat.com: could not connect to host
 motherbase.io: could not connect to host
 motionfreight.com: did not receive HSTS header
 motionpicturesolutions.com: did not receive HSTS header
 motocyklovedily.cz: did not receive HSTS header
+motorbiketourhanoi.com: could not connect to host
 motoryz.com: max-age too low: 300
 mottvd.com: could not connect to host
 moula.com.au: did not receive HSTS header
 mountainmusicpromotions.com: did not receive HSTS header
 moviesabout.net: could not connect to host
 moy-gorod.od.ua: did not receive HSTS header
 moy.cat: did not receive HSTS header
 mp3juices.is: could not connect to host
@@ -3659,16 +3676,17 @@ mushroomandfern.com: could not connect t
 musi.cx: could not connect to host
 musikkfondene.no: did not receive HSTS header
 mustika.cf: could not connect to host
 mutamatic.com: could not connect to host
 muzykaprzeszladoplay.pl: did not receive HSTS header
 mvanmarketing.nl: did not receive HSTS header
 mvsecurity.nl: could not connect to host
 mw.search.yahoo.com: did not receive HSTS header
+mwohlfarth.de: could not connect to host
 my-owncloud.com: could not connect to host
 my.alfresco.com: did not receive HSTS header
 my.swedbank.se: did not receive HSTS header
 myairshop.gr: could not connect to host
 myandroidtools.cc: could not connect to host
 mybudget.xyz: could not connect to host
 mybusiness.cm: did not receive HSTS header
 mychocolateweightloss.com: did not receive HSTS header
@@ -3694,16 +3712,17 @@ mypagella.it: could not connect to host
 mypension.ca: could not connect to host
 myphonebox.de: could not connect to host
 myrig.com: could not connect to host
 myrig.io: could not connect to host
 myrig.net: could not connect to host
 mysecretrewards.com: did not receive HSTS header
 mystery-science-theater-3000.de: did not receive HSTS header
 mythlogic.com: did not receive HSTS header
+mythslegendscollection.com: did not receive HSTS header
 myweb360.de: did not receive HSTS header
 myzone.com: did not receive HSTS header
 n0psled.nl: could not connect to host
 n2x.in: could not connect to host
 n4l.pw: could not connect to host
 nabru.co.uk: did not receive HSTS header
 nabytko.cz: did not receive HSTS header
 nadia.pt: could not connect to host
@@ -3771,31 +3790,30 @@ nestedquotes.ca: could not connect to ho
 net-navi.cc: max-age too low: 0
 netbox.cc: could not connect to host
 netherwind.eu: could not connect to host
 netlilo.com: could not connect to host
 netloanusa.com: could not connect to host
 netmagik.com: did not receive HSTS header
 netresourcedesign.com: did not receive HSTS header
 nettefoundation.com: could not connect to host
-networking4all.com: did not receive HSTS header
 networx-online.de: could not connect to host
 netzbit.de: could not connect to host
 netzpolitik.org: did not receive HSTS header
 netztest.at: did not receive HSTS header
 netzvieh.de: could not connect to host
 netzzwerg4u.de: could not connect to host
 neueonlinecasino2016.com: could not connect to host
 neuralgic.net: could not connect to host
 neuro-plus-100.com: could not connect to host
 neuronfactor.com: max-age too low: 1000
 never-afk.de: did not receive HSTS header
 neveta.com: could not connect to host
 newbieboss.com: did not receive HSTS header
-newcarrentalubon.com: did not receive HSTS header
+newcarrentalubon.com: max-age too low: 2629743
 newcitygas.ca: max-age too low: 0
 newedivideo.it: could not connect to host
 newgenerationplus.org: could not connect to host
 newhdmovies.io: did not receive HSTS header
 newkaliningrad.ru: did not receive HSTS header
 newlooknow.com: did not receive HSTS header
 newmelalife.com: did not receive HSTS header
 newportpropertygroup.com: could not connect to host
@@ -3823,20 +3841,23 @@ nicolasbettag.me: did not receive HSTS h
 niconiconi.xyz: could not connect to host
 niconode.com: could not connect to host
 niduxcomercial.com: could not connect to host
 nien.chat: could not connect to host
 nightwinds.tk: could not connect to host
 niho.jp: did not receive HSTS header
 nikcub.com: could not connect to host
 nikksno.io: did not receive HSTS header
+niklas.pw: could not connect to host
 niklaslindblad.se: did not receive HSTS header
+nikobradshaw.com: did not receive HSTS header
 nikomo.fi: did not receive HSTS header
 ninchisho-online.com: did not receive HSTS header
 ninhs.org: could not connect to host
+ninux.ch: could not connect to host
 nippler.org: did not receive HSTS header
 nippombashi.net: did not receive HSTS header
 nipponcareers.com: did not receive HSTS header
 nitrix.me: could not connect to host
 niva.synology.me: could not connect to host
 nixien.fr: could not connect to host
 nixmag.net: max-age too low: 2592000
 nll.fi: could not connect to host
@@ -3856,20 +3877,22 @@ nolberg.net: did not receive HSTS header
 nolimitsbook.de: did not receive HSTS header
 nolte.work: could not connect to host
 nomorebytes.de: could not connect to host
 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
+nordor.homeip.net: could not connect to host
 nosecretshop.com: did not receive HSTS header
 notadd.com: did not receive HSTS header
 notenoughtime.de: could not connect to host
 nothing.net.nz: max-age too low: 7776000
+notify.moe: could not connect to host
 notinprod.com: did not receive HSTS header
 nottheonion.net: did not receive HSTS header
 nouvelle-vague-saint-cast.fr: did not receive HSTS header
 novaco.in: max-age too low: 3600
 novacoast.com: did not receive HSTS header
 novatrucking.de: could not connect to host
 nowak.ninja: did not receive HSTS header
 noworrywp.com: could not connect to host
@@ -3892,17 +3915,16 @@ nu3.fi: did not receive HSTS header
 nu3.fr: did not receive HSTS header
 nu3.no: did not receive HSTS header
 nu3.se: did not receive HSTS header
 nufla.de: could not connect to host
 null-sec.ru: could not connect to host
 null.cat: could not connect to host
 null.tips: could not connect to host
 nullpoint.at: did not receive HSTS header
-numberzero.org: could not connect to host
 numericacu.com: did not receive HSTS header
 numero-di-telefono.it: could not connect to host
 numista.com: did not receive HSTS header
 nurserybook.co: did not receive HSTS header
 nusatrip-api.com: did not receive HSTS header
 nutritionculture.com: could not connect to host
 nutsandboltsmedia.com: did not receive HSTS header
 nuttyveg.com: could not connect to host
@@ -4024,17 +4046,16 @@ optometriepunt.nl: did not receive HSTS 
 optumrxhealthstore.com: did not receive HSTS header
 oracaodocredo.com.br: could not connect to host
 orbiosales.com: could not connect to host
 orbitcom.de: max-age too low: 0
 orbograph-hrcm.com: could not connect to host
 ordereat.fr: could not connect to host
 orf-digitalsatkarte.at: could not connect to host
 organiplan.com: could not connect to host
-orhideous.name: could not connect to host
 originpc.com: did not receive HSTS header
 orioncustompcs.com: could not connect to host
 orionfcu.com: did not receive HSTS header
 orionrebellion.com: could not connect to host
 orleika.ml: could not connect to host
 orthodoxy.lt: did not receive HSTS header
 osaiyuwu.com: could not connect to host
 oscloud.com: could not connect to host
@@ -4157,30 +4178,30 @@ pcfun.net: could not connect to host
 pchax.net: could not connect to host
 pchospital.cc: did not receive HSTS header
 pdamsidoarjo.co.id: could not connect to host
 pdevio.com: could not connect to host
 pdf.yt: could not connect to host
 peakapp.nl: could not connect to host
 peerherrmann.de: could not connect to host
 peetah.com: max-age too low: 0
-peissen.com: could not connect to host
+peissen.com: [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 118"  data: no]
 pekkapikkarainen.fi: did not receive HSTS header
 pekkarik.ru: could not connect to host
 pengi.me: could not connect to host
 pengui.uk: could not connect to host
 penguinclientsystem.com: did not receive HSTS header
 pentano.net: could not connect to host
 peperiot.com: did not receive HSTS header
 pepperhead.com: did not receive HSTS header
 pepperworldhotshop.de: did not receive HSTS header
 perfect-radiant-wrinkles.com: could not connect to host
 perfectionis.me: could not connect to host
 performous.org: could not connect to host
-perfumista.vn: could not connect to host
+perfumista.vn: did not receive HSTS header
 perlwork.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 118"  data: no]
 perplex.nl: did not receive HSTS header
 perroud.pro: could not connect to host
 personaldatabasen.no: could not connect to host
 personalinjurylist.com: did not receive HSTS header
 personalizedtouch.co: could not connect to host
 perthdevicelab.com: did not receive HSTS header
 pesmyclub.com: did not receive HSTS header
@@ -4197,17 +4218,16 @@ 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
 pgpm.io: could not connect to host
 phalconist.com: did not receive HSTS header
 pharmgkb.org: could not connect to host
 phillipgoldfarb.com: could not connect to host
 phillprice.com: could not connect to host
-philpropertygroup.com: could not connect to host
 phoebe.co.nz: did not receive HSTS header
 phonenumberinfo.co.uk: could not connect to host
 phongmay24h.com: could not connect to host
 photoancestry.com: did not receive HSTS header
 photoblogverona.com: could not connect to host
 php-bach.org: could not connect to host
 phus.lu: did not receive HSTS header
 picardiascr.com: did not receive HSTS header
@@ -4278,16 +4298,17 @@ po.gl: did not receive HSTS header
 pocketsix.com: could not connect to host
 pocloud.homelinux.net: could not connect to host
 poed.net.au: could not connect to host
 poedgirl.com: could not connect to host
 poiema.com.sg: did not receive HSTS header
 pointeringles.com: could not connect to host
 pointiswunderland.de: did not receive HSTS header
 pointpro.de: did not receive HSTS header
+pokeduel.me: could not connect to host
 pol.in.th: could not connect to host
 pole.net.nz: 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
 politologos.org: did not receive HSTS header
 polycoise.com: could not connect to host
 polypho.nyc: could not connect to host
@@ -4297,17 +4318,16 @@ pontualcomp.com: could not connect to ho
 pony.today: could not connect to host
 poolsandstuff.com: did not receive HSTS header
 poon.tech: could not connect to host
 porno-gif.ru: did not receive HSTS header
 pornstars.me: did not receive HSTS header
 portalplatform.net: could not connect to host
 poshpak.com: max-age too low: 86400
 postcodewise.co.uk: did not receive HSTS header
-posterspy.com: did not receive HSTS header
 postscheduler.org: could not connect to host
 posylka.de: did not receive HSTS header
 potatoheads.net: could not connect to host
 potbar.com: could not connect to host
 potlytics.com: could not connect to host
 potsky.com: did not receive HSTS header
 poussinooz.fr: could not connect to host
 povitria.net: could not connect to host
@@ -4336,16 +4356,17 @@ prezola.com: did not receive HSTS header
 prgslab.net: could not connect to host
 pridoc.se: did not receive HSTS header
 printerest.io: could not connect to host
 printexpress.cloud: did not receive HSTS header
 printfn.com: 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
 pro-zone.com: could not connect to host
 prodpad.com: did not receive HSTS header
 production.vn: did not receive HSTS header
 profi-durchgangsmelder.de: did not receive HSTS header
 profivps.com: could not connect to host
 profundr.com: could not connect to host
 profusion.io: could not connect to host
@@ -4432,17 +4453,16 @@ quli.nl: did not receive HSTS header
 quotehex.com: could not connect to host
 quranserver.net: could not connect to host
 qvi.st: did not receive HSTS header
 qwaser.fr: could not connect to host
 qwilink.me: did not receive HSTS header
 r10n.com: did not receive HSTS header
 r15.me: could not connect to host
 r3bl.me: did not receive HSTS header
-r40.us: could not connect to host
 ra-schaal.de: could not connect to host
 raajheshkannaa.com: could not connect to host
 radicaleducation.net: could not connect to host
 radio-utopie.de: did not receive HSTS header
 radtke.bayern: could not connect to host
 rafaelcz.de: could not connect to host
 raidstone.com: could not connect to host
 raidstone.net: could not connect to host
@@ -4538,44 +4558,45 @@ remedioskaseros.com: did not receive HST
 remitatm.com: did not receive HSTS header
 remodela.com.ve: could not connect to host
 remonttitekniikka.fi: could not connect to host
 rene-schwarz.com: could not connect to host
 renideo.fr: could not connect to host
 renlong.org: did not receive HSTS header
 renrenss.com: did not receive HSTS header
 rentacarcluj.xyz: could not connect to host
-rentbrowser.com: could not connect to host
 rentbrowsertrain.me: could not connect to host
 rentcarassist.com: could not connect to host
 renteater.com: could not connect to host
 replacemychina.com: could not connect to host
 reprolife.co.uk: could not connect to host
 res-rheingau.de: did not receive HSTS header
 res42.com: could not connect to host
 resama.eu: did not receive HSTS header
 research.facebook.com: did not receive HSTS header
 reserve-online.net: did not receive HSTS header
 residentsinsurance.co.uk: did not receive HSTS header
+resl20.servehttp.com: could not connect to host
 respice.xyz: could not connect to host
 respostas.com.br: did not receive HSTS header
 restchart.com: did not receive HSTS header
 restrealitaet.de: did not receive HSTS header
 revapost.ch: could not connect to host
 revealdata.com: did not receive HSTS header
 revello.org: did not receive HSTS header
 revensoftware.com: could not connect to host
 reverie.pw: could not connect to host
 reviews.anime.my: max-age too low: 5184000
 revtut.net: did not receive HSTS header
 rewardstock.com: max-age too low: 0
 rex.st: could not connect to host
 rhapsodhy.hu: could not connect to host
 rhdigital.pro: could not connect to host
 rhering.de: could not connect to host
+richardjgreen.net: did not receive HSTS header
 richiemail.net: did not receive HSTS header
 richmondsunlight.com: did not receive HSTS header
 richmtdriver.com: could not connect to host
 richsiciliano.com: could not connect to host
 rid-wan.com: could not connect to host
 rideworks.com: did not receive HSTS header
 ridwan.co: did not receive HSTS header
 riesenmikrobe.de: max-age too low: 86400
@@ -4653,17 +4674,16 @@ rro.rs: could not connect to host
 rsajeey.info: could not connect to host
 rsampaio.info: could not connect to host
 rsf.io: could not connect to host
 rsmaps.org: could not connect to host
 rubbereggs.ca: could not connect to host
 rubberfurs.org: did not receive HSTS header
 rubecodeberg.com: could not connect to host
 rubenschulz.nl: did not receive HSTS header
-rubi-ka.net: could not connect to host
 ruborr.se: did not receive HSTS header
 rubysecurity.org: did not receive HSTS header
 rubyshop.nl: max-age too low: 604800
 rudeotter.com: did not receive HSTS header
 rugirlfriend.com: could not connect to host
 ruiming.me: did not receive HSTS header
 runawebinar.nl: could not connect to host
 runementors.com: could not connect to host
@@ -4757,16 +4777,17 @@ scooshonline.co.uk: did not receive HSTS
 scotbirchfield.com: did not receive HSTS header
 scottdial.com: did not receive HSTS header
 scottferguson.com.au: did not receive HSTS header
 scottgthomas.com: could not connect to host
 scottynordstrom.org: did not receive HSTS header
 scourt.info: did not receive HSTS header
 scourt.org.ua: did not receive HSTS header
 scrambl.is: could not connect to host
+scramble.io: could not connect to host
 scrambler.in: could not connect to host
 scrapings.net: could not connect to host
 screencaster.io: did not receive HSTS header
 screenresolution.space: could not connect to host
 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
@@ -4846,16 +4867,17 @@ seryo.moe: could not connect to host
 seryo.net: could not connect to host
 sethcaplan.com: 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
 sevsey.ru: could not connect to host
 seyahatsagliksigortalari.com: could not connect to host
 sfsltd.com: did not receive HSTS header
+sftool.gov: could not connect to host
 shadoom.com: did not receive HSTS header
 shadowlurker.com.au: did not receive HSTS header
 shadowmorph.info: did not receive HSTS header
 shadowsocks.net: could not connect to host
 shanekoster.net: did not receive HSTS header
 shanesage.com: could not connect to host
 shang-yu.cn: did not receive HSTS header
 shapesedinburgh.co.uk: did not receive HSTS header
@@ -4863,17 +4885,17 @@ shareimg.xyz: could not connect to host
 sharepass.pw: could not connect to host
 sharevari.com: did not receive HSTS header
 shauncrowley.co.uk: could not connect to host
 shaunwheelhou.se: could not connect to host
 shellj.me: max-age too low: 86400
 shellsec.pw: did not receive HSTS header
 shereallyheals.com: could not connect to host
 shibe.club: could not connect to host
-shiftins.com: did not receive HSTS header
+shiftins.com: could not connect to host
 shiftplanning.com: did not receive HSTS header
 shiinko.com: could not connect to host
 shindorei.fr: did not receive HSTS header
 shinebijoux.com.br: could not connect to host
 shinju.moe: could not connect to host
 shiona.xyz: could not connect to host
 shirosaki.org: could not connect to host
 shm-forum.org.uk: could not connect to host
@@ -4894,34 +4916,35 @@ si.to: could not connect to host
 siammedia.co: could not connect to host
 siamsnus.com: did not receive HSTS header
 sichere-kartenakzeptanz.de: did not receive HSTS header
 siciliadigitale.pro: could not connect to host
 siddhant.me: max-age too low: 0
 siebens.net: could not connect to host
 sifls.com: could not connect to host
 sig6.org: could not connect to host
+sigsegv.run: could not connect to host
 sijimi.cn: did not receive HSTS header
 silaslova-ekb.ru: could not connect to host
 silentcircle.com: did not receive HSTS header
 silentcircle.org: could not connect to host
-silentexplosion.de: could not connect to host
+silentexplosion.de: did not receive HSTS header
 silentlink.io: could not connect to host
 silicagelpackets.ca: did not receive HSTS header
 silkebaekken.no: 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: did not receive HSTS header
 simfri.com: did not receive HSTS header
 simobilklub.si: did not receive HSTS header
 simod.org: could not connect to host
+simon-pokorny.com: did not receive HSTS header
 simon.butcher.name: max-age too low: 2629743
-simon.lc: could not connect to host
 simongong.net: did not receive HSTS header
 simpan.id: could not connect to host
 simpleai.net: max-age too low: 600
 simplelearner.com: could not connect to host
 simplepractice.com: did not receive HSTS header
 simplixos.org: could not connect to host
 simply-premium.com: did not receive HSTS header
 simus.fr: did not receive HSTS header
@@ -5000,17 +5023,16 @@ soccergif.com: could not connect to host
 soci.ml: did not receive HSTS header
 socialbillboard.com: could not connect to host
 socialhead.io: could not connect to host
 socialprize.com: could not connect to host
 socialspirit.com.br: did not receive HSTS header
 sockeye.cc: could not connect to host
 socomponents.co.uk: did not receive HSTS header
 sodacore.com: could not connect to host
-soe-server.com: could not connect to host
 software.rocks: could not connect to host
 sogeek.me: did not receive HSTS header
 sokolka.tv: did not receive HSTS header
 sol-3.de: did not receive HSTS header
 solidfuelappliancespares.co.uk: did not receive HSTS header
 solidus.systems: could not connect to host
 soll-i.ch: did not receive HSTS header
 solsystems.ru: could not connect to host
@@ -5042,16 +5064,17 @@ spacehq.org: could not connect to host
 spaggel.nl: could not connect to host
 sparelib.com: max-age too low: 3650
 spark.team: could not connect to host
 sparklingsparklers.com: did not receive HSTS header
 sparsa.army: could not connect to host
 spassstempel.de: max-age too low: 86400
 spauted.com: could not connect to host
 spdysync.com: could not connect to host
+specialedesigns.com: did not receive HSTS header
 speculor.net: could not connect to host
 speed-mailer.com: could not connect to host
 speedcounter.net: did not receive HSTS header
 speedy.lt: max-age too low: 0
 speedyprep.com: did not receive HSTS header
 speidel.com.tr: did not receive HSTS header
 spencerbaer.com: could not connect to host
 sperohub.io: could not connect to host
@@ -5086,27 +5109,27 @@ srmaximo.com: could not connect to host
 srna.sk: could not connect to host
 srrr.ca: could not connect to host
 ss.wtf: could not connect to host
 ssl.panoramio.com: did not receive HSTS header
 ssl.rip: could not connect to host
 ssmato.me: could not connect to host
 ssnc.org: max-age too low: 300
 sspanda.com: did not receive HSTS header
+ssrvpn.tech: did not receive HSTS header
 ssworld.ga: could not connect to host
 staack.com: could not connect to host
 stabletoken.com: could not connect to host
 stadjerspasonline.nl: could not connect to host
 stadtbauwerk.at: did not receive HSTS header
 staffjoy.com: did not receive HSTS header
 staffjoystaging.com: did not receive HSTS header
 stahl.xyz: could not connect to host
 stalkerhispano.com: max-age too low: 0
 stalschermer.nl: could not connect to host
-stamonicatourandtravel.com: could not connect to host
 standardssuck.org: did not receive HSTS header
 standingmist.com: did not receive HSTS header
 starandshield.com: did not receive HSTS header
 stargatepartners.com: did not receive HSTS header
 starmusic.ga: did not receive HSTS header
 starttraffic.com: did not receive HSTS header
 startuponcloud.com: max-age too low: 2678400
 startuppeople.co.uk: could not connect to host
@@ -5114,16 +5137,17 @@ stash.ai: did not receive HSTS header
 state-sponsored-actors.net: could not connect to host
 statementinsertsforless.com: did not receive HSTS header
 stateofexception.io: could not connect to host
 static.or.at: did not receive HSTS header
 staticanime.net: could not connect to host
 stationaryjourney.com: did not receive HSTS header
 stationcharlie.co.za: did not receive HSTS header
 stationnementdenuit.ca: did not receive HSTS header
+statistikian.com: did not receive HSTS header
 status-sprueche.de: did not receive HSTS header
 statuschecks.net: could not connect to host
 stayokhotelscdc-mailing.com: could not connect to host
 stcomex.com: did not receive HSTS header
 stdrc.cc: did not receive HSTS header
 steelbea.ms: could not connect to host
 stefanweiser.de: did not receive HSTS header
 stepbystep3d.com: did not receive HSTS header
@@ -5152,28 +5176,26 @@ storecove.com: did not receive HSTS head
 storeden.com: did not receive HSTS header
 storefrontify.com: did not receive HSTS header
 stormhub.org: could not connect to host
 stqry.com: did not receive HSTS header
 str0.at: did not receive HSTS header
 strasweb.fr: did not receive HSTS header
 strbt.de: could not connect to host
 strchr.com: did not receive HSTS header
-stream.pub: did not receive HSTS header
 streamingeverywhere.com: could not connect to host
 streamingmagazin.de: could not connect to host
 streampanel.net: did not receive HSTS header
 streams.dyndns.org: could not connect to host
 strictlysudo.com: could not connect to host
 strivephysmed.com: did not receive HSTS header
 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
-student.andover.edu: could not connect to host
 studentresearcher.org: did not receive HSTS header
 studentskydenik.cz: could not connect to host
 studenttravel.cz: did not receive HSTS header
 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
@@ -5247,20 +5269,20 @@ syncclinicalstudy.com: could not connect
 syncer.jp: did not receive HSTS header
 syneic.com: did not receive HSTS header
 syno.gq: could not connect to host
 syntheticmotoroil.org: did not receive HSTS header
 syriatalk.biz: could not connect to host
 syriatalk.org: could not connect to host
 syrocon.ch: could not connect to host
 sys.tf: could not connect to host
-sysert.tv: could not connect to host
 sysgeek.cn: could not connect to host
 syso.name: could not connect to host
 syspen.space: did not receive HSTS header
+sysrq.tech: could not connect to host
 systemd.me: could not connect to host
 szaszm.tk: max-age too low: 0
 t-complex.space: could not connect to host
 t-ken.xyz: could not connect to host
 t-shirts4less.nl: did not receive HSTS header
 t-tz.com: could not connect to host
 t4x.org: did not receive HSTS header
 taabe.xyz: could not connect to host
@@ -5299,27 +5321,30 @@ tastyyy.co: could not connect to host
 tatilbus.com: could not connect to host
 tatt.io: could not connect to host
 tauchkater.de: could not connect to host
 tavopica.lt: did not receive HSTS header
 taxbench.com: could not connect to host
 taxiindenbosch.nl: did not receive HSTS header
 taxsnaps.co.nz: could not connect to host
 tazz.in: could not connect to host
+tbrss.com: did not receive HSTS header
 tc-bonito.de: did not receive HSTS header
 tcao.info: could not connect to host
 tcby45.xyz: could not connect to host
 tcdw.net: did not receive HSTS header
 tcl.ath.cx: did not receive HSTS header
 tcomms.org: max-age too low: 0
 tcp.expert: did not receive HSTS header
 tcwebvn.com: could not connect to host
 teachforcanada.ca: did not receive HSTS header
 team-teasers.com: could not connect to host
 teamblueridge.org: could not connect to host
+teampaddymurphy.ch: did not receive HSTS header
+teampaddymurphy.ie: did not receive HSTS header
 teamsocial.co: did not receive HSTS header
 teamzeus.cz: could not connect to host
 tech-finder.fr: could not connect to host
 tech55i.com: could not connect to host
 techandtux.de: could not connect to host
 techassist.io: did not receive HSTS header
 techelements.co: could not connect to host
 techhipster.net: could not connect to host
@@ -5371,16 +5396,17 @@ tf2stadium.com: did not receive HSTS hea
 tfcoms-sp-tracker-client.azurewebsites.net: could not connect to host
 tffans.com: could not connect to host
 tfl.lu: did not receive HSTS header
 tgr.re: could not connect to host
 thagki9.com: could not connect to host
 thai.land: did not receive HSTS header
 thaihostcool.com: did not receive HSTS header
 thailandpropertylistings.com: did not receive HSTS header
+thalan.fr: could not connect to host
 the-construct.com: could not connect to host
 the-delta.net.eu.org: could not connect to host
 the-sky-of-valkyries.com: could not connect to host
 theamateurs.net: did not receive HSTS header
 theater.cf: could not connect to host
 theberkshirescompany.com: could not connect to host
 thebigfail.net: could not connect to host
 thebrightons.co.uk: did not receive HSTS header
@@ -5422,49 +5448,49 @@ thepcweb.tk: could not connect to host
 thepiratebay.al: could not connect to host
 thepiratebay.poker: could not connect to host
 thepiratebay.tech: could not connect to host
 therevenge.me: could not connect to host
 therewill.be: could not connect to host
 theseed.io: could not connect to host
 thestack.xyz: could not connect to host
 thestagchorleywood.co.uk: did not receive HSTS header
+thetradinghall.com: could not connect to host
 theurbanyoga.com: did not receive HSTS header
 thevintagenews.com: max-age too low: 0
 thewebfellas.com: did not receive HSTS header
 theworkingeye.nl: could not connect to host
 thewp.pro: could not connect to host
 thezonders.com: did not receive HSTS header
 thierfreund.de: could not connect to host
 thinkcoding.de: could not connect to host
 thinkcoding.org: could not connect to host
 thinlyveiledcontempt.com: could not connect to host
 thirdpartytrade.com: did not receive HSTS header
 thirty5.net: did not receive HSTS header
 thisisacompletetest.ga: could not connect to host
 thisisforager.com: could not connect to host
 thiswebhost.com: did not receive HSTS header
-thomascloud.ddns.net: could not connect to host
 thomaskliszowski.fr: did not receive HSTS header
 thomasschweizer.net: could not connect to host
 thorncreek.net: did not receive HSTS header
 thriveapproach.co.uk: did not receive HSTS header
 thumbtack.com: did not receive HSTS header
 thusoy.com: did not receive HSTS header
 ti.blog.br: could not connect to host
-tibbitshall.ca: did not receive HSTS header
 tickettoaster.de: max-age too low: 0
 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: did not receive HSTS header
+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
 tiliaze.be: could not connect to host
 tiliaze.eu: did not receive HSTS header
 tilkah.com.au: could not connect to host
 timbeilby.com: could not connect to host
 timbuktutimber.com: did not receive HSTS header
@@ -5515,17 +5541,17 @@ todo.is: did not receive HSTS header
 todobazar.es: could not connect to host
 togelonlinecommunity.com: did not receive HSTS header
 tokenloan.com: could not connect to host
 tokoone.com: did not receive HSTS header
 tokotamz.net: max-age too low: 0
 tollmanz.com: did not receive HSTS header
 tolud.com: could not connect to host
 tomeara.net: could not connect to host
-tomharris.tech: could not connect to host
+tomharris.tech: did not receive HSTS header
 tomlankhorst.nl: did not receive HSTS header
 tomli.me: could not connect to host
 tommsy.com: did not receive HSTS header
 tommyads.com: could not connect to host
 tonyfantjr.com: could not connect to host
 toomanypillows.com: could not connect to host
 top-stage.net: could not connect to host
 topdeskdev.net: could not connect to host
@@ -5539,17 +5565,16 @@ torlock.download: could not connect to h
 torrentdownloads.bid: could not connect to host
 torrentz.website: could not connect to host
 torsten-schmitz.net: could not connect to host
 tortugalife.de: could not connect to host
 torv.rocks: did not receive HSTS header
 tosecure.link: could not connect to host
 toshnix.com: could not connect to host
 toshub.com: could not connect to host
-totallylegitimatehosting.ru: could not connect to host
 totem-eshop.cz: could not connect to host
 toucedo.de: could not connect to host
 touchbasemail.com: did not receive HSTS header
 touchscreen-handy.de: did not receive HSTS header
 tourpeer.com: did not receive HSTS header
 toxme.se: did not receive HSTS header
 toyotamotala.se: could not connect to host
 tpbcdn.com: could not connect to host
@@ -5576,17 +5601,16 @@ treatprostatewithhifu.com: could not con
 treeby.net: could not connect to host
 trell.co.in: did not receive HSTS header
 trendberry.ru: could not connect to host
 trinityaffirmations.com: max-age too low: 0
 trinitycore.org: max-age too low: 2592000
 tripdelta.com: did not receive HSTS header
 tripinsider.club: did not receive HSTS header
 trixies-wish.nz: could not connect to host
-troedel-trolle.de: did not receive HSTS header
 troi.de: did not receive HSTS header
 trollme.me: could not connect to host
 true.ink: did not receive HSTS header
 truebred-labradors.com: could not connect to host
 trunkjunk.co: did not receive HSTS header
 trusteecar.com: did not receive HSTS header
 trustmeimfancy.com: could not connect to host
 trybind.com: could not connect to host
@@ -5627,18 +5651,16 @@ twinkseason.org: could not connect to ho
 twinkseason.xyz: could not connect to host
 twist.party: could not connect to host
 twogo.com: did not receive HSTS header
 twolinepassbrewing.com: could not connect to host
 tx041cap.org: did not receive HSTS header
 txclimbers.com: could not connect to host
 txf.pw: could not connect to host
 ty2u.com: did not receive HSTS header
-tyler.rs: could not connect to host
-tyleromeara.com: could not connect to host
 tylian.net: max-age too low: 0
 tyrelius.com: did not receive HSTS header
 tyroproducts.eu: did not receive HSTS header
 tzappa.net: could not connect to host
 u-blox.com: max-age too low: 0
 ua.search.yahoo.com: did not receive HSTS header
 uadp.pw: could not connect to host
 uber.com.au: did not receive HSTS header
@@ -5688,17 +5710,17 @@ unblockmyproxy.site: could not connect t
 unblockthe.site: could not connect to host
 unblockthe.top: could not connect to host
 unccdesign.club: could not connect to host
 unclegen.xyz: could not connect to host
 under30stravelinsurance.com.au: did not receive HSTS header
 unfiltered.nyc: did not receive HSTS header
 unhu.fr: could not connect to host
 uni-games.com: could not connect to host
-unicooo.com: could not connect to host
+unicooo.com: did not receive HSTS header
 unikitty-on-tour.com: could not connect to host
 unison.com: did not receive HSTS header
 unisyssecurity.com: did not receive HSTS header
 unitlabs.net: could not connect to host
 university4industry.com: did not receive HSTS header
 univz.com: could not connect to host
 unknownphenomena.net: could not connect to host
 unmanaged.space: did not receive HSTS header
@@ -5713,16 +5735,17 @@ uow.ninja: could not connect to host
 up1.ca: could not connect to host
 upaknship.com: did not receive HSTS header
 upboard.jp: could not connect to host
 upldr.pw: could not connect to host
 uprotect.it: could not connect to host
 upstats.eu: could not connect to host
 ur-lauber.de: did not receive HSTS header
 urandom.eu.org: did not receive HSTS header
+urbanstylestaging.com: did not receive HSTS header
 urbpic.com: could not connect to host
 urown.net: could not connect to host
 urphp.com: could not connect to host
 us-immigration.com: did not receive HSTS header
 usaab.org: did not receive HSTS header
 usbtypeccompliant.com: could not connect to host
 uscitizenship.info: did not receive HSTS header
 uscntalk.com: could not connect to host
@@ -5744,16 +5767,17 @@ uy.search.yahoo.com: did not receive HST
 uyym.com: could not connect to host
 uz.search.yahoo.com: did not receive HSTS header
 uzmandroid.net: could not connect to host
 uzmandroid.top: could not connect to host
 v2.pw: did not receive HSTS header
 v4veedu.com: could not connect to host
 vaddder.com: could not connect to host
 vaelma.fi: max-age too low: 600
+val-sec.com: could not connect to host
 valethound.com: could not connect to host
 valis.sx: could not connect to host
 valkyrja.xyz: did not receive HSTS header
 valleyridgepta.org: could not connect to host
 vallis.net: did not receive HSTS header
 valmagus.com: could not connect to host
 valopv.be: could not connect to host
 vampirism.eu: could not connect to host
@@ -5849,17 +5873,17 @@ vpip.net: could not connect to host
 vpl.me: did not receive HSTS header
 vpn-byen.dk: did not receive HSTS header
 vpnhot.com: did not receive HSTS header
 vps-szerver-berles.hu: could not connect to host
 vpsmojo.com: could not connect to host
 vratny.space: could not connect to host
 vrobert.fr: could not connect to host
 vsestiralnie.com: did not receive HSTS header
-vvl.me: did not receive HSTS header
+vvl.me: could not connect to host
 vxstream-sandbox.com: did not receive HSTS header
 vyncke.org: max-age too low: 2678400
 vzk.io: could not connect to host
 w.wiki: could not connect to host
 w4a.fr: did not receive HSTS header
 w4xzr.top: could not connect to host
 w4xzr.xyz: could not connect to host
 wachtwoordencheck.nl: could not connect to host
@@ -5914,17 +5938,16 @@ webm.to: could not connect to host
 webmail.mayfirst.org: did not receive HSTS header
 webmaniabr.com: did not receive HSTS header
 webmarketingfestival.it: did not receive HSTS header
 webninja.work: could not connect to host
 webnosql.com: could not connect to host
 webperformance.ru: max-age too low: 3600
 webpublica.pt: could not connect to host
 webrebels.org: could not connect to host
-websenat.de: [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 118"  data: no]
 webstationservice.fr: could not connect to host
 webstellung.com: could not connect to host
 webstory.xyz: could not connect to host
 webswitch.io: could not connect to host
 webtechgadgetry.com: did not receive HSTS header
 webtiles.co.uk: could not connect to host
 webtobesocial.de: could not connect to host
 webuni.hu: did not receive HSTS header
@@ -5978,17 +6001,17 @@ wikiclash.info: could not connect to hos
 wikisports.eu: could not connect to host
 wilf1rst.com: could not connect to host
 willcipriano.com: could not connect to host
 william.si: did not receive HSTS header
 williamsapiens.com: could not connect to host
 willosagiede.com: did not receive HSTS header
 winaes.com: did not receive HSTS header
 winclient.cn: could not connect to host
-windowsphoneblog.it: did not receive HSTS header
+windowsphoneblog.it: max-age too low: 0
 winecodeavocado.com: could not connect to host
 winged.io: could not connect to host
 wingumd.net: could not connect to host
 winpack.cf: could not connect to host
 winpack.eu.org: could not connect to host
 winsec.nl: could not connect to host
 winshiplending.com: did not receive HSTS header
 wipply.com: did not receive HSTS header
@@ -6099,17 +6122,16 @@ ximens.me: could not connect to host
 xinbiji.cn: did not receive HSTS header
 xisa.it: could not connect to host
 xiyu.moe: could not connect to host
 xjoin.de: could not connect to host
 xmerak.com: could not connect to host
 xmonk.org: could not connect to host
 xmppwocky.net: could not connect to host
 xmr.my: could not connect to host
-xn--0kqx72g4gftob.com: could not connect to host
 xn--3lqt7ir4md4tzwa.cn: did not receive HSTS header
 xn--3lqt7ir4md4tzwa.xn--fiqs8s: did not receive HSTS header
 xn--3px.jp: could not connect to host
 xn--4dbjwf8c.cf: could not connect to host
 xn--4dbjwf8c.ga: could not connect to host
 xn--4dbjwf8c.gq: could not connect to host
 xn--4dbjwf8c.tk: could not connect to host
 xn--79q87uvkclvgd56ahq5a.net: did not receive HSTS header
@@ -6130,16 +6152,17 @@ xn--mgbbh2a9fub.xn--ngbc5azd: could not 
 xn--neb-tma3u8u.xyz: could not connect to host
 xn--seelenwchter-mcb.eu: could not connect to host
 xn--werner-schffer-fib.de: could not connect to host
 xn--xdtx3pfzbiw3ar8e7yedqrhui.com: could not connect to host
 xn--yoamomisuasbcn-ynb.com: could not connect to host
 xobox.me: could not connect to host
 xoffy.com: did not receive HSTS header
 xom.party: could not connect to host
+xombitmusic.com: did not receive HSTS header
 xor-a.net: could not connect to host
 xperiacodes.com: did not receive HSTS header
 xpi.fr: could not connect to host
 xsmobile.de: 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
@@ -6187,17 +6210,16 @@ yoloprod.fr: could not connect to host
 yoloseo.com: could not connect to host
 yomepre.com: could not connect to host
 yoru.me: did not receive HSTS header
 youcontrol.ru: 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
-yourdaddy.dk: did not receive HSTS header
 yoursecondphone.co: could not connect to host
 yourstrongbox.com: could not connect to host
 yoyoost.duckdns.org: could not connect to host
 ypiresia.fr: could not connect to host
 ytcuber.xyz: could not connect to host
 yu.gg: did not receive HSTS header
 yu7.jp: did not receive HSTS header
 yuan.ga: did not receive HSTS header
@@ -6205,21 +6227,22 @@ yuhen.ru: did not receive HSTS header
 yuko.moe: could not connect to host
 yunzhu.li: did not receive HSTS header
 yunzhu.org: could not connect to host
 yutabon.com: could not connect to host
 yuushou.com: max-age too low: 0
 yux.io: did not receive HSTS header
 yuxingxin.com: could not connect to host
 ywei.org: could not connect to host
-yzal.io: did not receive HSTS header
+yzal.io: could not connect to host
 z3liff.com: could not connect to host
 z3liff.net: could not connect to host
 za.search.yahoo.com: did not receive HSTS header
 zadieheimlich.com: did not receive HSTS header
+zafirus.name: could not connect to host
 zahe.me: could not connect to host
 zahyantechnologies.com: could not connect to host
 zakoncontrol.com: could not connect to host
 zamorano.edu: could not connect to host
 zamos.ru: max-age too low: 0
 zanthra.com: could not connect to host
 zao.fi: could not connect to host
 zap.yt: could not connect to host
@@ -6278,11 +6301,10 @@ zqhong.com: could not connect to host
 ztan.tk: could not connect to host
 ztcaoll222.cn: did not receive HSTS header
 zubel.it: did not receive HSTS header
 zudomc.me: could not connect to host
 zulu7.com: could not connect to host
 zuviel.space: could not connect to host
 zvncloud.com: did not receive HSTS header
 zwollemagazine.nl: did not receive HSTS header
-zwy.me: could not connect to host
 zyf.pw: could not connect to host
 zymbit.com: did not receive HSTS header
--- 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(1507303218909000);
+const PRTime gPreloadListExpirationTime = INT64_C(1507390226607000);
 
 static const char kSTSHostTable[] = {
   /* "0.me.uk", true */ '0', '.', 'm', 'e', '.', 'u', 'k', '\0',
   /* "007-preisvergleich.de", true */ '0', '0', '7', '-', 'p', 'r', 'e', 'i', 's', 'v', 'e', 'r', 'g', 'l', 'e', 'i', 'c', 'h', '.', 'd', 'e', '\0',
   /* "00f.net", true */ '0', '0', 'f', '.', 'n', 'e', 't', '\0',
   /* "00wbf.com", true */ '0', '0', 'w', 'b', 'f', '.', 'c', 'o', 'm', '\0',
   /* "0100dev.com", true */ '0', '1', '0', '0', 'd', 'e', 'v', '.', 'c', 'o', 'm', '\0',
   /* "0100dev.nl", true */ '0', '1', '0', '0', 'd', 'e', 'v', '.', 'n', 'l', '\0',
@@ -112,16 +112,17 @@ static const char kSTSHostTable[] = {
   /* "173vpn.cn", true */ '1', '7', '3', 'v', 'p', 'n', '.', 'c', 'n', '\0',
   /* "174.net.nz", true */ '1', '7', '4', '.', 'n', 'e', 't', '.', 'n', 'z', '\0',
   /* "1750studios.com", false */ '1', '7', '5', '0', 's', 't', 'u', 'd', 'i', 'o', 's', '.', 'c', 'o', 'm', '\0',
   /* "17hats.com", true */ '1', '7', 'h', 'a', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "18f.gov", true */ '1', '8', 'f', '.', 'g', 'o', 'v', '\0',
   /* "18f.gsa.gov", false */ '1', '8', 'f', '.', 'g', 's', 'a', '.', 'g', 'o', 'v', '\0',
   /* "195gm.com", true */ '1', '9', '5', 'g', 'm', '.', 'c', 'o', 'm', '\0',
   /* "1972969867.rsc.cdn77.org", true */ '1', '9', '7', '2', '9', '6', '9', '8', '6', '7', '.', 'r', 's', 'c', '.', 'c', 'd', 'n', '7', '7', '.', 'o', 'r', 'g', '\0',
+  /* "1981612088.rsc.cdn77.org", true */ '1', '9', '8', '1', '6', '1', '2', '0', '8', '8', '.', 'r', 's', 'c', '.', 'c', 'd', 'n', '7', '7', '.', 'o', 'r', 'g', '\0',
   /* "1a-diamantscheiben.de", true */ '1', 'a', '-', 'd', 'i', 'a', 'm', 'a', 'n', 't', 's', 'c', 'h', 'e', 'i', 'b', 'e', 'n', '.', 'd', 'e', '\0',
   /* "1a-vermessung.at", true */ '1', 'a', '-', 'v', 'e', 'r', 'm', 'e', 's', 's', 'u', 'n', 'g', '.', 'a', 't', '\0',
   /* "1a-werkstattgeraete.de", true */ '1', 'a', '-', 'w', 'e', 'r', 'k', 's', 't', 'a', 't', 't', 'g', 'e', 'r', 'a', 'e', 't', 'e', '.', 'd', 'e', '\0',
   /* "1atic.com", true */ '1', 'a', 't', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "1co-jp.net", true */ '1', 'c', 'o', '-', 'j', 'p', '.', 'n', 'e', 't', '\0',
   /* "1cover.co.nz", true */ '1', 'c', 'o', 'v', 'e', 'r', '.', 'c', 'o', '.', 'n', 'z', '\0',
   /* "1cover.com.au", true */ '1', 'c', 'o', 'v', 'e', 'r', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "1e9.nl", true */ '1', 'e', '9', '.', 'n', 'l', '\0',
@@ -234,16 +235,17 @@ static const char kSTSHostTable[] = {
   /* "3dcart.com", true */ '3', 'd', 'c', 'a', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "3dmedium.de", true */ '3', 'd', 'm', 'e', 'd', 'i', 'u', 'm', '.', 'd', 'e', '\0',
   /* "3do3dont.com", true */ '3', 'd', 'o', '3', 'd', 'o', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "3dprintsondemand.eu", true */ '3', 'd', 'p', 'r', 'i', 'n', 't', 's', 'o', 'n', 'd', 'e', 'm', 'a', 'n', 'd', '.', 'e', 'u', '\0',
   /* "3drenaline.com", true */ '3', 'd', 'r', 'e', 'n', 'a', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "3haeuserprojekt.org", true */ '3', 'h', 'a', 'e', 'u', 's', 'e', 'r', 'p', 'r', 'o', 'j', 'e', 'k', 't', '.', 'o', 'r', 'g', '\0',
   /* "3haueserprojekt.org", true */ '3', 'h', 'a', 'u', 'e', 's', 'e', 'r', 'p', 'r', 'o', 'j', 'e', 'k', 't', '.', 'o', 'r', 'g', '\0',
   /* "3hl0.net", true */ '3', 'h', 'l', '0', '.', 'n', 'e', 't', '\0',
+  /* "3phase.pw", true */ '3', 'p', 'h', 'a', 's', 'e', '.', 'p', 'w', '\0',
   /* "3r.org.uk", true */ '3', 'r', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "3s-hosting.de", true */ '3', 's', '-', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'd', 'e', '\0',
   /* "3timegear.com", true */ '3', 't', 'i', 'm', 'e', 'g', 'e', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "3trees.tk", true */ '3', 't', 'r', 'e', 'e', 's', '.', 't', 'k', '\0',
   /* "3v4l.org", true */ '3', 'v', '4', 'l', '.', 'o', 'r', 'g', '\0',
   /* "3weekdietworks.com", true */ '3', 'w', 'e', 'e', 'k', 'd', 'i', 'e', 't', 'w', 'o', 'r', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "4-1-where.com", true */ '4', '-', '1', '-', 'w', 'h', 'e', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "4-it.de", true */ '4', '-', 'i', 't', '.', 'd', 'e', '\0',
@@ -252,16 +254,17 @@ static const char kSTSHostTable[] = {
   /* "404notfound.com.br", true */ '4', '0', '4', 'n', 'o', 't', 'f', 'o', 'u', 'n', 'd', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "4096bit.de", true */ '4', '0', '9', '6', 'b', 'i', 't', '.', 'd', 'e', '\0',
   /* "41-where.com", true */ '4', '1', '-', 'w', 'h', 'e', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "41844.de", true */ '4', '1', '8', '4', '4', '.', 'd', 'e', '\0',
   /* "41where.com", true */ '4', '1', 'w', 'h', 'e', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "42day.info", true */ '4', '2', 'd', 'a', 'y', '.', 'i', 'n', 'f', 'o', '\0',
   /* "42entrepreneurs.fr", true */ '4', '2', 'e', 'n', 't', 'r', 'e', 'p', 'r', 'e', 'n', 'e', 'u', 'r', 's', '.', 'f', 'r', '\0',
   /* "439191.com", true */ '4', '3', '9', '1', '9', '1', '.', 'c', 'o', 'm', '\0',
+  /* "441jj.com", true */ '4', '4', '1', 'j', 'j', '.', 'c', 'o', 'm', '\0',
   /* "4500.co.il", true */ '4', '5', '0', '0', '.', 'c', 'o', '.', 'i', 'l', '\0',
   /* "491mhz.net", true */ '4', '9', '1', 'm', 'h', 'z', '.', 'n', 'e', 't', '\0',
   /* "49889.com", true */ '4', '9', '8', '8', '9', '.', 'c', 'o', 'm', '\0',
   /* "4d2.xyz", true */ '4', 'd', '2', '.', 'x', 'y', 'z', '\0',
   /* "4dbygg.se", true */ '4', 'd', 'b', 'y', 'g', 'g', '.', 's', 'e', '\0',
   /* "4decor.org", true */ '4', 'd', 'e', 'c', 'o', 'r', '.', 'o', 'r', 'g', '\0',
   /* "4freepress.com", true */ '4', 'f', 'r', 'e', 'e', 'p', 'r', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "4g-server.eu", false */ '4', 'g', '-', 's', 'e', 'r', 'v', 'e', 'r', '.', 'e', 'u', '\0',
@@ -296,16 +299,17 @@ static const char kSTSHostTable[] = {
   /* "6548877.com", true */ '6', '5', '4', '8', '8', '7', '7', '.', 'c', 'o', 'm', '\0',
   /* "660011.com", true */ '6', '6', '0', '0', '1', '1', '.', 'c', 'o', 'm', '\0',
   /* "6660111.ru", true */ '6', '6', '6', '0', '1', '1', '1', '.', 'r', 'u', '\0',
   /* "692b8c32.de", true */ '6', '9', '2', 'b', '8', 'c', '3', '2', '.', 'd', 'e', '\0',
   /* "6969.us", true */ '6', '9', '6', '9', '.', 'u', 's', '\0',
   /* "6t-montjoye.org", true */ '6', 't', '-', 'm', 'o', 'n', 't', 'j', 'o', 'y', 'e', '.', 'o', 'r', 'g', '\0',
   /* "700.az", true */ '7', '0', '0', '.', 'a', 'z', '\0',
   /* "7183.org", true */ '7', '1', '8', '3', '.', 'o', 'r', 'g', '\0',
+  /* "724go.com", true */ '7', '2', '4', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "7261696e626f77.net", true */ '7', '2', '6', '1', '6', '9', '6', 'e', '6', '2', '6', 'f', '7', '7', '.', 'n', 'e', 't', '\0',
   /* "746.com", true */ '7', '4', '6', '.', 'c', 'o', 'm', '\0',
   /* "762.ch", true */ '7', '6', '2', '.', 'c', 'h', '\0',
   /* "771122.com", true */ '7', '7', '1', '1', '2', '2', '.', 'c', 'o', 'm', '\0',
   /* "771122.tv", true */ '7', '7', '1', '1', '2', '2', '.', 't', 'v', '\0',
   /* "777coin.com", true */ '7', '7', '7', 'c', 'o', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "7careconnect.com", true */ '7', 'c', 'a', 'r', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', '.', 'c', 'o', 'm', '\0',
   /* "7nw.eu", true */ '7', 'n', 'w', '.', 'e', 'u', '\0',
@@ -483,17 +487,16 @@ static const char kSTSHostTable[] = {
   /* "achterhoekseveiligheidsbeurs.nl", true */ 'a', 'c', 'h', 't', 'e', 'r', 'h', 'o', 'e', 'k', 's', 'e', 'v', 'e', 'i', 'l', 'i', 'g', 'h', 'e', 'i', 'd', 's', 'b', 'e', 'u', 'r', 's', '.', 'n', 'l', '\0',
   /* "achterstieg.dedyn.io", true */ 'a', 'c', 'h', 't', 'e', 'r', 's', 't', 'i', 'e', 'g', '.', 'd', 'e', 'd', 'y', 'n', '.', 'i', 'o', '\0',
   /* "achtzehn.eu", true */ 'a', 'c', 'h', 't', 'z', 'e', 'h', 'n', '.', 'e', 'u', '\0',
   /* "acidbin.co", true */ 'a', 'c', 'i', 'd', 'b', 'i', 'n', '.', 'c', 'o', '\0',
   /* "aciksite.com", true */ 'a', 'c', 'i', 'k', 's', 'i', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "aclu.org", false */ 'a', 'c', 'l', 'u', '.', 'o', 'r', 'g', '\0',
   /* "acme.beer", true */ 'a', 'c', 'm', 'e', '.', 'b', 'e', 'e', 'r', '\0',
   /* "acmexyz123.info", true */ 'a', 'c', 'm', 'e', 'x', 'y', 'z', '1', '2', '3', '.', 'i', 'n', 'f', 'o', '\0',
-  /* "acmle.com", false */ 'a', 'c', 'm', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "acnpacific.com", true */ 'a', 'c', 'n', 'p', 'a', 'c', 'i', 'f', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "acoffeeshops.com", true */ 'a', 'c', 'o', 'f', 'f', 'e', 'e', 's', 'h', 'o', 'p', 's', '.', 'c', 'o', 'm', '\0',
   /* "acourse.io", true */ 'a', 'c', 'o', 'u', 'r', 's', 'e', '.', 'i', 'o', '\0',
   /* "acrepairdrippingsprings.com", true */ 'a', 'c', 'r', 'e', 'p', 'a', 'i', 'r', 'd', 'r', 'i', 'p', 'p', 'i', 'n', 'g', 's', 'p', 'r', 'i', 'n', 'g', 's', '.', 'c', 'o', 'm', '\0',
   /* "acritelli.com", false */ 'a', 'c', 'r', 'i', 't', 'e', 'l', 'l', 'i', '.', 'c', 'o', 'm', '\0',
   /* "acrossgw.com", true */ 'a', 'c', 'r', 'o', 's', 's', 'g', 'w', '.', 'c', 'o', 'm', '\0',
   /* "acrylicwifi.com", true */ 'a', 'c', 'r', 'y', 'l', 'i', 'c', 'w', 'i', 'f', 'i', '.', 'c', 'o', 'm', '\0',
   /* "acs-chantal.com", true */ 'a', 'c', 's', '-', 'c', 'h', 'a', 'n', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0',
@@ -522,17 +525,16 @@ static const char kSTSHostTable[] = {
   /* "ad-notam.pt", true */ 'a', 'd', '-', 'n', 'o', 't', 'a', 'm', '.', 'p', 't', '\0',
   /* "ad-notam.us", true */ 'a', 'd', '-', 'n', 'o', 't', 'a', 'm', '.', 'u', 's', '\0',
   /* "ada.gov", true */ 'a', 'd', 'a', '.', 'g', 'o', 'v', '\0',
   /* "adalis.org", true */ 'a', 'd', 'a', 'l', 'i', 's', '.', 'o', 'r', 'g', '\0',
   /* "adam-kostecki.de", true */ 'a', 'd', 'a', 'm', '-', 'k', 'o', 's', 't', 'e', 'c', 'k', 'i', '.', 'd', 'e', '\0',
   /* "adambyers.com", true */ 'a', 'd', 'a', 'm', 'b', 'y', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "adamdixon.co.uk", true */ 'a', 'd', 'a', 'm', 'd', 'i', 'x', 'o', 'n', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "adamek.online", true */ 'a', 'd', 'a', 'm', 'e', 'k', '.', 'o', 'n', 'l', 'i', 'n', 'e', '\0',
-  /* "adamgold.net", true */ 'a', 'd', 'a', 'm', 'g', 'o', 'l', 'd', '.', 'n', 'e', 't', '\0',
   /* "adamkaminski.com", true */ 'a', 'd', 'a', 'm', 'k', 'a', 'm', 'i', 'n', 's', 'k', 'i', '.', 'c', 'o', 'm', '\0',
   /* "adamkostecki.de", true */ 'a', 'd', 'a', 'm', 'k', 'o', 's', 't', 'e', 'c', 'k', 'i', '.', 'd', 'e', '\0',
   /* "adamoutler.com", true */ 'a', 'd', 'a', 'm', 'o', 'u', 't', 'l', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "adamradocz.com", true */ 'a', 'd', 'a', 'm', 'r', 'a', 'd', 'o', 'c', 'z', '.', 'c', 'o', 'm', '\0',
   /* "adamricheimer.com", true */ 'a', 'd', 'a', 'm', 'r', 'i', 'c', 'h', 'e', 'i', 'm', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "adams.dk", true */ 'a', 'd', 'a', 'm', 's', '.', 'd', 'k', '\0',
   /* "adamstas.com", true */ 'a', 'd', 'a', 'm', 's', 't', 'a', 's', '.', 'c', 'o', 'm', '\0',
   /* "adamwilcox.org", true */ 'a', 'd', 'a', 'm', 'w', 'i', 'l', 'c', 'o', 'x', '.', 'o', 'r', 'g', '\0',
@@ -717,17 +719,16 @@ static const char kSTSHostTable[] = {
   /* "aibenzi.com", true */ 'a', 'i', 'b', 'e', 'n', 'z', 'i', '.', 'c', 'o', 'm', '\0',
   /* "aicial.co.uk", true */ 'a', 'i', 'c', 'i', 'a', 'l', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "aicial.com", true */ 'a', 'i', 'c', 'i', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "aicial.com.au", true */ 'a', 'i', 'c', 'i', 'a', 'l', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "aidanmontare.net", true */ 'a', 'i', 'd', 'a', 'n', 'm', 'o', 'n', 't', 'a', 'r', 'e', '.', 'n', 'e', 't', '\0',
   /* "aiden.link", true */ 'a', 'i', 'd', 'e', 'n', '.', 'l', 'i', 'n', 'k', '\0',
   /* "aidhan.net", true */ 'a', 'i', 'd', 'h', 'a', 'n', '.', 'n', 'e', 't', '\0',
   /* "aidikofflaw.com", true */ 'a', 'i', 'd', 'i', 'k', 'o', 'f', 'f', 'l', 'a', 'w', '.', 'c', 'o', 'm', '\0',
-  /* "aids.gov", true */ 'a', 'i', 'd', 's', '.', 'g', 'o', 'v', '\0',
   /* "aie.de", true */ 'a', 'i', 'e', '.', 'd', 'e', '\0',
   /* "aiesecarad.ro", true */ 'a', 'i', 'e', 's', 'e', 'c', 'a', 'r', 'a', 'd', '.', 'r', 'o', '\0',
   /* "aify.eu", true */ 'a', 'i', 'f', 'y', '.', 'e', 'u', '\0',
   /* "aigcev.org", true */ 'a', 'i', 'g', 'c', 'e', 'v', '.', 'o', 'r', 'g', '\0',
   /* "aikenorganics.com", true */ 'a', 'i', 'k', 'e', 'n', 'o', 'r', 'g', 'a', 'n', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "aikido-club-limburg.de", true */ 'a', 'i', 'k', 'i', 'd', 'o', '-', 'c', 'l', 'u', 'b', '-', 'l', 'i', 'm', 'b', 'u', 'r', 'g', '.', 'd', 'e', '\0',
   /* "aikido-linz.at", true */ 'a', 'i', 'k', 'i', 'd', 'o', '-', 'l', 'i', 'n', 'z', '.', 'a', 't', '\0',
   /* "aikido-wels.at", true */ 'a', 'i', 'k', 'i', 'd', 'o', '-', 'w', 'e', 'l', 's', '.', 'a', 't', '\0',
@@ -1175,17 +1176,16 @@ static const char kSTSHostTable[] = {
   /* "annuaire-jcb.com", true */ 'a', 'n', 'n', 'u', 'a', 'i', 'r', 'e', '-', 'j', 'c', 'b', '.', 'c', 'o', 'm', '\0',
   /* "annuaire-photographe.fr", false */ 'a', 'n', 'n', 'u', 'a', 'i', 'r', 'e', '-', 'p', 'h', 'o', 't', 'o', 'g', 'r', 'a', 'p', 'h', 'e', '.', 'f', 'r', '\0',
   /* "anohana.org", true */ 'a', 'n', 'o', 'h', 'a', 'n', 'a', '.', 'o', 'r', 'g', '\0',
   /* "anojan.com", true */ 'a', 'n', 'o', 'j', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "anon-next.de", true */ 'a', 'n', 'o', 'n', '-', 'n', 'e', 'x', 't', '.', 'd', 'e', '\0',
   /* "anonboards.com", true */ 'a', 'n', 'o', 'n', 'b', 'o', 'a', 'r', 'd', 's', '.', 'c', 'o', 'm', '\0',
   /* "anoncom.net", true */ 'a', 'n', 'o', 'n', 'c', 'o', 'm', '.', 'n', 'e', 't', '\0',
   /* "anoneko.com", true */ 'a', 'n', 'o', 'n', 'e', 'k', 'o', '.', 'c', 'o', 'm', '\0',
-  /* "anongoth.pl", true */ 'a', 'n', 'o', 'n', 'g', 'o', 't', 'h', '.', 'p', 'l', '\0',
   /* "anonukradio.org", true */ 'a', 'n', 'o', 'n', 'u', 'k', 'r', 'a', 'd', 'i', 'o', '.', 'o', 'r', 'g', '\0',
   /* "anonym-surfen.de", true */ 'a', 'n', 'o', 'n', 'y', 'm', '-', 's', 'u', 'r', 'f', 'e', 'n', '.', 'd', 'e', '\0',
   /* "anonyme-spieler.at", true */ 'a', 'n', 'o', 'n', 'y', 'm', 'e', '-', 's', 'p', 'i', 'e', 'l', 'e', 'r', '.', 'a', 't', '\0',
   /* "anotherchef.com", true */ 'a', 'n', 'o', 't', 'h', 'e', 'r', 'c', 'h', 'e', 'f', '.', 'c', 'o', 'm', '\0',
   /* "anotherfatgeek.net", true */ 'a', 'n', 'o', 't', 'h', 'e', 'r', 'f', 'a', 't', 'g', 'e', 'e', 'k', '.', 'n', 'e', 't', '\0',
   /* "anothermanfilm.co.uk", true */ 'a', 'n', 'o', 't', 'h', 'e', 'r', 'm', 'a', 'n', 'f', 'i', 'l', 'm', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "anothermilan.net", true */ 'a', 'n', 'o', 't', 'h', 'e', 'r', 'm', 'i', 'l', 'a', 'n', '.', 'n', 'e', 't', '\0',
   /* "ans-delft.nl", true */ 'a', 'n', 's', '-', 'd', 'e', 'l', 'f', 't', '.', 'n', 'l', '\0',
@@ -1519,21 +1519,23 @@ static const char kSTSHostTable[] = {
   /* "askwhy.eu", true */ 'a', 's', 'k', 'w', 'h', 'y', '.', 'e', 'u', '\0',
   /* "aspargesgaarden.no", true */ 'a', 's', 'p', 'a', 'r', 'g', 'e', 's', 'g', 'a', 'a', 'r', 'd', 'e', 'n', '.', 'n', 'o', '\0',
   /* "asperti.com", true */ 'a', 's', 'p', 'e', 'r', 't', 'i', '.', 'c', 'o', 'm', '\0',
   /* "asphaltfruehling.de", true */ 'a', 's', 'p', 'h', 'a', 'l', 't', 'f', 'r', 'u', 'e', 'h', 'l', 'i', 'n', 'g', '.', 'd', 'e', '\0',
   /* "asphyxia.su", true */ 'a', 's', 'p', 'h', 'y', 'x', 'i', 'a', '.', 's', 'u', '\0',
   /* "aspiescentral.com", true */ 'a', 's', 'p', 'i', 'e', 's', 'c', 'e', 'n', 't', 'r', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "aspires.co.jp", true */ 'a', 's', 'p', 'i', 'r', 'e', 's', '.', 'c', 'o', '.', 'j', 'p', '\0',
   /* "aspisdata.com", true */ 'a', 's', 'p', 'i', 's', 'd', 'a', 't', 'a', '.', 'c', 'o', 'm', '\0',
+  /* "asr.li", true */ 'a', 's', 'r', '.', 'l', 'i', '\0',
   /* "assdecoeur.org", true */ 'a', 's', 's', 'd', 'e', 'c', 'o', 'e', 'u', 'r', '.', 'o', 'r', 'g', '\0',
   /* "asseenfromthesidecar.org", true */ 'a', 's', 's', 'e', 'e', 'n', 'f', 'r', 'o', 'm', 't', 'h', 'e', 's', 'i', 'd', 'e', 'c', 'a', 'r', '.', 'o', 'r', 'g', '\0',
   /* "assemble-together.org", true */ 'a', 's', 's', 'e', 'm', 'b', 'l', 'e', '-', 't', 'o', 'g', 'e', 't', 'h', 'e', 'r', '.', 'o', 'r', 'g', '\0',
   /* "assguidesporrentruy.ch", true */ 'a', 's', 's', 'g', 'u', 'i', 'd', 'e', 's', 'p', 'o', 'r', 'r', 'e', 'n', 't', 'r', 'u', 'y', '.', 'c', 'h', '\0',
   /* "assindia.nl", true */ 'a', 's', 's', 'i', 'n', 'd', 'i', 'a', '.', 'n', 'l', '\0',
+  /* "asspinter.me", true */ 'a', 's', 's', 'p', 'i', 'n', 't', 'e', 'r', '.', 'm', 'e', '\0',
   /* "assurancesmons.be", true */ 'a', 's', 's', 'u', 'r', 'a', 'n', 'c', 'e', 's', 'm', 'o', 'n', 's', '.', 'b', 'e', '\0',
   /* "asta-bar.de", false */ 'a', 's', 't', 'a', '-', 'b', 'a', 'r', '.', 'd', 'e', '\0',
   /* "astec-informatica.com", true */ 'a', 's', 't', 'e', 'c', '-', 'i', 'n', 'f', 'o', 'r', 'm', 'a', 't', 'i', 'c', 'a', '.', 'c', 'o', 'm', '\0',
   /* "astengox.com", true */ 'a', 's', 't', 'e', 'n', 'g', 'o', 'x', '.', 'c', 'o', 'm', '\0',
   /* "astenretail.com", true */ 'a', 's', 't', 'e', 'n', 'r', 'e', 't', 'a', 'i', 'l', '.', 'c', 'o', 'm', '\0',
   /* "astraalivankila.net", true */ 'a', 's', 't', 'r', 'a', 'a', 'l', 'i', 'v', 'a', 'n', 'k', 'i', 'l', 'a', '.', 'n', 'e', 't', '\0',
   /* "astrea-voetbal-groningen.nl", true */ 'a', 's', 't', 'r', 'e', 'a', '-', 'v', 'o', 'e', 't', 'b', 'a', 'l', '-', 'g', 'r', 'o', 'n', 'i', 'n', 'g', 'e', 'n', '.', 'n', 'l', '\0',
   /* "astronomie-fulda.de", true */ 'a', 's', 't', 'r', 'o', 'n', 'o', 'm', 'i', 'e', '-', 'f', 'u', 'l', 'd', 'a', '.', 'd', 'e', '\0',
@@ -1743,16 +1745,17 @@ static const char kSTSHostTable[] = {
   /* "axrec.de", true */ 'a', 'x', 'r', 'e', 'c', '.', 'd', 'e', '\0',
   /* "axtux.tk", true */ 'a', 'x', 't', 'u', 'x', '.', 't', 'k', '\0',
   /* "ayahuascaadvisor.com", true */ 'a', 'y', 'a', 'h', 'u', 'a', 's', 'c', 'a', 'a', 'd', 'v', 'i', 's', 'o', 'r', '.', 'c', 'o', 'm', '\0',
   /* "ayesh.me", true */ 'a', 'y', 'e', 's', 'h', '.', 'm', 'e', '\0',
   /* "aykutcevik.com", true */ 'a', 'y', 'k', 'u', 't', 'c', 'e', 'v', 'i', 'k', '.', 'c', 'o', 'm', '\0',
   /* "aylak.com", true */ 'a', 'y', 'l', 'a', 'k', '.', 'c', 'o', 'm', '\0',
   /* "aymerick.fr", true */ 'a', 'y', 'm', 'e', 'r', 'i', 'c', 'k', '.', 'f', 'r', '\0',
   /* "aymericlagier.com", true */ 'a', 'y', 'm', 'e', 'r', 'i', 'c', 'l', 'a', 'g', 'i', 'e', 'r', '.', 'c', 'o', 'm', '\0',
+  /* "ayothemes.com", true */ 'a', 'y', 'o', 't', 'h', 'e', 'm', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "ayurveda-mantry.com", true */ 'a', 'y', 'u', 'r', 'v', 'e', 'd', 'a', '-', 'm', 'a', 'n', 't', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "ayurveda101.com", false */ 'a', 'y', 'u', 'r', 'v', 'e', 'd', 'a', '1', '0', '1', '.', 'c', 'o', 'm', '\0',
   /* "azabani.com", true */ 'a', 'z', 'a', 'b', 'a', 'n', 'i', '.', 'c', 'o', 'm', '\0',
   /* "azamra.com", true */ 'a', 'z', 'a', 'm', 'r', 'a', '.', 'c', 'o', 'm', '\0',
   /* "azazy.net", true */ 'a', 'z', 'a', 'z', 'y', '.', 'n', 'e', 't', '\0',
   /* "azbuki.by", true */ 'a', 'z', 'b', 'u', 'k', 'i', '.', 'b', 'y', '\0',
   /* "azia.info", true */ 'a', 'z', 'i', 'a', '.', 'i', 'n', 'f', 'o', '\0',
   /* "azimut.fr", true */ 'a', 'z', 'i', 'm', 'u', 't', '.', 'f', 'r', '\0',
@@ -2196,16 +2199,17 @@ static const char kSTSHostTable[] = {
   /* "bettrlifeapp.com", true */ 'b', 'e', 't', 't', 'r', 'l', 'i', 'f', 'e', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
   /* "betulashop.ch", true */ 'b', 'e', 't', 'u', 'l', 'a', 's', 'h', 'o', 'p', '.', 'c', 'h', '\0',
   /* "betwalker.com", true */ 'b', 'e', 't', 'w', 'a', 'l', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "beulahtabernacle.com", true */ 'b', 'e', 'u', 'l', 'a', 'h', 't', 'a', 'b', 'e', 'r', 'n', 'a', 'c', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "beulen.email", true */ 'b', 'e', 'u', 'l', 'e', 'n', '.', 'e', 'm', 'a', 'i', 'l', '\0',
   /* "beulen.pro", true */ 'b', 'e', 'u', 'l', 'e', 'n', '.', 'p', 'r', 'o', '\0',
   /* "bevedo.cz", true */ 'b', 'e', 'v', 'e', 'd', 'o', '.', 'c', 'z', '\0',
   /* "beveiligingscamerawestland.nl", true */ 'b', 'e', 'v', 'e', 'i', 'l', 'i', 'g', 'i', 'n', 'g', 's', 'c', 'a', 'm', 'e', 'r', 'a', 'w', 'e', 's', 't', 'l', 'a', 'n', 'd', '.', 'n', 'l', '\0',
+  /* "bevinco2020.com", true */ 'b', 'e', 'v', 'i', 'n', 'c', 'o', '2', '0', '2', '0', '.', 'c', 'o', 'm', '\0',
   /* "bevinsco.org", true */ 'b', 'e', 'v', 'i', 'n', 's', 'c', 'o', '.', 'o', 'r', 'g', '\0',
   /* "bewerbungsfibel.de", true */ 'b', 'e', 'w', 'e', 'r', 'b', 'u', 'n', 'g', 's', 'f', 'i', 'b', 'e', 'l', '.', 'd', 'e', '\0',
   /* "bexit-hosting.nl", true */ 'b', 'e', 'x', 'i', 't', '-', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'n', 'l', '\0',
   /* "bexit-security.eu", true */ 'b', 'e', 'x', 'i', 't', '-', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'e', 'u', '\0',
   /* "bexit-security.nl", true */ 'b', 'e', 'x', 'i', 't', '-', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'n', 'l', '\0',
   /* "bexit.nl", true */ 'b', 'e', 'x', 'i', 't', '.', 'n', 'l', '\0',
   /* "bexithosting.nl", true */ 'b', 'e', 'x', 'i', 't', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'n', 'l', '\0',
   /* "bey.io", true */ 'b', 'e', 'y', '.', 'i', 'o', '\0',
@@ -2269,17 +2273,16 @@ static const char kSTSHostTable[] = {
   /* "big-andy.co.uk", true */ 'b', 'i', 'g', '-', 'a', 'n', 'd', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "bigbluedoor.net", true */ 'b', 'i', 'g', 'b', 'l', 'u', 'e', 'd', 'o', 'o', 'r', '.', 'n', 'e', 't', '\0',
   /* "bigclassaction.com", true */ 'b', 'i', 'g', 'c', 'l', 'a', 's', 's', 'a', 'c', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "bigdinosaur.org", true */ 'b', 'i', 'g', 'd', 'i', 'n', 'o', 's', 'a', 'u', 'r', '.', 'o', 'r', 'g', '\0',
   /* "biggreenexchange.com", true */ 'b', 'i', 'g', 'g', 'r', 'e', 'e', 'n', 'e', 'x', 'c', 'h', 'a', 'n', 'g', 'e', '.', 'c', 'o', 'm', '\0',
   /* "bight.ca", true */ 'b', 'i', 'g', 'h', 't', '.', 'c', 'a', '\0',
   /* "biglou.com", true */ 'b', 'i', 'g', 'l', 'o', 'u', '.', 'c', 'o', 'm', '\0',
   /* "bigskymontanalandforsale.com", true */ 'b', 'i', 'g', 's', 'k', 'y', 'm', 'o', 'n', 't', 'a', 'n', 'a', 'l', 'a', 'n', 'd', 'f', 'o', 'r', 's', 'a', 'l', 'e', '.', 'c', 'o', 'm', '\0',
-  /* "biguixhe.net", true */ 'b', 'i', 'g', 'u', 'i', 'x', 'h', 'e', '.', 'n', 'e', 't', '\0',
   /* "biilo.com", true */ 'b', 'i', 'i', 'l', 'o', '.', 'c', 'o', 'm', '\0',
   /* "bijuteriicualint.ro", true */ 'b', 'i', 'j', 'u', 't', 'e', 'r', 'i', 'i', 'c', 'u', 'a', 'l', 'i', 'n', 't', '.', 'r', 'o', '\0',
   /* "bike-kurse.ch", true */ 'b', 'i', 'k', 'e', '-', 'k', 'u', 'r', 's', 'e', '.', 'c', 'h', '\0',
   /* "bike-shack.com", true */ 'b', 'i', 'k', 'e', '-', 's', 'h', 'a', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "bikebay.it", true */ 'b', 'i', 'k', 'e', 'b', 'a', 'y', '.', 'i', 't', '\0',
   /* "biker.dating", true */ 'b', 'i', 'k', 'e', 'r', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "bikermusic.net", true */ 'b', 'i', 'k', 'e', 'r', 'm', 'u', 's', 'i', 'c', '.', 'n', 'e', 't', '\0',
   /* "bikeshopitalia.com", true */ 'b', 'i', 'k', 'e', 's', 'h', 'o', 'p', 'i', 't', 'a', 'l', 'i', 'a', '.', 'c', 'o', 'm', '\0',
@@ -2538,17 +2541,16 @@ static const char kSTSHostTable[] = {
   /* "blogcuaviet.com", true */ 'b', 'l', 'o', 'g', 'c', 'u', 'a', 'v', 'i', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "bloggingwithchildren.com", true */ 'b', 'l', 'o', 'g', 'g', 'i', 'n', 'g', 'w', 'i', 't', 'h', 'c', 'h', 'i', 'l', 'd', 'r', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "blognone.com", true */ 'b', 'l', 'o', 'g', 'n', 'o', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "blogreen.org", true */ 'b', 'l', 'o', 'g', 'r', 'e', 'e', 'n', '.', 'o', 'r', 'g', '\0',
   /* "blokuhaka.fr", true */ 'b', 'l', 'o', 'k', 'u', 'h', 'a', 'k', 'a', '.', 'f', 'r', '\0',
   /* "bloodsports.org", true */ 'b', 'l', 'o', 'o', 'd', 's', 'p', 'o', 'r', 't', 's', '.', 'o', 'r', 'g', '\0',
   /* "bloomnbud.com", true */ 'b', 'l', 'o', 'o', 'm', 'n', 'b', 'u', 'd', '.', 'c', 'o', 'm', '\0',
   /* "bloomzoomy.ru", true */ 'b', 'l', 'o', 'o', 'm', 'z', 'o', 'o', 'm', 'y', '.', 'r', 'u', '\0',
-  /* "blowjs.com", true */ 'b', 'l', 'o', 'w', 'j', 's', '.', 'c', 'o', 'm', '\0',
   /* "bltc.co", true */ 'b', 'l', 't', 'c', '.', 'c', 'o', '\0',
   /* "bltc.co.uk", true */ 'b', 'l', 't', 'c', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "bltc.com", true */ 'b', 'l', 't', 'c', '.', 'c', 'o', 'm', '\0',
   /* "bltc.net", true */ 'b', 'l', 't', 'c', '.', 'n', 'e', 't', '\0',
   /* "bltc.org", true */ 'b', 'l', 't', 'c', '.', 'o', 'r', 'g', '\0',
   /* "bltc.org.uk", true */ 'b', 'l', 't', 'c', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "blubberladen.de", true */ 'b', 'l', 'u', 'b', 'b', 'e', 'r', 'l', 'a', 'd', 'e', 'n', '.', 'd', 'e', '\0',
   /* "blue-labs.org", true */ 'b', 'l', 'u', 'e', '-', 'l', 'a', 'b', 's', '.', 'o', 'r', 'g', '\0',
@@ -2782,17 +2784,16 @@ static const char kSTSHostTable[] = {
   /* "breeethretail.ru", true */ 'b', 'r', 'e', 'e', 'e', 't', 'h', 'r', 'e', 't', 'a', 'i', 'l', '.', 'r', 'u', '\0',
   /* "breest.net", true */ 'b', 'r', 'e', 'e', 's', 't', '.', 'n', 'e', 't', '\0',
   /* "breeswish.org", true */ 'b', 'r', 'e', 'e', 's', 'w', 'i', 's', 'h', '.', 'o', 'r', 'g', '\0',
   /* "breeyn.com", true */ 'b', 'r', 'e', 'e', 'y', 'n', '.', 'c', 'o', 'm', '\0',
   /* "brefy.com", true */ 'b', 'r', 'e', 'f', 'y', '.', 'c', 'o', 'm', '\0',
   /* "brege.org", true */ 'b', 'r', 'e', 'g', 'e', '.', 'o', 'r', 'g', '\0',
   /* "breitbild-beamer.de", true */ 'b', 'r', 'e', 'i', 't', 'b', 'i', 'l', 'd', '-', 'b', 'e', 'a', 'm', 'e', 'r', '.', 'd', 'e', '\0',
   /* "brejoc.com", true */ 'b', 'r', 'e', 'j', 'o', 'c', '.', 'c', 'o', 'm', '\0',
-  /* "bremensaki.com", true */ 'b', 'r', 'e', 'm', 'e', 'n', 's', 'a', 'k', 'i', '.', 'c', 'o', 'm', '\0',
   /* "brendanscherer.com", true */ 'b', 'r', 'e', 'n', 'd', 'a', 'n', 's', 'c', 'h', 'e', 'r', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "brentnewbury.com", true */ 'b', 'r', 'e', 'n', 't', 'n', 'e', 'w', 'b', 'u', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "brettcornwall.com", true */ 'b', 'r', 'e', 't', 't', 'c', 'o', 'r', 'n', 'w', 'a', 'l', 'l', '.', 'c', 'o', 'm', '\0',
   /* "bretz-hufer.de", true */ 'b', 'r', 'e', 't', 'z', '-', 'h', 'u', 'f', 'e', 'r', '.', 'd', 'e', '\0',
   /* "brevboxar.se", true */ 'b', 'r', 'e', 'v', 'b', 'o', 'x', 'a', 'r', '.', 's', 'e', '\0',
   /* "brewtrackr.com", true */ 'b', 'r', 'e', 'w', 't', 'r', 'a', 'c', 'k', 'r', '.', 'c', 'o', 'm', '\0',
   /* "brgins.com", true */ 'b', 'r', 'g', 'i', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "brianalaway.com", true */ 'b', 'r', 'i', 'a', 'n', 'a', 'l', 'a', 'w', 'a', 'y', '.', 'c', 'o', 'm', '\0',
@@ -3038,16 +3039,17 @@ static const char kSTSHostTable[] = {
   /* "byrko.sk", true */ 'b', 'y', 'r', 'k', 'o', '.', 's', 'k', '\0',
   /* "byronr.com", true */ 'b', 'y', 'r', 'o', 'n', 'r', '.', 'c', 'o', 'm', '\0',
   /* "byronwade.com", true */ 'b', 'y', 'r', 'o', 'n', 'w', 'a', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "byrtz.de", true */ 'b', 'y', 'r', 't', 'z', '.', 'd', 'e', '\0',
   /* "byte-time.com", true */ 'b', 'y', 't', 'e', '-', 't', 'i', 'm', 'e', '.', 'c', 'o', 'm', '\0',
   /* "byte.chat", true */ 'b', 'y', 't', 'e', '.', 'c', 'h', 'a', 't', '\0',
   /* "bytearts.net", true */ 'b', 'y', 't', 'e', 'a', 'r', 't', 's', '.', 'n', 'e', 't', '\0',
   /* "bytebucket.org", true */ 'b', 'y', 't', 'e', 'b', 'u', 'c', 'k', 'e', 't', '.', 'o', 'r', 'g', '\0',
+  /* "bytejail.com", true */ 'b', 'y', 't', 'e', 'j', 'a', 'i', 'l', '.', 'c', 'o', 'm', '\0',
   /* "bytema.cz", true */ 'b', 'y', 't', 'e', 'm', 'a', '.', 'c', 'z', '\0',
   /* "byteowls.com", true */ 'b', 'y', 't', 'e', 'o', 'w', 'l', 's', '.', 'c', 'o', 'm', '\0',
   /* "bytes.fyi", true */ 'b', 'y', 't', 'e', 's', '.', 'f', 'y', 'i', '\0',
   /* "bytesatwork.de", true */ 'b', 'y', 't', 'e', 's', 'a', 't', 'w', 'o', 'r', 'k', '.', 'd', 'e', '\0',
   /* "bytesatwork.eu", true */ 'b', 'y', 't', 'e', 's', 'a', 't', 'w', 'o', 'r', 'k', '.', 'e', 'u', '\0',
   /* "byteshark.org", true */ 'b', 'y', 't', 'e', 's', 'h', 'a', 'r', 'k', '.', 'o', 'r', 'g', '\0',
   /* "byteshift.ca", true */ 'b', 'y', 't', 'e', 's', 'h', 'i', 'f', 't', '.', 'c', 'a', '\0',
   /* "bytesizedalex.com", true */ 'b', 'y', 't', 'e', 's', 'i', 'z', 'e', 'd', 'a', 'l', 'e', 'x', '.', 'c', 'o', 'm', '\0',
@@ -3319,32 +3321,29 @@ static const char kSTSHostTable[] = {
   /* "catharinesomerville.com", true */ 'c', 'a', 't', 'h', 'a', 'r', 'i', 'n', 'e', 's', 'o', 'm', 'e', 'r', 'v', 'i', 'l', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "catholics.dating", true */ 'c', 'a', 't', 'h', 'o', 'l', 'i', 'c', 's', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "cathosa.nl", true */ 'c', 'a', 't', 'h', 'o', 's', 'a', '.', 'n', 'l', '\0',
   /* "cativa.net", true */ 'c', 'a', 't', 'i', 'v', 'a', '.', 'n', 'e', 't', '\0',
   /* "catmoose.ca", true */ 'c', 'a', 't', 'm', 'o', 'o', 's', 'e', '.', 'c', 'a', '\0',
   /* "catnet.dk", false */ 'c', 'a', 't', 'n', 'e', 't', '.', 'd', 'k', '\0',
   /* "catnmeow.com", true */ 'c', 'a', 't', 'n', 'm', 'e', 'o', 'w', '.', 'c', 'o', 'm', '\0',
   /* "catsmagic.pp.ua", true */ 'c', 'a', 't', 's', 'm', 'a', 'g', 'i', 'c', '.', 'p', 'p', '.', 'u', 'a', '\0',
-  /* "cattivo.nl", false */ 'c', 'a', 't', 't', 'i', 'v', 'o', '.', 'n', 'l', '\0',
   /* "caulfieldeastapartments.com.au", true */ 'c', 'a', 'u', 'l', 'f', 'i', 'e', 'l', 'd', 'e', 'a', 's', 't', 'a', 'p', 'a', 'r', 't', 'm', 'e', 'n', 't', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "caulfieldracecourseapartments.com.au", true */ 'c', 'a', 'u', 'l', 'f', 'i', 'e', 'l', 'd', 'r', 'a', 'c', 'e', 'c', 'o', 'u', 'r', 's', 'e', 'a', 'p', 'a', 'r', 't', 'm', 'e', 'n', 't', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "caulong-ao.net", true */ 'c', 'a', 'u', 'l', 'o', 'n', 'g', '-', 'a', 'o', '.', 'n', 'e', 't', '\0',
   /* "cav.ac", true */ 'c', 'a', 'v', '.', 'a', 'c', '\0',
-  /* "cavac.at", true */ 'c', 'a', 'v', 'a', 'c', '.', 'a', 't', '\0',
   /* "cavalierkingcharlesspaniel.com.br", true */ 'c', 'a', 'v', 'a', 'l', 'i', 'e', 'r', 'k', 'i', 'n', 'g', 'c', 'h', 'a', 'r', 'l', 'e', 's', 's', 'p', 'a', 'n', 'i', 'e', 'l', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "cave-reynard.ch", true */ 'c', 'a', 'v', 'e', '-', 'r', 'e', 'y', 'n', 'a', 'r', 'd', '.', 'c', 'h', '\0',
   /* "cavern.tv", true */ 'c', 'a', 'v', 'e', 'r', 'n', '.', 't', 'v', '\0',
   /* "cavzodiaco.com.br", true */ 'c', 'a', 'v', 'z', 'o', 'd', 'i', 'a', 'c', 'o', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "caylercapital.com", true */ 'c', 'a', 'y', 'l', 'e', 'r', 'c', 'a', 'p', 'i', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "cazes.info", true */ 'c', 'a', 'z', 'e', 's', '.', 'i', 'n', 'f', 'o', '\0',
   /* "cbamo.org", true */ 'c', 'b', 'a', 'm', 'o', '.', 'o', 'r', 'g', '\0',
   /* "cbbank.com", true */ 'c', 'b', 'b', 'a', 'n', 'k', '.', 'c', 'o', 'm', '\0',
   /* "cbd.supply", true */ 'c', 'b', 'd', '.', 's', 'u', 'p', 'p', 'l', 'y', '\0',
-  /* "cbdev.de", true */ 'c', 'b', 'd', 'e', 'v', '.', 'd', 'e', '\0',
   /* "cbecrft.net", true */ 'c', 'b', 'e', 'c', 'r', 'f', 't', '.', 'n', 'e', 't', '\0',
   /* "cbintermountainrealty.com", true */ 'c', 'b', 'i', 'n', 't', 'e', 'r', 'm', 'o', 'u', 'n', 't', 'a', 'i', 'n', 'r', 'e', 'a', 'l', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "ccac.gov", true */ 'c', 'c', 'a', 'c', '.', 'g', 'o', 'v', '\0',
   /* "ccayearbook.com", true */ 'c', 'c', 'a', 'y', 'e', 'a', 'r', 'b', 'o', 'o', 'k', '.', 'c', 'o', 'm', '\0',
   /* "ccgn.co", true */ 'c', 'c', 'g', 'n', '.', 'c', 'o', '\0',
   /* "ccja.ro", false */ 'c', 'c', 'j', 'a', '.', 'r', 'o', '\0',
   /* "ccl-sti.ch", true */ 'c', 'c', 'l', '-', 's', 't', 'i', '.', 'c', 'h', '\0',
   /* "ccsys.com", true */ 'c', 'c', 's', 'y', 's', '.', 'c', 'o', 'm', '\0',
@@ -3649,16 +3648,17 @@ static const char kSTSHostTable[] = {
   /* "chrisshort.net", false */ 'c', 'h', 'r', 'i', 's', 's', 'h', 'o', 'r', 't', '.', 'n', 'e', 't', '\0',
   /* "christadelphiananswers.org", true */ 'c', 'h', 'r', 'i', 's', 't', 'a', 'd', 'e', 'l', 'p', 'h', 'i', 'a', 'n', 'a', 'n', 's', 'w', 'e', 'r', 's', '.', 'o', 'r', 'g', '\0',
   /* "christadelphians.eu", true */ 'c', 'h', 'r', 'i', 's', 't', 'a', 'd', 'e', 'l', 'p', 'h', 'i', 'a', 'n', 's', '.', 'e', 'u', '\0',
   /* "christensenplace.us", true */ 'c', 'h', 'r', 'i', 's', 't', 'e', 'n', 's', 'e', 'n', 'p', 'l', 'a', 'c', 'e', '.', 'u', 's', '\0',
   /* "christiaanconover.com", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'a', 'n', 'c', 'o', 'n', 'o', 'v', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "christian-host.com", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', '-', 'h', 'o', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "christianforums.com", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', 'f', 'o', 'r', 'u', 'm', 's', '.', 'c', 'o', 'm', '\0',
   /* "christiangaetano.com", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', 'g', 'a', 'e', 't', 'a', 'n', 'o', '.', 'c', 'o', 'm', '\0',
+  /* "christianhoffmann.info", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', 'h', 'o', 'f', 'f', 'm', 'a', 'n', 'n', '.', 'i', 'n', 'f', 'o', '\0',
   /* "christianhospitaltank.org", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', 'h', 'o', 's', 'p', 'i', 't', 'a', 'l', 't', 'a', 'n', 'k', '.', 'o', 'r', 'g', '\0',
   /* "christianliebel.com", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', 'l', 'i', 'e', 'b', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "christianpusch.de", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', 'p', 'u', 's', 'c', 'h', '.', 'd', 'e', '\0',
   /* "christians.dating", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', 's', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "christiansayswords.com", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', 's', 'a', 'y', 's', 'w', 'o', 'r', 'd', 's', '.', 'c', 'o', 'm', '\0',
   /* "christianscholz.de", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', 's', 'c', 'h', 'o', 'l', 'z', '.', 'd', 'e', '\0',
   /* "christianscholz.eu", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'a', 'n', 's', 'c', 'h', 'o', 'l', 'z', '.', 'e', 'u', '\0',
   /* "christiesantiques.com", true */ 'c', 'h', 'r', 'i', 's', 't', 'i', 'e', 's', 'a', 'n', 't', 'i', 'q', 'u', 'e', 's', '.', 'c', 'o', 'm', '\0',
@@ -3708,17 +3708,16 @@ static const char kSTSHostTable[] = {
   /* "cidbot.com", true */ 'c', 'i', 'd', 'b', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "ciderclub.com", true */ 'c', 'i', 'd', 'e', 'r', 'c', 'l', 'u', 'b', '.', 'c', 'o', 'm', '\0',
   /* "cienbeaute-lidl.fr", true */ 'c', 'i', 'e', 'n', 'b', 'e', 'a', 'u', 't', 'e', '-', 'l', 'i', 'd', 'l', '.', 'f', 'r', '\0',
   /* "cieslar.io", true */ 'c', 'i', 'e', 's', 'l', 'a', 'r', '.', 'i', 'o', '\0',
   /* "cig-dem.com", true */ 'c', 'i', 'g', '-', 'd', 'e', 'm', '.', 'c', 'o', 'm', '\0',
   /* "cigar-cartel.com", true */ 'c', 'i', 'g', 'a', 'r', '-', 'c', 'a', 'r', 't', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "cigarterminal.com", false */ 'c', 'i', 'g', 'a', 'r', 't', 'e', 'r', 'm', 'i', 'n', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "cigoteket.se", true */ 'c', 'i', 'g', 'o', 't', 'e', 'k', 'e', 't', '.', 's', 'e', '\0',
-  /* "ciicutini.ro", true */ 'c', 'i', 'i', 'c', 'u', 't', 'i', 'n', 'i', '.', 'r', 'o', '\0',
   /* "cima-idf.fr", true */ 'c', 'i', 'm', 'a', '-', 'i', 'd', 'f', '.', 'f', 'r', '\0',
   /* "cimballa.com", true */ 'c', 'i', 'm', 'b', 'a', 'l', 'l', 'a', '.', 'c', 'o', 'm', '\0',
   /* "cimfax.com", true */ 'c', 'i', 'm', 'f', 'a', 'x', '.', 'c', 'o', 'm', '\0',
   /* "cinartelorgu.com", true */ 'c', 'i', 'n', 'a', 'r', 't', 'e', 'l', 'o', 'r', 'g', 'u', '.', 'c', 'o', 'm', '\0',
   /* "cine-music.de", true */ 'c', 'i', 'n', 'e', '-', 'm', 'u', 's', 'i', 'c', '.', 'd', 'e', '\0',
   /* "cinefilzonen.se", true */ 'c', 'i', 'n', 'e', 'f', 'i', 'l', 'z', 'o', 'n', 'e', 'n', '.', 's', 'e', '\0',
   /* "cinema5.ru", true */ 'c', 'i', 'n', 'e', 'm', 'a', '5', '.', 'r', 'u', '\0',
   /* "cinemaclub.co", true */ 'c', 'i', 'n', 'e', 'm', 'a', 'c', 'l', 'u', 'b', '.', 'c', 'o', '\0',
@@ -3953,16 +3952,17 @@ static const char kSTSHostTable[] = {
   /* "codeine.co.uk", true */ 'c', 'o', 'd', 'e', 'i', 'n', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "codeit.guru", true */ 'c', 'o', 'd', 'e', 'i', 't', '.', 'g', 'u', 'r', 'u', '\0',
   /* "codeit.us", true */ 'c', 'o', 'd', 'e', 'i', 't', '.', 'u', 's', '\0',
   /* "codelove.de", true */ 'c', 'o', 'd', 'e', 'l', 'o', 'v', 'e', '.', 'd', 'e', '\0',
   /* "codenode.io", true */ 'c', 'o', 'd', 'e', 'n', 'o', 'd', 'e', '.', 'i', 'o', '\0',
   /* "codeplay.org", true */ 'c', 'o', 'd', 'e', 'p', 'l', 'a', 'y', '.', 'o', 'r', 'g', '\0',
   /* "codepoints.net", true */ 'c', 'o', 'd', 'e', 'p', 'o', 'i', 'n', 't', 's', '.', 'n', 'e', 't', '\0',
   /* "codepref.com", true */ 'c', 'o', 'd', 'e', 'p', 'r', 'e', 'f', '.', 'c', 'o', 'm', '\0',
+  /* "codepult.com", true */ 'c', 'o', 'd', 'e', 'p', 'u', 'l', 't', '.', 'c', 'o', 'm', '\0',
   /* "codera.co.uk", true */ 'c', 'o', 'd', 'e', 'r', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "codercross.com", true */ 'c', 'o', 'd', 'e', 'r', 'c', 'r', 'o', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "codereview.appspot.com", false */ 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w', '.', 'a', 'p', 'p', 's', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "codereview.chromium.org", false */ 'c', 'o', 'd', 'e', 'r', 'e', 'v', 'i', 'e', 'w', '.', 'c', 'h', 'r', 'o', 'm', 'i', 'u', 'm', '.', 'o', 'r', 'g', '\0',
   /* "coderhangout.com", true */ 'c', 'o', 'd', 'e', 'r', 'h', 'a', 'n', 'g', 'o', 'u', 't', '.', 'c', 'o', 'm', '\0',
   /* "codesplain.in", true */ 'c', 'o', 'd', 'e', 's', 'p', 'l', 'a', 'i', 'n', '.', 'i', 'n', '\0',
   /* "codesport.io", true */ 'c', 'o', 'd', 'e', 's', 'p', 'o', 'r', 't', '.', 'i', 'o', '\0',
   /* "codestudies.net", true */ 'c', 'o', 'd', 'e', 's', 't', 'u', 'd', 'i', 'e', 's', '.', 'n', 'e', 't', '\0',
@@ -4194,16 +4194,17 @@ static const char kSTSHostTable[] = {
   /* "cookmedical.com", false */ 'c', 'o', 'o', 'k', 'm', 'e', 'd', 'i', 'c', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "cooko.at", true */ 'c', 'o', 'o', 'k', 'o', '.', 'a', 't', '\0',
   /* "cool-wallpapers.jp", true */ 'c', 'o', 'o', 'l', '-', 'w', 'a', 'l', 'l', 'p', 'a', 'p', 'e', 'r', 's', '.', 'j', 'p', '\0',
   /* "cool110.tk", true */ 'c', 'o', 'o', 'l', '1', '1', '0', '.', 't', 'k', '\0',
   /* "coolaj86.com", true */ 'c', 'o', 'o', 'l', 'a', 'j', '8', '6', '.', 'c', 'o', 'm', '\0',
   /* "cooldan.com", true */ 'c', 'o', 'o', 'l', 'd', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "coolerssr.space", true */ 'c', 'o', 'o', 'l', 'e', 'r', 's', 's', 'r', '.', 's', 'p', 'a', 'c', 'e', '\0',
   /* "coolgifs.de", true */ 'c', 'o', 'o', 'l', 'g', 'i', 'f', 's', '.', 'd', 'e', '\0',
+  /* "coolrc.me", true */ 'c', 'o', 'o', 'l', 'r', 'c', '.', 'm', 'e', '\0',
   /* "coolviewthermostat.com", true */ 'c', 'o', 'o', 'l', 'v', 'i', 'e', 'w', 't', 'h', 'e', 'r', 'm', 'o', 's', 't', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "coopens.com", true */ 'c', 'o', 'o', 'p', 'e', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "coore.jp", true */ 'c', 'o', 'o', 'r', 'e', '.', 'j', 'p', '\0',
   /* "copperhead.co", true */ 'c', 'o', 'p', 'p', 'e', 'r', 'h', 'e', 'a', 'd', '.', 'c', 'o', '\0',
   /* "copypoison.com", true */ 'c', 'o', 'p', 'y', 'p', 'o', 'i', 's', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "copyright-watch.org", true */ 'c', 'o', 'p', 'y', 'r', 'i', 'g', 'h', 't', '-', 'w', 'a', 't', 'c', 'h', '.', 'o', 'r', 'g', '\0',
   /* "copytrack.com", true */ 'c', 'o', 'p', 'y', 't', 'r', 'a', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "coramcdaniel.com", true */ 'c', 'o', 'r', 'a', 'm', 'c', 'd', 'a', 'n', 'i', 'e', 'l', '.', 'c', 'o', 'm', '\0',
@@ -4247,18 +4248,16 @@ static const char kSTSHostTable[] = {
   /* "cosmundi.de", true */ 'c', 'o', 's', 'm', 'u', 'n', 'd', 'i', '.', 'd', 'e', '\0',
   /* "cosplayer.com", true */ 'c', 'o', 's', 'p', 'l', 'a', 'y', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "costablancavoorjou.com", true */ 'c', 'o', 's', 't', 'a', 'b', 'l', 'a', 'n', 'c', 'a', 'v', 'o', 'o', 'r', 'j', 'o', 'u', '.', 'c', 'o', 'm', '\0',
   /* "costow.club", true */ 'c', 'o', 's', 't', 'o', 'w', '.', 'c', 'l', 'u', 'b', '\0',
   /* "costreportdata.com", true */ 'c', 'o', 's', 't', 'r', 'e', 'p', 'o', 'r', 't', 'd', 'a', 't', 'a', '.', 'c', 'o', 'm', '\0',
   /* "cotonea.de", true */ 'c', 'o', 't', 'o', 'n', 'e', 'a', '.', 'd', 'e', '\0',
   /* "cotwe-ge.ch", true */ 'c', 'o', 't', 'w', 'e', '-', 'g', 'e', '.', 'c', 'h', '\0',
   /* "cougar.dating", true */ 'c', 'o', 'u', 'g', 'a', 'r', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
-  /* "coughlan.de", true */ 'c', 'o', 'u', 'g', 'h', 'l', 'a', 'n', '.', 'd', 'e', '\0',
-  /* "coumoul.fr", true */ 'c', 'o', 'u', 'm', 'o', 'u', 'l', '.', 'f', 'r', '\0',
   /* "counstellor.com", true */ 'c', 'o', 'u', 'n', 's', 't', 'e', 'l', 'l', 'o', 'r', '.', 'c', 'o', 'm', '\0',
   /* "counterglobal.com", true */ 'c', 'o', 'u', 'n', 't', 'e', 'r', 'g', 'l', 'o', 'b', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "countermail.com", true */ 'c', 'o', 'u', 'n', 't', 'e', 'r', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm', '\0',
   /* "countryattire.com", true */ 'c', 'o', 'u', 'n', 't', 'r', 'y', 'a', 't', 't', 'i', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "countryoutlaws.ca", true */ 'c', 'o', 'u', 'n', 't', 'r', 'y', 'o', 'u', 't', 'l', 'a', 'w', 's', '.', 'c', 'a', '\0',
   /* "countybankdel.com", true */ 'c', 'o', 'u', 'n', 't', 'y', 'b', 'a', 'n', 'k', 'd', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "couponcodeq.com", true */ 'c', 'o', 'u', 'p', 'o', 'n', 'c', 'o', 'd', 'e', 'q', '.', 'c', 'o', 'm', '\0',
   /* "couragefound.org", true */ 'c', 'o', 'u', 'r', 'a', 'g', 'e', 'f', 'o', 'u', 'n', 'd', '.', 'o', 'r', 'g', '\0',
@@ -4533,18 +4532,16 @@ static const char kSTSHostTable[] = {
   /* "customerbox.ir", true */ 'c', 'u', 's', 't', 'o', 'm', 'e', 'r', 'b', 'o', 'x', '.', 'i', 'r', '\0',
   /* "customfilmworks.com", true */ 'c', 'u', 's', 't', 'o', 'm', 'f', 'i', 'l', 'm', 'w', 'o', 'r', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "customshort.link", true */ 'c', 'u', 's', 't', 'o', 'm', 's', 'h', 'o', 'r', 't', '.', 'l', 'i', 'n', 'k', '\0',
   /* "customwritings.com", true */ 'c', 'u', 's', 't', 'o', 'm', 'w', 'r', 'i', 't', 'i', 'n', 'g', 's', '.', 'c', 'o', 'm', '\0',
   /* "cutimbo.ovh", true */ 'c', 'u', 't', 'i', 'm', 'b', 'o', '.', 'o', 'v', 'h', '\0',
   /* "cuvva.co", true */ 'c', 'u', 'v', 'v', 'a', '.', 'c', 'o', '\0',
   /* "cuvva.co.uk", true */ 'c', 'u', 'v', 'v', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "cuvva.com", true */ 'c', 'u', 'v', 'v', 'a', '.', 'c', 'o', 'm', '\0',
-  /* "cuvva.it", true */ 'c', 'u', 'v', 'v', 'a', '.', 'i', 't', '\0',
-  /* "cuvva.me", true */ 'c', 'u', 'v', 'v', 'a', '.', 'm', 'e', '\0',
   /* "cuvva.net", true */ 'c', 'u', 'v', 'v', 'a', '.', 'n', 'e', 't', '\0',
   /* "cuvva.uk", true */ 'c', 'u', 'v', 'v', 'a', '.', 'u', 'k', '\0',
   /* "cuvva.us", true */ 'c', 'u', 'v', 'v', 'a', '.', 'u', 's', '\0',
   /* "cve-le-carrousel.ch", true */ 'c', 'v', 'e', '-', 'l', 'e', '-', 'c', 'a', 'r', 'r', 'o', 'u', 's', 'e', 'l', '.', 'c', 'h', '\0',
   /* "cviip.ca", true */ 'c', 'v', 'i', 'i', 'p', '.', 'c', 'a', '\0',
   /* "cviip.com", true */ 'c', 'v', 'i', 'i', 'p', '.', 'c', 'o', 'm', '\0',
   /* "cvjm-memmingen.de", true */ 'c', 'v', 'j', 'm', '-', 'm', 'e', 'm', 'm', 'i', 'n', 'g', 'e', 'n', '.', 'd', 'e', '\0',
   /* "cvlibrary.co.uk", true */ 'c', 'v', 'l', 'i', 'b', 'r', 'a', 'r', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
@@ -4758,16 +4755,17 @@ static const char kSTSHostTable[] = {
   /* "daropia.org", true */ 'd', 'a', 'r', 'o', 'p', 'i', 'a', '.', 'o', 'r', 'g', '\0',
   /* "darrenm.net", true */ 'd', 'a', 'r', 'r', 'e', 'n', 'm', '.', 'n', 'e', 't', '\0',
   /* "darrienworth.com", true */ 'd', 'a', 'r', 'r', 'i', 'e', 'n', 'w', 'o', 'r', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "dart-tanke.com", true */ 'd', 'a', 'r', 't', '-', 't', 'a', 'n', 'k', 'e', '.', 'c', 'o', 'm', '\0',
   /* "dart-tanke.de", true */ 'd', 'a', 'r', 't', '-', 't', 'a', 'n', 'k', 'e', '.', 'd', 'e', '\0',
   /* "darth-sonic.de", true */ 'd', 'a', 'r', 't', 'h', '-', 's', 'o', 'n', 'i', 'c', '.', 'd', 'e', '\0',
   /* "dartsdon.jp", true */ 'd', 'a', 'r', 't', 's', 'd', 'o', 'n', '.', 'j', 'p', '\0',
   /* "darwinkel.net", false */ 'd', 'a', 'r', 'w', 'i', 'n', 'k', 'e', 'l', '.', 'n', 'e', 't', '\0',
+  /* "daryl.moe", true */ 'd', 'a', 'r', 'y', 'l', '.', 'm', 'o', 'e', '\0',
   /* "das-mediale-haus.de", true */ 'd', 'a', 's', '-', 'm', 'e', 'd', 'i', 'a', 'l', 'e', '-', 'h', 'a', 'u', 's', '.', 'd', 'e', '\0',
   /* "das-sommercamp.de", true */ 'd', 'a', 's', '-', 's', 'o', 'm', 'm', 'e', 'r', 'c', 'a', 'm', 'p', '.', 'd', 'e', '\0',
   /* "das-tyrol.at", true */ 'd', 'a', 's', '-', 't', 'y', 'r', 'o', 'l', '.', 'a', 't', '\0',
   /* "dash-board.jp", false */ 'd', 'a', 's', 'h', '-', 'b', 'o', 'a', 'r', 'd', '.', 'j', 'p', '\0',
   /* "dash.rocks", true */ 'd', 'a', 's', 'h', '.', 'r', 'o', 'c', 'k', 's', '\0',
   /* "dashboard.yt", true */ 'd', 'a', 's', 'h', 'b', 'o', 'a', 'r', 'd', '.', 'y', 't', '\0',
   /* "data.gov", true */ 'd', 'a', 't', 'a', '.', 'g', 'o', 'v', '\0',
   /* "data.haus", true */ 'd', 'a', 't', 'a', '.', 'h', 'a', 'u', 's', '\0',
@@ -5090,17 +5088,16 @@ static const char kSTSHostTable[] = {
   /* "detectefuite.ch", true */ 'd', 'e', 't', 'e', 'c', 't', 'e', 'f', 'u', 'i', 't', 'e', '.', 'c', 'h', '\0',
   /* "detectify.com", false */ 'd', 'e', 't', 'e', 'c', 't', 'i', 'f', 'y', '.', 'c', 'o', 'm', '\0',
   /* "dethemium.com", true */ 'd', 'e', 't', 'h', 'e', 'm', 'i', 'u', 'm', '.', 'c', 'o', 'm', '\0',
   /* "detoxsinutritie.ro", true */ 'd', 'e', 't', 'o', 'x', 's', 'i', 'n', 'u', 't', 'r', 'i', 't', 'i', 'e', '.', 'r', 'o', '\0',
   /* "detroit-english.de", true */ 'd', 'e', 't', 'r', 'o', 'i', 't', '-', 'e', 'n', 'g', 'l', 'i', 's', 'h', '.', 'd', 'e', '\0',
   /* "detroitstylepizza.com", true */ 'd', 'e', 't', 'r', 'o', 'i', 't', 's', 't', 'y', 'l', 'e', 'p', 'i', 'z', 'z', 'a', '.', 'c', 'o', 'm', '\0',
   /* "detskysad.com", true */ 'd', 'e', 't', 's', 'k', 'y', 's', 'a', 'd', '.', 'c', 'o', 'm', '\0',
   /* "detteflies.com", true */ 'd', 'e', 't', 't', 'e', 'f', 'l', 'i', 'e', 's', '.', 'c', 'o', 'm', '\0',
-  /* "detutorial.com", false */ 'd', 'e', 't', 'u', 't', 'o', 'r', 'i', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "deurenfabriek.nl", true */ 'd', 'e', 'u', 'r', 'e', 'n', 'f', 'a', 'b', 'r', 'i', 'e', 'k', '.', 'n', 'l', '\0',
   /* "deusu.de", true */ 'd', 'e', 'u', 's', 'u', '.', 'd', 'e', '\0',
   /* "deutsch-vietnamesisch-dolmetscher.com", true */ 'd', 'e', 'u', 't', 's', 'c', 'h', '-', 'v', 'i', 'e', 't', 'n', 'a', 'm', 'e', 's', 'i', 's', 'c', 'h', '-', 'd', 'o', 'l', 'm', 'e', 't', 's', 'c', 'h', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "dev-aegon.azurewebsites.net", true */ 'd', 'e', 'v', '-', 'a', 'e', 'g', 'o', 'n', '.', 'a', 'z', 'u', 'r', 'e', 'w', 'e', 'b', 's', 'i', 't', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "dev-tek.de", true */ 'd', 'e', 'v', '-', 't', 'e', 'k', '.', 'd', 'e', '\0',
   /* "devb.nl", true */ 'd', 'e', 'v', 'b', '.', 'n', 'l', '\0',
   /* "devct.cz", true */ 'd', 'e', 'v', 'c', 't', '.', 'c', 'z', '\0',
   /* "devdesco.com", true */ 'd', 'e', 'v', 'd', 'e', 's', 'c', 'o', '.', 'c', 'o', 'm', '\0',
@@ -5264,16 +5261,17 @@ static const char kSTSHostTable[] = {
   /* "diju.ch", true */ 'd', 'i', 'j', 'u', '.', 'c', 'h', '\0',
   /* "dilichen.fr", true */ 'd', 'i', 'l', 'i', 'c', 'h', 'e', 'n', '.', 'f', 'r', '\0',
   /* "dillewijnzwapak.nl", true */ 'd', 'i', 'l', 'l', 'e', 'w', 'i', 'j', 'n', 'z', 'w', 'a', 'p', 'a', 'k', '.', 'n', 'l', '\0',
   /* "dillonkorman.com", true */ 'd', 'i', 'l', 'l', 'o', 'n', 'k', 'o', 'r', 'm', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "dimanss47.net", true */ 'd', 'i', 'm', 'a', 'n', 's', 's', '4', '7', '.', 'n', 'e', 't', '\0',
   /* "dime-staging.com", true */ 'd', 'i', 'm', 'e', '-', 's', 't', 'a', 'g', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "dime.io", true */ 'd', 'i', 'm', 'e', '.', 'i', 'o', '\0',
   /* "dimez.ru", true */ 'd', 'i', 'm', 'e', 'z', '.', 'r', 'u', '\0',
+  /* "dimonb.com", true */ 'd', 'i', 'm', 'o', 'n', 'b', '.', 'c', 'o', 'm', '\0',
   /* "dinepont.fr", true */ 'd', 'i', 'n', 'e', 'p', 'o', 'n', 't', '.', 'f', 'r', '\0',
   /* "dingcc.com", true */ 'd', 'i', 'n', 'g', 'c', 'c', '.', 'c', 'o', 'm', '\0',
   /* "dinge.xyz", true */ 'd', 'i', 'n', 'g', 'e', '.', 'x', 'y', 'z', '\0',
   /* "dingss.com", true */ 'd', 'i', 'n', 'g', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "dinmtb.dk", true */ 'd', 'i', 'n', 'm', 't', 'b', '.', 'd', 'k', '\0',
   /* "dino.li", true */ 'd', 'i', 'n', 'o', '.', 'l', 'i', '\0',
   /* "dinotv.at", true */ 'd', 'i', 'n', 'o', 't', 'v', '.', 'a', 't', '\0',
   /* "dintillat.fr", true */ 'd', 'i', 'n', 't', 'i', 'l', 'l', 'a', 't', '.', 'f', 'r', '\0',
@@ -5480,17 +5478,16 @@ static const char kSTSHostTable[] = {
   /* "donotlink.it", true */ 'd', 'o', 'n', 'o', 't', 'l', 'i', 'n', 'k', '.', 'i', 't', '\0',
   /* "donotspellitgav.in", true */ 'd', 'o', 'n', 'o', 't', 's', 'p', 'e', 'l', 'l', 'i', 't', 'g', 'a', 'v', '.', 'i', 'n', '\0',
   /* "donsbach-edv.de", true */ 'd', 'o', 'n', 's', 'b', 'a', 'c', 'h', '-', 'e', 'd', 'v', '.', 'd', 'e', '\0',
   /* "dontbubble.me", true */ 'd', 'o', 'n', 't', 'b', 'u', 'b', 'b', 'l', 'e', '.', 'm', 'e', '\0',
   /* "dontcageus.org", true */ 'd', 'o', 'n', 't', 'c', 'a', 'g', 'e', 'u', 's', '.', 'o', 'r', 'g', '\0',
   /* "donthedragonwilson.com", true */ 'd', 'o', 'n', 't', 'h', 'e', 'd', 'r', 'a', 'g', 'o', 'n', 'w', 'i', 'l', 's', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "dooby.fr", true */ 'd', 'o', 'o', 'b', 'y', '.', 'f', 'r', '\0',
   /* "doobydude.us", true */ 'd', 'o', 'o', 'b', 'y', 'd', 'u', 'd', 'e', '.', 'u', 's', '\0',
-  /* "doodledraw.ninja", true */ 'd', 'o', 'o', 'd', 'l', 'e', 'd', 'r', 'a', 'w', '.', 'n', 'i', 'n', 'j', 'a', '\0',
   /* "dooleylabs.com", true */ 'd', 'o', 'o', 'l', 'e', 'y', 'l', 'a', 'b', 's', '.', 'c', 'o', 'm', '\0',
   /* "dooleytackaberry.com", true */ 'd', 'o', 'o', 'l', 'e', 'y', 't', 'a', 'c', 'k', 'a', 'b', 'e', 'r', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "doomsworld.com", true */ 'd', 'o', 'o', 'm', 's', 'w', 'o', 'r', 'l', 'd', '.', 'c', 'o', 'm', '\0',
   /* "doordecor.bg", true */ 'd', 'o', 'o', 'r', 'd', 'e', 'c', 'o', 'r', '.', 'b', 'g', '\0',
   /* "doorflow.com", true */ 'd', 'o', 'o', 'r', 'f', 'l', 'o', 'w', '.', 'c', 'o', 'm', '\0',
   /* "dopesoft.de", true */ 'd', 'o', 'p', 'e', 's', 'o', 'f', 't', '.', 'd', 'e', '\0',
   /* "dopfer-fenstertechnik.de", true */ 'd', 'o', 'p', 'f', 'e', 'r', '-', 'f', 'e', 'n', 's', 't', 'e', 'r', 't', 'e', 'c', 'h', 'n', 'i', 'k', '.', 'd', 'e', '\0',
   /* "dopost.it", false */ 'd', 'o', 'p', 'o', 's', 't', '.', 'i', 't', '\0',
@@ -5786,16 +5783,17 @@ static const char kSTSHostTable[] = {
   /* "eam-gmbh.com", true */ 'e', 'a', 'm', '-', 'g', 'm', 'b', 'h', '.', 'c', 'o', 'm', '\0',
   /* "eames-clayton.us", true */ 'e', 'a', 'm', 'e', 's', '-', 'c', 'l', 'a', 'y', 't', 'o', 'n', '.', 'u', 's', '\0',
   /* "earl.org.uk", true */ 'e', 'a', 'r', 'l', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "earlyyearshub.com", true */ 'e', 'a', 'r', 'l', 'y', 'y', 'e', 'a', 'r', 's', 'h', 'u', 'b', '.', 'c', 'o', 'm', '\0',
   /* "earmarks.gov", true */ 'e', 'a', 'r', 'm', 'a', 'r', 'k', 's', '.', 'g', 'o', 'v', '\0',
   /* "earth-people.org", true */ 'e', 'a', 'r', 't', 'h', '-', 'p', 'e', 'o', 'p', 'l', 'e', '.', 'o', 'r', 'g', '\0',
   /* "earticleblog.com", true */ 'e', 'a', 'r', 't', 'i', 'c', 'l', 'e', 'b', 'l', 'o', 'g', '.', 'c', 'o', 'm', '\0',
   /* "earvinkayonga.com", true */ 'e', 'a', 'r', 'v', 'i', 'n', 'k', 'a', 'y', 'o', 'n', 'g', 'a', '.', 'c', 'o', 'm', '\0',
+  /* "eason-yang.com", true */ 'e', 'a', 's', 'o', 'n', '-', 'y', 'a', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "eastarm.net", true */ 'e', 'a', 's', 't', 'a', 'r', 'm', '.', 'n', 'e', 't', '\0',
   /* "eastmanbusinessinstitute.com", true */ 'e', 'a', 's', 't', 'm', 'a', 'n', 'b', 'u', 's', 'i', 'n', 'e', 's', 's', 'i', 'n', 's', 't', 'i', 't', 'u', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "eastmontgroup.com", true */ 'e', 'a', 's', 't', 'm', 'o', 'n', 't', 'g', 'r', 'o', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "easy-rpg.org", false */ 'e', 'a', 's', 'y', '-', 'r', 'p', 'g', '.', 'o', 'r', 'g', '\0',
   /* "easyconstat.com", true */ 'e', 'a', 's', 'y', 'c', 'o', 'n', 's', 't', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "easycosmetic.ch", true */ 'e', 'a', 's', 'y', 'c', 'o', 's', 'm', 'e', 't', 'i', 'c', '.', 'c', 'h', '\0',
   /* "easycup.com", true */ 'e', 'a', 's', 'y', 'c', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "easyfiles.ch", true */ 'e', 'a', 's', 'y', 'f', 'i', 'l', 'e', 's', '.', 'c', 'h', '\0',
@@ -6138,17 +6136,16 @@ static const char kSTSHostTable[] = {
   /* "emperor-penguin.com", true */ 'e', 'm', 'p', 'e', 'r', 'o', 'r', '-', 'p', 'e', 'n', 'g', 'u', 'i', 'n', '.', 'c', 'o', 'm', '\0',
   /* "emperor-penguins.com", true */ 'e', 'm', 'p', 'e', 'r', 'o', 'r', '-', 'p', 'e', 'n', 'g', 'u', 'i', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "emperor.blog", true */ 'e', 'm', 'p', 'e', 'r', 'o', 'r', '.', 'b', 'l', 'o', 'g', '\0',
   /* "employeestore.org", true */ 'e', 'm', 'p', 'l', 'o', 'y', 'e', 'e', 's', 't', 'o', 'r', 'e', '.', 'o', 'r', 'g', '\0',
   /* "employer411.com", true */ 'e', 'm', 'p', 'l', 'o', 'y', 'e', 'r', '4', '1', '1', '.', 'c', 'o', 'm', '\0',
   /* "empowerdb.com", true */ 'e', 'm', 'p', 'o', 'w', 'e', 'r', 'd', 'b', '.', 'c', 'o', 'm', '\0',
   /* "emprego.pt", true */ 'e', 'm', 'p', 'r', 'e', 'g', 'o', '.', 'p', 't', '\0',
   /* "emptypath.com", true */ 'e', 'm', 'p', 't', 'y', 'p', 'a', 't', 'h', '.', 'c', 'o', 'm', '\0',
-  /* "emrenovation.com", true */ 'e', 'm', 'r', 'e', 'n', 'o', 'v', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "emw3.com", true */ 'e', 'm', 'w', '3', '.', 'c', 'o', 'm', '\0',
   /* "emyr.net", true */ 'e', 'm', 'y', 'r', '.', 'n', 'e', 't', '\0',
   /* "en-booster.jp", true */ 'e', 'n', '-', 'b', 'o', 'o', 's', 't', 'e', 'r', '.', 'j', 'p', '\0',
   /* "en-maktoob.search.yahoo.com", false */ 'e', 'n', '-', 'm', 'a', 'k', 't', 'o', 'o', 'b', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "enaia.fr", true */ 'e', 'n', 'a', 'i', 'a', '.', 'f', 'r', '\0',
   /* "enaim.de", true */ 'e', 'n', 'a', 'i', 'm', '.', 'd', 'e', '\0',
   /* "encfs.win", true */ 'e', 'n', 'c', 'f', 's', '.', 'w', 'i', 'n', '\0',
   /* "encircleapp.com", true */ 'e', 'n', 'c', 'i', 'r', 'c', 'l', 'e', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
@@ -6160,17 +6157,16 @@ static const char kSTSHostTable[] = {
   /* "encredible.org", false */ 'e', 'n', 'c', 'r', 'e', 'd', 'i', 'b', 'l', 'e', '.', 'o', 'r', 'g', '\0',
   /* "encryptallthethings.net", true */ 'e', 'n', 'c', 'r', 'y', 'p', 't', 'a', 'l', 'l', 't', 'h', 'e', 't', 'h', 'i', 'n', 'g', 's', '.', 'n', 'e', 't', '\0',
   /* "encrypted.google.com", true */ 'e', 'n', 'c', 'r', 'y', 'p', 't', 'e', 'd', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "encryptedaudience.com", true */ 'e', 'n', 'c', 'r', 'y', 'p', 't', 'e', 'd', 'a', 'u', 'd', 'i', 'e', 'n', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "endeal.nl", true */ 'e', 'n', 'd', 'e', 'a', 'l', '.', 'n', 'l', '\0',
   /* "ender.co.at", true */ 'e', 'n', 'd', 'e', 'r', '.', 'c', 'o', '.', 'a', 't', '\0',
   /* "endingthedocumentgame.gov", true */ 'e', 'n', 'd', 'i', 'n', 'g', 't', 'h', 'e', 'd', 'o', 'c', 'u', 'm', 'e', 'n', 't', 'g', 'a', 'm', 'e', '.', 'g', 'o', 'v', '\0',
   /* "endlessdiy.ca", true */ 'e', 'n', 'd', 'l', 'e', 's', 's', 'd', 'i', 'y', '.', 'c', 'a', '\0',
-  /* "endlesshorizon.net", true */ 'e', 'n', 'd', 'l', 'e', 's', 's', 'h', 'o', 'r', 'i', 'z', 'o', 'n', '.', 'n', 'e', 't', '\0',
   /* "endlessvideo.com", true */ 'e', 'n', 'd', 'l', 'e', 's', 's', 'v', 'i', 'd', 'e', 'o', '.', 'c', 'o', 'm', '\0',
   /* "endofnet.org", true */ 'e', 'n', 'd', 'o', 'f', 'n', 'e', 't', '.', 'o', 'r', 'g', '\0',
   /* "endoftennancycleaning.co.uk", true */ 'e', 'n', 'd', 'o', 'f', 't', 'e', 'n', 'n', 'a', 'n', 'c', 'y', 'c', 'l', 'e', 'a', 'n', 'i', 'n', 'g', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "endohaus.ca", true */ 'e', 'n', 'd', 'o', 'h', 'a', 'u', 's', '.', 'c', 'a', '\0',
   /* "endohaus.com", true */ 'e', 'n', 'd', 'o', 'h', 'a', 'u', 's', '.', 'c', 'o', 'm', '\0',
   /* "endohaus.eu", true */ 'e', 'n', 'd', 'o', 'h', 'a', 'u', 's', '.', 'e', 'u', '\0',
   /* "endohaus.us", true */ 'e', 'n', 'd', 'o', 'h', 'a', 'u', 's', '.', 'u', 's', '\0',
   /* "endzeit-architekten.com", false */ 'e', 'n', 'd', 'z', 'e', 'i', 't', '-', 'a', 'r', 'c', 'h', 'i', 't', 'e', 'k', 't', 'e', 'n', '.', 'c', 'o', 'm', '\0',
@@ -6202,17 +6198,16 @@ static const char kSTSHostTable[] = {
   /* "englishclub.com", true */ 'e', 'n', 'g', 'l', 'i', 's', 'h', 'c', 'l', 'u', 'b', '.', 'c', 'o', 'm', '\0',
   /* "englishforums.com", true */ 'e', 'n', 'g', 'l', 'i', 's', 'h', 'f', 'o', 'r', 'u', 'm', 's', '.', 'c', 'o', 'm', '\0',
   /* "englishstudio.com", true */ 'e', 'n', 'g', 'l', 'i', 's', 'h', 's', 't', 'u', 'd', 'i', 'o', '.', 'c', 'o', 'm', '\0',
   /* "enjen.net", true */ 'e', 'n', 'j', 'e', 'n', '.', 'n', 'e', 't', '\0',
   /* "enjoystudio.ro", true */ 'e', 'n', 'j', 'o', 'y', 's', 't', 'u', 'd', 'i', 'o', '.', 'r', 'o', '\0',
   /* "enlatte.com", true */ 'e', 'n', 'l', 'a', 't', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "enlightened.si", true */ 'e', 'n', 'l', 'i', 'g', 'h', 't', 'e', 'n', 'e', 'd', '.', 's', 'i', '\0',
   /* "enlightenedhr.com", true */ 'e', 'n', 'l', 'i', 'g', 'h', 't', 'e', 'n', 'e', 'd', 'h', 'r', '.', 'c', 'o', 'm', '\0',
-  /* "enlightenment.org", true */ 'e', 'n', 'l', 'i', 'g', 'h', 't', 'e', 'n', 'm', 'e', 'n', 't', '.', 'o', 'r', 'g', '\0',
   /* "enloestatebank.com", true */ 'e', 'n', 'l', 'o', 'e', 's', 't', 'a', 't', 'e', 'b', 'a', 'n', 'k', '.', 'c', 'o', 'm', '\0',
   /* "ennori.jp", true */ 'e', 'n', 'n', 'o', 'r', 'i', '.', 'j', 'p', '\0',
   /* "enorekcah.com", true */ 'e', 'n', 'o', 'r', 'e', 'k', 'c', 'a', 'h', '.', 'c', 'o', 'm', '\0',
   /* "enot32.ru", true */ 'e', 'n', 'o', 't', '3', '2', '.', 'r', 'u', '\0',
   /* "enquos.com", true */ 'e', 'n', 'q', 'u', 'o', 's', '.', 'c', 'o', 'm', '\0',
   /* "enriquepiraces.com", true */ 'e', 'n', 'r', 'i', 'q', 'u', 'e', 'p', 'i', 'r', 'a', 'c', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "ensage.io", true */ 'e', 'n', 's', 'a', 'g', 'e', '.', 'i', 'o', '\0',
   /* "enscosupply.com", true */ 'e', 'n', 's', 'c', 'o', 's', 'u', 'p', 'p', 'l', 'y', '.', 'c', 'o', 'm', '\0',
@@ -6669,17 +6664,16 @@ static const char kSTSHostTable[] = {
   /* "fairedeseconomies.info", true */ 'f', 'a', 'i', 'r', 'e', 'd', 'e', 's', 'e', 'c', 'o', 'n', 'o', 'm', 'i', 'e', 's', '.', 'i', 'n', 'f', 'o', '\0',
   /* "fairviewmotel-simcoe.com", true */ 'f', 'a', 'i', 'r', 'v', 'i', 'e', 'w', 'm', 'o', 't', 'e', 'l', '-', 's', 'i', 'm', 'c', 'o', 'e', '.', 'c', 'o', 'm', '\0',
   /* "faithwatch.org", true */ 'f', 'a', 'i', 't', 'h', 'w', 'a', 't', 'c', 'h', '.', 'o', 'r', 'g', '\0',
   /* "fakturi.com", true */ 'f', 'a', 'k', 't', 'u', 'r', 'i', '.', 'c', 'o', 'm', '\0',
   /* "fakturoid.cz", true */ 'f', 'a', 'k', 't', 'u', 'r', 'o', 'i', 'd', '.', 'c', 'z', '\0',
   /* "falaowang.com", true */ 'f', 'a', 'l', 'a', 'o', 'w', 'a', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "falconvintners.com", true */ 'f', 'a', 'l', 'c', 'o', 'n', 'v', 'i', 'n', 't', 'n', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "faldoria.de", true */ 'f', 'a', 'l', 'd', 'o', 'r', 'i', 'a', '.', 'd', 'e', '\0',
-  /* "falkhusemann.de", true */ 'f', 'a', 'l', 'k', 'h', 'u', 's', 'e', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
   /* "falkus.net", true */ 'f', 'a', 'l', 'k', 'u', 's', '.', 'n', 'e', 't', '\0',
   /* "fallenangeldrinks.co.uk", true */ 'f', 'a', 'l', 'l', 'e', 'n', 'a', 'n', 'g', 'e', 'l', 'd', 'r', 'i', 'n', 'k', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "fallenangeldrinks.com", true */ 'f', 'a', 'l', 'l', 'e', 'n', 'a', 'n', 'g', 'e', 'l', 'd', 'r', 'i', 'n', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "fallenangeldrinks.eu", true */ 'f', 'a', 'l', 'l', 'e', 'n', 'a', 'n', 'g', 'e', 'l', 'd', 'r', 'i', 'n', 'k', 's', '.', 'e', 'u', '\0',
   /* "fallenangelspirits.co.uk", true */ 'f', 'a', 'l', 'l', 'e', 'n', 'a', 'n', 'g', 'e', 'l', 's', 'p', 'i', 'r', 'i', 't', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "fallenangelspirits.com", true */ 'f', 'a', 'l', 'l', 'e', 'n', 'a', 'n', 'g', 'e', 'l', 's', 'p', 'i', 'r', 'i', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "fallenspirits.co.uk", true */ 'f', 'a', 'l', 'l', 'e', 'n', 's', 'p', 'i', 'r', 'i', 't', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "falsum.net", true */ 'f', 'a', 'l', 's', 'u', 'm', '.', 'n', 'e', 't', '\0',
@@ -6988,16 +6982,17 @@ static const char kSTSHostTable[] = {
   /* "fitsw.com", true */ 'f', 'i', 't', 's', 'w', '.', 'c', 'o', 'm', '\0',
   /* "fittelo.cz", true */ 'f', 'i', 't', 't', 'e', 'l', 'o', '.', 'c', 'z', '\0',
   /* "fitzsim.org", true */ 'f', 'i', 't', 'z', 's', 'i', 'm', '.', 'o', 'r', 'g', '\0',
   /* "fiuxy.co", true */ 'f', 'i', 'u', 'x', 'y', '.', 'c', 'o', '\0',
   /* "fivestepfunnels.com", true */ 'f', 'i', 'v', 'e', 's', 't', 'e', 'p', 'f', 'u', 'n', 'n', 'e', 'l', 's', '.', 'c', 'o', 'm', '\0',
   /* "fiws.net", true */ 'f', 'i', 'w', 's', '.', 'n', 'e', 't', '\0',
   /* "fix-the-timeline.com", true */ 'f', 'i', 'x', '-', 't', 'h', 'e', '-', 't', 'i', 'm', 'e', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "fix-the-timeline.org", true */ 'f', 'i', 'x', '-', 't', 'h', 'e', '-', 't', 'i', 'm', 'e', 'l', 'i', 'n', 'e', '.', 'o', 'r', 'g', '\0',
+  /* "fixate.ru", true */ 'f', 'i', 'x', 'a', 't', 'e', '.', 'r', 'u', '\0',
   /* "fixel.express", true */ 'f', 'i', 'x', 'e', 'l', '.', 'e', 'x', 'p', 'r', 'e', 's', 's', '\0',
   /* "fixforce.nl", true */ 'f', 'i', 'x', 'f', 'o', 'r', 'c', 'e', '.', 'n', 'l', '\0',
   /* "fixhotsauce.com", true */ 'f', 'i', 'x', 'h', 'o', 't', 's', 'a', 'u', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "fixmyalarmpanel.co.uk", true */ 'f', 'i', 'x', 'm', 'y', 'a', 'l', 'a', 'r', 'm', 'p', 'a', 'n', 'e', 'l', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "fixmycomputerdude.com", true */ 'f', 'i', 'x', 'm', 'y', 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', 'd', 'u', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "fixthetimeline.com", true */ 'f', 'i', 'x', 't', 'h', 'e', 't', 'i', 'm', 'e', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "fixthetimeline.org", true */ 'f', 'i', 'x', 't', 'h', 'e', 't', 'i', 'm', 'e', 'l', 'i', 'n', 'e', '.', 'o', 'r', 'g', '\0',
   /* "fixvoltage.ru", true */ 'f', 'i', 'x', 'v', 'o', 'l', 't', 'a', 'g', 'e', '.', 'r', 'u', '\0',
@@ -7185,17 +7180,16 @@ static const char kSTSHostTable[] = {
   /* "fortesanshop.it", true */ 'f', 'o', 'r', 't', 'e', 's', 'a', 'n', 's', 'h', 'o', 'p', '.', 'i', 't', '\0',
   /* "fortnine.ca", true */ 'f', 'o', 'r', 't', 'n', 'i', 'n', 'e', '.', 'c', 'a', '\0',
   /* "fortress.no", true */ 'f', 'o', 'r', 't', 'r', 'e', 's', 's', '.', 'n', 'o', '\0',
   /* "fortress.sk", true */ 'f', 'o', 'r', 't', 'r', 'e', 's', 's', '.', 's', 'k', '\0',
   /* "fortuna-loessnitz.de", true */ 'f', 'o', 'r', 't', 'u', 'n', 'a', '-', 'l', 'o', 'e', 's', 's', 'n', 'i', 't', 'z', '.', 'd', 'e', '\0',
   /* "fortuna-s.com", true */ 'f', 'o', 'r', 't', 'u', 'n', 'a', '-', 's', '.', 'c', 'o', 'm', '\0',
   /* "fortworth.ch", true */ 'f', 'o', 'r', 't', 'w', 'o', 'r', 't', 'h', '.', 'c', 'h', '\0',
   /* "forty-two.nl", true */ 'f', 'o', 'r', 't', 'y', '-', 't', 'w', 'o', '.', 'n', 'l', '\0',
-  /* "forty8creates.com", true */ 'f', 'o', 'r', 't', 'y', '8', 'c', 'r', 'e', 'a', 't', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "forum.linode.com", false */ 'f', 'o', 'r', 'u', 'm', '.', 'l', 'i', 'n', 'o', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "forumvoordemocratie.nl", true */ 'f', 'o', 'r', 'u', 'm', 'v', 'o', 'o', 'r', 'd', 'e', 'm', 'o', 'c', 'r', 'a', 't', 'i', 'e', '.', 'n', 'l', '\0',
   /* "forus.be", true */ 'f', 'o', 'r', 'u', 's', '.', 'b', 'e', '\0',
   /* "forvisualdesign.com", true */ 'f', 'o', 'r', 'v', 'i', 's', 'u', 'a', 'l', 'd', 'e', 's', 'i', 'g', 'n', '.', 'c', 'o', 'm', '\0',
   /* "foryourhealthybody.com", true */ 'f', 'o', 'r', 'y', 'o', 'u', 'r', 'h', 'e', 'a', 'l', 't', 'h', 'y', 'b', 'o', 'd', 'y', '.', 'c', 'o', 'm', '\0',
   /* "fosdem.org", true */ 'f', 'o', 's', 'd', 'e', 'm', '.', 'o', 'r', 'g', '\0',
   /* "fossewayflowers.co.uk", true */ 'f', 'o', 's', 's', 'e', 'w', 'a', 'y', 'f', 'l', 'o', 'w', 'e', 'r', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "fossewayflowers.com", true */ 'f', 'o', 's', 's', 'e', 'w', 'a', 'y', 'f', 'l', 'o', 'w', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
@@ -7275,17 +7269,16 @@ static const char kSTSHostTable[] = {
   /* "frau-inge.de", true */ 'f', 'r', 'a', 'u', '-', 'i', 'n', 'g', 'e', '.', 'd', 'e', '\0',
   /* "frau-sucht-bauer.de", true */ 'f', 'r', 'a', 'u', '-', 's', 'u', 'c', 'h', 't', '-', 'b', 'a', 'u', 'e', 'r', '.', 'd', 'e', '\0',
   /* "fraudempire.com", true */ 'f', 'r', 'a', 'u', 'd', 'e', 'm', 'p', 'i', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "fraudmarc.com", true */ 'f', 'r', 'a', 'u', 'd', 'm', 'a', 'r', 'c', '.', 'c', 'o', 'm', '\0',
   /* "fraye.net", true */ 'f', 'r', 'a', 'y', 'e', '.', 'n', 'e', 't', '\0',
   /* "frbracch.it", true */ 'f', 'r', 'b', 'r', 'a', 'c', 'c', 'h', '.', 'i', 't', '\0',
   /* "frdl.ch", true */ 'f', 'r', 'd', 'l', '.', 'c', 'h', '\0',
   /* "freddythechick.uk", true */ 'f', 'r', 'e', 'd', 'd', 'y', 't', 'h', 'e', 'c', 'h', 'i', 'c', 'k', '.', 'u', 'k', '\0',
-  /* "frederik-braun.com", true */ 'f', 'r', 'e', 'd', 'e', 'r', 'i', 'k', '-', 'b', 'r', 'a', 'u', 'n', '.', 'c', 'o', 'm', '\0',
   /* "frederikschoell.de", false */ 'f', 'r', 'e', 'd', 'e', 'r', 'i', 'k', 's', 'c', 'h', 'o', 'e', 'l', 'l', '.', 'd', 'e', '\0',
   /* "fredloya.com", true */ 'f', 'r', 'e', 'd', 'l', 'o', 'y', 'a', '.', 'c', 'o', 'm', '\0',
   /* "fredtec.ru", true */ 'f', 'r', 'e', 'd', 't', 'e', 'c', '.', 'r', 'u', '\0',
   /* "free-your-pc.com", true */ 'f', 'r', 'e', 'e', '-', 'y', 'o', 'u', 'r', '-', 'p', 'c', '.', 'c', 'o', 'm', '\0',
   /* "free.com.tw", true */ 'f', 'r', 'e', 'e', '.', 'c', 'o', 'm', '.', 't', 'w', '\0',
   /* "freeasyshop.com", true */ 'f', 'r', 'e', 'e', 'a', 's', 'y', 's', 'h', 'o', 'p', '.', 'c', 'o', 'm', '\0',
   /* "freeben666.fr", true */ 'f', 'r', 'e', 'e', 'b', 'e', 'n', '6', '6', '6', '.', 'f', 'r', '\0',
   /* "freebetoffers.co.uk", true */ 'f', 'r', 'e', 'e', 'b', 'e', 't', 'o', 'f', 'f', 'e', 'r', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
@@ -7578,17 +7571,16 @@ static const char kSTSHostTable[] = {
   /* "gamingwithcromulent.com", true */ 'g', 'a', 'm', 'i', 'n', 'g', 'w', 'i', 't', 'h', 'c', 'r', 'o', 'm', 'u', 'l', 'e', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "gamingzoneservers.com", true */ 'g', 'a', 'm', 'i', 'n', 'g', 'z', 'o', 'n', 'e', 's', 'e', 'r', 'v', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "gamishou.fr", true */ 'g', 'a', 'm', 'i', 's', 'h', 'o', 'u', '.', 'f', 'r', '\0',
   /* "gamoloco.com", true */ 'g', 'a', 'm', 'o', 'l', 'o', 'c', 'o', '.', 'c', 'o', 'm', '\0',
   /* "gancedo.com.es", true */ 'g', 'a', 'n', 'c', 'e', 'd', 'o', '.', 'c', 'o', 'm', '.', 'e', 's', '\0',
   /* "gandalfthefeline.com", true */ 'g', 'a', 'n', 'd', 'a', 'l', 'f', 't', 'h', 'e', 'f', 'e', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "gandgliquors.com", true */ 'g', 'a', 'n', 'd', 'g', 'l', 'i', 'q', 'u', 'o', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "ganhonet.com.br", true */ 'g', 'a', 'n', 'h', 'o', 'n', 'e', 't', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
-  /* "gapdirect.com", true */ 'g', 'a', 'p', 'd', 'i', 'r', 'e', 'c', 't', '.', 'c', 'o', 'm', '\0',
   /* "gar-nich.net", true */ 'g', 'a', 'r', '-', 'n', 'i', 'c', 'h', '.', 'n', 'e', 't', '\0',
   /* "garage-meynard.com", true */ 'g', 'a', 'r', 'a', 'g', 'e', '-', 'm', 'e', 'y', 'n', 'a', 'r', 'd', '.', 'c', 'o', 'm', '\0',
   /* "garageenginuity.com", true */ 'g', 'a', 'r', 'a', 'g', 'e', 'e', 'n', 'g', 'i', 'n', 'u', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "garagegoossens.be", true */ 'g', 'a', 'r', 'a', 'g', 'e', 'g', 'o', 'o', 's', 's', 'e', 'n', 's', '.', 'b', 'e', '\0',
   /* "garagemhermetica.org", true */ 'g', 'a', 'r', 'a', 'g', 'e', 'm', 'h', 'e', 'r', 'm', 'e', 't', 'i', 'c', 'a', '.', 'o', 'r', 'g', '\0',
   /* "garanteasy.com", true */ 'g', 'a', 'r', 'a', 'n', 't', 'e', 'a', 's', 'y', '.', 'c', 'o', 'm', '\0',
   /* "garantieabschluss.de", false */ 'g', 'a', 'r', 'a', 'n', 't', 'i', 'e', 'a', 'b', 's', 'c', 'h', 'l', 'u', 's', 's', '.', 'd', 'e', '\0',
   /* "garbage-juice.com", true */ 'g', 'a', 'r', 'b', 'a', 'g', 'e', '-', 'j', 'u', 'i', 'c', 'e', '.', 'c', 'o', 'm', '\0',
@@ -7638,18 +7630,16 @@ static const char kSTSHostTable[] = {
   /* "gcs-ventures.com", true */ 'g', 'c', 's', '-', 'v', 'e', 'n', 't', 'u', 'r', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "gcsepod.com", true */ 'g', 'c', 's', 'e', 'p', 'o', 'd', '.', 'c', 'o', 'm', '\0',
   /* "gdax.com", true */ 'g', 'd', 'a', 'x', '.', 'c', 'o', 'm', '\0',
   /* "gdevpenze.ru", true */ 'g', 'd', 'e', 'v', 'p', 'e', 'n', 'z', 'e', '.', 'r', 'u', '\0',
   /* "gdoce.es", true */ 'g', 'd', 'o', 'c', 'e', '.', 'e', 's', '\0',
   /* "gdutnic.com", true */ 'g', 'd', 'u', 't', 'n', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "gdv.me", true */ 'g', 'd', 'v', '.', 'm', 'e', '\0',
   /* "gdz-otvety.com", true */ 'g', 'd', 'z', '-', 'o', 't', 'v', 'e', 't', 'y', '.', 'c', 'o', 'm', '\0',
-  /* "gdz-spishy.com", true */ 'g', 'd', 'z', '-', 's', 'p', 'i', 's', 'h', 'y', '.', 'c', 'o', 'm', '\0',
-  /* "gdz.tv", true */ 'g', 'd', 'z', '.', 't', 'v', '\0',
   /* "ge1.me", false */ 'g', 'e', '1', '.', 'm', 'e', '\0',
   /* "ge3k.net", false */ 'g', 'e', '3', 'k', '.', 'n', 'e', 't', '\0',
   /* "gear-acquisition-syndrome.community", true */ 'g', 'e', 'a', 'r', '-', 'a', 'c', 'q', 'u', 'i', 's', 'i', 't', 'i', 'o', 'n', '-', 's', 'y', 'n', 'd', 'r', 'o', 'm', 'e', '.', 'c', 'o', 'm', 'm', 'u', 'n', 'i', 't', 'y', '\0',
   /* "gearev.net", true */ 'g', 'e', 'a', 'r', 'e', 'v', '.', 'n', 'e', 't', '\0',
   /* "gearset.com", true */ 'g', 'e', 'a', 'r', 's', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "geblitzt.de", true */ 'g', 'e', 'b', 'l', 'i', 't', 'z', 't', '.', 'd', 'e', '\0',
   /* "gebn.co.uk", true */ 'g', 'e', 'b', 'n', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "geboortestoeltje.com", true */ 'g', 'e', 'b', 'o', 'o', 'r', 't', 'e', 's', 't', 'o', 'e', 'l', 't', 'j', 'e', '.', 'c', 'o', 'm', '\0',
@@ -7943,16 +7933,17 @@ static const char kSTSHostTable[] = {
   /* "gmcd.co", true */ 'g', 'm', 'c', 'd', '.', 'c', 'o', '\0',
   /* "gmdu.net", true */ 'g', 'm', 'd', 'u', '.', 'n', 'e', 't', '\0',
   /* "gmod.de", true */ 'g', 'm', 'o', 'd', '.', 'd', 'e', '\0',
   /* "gmpartsdb.com", true */ 'g', 'm', 'p', 'a', 'r', 't', 's', 'd', 'b', '.', 'c', 'o', 'm', '\0',
   /* "gmta.nl", true */ 'g', 'm', 't', 'a', '.', 'n', 'l', '\0',
   /* "gmw-hannover.de", true */ 'g', 'm', 'w', '-', 'h', 'a', 'n', 'n', 'o', 'v', 'e', 'r', '.', 'd', 'e', '\0',
   /* "gmw-ingenieurbuero.de", true */ 'g', 'm', 'w', '-', 'i', 'n', 'g', 'e', 'n', 'i', 'e', 'u', 'r', 'b', 'u', 'e', 'r', 'o', '.', 'd', 'e', '\0',
   /* "gn00.com", true */ 'g', 'n', '0', '0', '.', 'c', 'o', 'm', '\0',
+  /* "gnetion.com", true */ 'g', 'n', 'e', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "gnetwork.eu", true */ 'g', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'e', 'u', '\0',
   /* "gnom.me", true */ 'g', 'n', 'o', 'm', '.', 'm', 'e', '\0',
   /* "gnunet.org", true */ 'g', 'n', 'u', 'n', 'e', 't', '.', 'o', 'r', 'g', '\0',
   /* "gnwp.eu", true */ 'g', 'n', 'w', 'p', '.', 'e', 'u', '\0',
   /* "gnylf.com", true */ 'g', 'n', 'y', 'l', 'f', '.', 'c', 'o', 'm', '\0',
   /* "go-zh.org", true */ 'g', 'o', '-', 'z', 'h', '.', 'o', 'r', 'g', '\0',
   /* "go.xero.com", false */ 'g', 'o', '.', 'x', 'e', 'r', 'o', '.', 'c', 'o', 'm', '\0',
   /* "go4it.solutions", true */ 'g', 'o', '4', 'i', 't', '.', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '\0',
@@ -8300,17 +8291,16 @@ static const char kSTSHostTable[] = {
   /* "gvt3.com", true */ 'g', 'v', 't', '3', '.', 'c', 'o', 'm', '\0',
   /* "gw2treasures.com", true */ 'g', 'w', '2', 't', 'r', 'e', 'a', 's', 'u', 'r', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "gwerder.net", true */ 'g', 'w', 'e', 'r', 'd', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "gyas.nl", true */ 'g', 'y', 'a', 's', '.', 'n', 'l', '\0',
   /* "gymhero.me", true */ 'g', 'y', 'm', 'h', 'e', 'r', 'o', '.', 'm', 'e', '\0',
   /* "gymkirchenfeld.ch", true */ 'g', 'y', 'm', 'k', 'i', 'r', 'c', 'h', 'e', 'n', 'f', 'e', 'l', 'd', '.', 'c', 'h', '\0',
   /* "gymnasium-farmsen.de", true */ 'g', 'y', 'm', 'n', 'a', 's', 'i', 'u', 'm', '-', 'f', 'a', 'r', 'm', 's', 'e', 'n', '.', 'd', 'e', '\0',
   /* "gympap.de", true */ 'g', 'y', 'm', 'p', 'a', 'p', '.', 'd', 'e', '\0',
-  /* "gyoza.beer", true */ 'g', 'y', 'o', 'z', 'a', '.', 'b', 'e', 'e', 'r', '\0',
   /* "gypsycatdreams.com", true */ 'g', 'y', 'p', 's', 'y', 'c', 'a', 't', 'd', 'r', 'e', 'a', 'm', 's', '.', 'c', 'o', 'm', '\0',
   /* "gypsyreel.com", true */ 'g', 'y', 'p', 's', 'y', 'r', 'e', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "gyu-raku.jp", true */ 'g', 'y', 'u', '-', 'r', 'a', 'k', 'u', '.', 'j', 'p', '\0',
   /* "gz-architekten.de", true */ 'g', 'z', '-', 'a', 'r', 'c', 'h', 'i', 't', 'e', 'k', 't', 'e', 'n', '.', 'd', 'e', '\0',
   /* "gz-benz.com", true */ 'g', 'z', '-', 'b', 'e', 'n', 'z', '.', 'c', 'o', 'm', '\0',
   /* "gz-bmw.com", true */ 'g', 'z', '-', 'b', 'm', 'w', '.', 'c', 'o', 'm', '\0',
   /* "gza.jp", true */ 'g', 'z', 'a', '.', 'j', 'p', '\0',
   /* "gzitech.com", true */ 'g', 'z', 'i', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
@@ -8563,34 +8553,32 @@ static const char kSTSHostTable[] = {
   /* "heartsucker.com", true */ 'h', 'e', 'a', 'r', 't', 's', 'u', 'c', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "hearttruth.gov", true */ 'h', 'e', 'a', 'r', 't', 't', 'r', 'u', 't', 'h', '.', 'g', 'o', 'v', '\0',
   /* "hearty.blog", true */ 'h', 'e', 'a', 'r', 't', 'y', '.', 'b', 'l', 'o', 'g', '\0',
   /* "hearty.ga", true */ 'h', 'e', 'a', 'r', 't', 'y', '.', 'g', 'a', '\0',
   /* "hearty.ink", true */ 'h', 'e', 'a', 'r', 't', 'y', '.', 'i', 'n', 'k', '\0',
   /* "hearty.me", true */ 'h', 'e', 'a', 'r', 't', 'y', '.', 'm', 'e', '\0',
   /* "hearty.tw", true */ 'h', 'e', 'a', 'r', 't', 'y', '.', 't', 'w', '\0',
   /* "heartycraft.com", true */ 'h', 'e', 'a', 'r', 't', 'y', 'c', 'r', 'a', 'f', 't', '.', 'c', 'o', 'm', '\0',
-  /* "heavenlysmokenc.com", true */ 'h', 'e', 'a', 'v', 'e', 'n', 'l', 'y', 's', 'm', 'o', 'k', 'e', 'n', 'c', '.', 'c', 'o', 'm', '\0',
   /* "heavensattic.co.uk", true */ 'h', 'e', 'a', 'v', 'e', 'n', 's', 'a', 't', 't', 'i', 'c', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "heavensinferno.net", true */ 'h', 'e', 'a', 'v', 'e', 'n', 's', 'i', 'n', 'f', 'e', 'r', 'n', 'o', '.', 'n', 'e', 't', '\0',
   /* "heavyequipments.org", true */ 'h', 'e', 'a', 'v', 'y', 'e', 'q', 'u', 'i', 'p', 'm', 'e', 'n', 't', 's', '.', 'o', 'r', 'g', '\0',
   /* "heavystresser.com", true */ 'h', 'e', 'a', 'v', 'y', 's', 't', 'r', 'e', 's', 's', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "hebergeurssd.com", true */ 'h', 'e', 'b', 'e', 'r', 'g', 'e', 'u', 'r', 's', 's', 'd', '.', 'c', 'o', 'm', '\0',
   /* "hebikhiv.nl", true */ 'h', 'e', 'b', 'i', 'k', 'h', 'i', 'v', '.', 'n', 'l', '\0',
   /* "hebriff.com", true */ 'h', 'e', 'b', 'r', 'i', 'f', 'f', '.', 'c', 'o', 'm', '\0',
   /* "hec-espace-entreprise.ch", true */ 'h', 'e', 'c', '-', 'e', 's', 'p', 'a', 'c', 'e', '-', 'e', 'n', 't', 'r', 'e', 'p', 'r', 'i', 's', 'e', '.', 'c', 'h', '\0',
   /* "hec.global", true */ 'h', 'e', 'c', '.', 'g', 'l', 'o', 'b', 'a', 'l', '\0',
   /* "hechamano.es", true */ 'h', 'e', 'c', 'h', 'a', 'm', 'a', 'n', 'o', '.', 'e', 's', '\0',
   /* "heckelektro.de", true */ 'h', 'e', 'c', 'k', 'e', 'l', 'e', 'k', 't', 'r', 'o', '.', 'd', 'e', '\0',
   /* "heckerundknopp.de", true */ 'h', 'e', 'c', 'k', 'e', 'r', 'u', 'n', 'd', 'k', 'n', 'o', 'p', 'p', '.', 'd', 'e', '\0',
   /* "hectorj.net", true */ 'h', 'e', 'c', 't', 'o', 'r', 'j', '.', 'n', 'e', 't', '\0',
   /* "hedgeschool.ie", true */ 'h', 'e', 'd', 'g', 'e', 's', 'c', 'h', 'o', 'o', 'l', '.', 'i', 'e', '\0',
   /* "hedonism.org", true */ 'h', 'e', 'd', 'o', 'n', 'i', 's', 'm', '.', 'o', 'r', 'g', '\0',
   /* "hedonistic-imperative.com", true */ 'h', 'e', 'd', 'o', 'n', 'i', 's', 't', 'i', 'c', '-', 'i', 'm', 'p', 'e', 'r', 'a', 't', 'i', 'v', 'e', '.', 'c', 'o', 'm', '\0',
-  /* "hedonistic.org", true */ 'h', 'e', 'd', 'o', 'n', 'i', 's', 't', 'i', 'c', '.', 'o', 'r', 'g', '\0',
   /* "hedonium.com", true */ 'h', 'e', 'd', 'o', 'n', 'i', 'u', 'm', '.', 'c', 'o', 'm', '\0',
   /* "hedweb.co.uk", true */ 'h', 'e', 'd', 'w', 'e', 'b', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "hedweb.com", true */ 'h', 'e', 'd', 'w', 'e', 'b', '.', 'c', 'o', 'm', '\0',
   /* "hedweb.net", true */ 'h', 'e', 'd', 'w', 'e', 'b', '.', 'n', 'e', 't', '\0',
   /* "hedweb.org", true */ 'h', 'e', 'd', 'w', 'e', 'b', '.', 'o', 'r', 'g', '\0',
   /* "heeler.blue", true */ 'h', 'e', 'e', 'l', 'e', 'r', '.', 'b', 'l', 'u', 'e', '\0',
   /* "heeler.red", true */ 'h', 'e', 'e', 'l', 'e', 'r', '.', 'r', 'e', 'd', '\0',
   /* "heello.es", true */ 'h', 'e', 'e', 'l', 'l', 'o', '.', 'e', 's', '\0',
@@ -8627,17 +8615,16 @@ static const char kSTSHostTable[] = {
   /* "helix.am", true */ 'h', 'e', 'l', 'i', 'x', '.', 'a', 'm', '\0',
   /* "helixflight.com", true */ 'h', 'e', 'l', 'i', 'x', 'f', 'l', 'i', 'g', 'h', 't', '.', 'c', 'o', 'm', '\0',
   /* "hellenicaward.com", true */ 'h', 'e', 'l', 'l', 'e', 'n', 'i', 'c', 'a', 'w', 'a', 'r', 'd', '.', 'c', 'o', 'm', '\0',
   /* "hellersgas.com", true */ 'h', 'e', 'l', 'l', 'e', 'r', 's', 'g', 'a', 's', '.', 'c', 'o', 'm', '\0',
   /* "helles-koepfchen.de", true */ 'h', 'e', 'l', 'l', 'e', 's', '-', 'k', 'o', 'e', 'p', 'f', 'c', 'h', 'e', 'n', '.', 'd', 'e', '\0',
   /* "helloacm.com", true */ 'h', 'e', 'l', 'l', 'o', 'a', 'c', 'm', '.', 'c', 'o', 'm', '\0',
   /* "helloanselm.com", true */ 'h', 'e', 'l', 'l', 'o', 'a', 'n', 's', 'e', 'l', 'm', '.', 'c', 'o', 'm', '\0',
   /* "hellofilters.com", true */ 'h', 'e', 'l', 'l', 'o', 'f', 'i', 'l', 't', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
-  /* "hellomouse.cf", true */ 'h', 'e', 'l', 'l', 'o', 'm', 'o', 'u', 's', 'e', '.', 'c', 'f', '\0',
   /* "hellotandem.com", true */ 'h', 'e', 'l', 'l', 'o', 't', 'a', 'n', 'd', 'e', 'm', '.', 'c', 'o', 'm', '\0',
   /* "hellothought.net", true */ 'h', 'e', 'l', 'l', 'o', 't', 'h', 'o', 'u', 'g', 'h', 't', '.', 'n', 'e', 't', '\0',
   /* "hellscanyonraft.com", true */ 'h', 'e', 'l', 'l', 's', 'c', 'a', 'n', 'y', 'o', 'n', 'r', 'a', 'f', 't', '.', 'c', 'o', 'm', '\0',
   /* "help.simpletax.ca", true */ 'h', 'e', 'l', 'p', '.', 's', 'i', 'm', 'p', 'l', 'e', 't', 'a', 'x', '.', 'c', 'a', '\0',
   /* "helpconnect.com.au", true */ 'h', 'e', 'l', 'p', 'c', 'o', 'n', 'n', 'e', 'c', 't', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "helpgoabroad.com", true */ 'h', 'e', 'l', 'p', 'g', 'o', 'a', 'b', 'r', 'o', 'a', 'd', '.', 'c', 'o', 'm', '\0',
   /* "helpmij.cf", true */ 'h', 'e', 'l', 'p', 'm', 'i', 'j', '.', 'c', 'f', '\0',
   /* "helsingfors.guide", true */ 'h', 'e', 'l', 's', 'i', 'n', 'g', 'f', 'o', 'r', 's', '.', 'g', 'u', 'i', 'd', 'e', '\0',
@@ -8770,17 +8757,16 @@ static const char kSTSHostTable[] = {
   /* "historia-arte.com", true */ 'h', 'i', 's', 't', 'o', 'r', 'i', 'a', '-', 'a', 'r', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "history.google.com", true */ 'h', 'i', 's', 't', 'o', 'r', 'y', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "hitchunion.org", true */ 'h', 'i', 't', 'c', 'h', 'u', 'n', 'i', 'o', 'n', '.', 'o', 'r', 'g', '\0',
   /* "hititgunesi-tr.com", true */ 'h', 'i', 't', 'i', 't', 'g', 'u', 'n', 'e', 's', 'i', '-', 't', 'r', '.', 'c', 'o', 'm', '\0',
   /* "hitoapi.cc", true */ 'h', 'i', 't', 'o', 'a', 'p', 'i', '.', 'c', 'c', '\0',
   /* "hitter-lauzon.com", true */ 'h', 'i', 't', 't', 'e', 'r', '-', 'l', 'a', 'u', 'z', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "hitter.family", true */ 'h', 'i', 't', 't', 'e', 'r', '.', 'f', 'a', 'm', 'i', 'l', 'y', '\0',
   /* "hitterfamily.com", true */ 'h', 'i', 't', 't', 'e', 'r', 'f', 'a', 'm', 'i', 'l', 'y', '.', 'c', 'o', 'm', '\0',
-  /* "hiv.gov", true */ 'h', 'i', 'v', '.', 'g', 'o', 'v', '\0',
   /* "hiverlune.net", true */ 'h', 'i', 'v', 'e', 'r', 'l', 'u', 'n', 'e', '.', 'n', 'e', 't', '\0',
   /* "hiwiki.tk", true */ 'h', 'i', 'w', 'i', 'k', 'i', '.', 't', 'k', '\0',
   /* "hiyacar.co.uk", true */ 'h', 'i', 'y', 'a', 'c', 'a', 'r', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "hjartasmarta.se", true */ 'h', 'j', 'a', 'r', 't', 'a', 's', 'm', 'a', 'r', 't', 'a', '.', 's', 'e', '\0',
   /* "hjf-immobilien.de", true */ 'h', 'j', 'f', '-', 'i', 'm', 'm', 'o', 'b', 'i', 'l', 'i', 'e', 'n', '.', 'd', 'e', '\0',
   /* "hjortland.org", true */ 'h', 'j', 'o', 'r', 't', 'l', 'a', 'n', 'd', '.', 'o', 'r', 'g', '\0',
   /* "hk.search.yahoo.com", false */ 'h', 'k', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "hkdobrev.com", true */ 'h', 'k', 'd', 'o', 'b', 'r', 'e', 'v', '.', 'c', 'o', 'm', '\0',
@@ -8910,17 +8896,16 @@ static const char kSTSHostTable[] = {
   /* "hostanalyticsconsulting.com", true */ 'h', 'o', 's', 't', 'a', 'n', 'a', 'l', 'y', 't', 'i', 'c', 's', 'c', 'o', 'n', 's', 'u', 'l', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "hosted-oswa.org", true */ 'h', 'o', 's', 't', 'e', 'd', '-', 'o', 's', 'w', 'a', '.', 'o', 'r', 'g', '\0',
   /* "hosted4u.de", true */ 'h', 'o', 's', 't', 'e', 'd', '4', 'u', '.', 'd', 'e', '\0',
   /* "hostedbgp.net", true */ 'h', 'o', 's', 't', 'e', 'd', 'b', 'g', 'p', '.', 'n', 'e', 't', '\0',
   /* "hostedtalkgadget.google.com", true */ 'h', 'o', 's', 't', 'e', 'd', 't', 'a', 'l', 'k', 'g', 'a', 'd', 'g', 'e', 't', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "hostfission.com", true */ 'h', 'o', 's', 't', 'f', 'i', 's', 's', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "hostgigz.com", true */ 'h', 'o', 's', 't', 'g', 'i', 'g', 'z', '.', 'c', 'o', 'm', '\0',
   /* "hostingactive.it", true */ 'h', 'o', 's', 't', 'i', 'n', 'g', 'a', 'c', 't', 'i', 'v', 'e', '.', 'i', 't', '\0',
-  /* "hostingfj.com", true */ 'h', 'o', 's', 't', 'i', 'n', 'g', 'f', 'j', '.', 'c', 'o', 'm', '\0',
   /* "hostinghelp.guru", true */ 'h', 'o', 's', 't', 'i', 'n', 'g', 'h', 'e', 'l', 'p', '.', 'g', 'u', 'r', 'u', '\0',
   /* "hostinginnederland.nl", true */ 'h', 'o', 's', 't', 'i', 'n', 'g', 'i', 'n', 'n', 'e', 'd', 'e', 'r', 'l', 'a', 'n', 'd', '.', 'n', 'l', '\0',
   /* "hostix.de", true */ 'h', 'o', 's', 't', 'i', 'x', '.', 'd', 'e', '\0',
   /* "hostma.ma", true */ 'h', 'o', 's', 't', 'm', 'a', '.', 'm', 'a', '\0',
   /* "hostmijnpagina.nl", true */ 'h', 'o', 's', 't', 'm', 'i', 'j', 'n', 'p', 'a', 'g', 'i', 'n', 'a', '.', 'n', 'l', '\0',
   /* "hostmodern.com.au", true */ 'h', 'o', 's', 't', 'm', 'o', 'd', 'e', 'r', 'n', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "hosts.cf", true */ 'h', 'o', 's', 't', 's', '.', 'c', 'f', '\0',
   /* "hostserv.org", true */ 'h', 'o', 's', 't', 's', 'e', 'r', 'v', '.', 'o', 'r', 'g', '\0',
@@ -9093,16 +9078,17 @@ static const char kSTSHostTable[] = {
   /* "hybridworx.com", true */ 'h', 'y', 'b', 'r', 'i', 'd', 'w', 'o', 'r', 'x', '.', 'c', 'o', 'm', '\0',
   /* "hybridworx.de", true */ 'h', 'y', 'b', 'r', 'i', 'd', 'w', 'o', 'r', 'x', '.', 'd', 'e', '\0',
   /* "hybridworx.eu", true */ 'h', 'y', 'b', 'r', 'i', 'd', 'w', 'o', 'r', 'x', '.', 'e', 'u', '\0',
   /* "hybridworx.net", true */ 'h', 'y', 'b', 'r', 'i', 'd', 'w', 'o', 'r', 'x', '.', 'n', 'e', 't', '\0',
   /* "hybridworx.org", true */ 'h', 'y', 'b', 'r', 'i', 'd', 'w', 'o', 'r', 'x', '.', 'o', 'r', 'g', '\0',
   /* "hydaelyn.com", true */ 'h', 'y', 'd', 'a', 'e', 'l', 'y', 'n', '.', 'c', 'o', 'm', '\0',
   /* "hydrante.ch", true */ 'h', 'y', 'd', 'r', 'a', 'n', 't', 'e', '.', 'c', 'h', '\0',
   /* "hydrocloud.net", true */ 'h', 'y', 'd', 'r', 'o', 'c', 'l', 'o', 'u', 'd', '.', 'n', 'e', 't', '\0',
+  /* "hydronium.ml", true */ 'h', 'y', 'd', 'r', 'o', 'n', 'i', 'u', 'm', '.', 'm', 'l', '\0',
   /* "hydroturbine.info", true */ 'h', 'y', 'd', 'r', 'o', 't', 'u', 'r', 'b', 'i', 'n', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "hydrozone.fr", true */ 'h', 'y', 'd', 'r', 'o', 'z', 'o', 'n', 'e', '.', 'f', 'r', '\0',
   /* "hyk.me", true */ 'h', 'y', 'k', '.', 'm', 'e', '\0',
   /* "hylians.com", true */ 'h', 'y', 'l', 'i', 'a', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "hymerscollege.co.uk", true */ 'h', 'y', 'm', 'e', 'r', 's', 'c', 'o', 'l', 'l', 'e', 'g', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "hynek.me", true */ 'h', 'y', 'n', 'e', 'k', '.', 'm', 'e', '\0',
   /* "hypemgmt.com", true */ 'h', 'y', 'p', 'e', 'm', 'g', 'm', 't', '.', 'c', 'o', 'm', '\0',
   /* "hyper-matrix.org", true */ 'h', 'y', 'p', 'e', 'r', '-', 'm', 'a', 't', 'r', 'i', 'x', '.', 'o', 'r', 'g', '\0',
@@ -9205,17 +9191,17 @@ static const char kSTSHostTable[] = {
   /* "idemo.in", true */ 'i', 'd', 'e', 'm', 'o', '.', 'i', 'n', '\0',
   /* "idensys.nl", true */ 'i', 'd', 'e', 'n', 's', 'y', 's', '.', 'n', 'l', '\0',
   /* "identifyme.net", true */ 'i', 'd', 'e', 'n', 't', 'i', 'f', 'y', 'm', 'e', '.', 'n', 'e', 't', '\0',
   /* "identity-hash.online", true */ 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', '-', 'h', 'a', 's', 'h', '.', 'o', 'n', 'l', 'i', 'n', 'e', '\0',
   /* "identitytheft.gov", true */ 'i', 'd', 'e', 'n', 't', 'i', 't', 'y', 't', 'h', 'e', 'f', 't', '.', 'g', 'o', 'v', '\0',
   /* "idexxpublicationportal.com", true */ 'i', 'd', 'e', 'x', 'x', 'p', 'u', 'b', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 'p', 'o', 'r', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "idgard.de", true */ 'i', 'd', 'g', 'a', 'r', 'd', '.', 'd', 'e', '\0',
   /* "idhosts.co.id", true */ 'i', 'd', 'h', 'o', 's', 't', 's', '.', 'c', 'o', '.', 'i', 'd', '\0',
-  /* "idid.tk", true */ 'i', 'd', 'i', 'd', '.', 't', 'k', '\0',
+  /* "idinby.dk", true */ 'i', 'd', 'i', 'n', 'b', 'y', '.', 'd', 'k', '\0',
   /* "idiopolis.org", true */ 'i', 'd', 'i', 'o', 'p', 'o', 'l', 'i', 's', '.', 'o', 'r', 'g', '\0',
   /* "idisplay.es", true */ 'i', 'd', 'i', 's', 'p', 'l', 'a', 'y', '.', 'e', 's', '\0',
   /* "idmanagement.gov", true */ 'i', 'd', 'm', 'a', 'n', 'a', 'g', 'e', 'm', 'e', 'n', 't', '.', 'g', 'o', 'v', '\0',
   /* "idmobile.co.uk", true */ 'i', 'd', 'm', 'o', 'b', 'i', 'l', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "idndx.com", true */ 'i', 'd', 'n', 'd', 'x', '.', 'c', 'o', 'm', '\0',
   /* "idoc24.com", true */ 'i', 'd', 'o', 'c', '2', '4', '.', 'c', 'o', 'm', '\0',
   /* "idol-bikes.ru", true */ 'i', 'd', 'o', 'l', '-', 'b', 'i', 'k', 'e', 's', '.', 'r', 'u', '\0',
   /* "idolf.dk", true */ 'i', 'd', 'o', 'l', 'f', '.', 'd', 'k', '\0',
@@ -9224,17 +9210,16 @@ static const char kSTSHostTable[] = {
   /* "idtheft.gov", true */ 'i', 'd', 't', 'h', 'e', 'f', 't', '.', 'g', 'o', 'v', '\0',
   /* "idubaj.cz", true */ 'i', 'd', 'u', 'b', 'a', 'j', '.', 'c', 'z', '\0',
   /* "idvl.de", true */ 'i', 'd', 'v', 'l', '.', 'd', 'e', '\0',
   /* "ieeespmb.org", true */ 'i', 'e', 'e', 'e', 's', 'p', 'm', 'b', '.', 'o', 'r', 'g', '\0',
   /* "ieji.de", true */ 'i', 'e', 'j', 'i', '.', 'd', 'e', '\0',
   /* "iemas.azurewebsites.net", true */ 'i', 'e', 'm', 'a', 's', '.', 'a', 'z', 'u', 'r', 'e', 'w', 'e', 'b', 's', 'i', 't', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "ieval.ro", true */ 'i', 'e', 'v', 'a', 'l', '.', 'r', 'o', '\0',
   /* "ifamily.top", true */ 'i', 'f', 'a', 'm', 'i', 'l', 'y', '.', 't', 'o', 'p', '\0',
-  /* "ifasec.de", false */ 'i', 'f', 'a', 's', 'e', 'c', '.', 'd', 'e', '\0',
   /* "ifcfg.me", true */ 'i', 'f', 'c', 'f', 'g', '.', 'm', 'e', '\0',
   /* "ifconfig.co", true */ 'i', 'f', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', '\0',
   /* "ifengge.cn", true */ 'i', 'f', 'e', 'n', 'g', 'g', 'e', '.', 'c', 'n', '\0',
   /* "ifengge.me", true */ 'i', 'f', 'e', 'n', 'g', 'g', 'e', '.', 'm', 'e', '\0',
   /* "ifightsurveillance.com", true */ 'i', 'f', 'i', 'g', 'h', 't', 's', 'u', 'r', 'v', 'e', 'i', 'l', 'l', 'a', 'n', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "ifightsurveillance.net", true */ 'i', 'f', 'i', 'g', 'h', 't', 's', 'u', 'r', 'v', 'e', 'i', 'l', 'l', 'a', 'n', 'c', 'e', '.', 'n', 'e', 't', '\0',
   /* "ifightsurveillance.org", true */ 'i', 'f', 'i', 'g', 'h', 't', 's', 'u', 'r', 'v', 'e', 'i', 'l', 'l', 'a', 'n', 'c', 'e', '.', 'o', 'r', 'g', '\0',
   /* "ifixe.ch", true */ 'i', 'f', 'i', 'x', 'e', '.', 'c', 'h', '\0',
@@ -9711,17 +9696,16 @@ static const char kSTSHostTable[] = {
   /* "iruca.co", true */ 'i', 'r', 'u', 'c', 'a', '.', 'c', 'o', '\0',
   /* "irugs.com.sg", true */ 'i', 'r', 'u', 'g', 's', '.', 'c', 'o', 'm', '.', 's', 'g', '\0',
   /* "isaacman.tech", true */ 'i', 's', 'a', 'a', 'c', 'm', 'a', 'n', '.', 't', 'e', 'c', 'h', '\0',
   /* "isaacpartnership.co.uk", true */ 'i', 's', 'a', 'a', 'c', 'p', 'a', 'r', 't', 'n', 'e', 'r', 's', 'h', 'i', 'p', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "isaacpartnership.com", true */ 'i', 's', 'a', 'a', 'c', 'p', 'a', 'r', 't', 'n', 'e', 'r', 's', 'h', 'i', 'p', '.', 'c', 'o', 'm', '\0',
   /* "isaacphysics.org", true */ 'i', 's', 'a', 'a', 'c', 'p', 'h', 'y', 's', 'i', 'c', 's', '.', 'o', 'r', 'g', '\0',
   /* "isabelle-delpech.com", true */ 'i', 's', 'a', 'b', 'e', 'l', 'l', 'e', '-', 'd', 'e', 'l', 'p', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "isara.com", true */ 'i', 's', 'a', 'r', 'a', '.', 'c', 'o', 'm', '\0',
-  /* "isbc-telecom.ru", true */ 'i', 's', 'b', 'c', '-', 't', 'e', 'l', 'e', 'c', 'o', 'm', '.', 'r', 'u', '\0',
   /* "isbengrumpy.com", true */ 'i', 's', 'b', 'e', 'n', 'g', 'r', 'u', 'm', 'p', 'y', '.', 'c', 'o', 'm', '\0',
   /* "iscert.org", true */ 'i', 's', 'c', 'e', 'r', 't', '.', 'o', 'r', 'g', '\0',
   /* "isdown.cz", true */ 'i', 's', 'd', 'o', 'w', 'n', '.', 'c', 'z', '\0',
   /* "isecrets.se", true */ 'i', 's', 'e', 'c', 'r', 'e', 't', 's', '.', 's', 'e', '\0',
   /* "isef-eg.com", true */ 'i', 's', 'e', 'f', '-', 'e', 'g', '.', 'c', 'o', 'm', '\0',
   /* "iservicio.mx", true */ 'i', 's', 'e', 'r', 'v', 'i', 'c', 'i', 'o', '.', 'm', 'x', '\0',
   /* "isgp-studies.com", true */ 'i', 's', 'g', 'p', '-', 's', 't', 'u', 'd', 'i', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "ishadowsocks.ltd", true */ 'i', 's', 'h', 'a', 'd', 'o', 'w', 's', 'o', 'c', 'k', 's', '.', 'l', 't', 'd', '\0',
@@ -9831,16 +9815,17 @@ static const char kSTSHostTable[] = {
   /* "itneeds.tech", true */ 'i', 't', 'n', 'e', 'e', 'd', 's', '.', 't', 'e', 'c', 'h', '\0',
   /* "itnews-bg.com", true */ 'i', 't', 'n', 'e', 'w', 's', '-', 'b', 'g', '.', 'c', 'o', 'm', '\0',
   /* "itnota.com", true */ 'i', 't', 'n', 'o', 't', 'a', '.', 'c', 'o', 'm', '\0',
   /* "itochan.jp", true */ 'i', 't', 'o', 'c', 'h', 'a', 'n', '.', 'j', 'p', '\0',
   /* "itooky.com", true */ 'i', 't', 'o', 'o', 'k', 'y', '.', 'c', 'o', 'm', '\0',
   /* "itpol.dk", true */ 'i', 't', 'p', 'o', 'l', '.', 'd', 'k', '\0',
   /* "itpro.ua", true */ 'i', 't', 'p', 'r', 'o', '.', 'u', 'a', '\0',
   /* "itproject.guru", true */ 'i', 't', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'g', 'u', 'r', 'u', '\0',
+  /* "itpros.ru", true */ 'i', 't', 'p', 'r', 'o', 's', '.', 'r', 'u', '\0',
   /* "its-gutachten.de", true */ 'i', 't', 's', '-', 'g', 'u', 't', 'a', 'c', 'h', 't', 'e', 'n', '.', 'd', 'e', '\0',
   /* "its-schindler.de", true */ 'i', 't', 's', '-', 's', 'c', 'h', 'i', 'n', 'd', 'l', 'e', 'r', '.', 'd', 'e', '\0',
   /* "its-v.de", true */ 'i', 't', 's', '-', 'v', '.', 'd', 'e', '\0',
   /* "its4living.com", true */ 'i', 't', 's', '4', 'l', 'i', 'v', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "itsanicedoor.co.uk", true */ 'i', 't', 's', 'a', 'n', 'i', 'c', 'e', 'd', 'o', 'o', 'r', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "itsatrap.nl", false */ 'i', 't', 's', 'a', 't', 'r', 'a', 'p', '.', 'n', 'l', '\0',
   /* "itsecguy.com", true */ 'i', 't', 's', 'e', 'c', 'g', 'u', 'y', '.', 'c', 'o', 'm', '\0',
   /* "itsgoingdown.org", true */ 'i', 't', 's', 'g', 'o', 'i', 'n', 'g', 'd', 'o', 'w', 'n', '.', 'o', 'r', 'g', '\0',
@@ -10161,17 +10146,16 @@ static const char kSTSHostTable[] = {
   /* "jinja.ai", true */ 'j', 'i', 'n', 'j', 'a', '.', 'a', 'i', '\0',
   /* "jinshavip.com", true */ 'j', 'i', 'n', 's', 'h', 'a', 'v', 'i', 'p', '.', 'c', 'o', 'm', '\0',
   /* "jinshuju.net", true */ 'j', 'i', 'n', 's', 'h', 'u', 'j', 'u', '.', 'n', 'e', 't', '\0',
   /* "jiogo.com", true */ 'j', 'i', 'o', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "jira.com", true */ 'j', 'i', 'r', 'a', '.', 'c', 'o', 'm', '\0',
   /* "jirav.com", true */ 'j', 'i', 'r', 'a', 'v', '.', 'c', 'o', 'm', '\0',
   /* "jiripudil.cz", true */ 'j', 'i', 'r', 'i', 'p', 'u', 'd', 'i', 'l', '.', 'c', 'z', '\0',
   /* "jisaku-homepage.com", true */ 'j', 'i', 's', 'a', 'k', 'u', '-', 'h', 'o', 'm', 'e', 'p', 'a', 'g', 'e', '.', 'c', 'o', 'm', '\0',
-  /* "jitsi.org", false */ 'j', 'i', 't', 's', 'i', '.', 'o', 'r', 'g', '\0',
   /* "jiveiaktivno.bg", true */ 'j', 'i', 'v', 'e', 'i', 'a', 'k', 't', 'i', 'v', 'n', 'o', '.', 'b', 'g', '\0',
   /* "jiyusu.com", true */ 'j', 'i', 'y', 'u', 's', 'u', '.', 'c', 'o', 'm', '\0',
   /* "jjf.org.au", true */ 'j', 'j', 'f', '.', 'o', 'r', 'g', '.', 'a', 'u', '\0',
   /* "jjj.blog", true */ 'j', 'j', 'j', '.', 'b', 'l', 'o', 'g', '\0',
   /* "jjvanoorschot.nl", true */ 'j', 'j', 'v', 'a', 'n', 'o', 'o', 'r', 's', 'c', 'h', 'o', 't', '.', 'n', 'l', '\0',
   /* "jka.io", true */ 'j', 'k', 'a', '.', 'i', 'o', '\0',
   /* "jkchocolate.com", true */ 'j', 'k', 'c', 'h', 'o', 'c', 'o', 'l', 'a', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "jkirsche.com", true */ 'j', 'k', 'i', 'r', 's', 'c', 'h', 'e', '.', 'c', 'o', 'm', '\0',
@@ -10242,17 +10226,16 @@ static const char kSTSHostTable[] = {
   /* "johnroach.io", true */ 'j', 'o', 'h', 'n', 'r', 'o', 'a', 'c', 'h', '.', 'i', 'o', '\0',
   /* "johnroberts.me", true */ 'j', 'o', 'h', 'n', 'r', 'o', 'b', 'e', 'r', 't', 's', '.', 'm', 'e', '\0',
   /* "johnsegovia.com", true */ 'j', 'o', 'h', 'n', 's', 'e', 'g', 'o', 'v', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "johnsiu.com", true */ 'j', 'o', 'h', 'n', 's', 'i', 'u', '.', 'c', 'o', 'm', '\0',
   /* "johnvanhese.nl", true */ 'j', 'o', 'h', 'n', 'v', 'a', 'n', 'h', 'e', 's', 'e', '.', 'n', 'l', '\0',
   /* "johnverkerk.com", true */ 'j', 'o', 'h', 'n', 'v', 'e', 'r', 'k', 'e', 'r', 'k', '.', 'c', 'o', 'm', '\0',
   /* "jokescoff.com", true */ 'j', 'o', 'k', 'e', 's', 'c', 'o', 'f', 'f', '.', 'c', 'o', 'm', '\0',
   /* "jokewignand.nl", true */ 'j', 'o', 'k', 'e', 'w', 'i', 'g', 'n', 'a', 'n', 'd', '.', 'n', 'l', '\0',
-  /* "jollausers.de", true */ 'j', 'o', 'l', 'l', 'a', 'u', 's', 'e', 'r', 's', '.', 'd', 'e', '\0',
   /* "jomo.tv", true */ 'j', 'o', 'm', 'o', '.', 't', 'v', '\0',
   /* "jomp16.tk", true */ 'j', 'o', 'm', 'p', '1', '6', '.', 't', 'k', '\0',
   /* "jonandnoraswedding.com", true */ 'j', 'o', 'n', 'a', 'n', 'd', 'n', 'o', 'r', 'a', 's', 'w', 'e', 'd', 'd', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "jonarcher.info", true */ 'j', 'o', 'n', 'a', 'r', 'c', 'h', 'e', 'r', '.', 'i', 'n', 'f', 'o', '\0',
   /* "jonas-thelemann.de", true */ 'j', 'o', 'n', 'a', 's', '-', 't', 'h', 'e', 'l', 'e', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
   /* "jonaskjodt.com", true */ 'j', 'o', 'n', 'a', 's', 'k', 'j', 'o', 'd', 't', '.', 'c', 'o', 'm', '\0',
   /* "jonasmoeller.consulting", false */ 'j', 'o', 'n', 'a', 's', 'm', 'o', 'e', 'l', 'l', 'e', 'r', '.', 'c', 'o', 'n', 's', 'u', 'l', 't', 'i', 'n', 'g', '\0',
   /* "jonasmoeller.de", false */ 'j', 'o', 'n', 'a', 's', 'm', 'o', 'e', 'l', 'l', 'e', 'r', '.', 'd', 'e', '\0',
@@ -10481,16 +10464,17 @@ static const char kSTSHostTable[] = {
   /* "kanada.guide", true */ 'k', 'a', 'n', 'a', 'd', 'a', '.', 'g', 'u', 'i', 'd', 'e', '\0',
   /* "kanaete-uranai.com", true */ 'k', 'a', 'n', 'a', 'e', 't', 'e', '-', 'u', 'r', 'a', 'n', 'a', 'i', '.', 'c', 'o', 'm', '\0',
   /* "kanagawachuo-hospital.jp", true */ 'k', 'a', 'n', 'a', 'g', 'a', 'w', 'a', 'c', 'h', 'u', 'o', '-', 'h', 'o', 's', 'p', 'i', 't', 'a', 'l', '.', 'j', 'p', '\0',
   /* "kanal-tv-haensch.de", true */ 'k', 'a', 'n', 'a', 'l', '-', 't', 'v', '-', 'h', 'a', 'e', 'n', 's', 'c', 'h', '.', 'd', 'e', '\0',
   /* "kandalife.com", true */ 'k', 'a', 'n', 'd', 'a', 'l', 'i', 'f', 'e', '.', 'c', 'o', 'm', '\0',
   /* "kangarooislandholidayaccommodation.com.au", true */ 'k', 'a', 'n', 'g', 'a', 'r', 'o', 'o', 'i', 's', 'l', 'a', 'n', 'd', 'h', 'o', 'l', 'i', 'd', 'a', 'y', 'a', 'c', 'c', 'o', 'm', 'm', 'o', 'd', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "kangaroos.org", true */ 'k', 'a', 'n', 'g', 'a', 'r', 'o', 'o', 's', '.', 'o', 'r', 'g', '\0',
   /* "kangooroule.fr", true */ 'k', 'a', 'n', 'g', 'o', 'o', 'r', 'o', 'u', 'l', 'e', '.', 'f', 'r', '\0',
+  /* "kaniklani.co.za", true */ 'k', 'a', 'n', 'i', 'k', 'l', 'a', 'n', 'i', '.', 'c', 'o', '.', 'z', 'a', '\0',
   /* "kanjo.de", true */ 'k', 'a', 'n', 'j', 'o', '.', 'd', 'e', '\0',
   /* "kankimaru.com", true */ 'k', 'a', 'n', 'k', 'i', 'm', 'a', 'r', 'u', '.', 'c', 'o', 'm', '\0',
   /* "kanna.cf", true */ 'k', 'a', 'n', 'n', 'a', '.', 'c', 'f', '\0',
   /* "kannchen.de", true */ 'k', 'a', 'n', 'n', 'c', 'h', 'e', 'n', '.', 'd', 'e', '\0',
   /* "kanotijd.nl", true */ 'k', 'a', 'n', 'o', 't', 'i', 'j', 'd', '.', 'n', 'l', '\0',
   /* "kantankye.nl", true */ 'k', 'a', 'n', 't', 'a', 'n', 'k', 'y', 'e', '.', 'n', 'l', '\0',
   /* "kantanmt.com", true */ 'k', 'a', 'n', 't', 'a', 'n', 'm', 't', '.', 'c', 'o', 'm', '\0',
   /* "kantorosobisty.pl", true */ 'k', 'a', 'n', 't', 'o', 'r', 'o', 's', 'o', 'b', 'i', 's', 't', 'y', '.', 'p', 'l', '\0',
@@ -10510,17 +10494,16 @@ static const char kSTSHostTable[] = {
   /* "karanjthakkar.com", true */ 'k', 'a', 'r', 'a', 'n', 'j', 't', 'h', 'a', 'k', 'k', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "karateka.org", true */ 'k', 'a', 'r', 'a', 't', 'e', 'k', 'a', '.', 'o', 'r', 'g', '\0',
   /* "karateka.ru", true */ 'k', 'a', 'r', 'a', 't', 'e', 'k', 'a', '.', 'r', 'u', '\0',
   /* "karatorian.org", true */ 'k', 'a', 'r', 'a', 't', 'o', 'r', 'i', 'a', 'n', '.', 'o', 'r', 'g', '\0',
   /* "kardize24.pl", true */ 'k', 'a', 'r', 'd', 'i', 'z', 'e', '2', '4', '.', 'p', 'l', '\0',
   /* "karenledger.ca", true */ 'k', 'a', 'r', 'e', 'n', 'l', 'e', 'd', 'g', 'e', 'r', '.', 'c', 'a', '\0',
   /* "karguine.in", true */ 'k', 'a', 'r', 'g', 'u', 'i', 'n', 'e', '.', 'i', 'n', '\0',
   /* "karhm.com", true */ 'k', 'a', 'r', 'h', 'm', '.', 'c', 'o', 'm', '\0',
-  /* "karhukamera.com", true */ 'k', 'a', 'r', 'h', 'u', 'k', 'a', 'm', 'e', 'r', 'a', '.', 'c', 'o', 'm', '\0',
   /* "karit.nz", true */ 'k', 'a', 'r', 'i', 't', '.', 'n', 'z', '\0',
   /* "karjala-ski.ru", true */ 'k', 'a', 'r', 'j', 'a', 'l', 'a', '-', 's', 'k', 'i', '.', 'r', 'u', '\0',
   /* "karlbowden.com", true */ 'k', 'a', 'r', 'l', 'b', 'o', 'w', 'd', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "karloskontana.tk", true */ 'k', 'a', 'r', 'l', 'o', 's', 'k', 'o', 'n', 't', 'a', 'n', 'a', '.', 't', 'k', '\0',
   /* "karlstabo.se", true */ 'k', 'a', 'r', 'l', 's', 't', 'a', 'b', 'o', '.', 's', 'e', '\0',
   /* "karmaassurance.ca", true */ 'k', 'a', 'r', 'm', 'a', 'a', 's', 's', 'u', 'r', 'a', 'n', 'c', 'e', '.', 'c', 'a', '\0',
   /* "karmabaker.com", true */ 'k', 'a', 'r', 'm', 'a', 'b', 'a', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "karmaflux.com", true */ 'k', 'a', 'r', 'm', 'a', 'f', 'l', 'u', 'x', '.', 'c', 'o', 'm', '\0',
@@ -10651,17 +10634,17 @@ static const char kSTSHostTable[] = {
   /* "kepler-seminar.de", true */ 'k', 'e', 'p', 'l', 'e', 'r', '-', 's', 'e', 'm', 'i', 'n', 'a', 'r', '.', 'd', 'e', '\0',
   /* "kerem.xyz", true */ 'k', 'e', 'r', 'e', 'm', '.', 'x', 'y', 'z', '\0',
   /* "kerforhome.com", true */ 'k', 'e', 'r', 'f', 'o', 'r', 'h', 'o', 'm', 'e', '.', 'c', 'o', 'm', '\0',
   /* "kerijacoby.com", true */ 'k', 'e', 'r', 'i', 'j', 'a', 'c', 'o', 'b', 'y', '.', 'c', 'o', 'm', '\0',
   /* "kermadec.blog", true */ 'k', 'e', 'r', 'm', 'a', 'd', 'e', 'c', '.', 'b', 'l', 'o', 'g', '\0',
   /* "kermadec.com", true */ 'k', 'e', 'r', 'm', 'a', 'd', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "kernel-error.de", true */ 'k', 'e', 'r', 'n', 'e', 'l', '-', 'e', 'r', 'r', 'o', 'r', '.', 'd', 'e', '\0',
   /* "kernelpanics.nl", true */ 'k', 'e', 'r', 'n', 'e', 'l', 'p', 'a', 'n', 'i', 'c', 's', '.', 'n', 'l', '\0',
-  /* "kerp.se", true */ 'k', 'e', 'r', 'p', '.', 's', 'e', '\0',
+  /* "kerp.se", false */ 'k', 'e', 'r', 'p', '.', 's', 'e', '\0',
   /* "kerrfrequencycombs.org", true */ 'k', 'e', 'r', 'r', 'f', 'r', 'e', 'q', 'u', 'e', 'n', 'c', 'y', 'c', 'o', 'm', 'b', 's', '.', 'o', 'r', 'g', '\0',
   /* "kerstkaart.nl", true */ 'k', 'e', 'r', 's', 't', 'k', 'a', 'a', 'r', 't', '.', 'n', 'l', '\0',
   /* "kerus.net", true */ 'k', 'e', 'r', 'u', 's', '.', 'n', 'e', 't', '\0',
   /* "keskeces.com", true */ 'k', 'e', 's', 'k', 'e', 'c', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "kesteren.com", true */ 'k', 'e', 's', 't', 'e', 'r', 'e', 'n', '.', 'c', 'o', 'm', '\0',
   /* "kesteren.org", true */ 'k', 'e', 's', 't', 'e', 'r', 'e', 'n', '.', 'o', 'r', 'g', '\0',
   /* "ketamine.co.uk", true */ 'k', 'e', 't', 'a', 'm', 'i', 'n', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "ketosecology.co.uk", true */ 'k', 'e', 't', 'o', 's', 'e', 'c', 'o', 'l', 'o', 'g', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
@@ -10777,25 +10760,27 @@ static const char kSTSHostTable[] = {
   /* "kintawifi.com", false */ 'k', 'i', 'n', 't', 'a', 'w', 'i', 'f', 'i', '.', 'c', 'o', 'm', '\0',
   /* "kintoandar.com", true */ 'k', 'i', 'n', 't', 'o', 'a', 'n', 'd', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "kintone.com", true */ 'k', 'i', 'n', 't', 'o', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "kintore.tv", true */ 'k', 'i', 'n', 't', 'o', 'r', 'e', '.', 't', 'v', '\0',
   /* "kintzingerfilm.de", true */ 'k', 'i', 'n', 't', 'z', 'i', 'n', 'g', 'e', 'r', 'f', 'i', 'l', 'm', '.', 'd', 'e', '\0',
   /* "kiocloud.com", true */ 'k', 'i', 'o', 'c', 'l', 'o', 'u', 'd', '.', 'c', 'o', 'm', '\0',
   /* "kionetworks.es", true */ 'k', 'i', 'o', 'n', 'e', 't', 'w', 'o', 'r', 'k', 's', '.', 'e', 's', '\0',
   /* "kipira.com", true */ 'k', 'i', 'p', 'i', 'r', 'a', '.', 'c', 'o', 'm', '\0',
+  /* "kiraboshi.xyz", true */ 'k', 'i', 'r', 'a', 'b', 'o', 's', 'h', 'i', '.', 'x', 'y', 'z', '\0',
   /* "kiragameforum.net", true */ 'k', 'i', 'r', 'a', 'g', 'a', 'm', 'e', 'f', 'o', 'r', 'u', 'm', '.', 'n', 'e', 't', '\0',
   /* "kirainmoe.com", true */ 'k', 'i', 'r', 'a', 'i', 'n', 'm', 'o', 'e', '.', 'c', 'o', 'm', '\0',
   /* "kirbear.com", true */ 'k', 'i', 'r', 'b', 'e', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "kirche-dortmund-ost.de", true */ 'k', 'i', 'r', 'c', 'h', 'e', '-', 'd', 'o', 'r', 't', 'm', 'u', 'n', 'd', '-', 'o', 's', 't', '.', 'd', 'e', '\0',
   /* "kirchengemeinde-markt-erlbach.de", true */ 'k', 'i', 'r', 'c', 'h', 'e', 'n', 'g', 'e', 'm', 'e', 'i', 'n', 'd', 'e', '-', 'm', 'a', 'r', 'k', 't', '-', 'e', 'r', 'l', 'b', 'a', 'c', 'h', '.', 'd', 'e', '\0',
   /* "kircp.com", true */ 'k', 'i', 'r', 'c', 'p', '.', 'c', 'o', 'm', '\0',
   /* "kirei.se", true */ 'k', 'i', 'r', 'e', 'i', '.', 's', 'e', '\0',
   /* "kirillpokrovsky.de", true */ 'k', 'i', 'r', 'i', 'l', 'l', 'p', 'o', 'k', 'r', 'o', 'v', 's', 'k', 'y', '.', 'd', 'e', '\0',
   /* "kirinas.com", true */ 'k', 'i', 'r', 'i', 'n', 'a', 's', '.', 'c', 'o', 'm', '\0',
+  /* "kirkovsky.com", true */ 'k', 'i', 'r', 'k', 'o', 'v', 's', 'k', 'y', '.', 'c', 'o', 'm', '\0',
   /* "kirsch-gestaltung.de", true */ 'k', 'i', 'r', 's', 'c', 'h', '-', 'g', 'e', 's', 't', 'a', 'l', 't', 'u', 'n', 'g', '.', 'd', 'e', '\0',
   /* "kirschbaum.me", true */ 'k', 'i', 'r', 's', 'c', 'h', 'b', 'a', 'u', 'm', '.', 'm', 'e', '\0',
   /* "kirstenbos.ca", true */ 'k', 'i', 'r', 's', 't', 'e', 'n', 'b', 'o', 's', '.', 'c', 'a', '\0',
   /* "kirstin-peters.de", true */ 'k', 'i', 'r', 's', 't', 'i', 'n', '-', 'p', 'e', 't', 'e', 'r', 's', '.', 'd', 'e', '\0',
   /* "kis-toitoidixi.de", true */ 'k', 'i', 's', '-', 't', 'o', 'i', 't', 'o', 'i', 'd', 'i', 'x', 'i', '.', 'd', 'e', '\0',
   /* "kisallatorvos.hu", true */ 'k', 'i', 's', 'a', 'l', 'l', 'a', 't', 'o', 'r', 'v', 'o', 's', '.', 'h', 'u', '\0',
   /* "kissflow.com", true */ 'k', 'i', 's', 's', 'f', 'l', 'o', 'w', '.', 'c', 'o', 'm', '\0',
   /* "kisskiss.ch", true */ 'k', 'i', 's', 's', 'k', 'i', 's', 's', '.', 'c', 'h', '\0',
@@ -10817,27 +10802,29 @@ static const char kSTSHostTable[] = {
   /* "kjellvn.net", true */ 'k', 'j', 'e', 'l', 'l', 'v', 'n', '.', 'n', 'e', 't', '\0',
   /* "kjg-bachrain.de", true */ 'k', 'j', 'g', '-', 'b', 'a', 'c', 'h', 'r', 'a', 'i', 'n', '.', 'd', 'e', '\0',
   /* "kjoglum.me", true */ 'k', 'j', 'o', 'g', 'l', 'u', 'm', '.', 'm', 'e', '\0',
   /* "kk-neudorf-duissern.de", false */ 'k', 'k', '-', 'n', 'e', 'u', 'd', 'o', 'r', 'f', '-', 'd', 'u', 'i', 's', 's', 'e', 'r', 'n', '.', 'd', 'e', '\0',
   /* "kkaefer.com", true */ 'k', 'k', 'a', 'e', 'f', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "kkaufmann.de", false */ 'k', 'k', 'a', 'u', 'f', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
   /* "kki.org", true */ 'k', 'k', 'i', '.', 'o', 'r', 'g', '\0',
   /* "kkovacs.eu", true */ 'k', 'k', 'o', 'v', 'a', 'c', 's', '.', 'e', 'u', '\0',
+  /* "kksg.com", true */ 'k', 'k', 's', 'g', '.', 'c', 'o', 'm', '\0',
   /* "kkyy.me", true */ 'k', 'k', 'y', 'y', '.', 'm', 'e', '\0',
   /* "kkzxak47.com", true */ 'k', 'k', 'z', 'x', 'a', 'k', '4', '7', '.', 'c', 'o', 'm', '\0',
   /* "klamathrestoration.gov", true */ 'k', 'l', 'a', 'm', 'a', 't', 'h', 'r', 'e', 's', 't', 'o', 'r', 'a', 't', 'i', 'o', 'n', '.', 'g', 'o', 'v', '\0',
   /* "klanggut.at", true */ 'k', 'l', 'a', 'n', 'g', 'g', 'u', 't', '.', 'a', 't', '\0',
   /* "klangnok.de", false */ 'k', 'l', 'a', 'n', 'g', 'n', 'o', 'k', '.', 'd', 'e', '\0',
   /* "klares-licht.de", true */ 'k', 'l', 'a', 'r', 'e', 's', '-', 'l', 'i', 'c', 'h', 't', '.', 'd', 'e', '\0',
   /* "klarika.com", true */ 'k', 'l', 'a', 'r', 'i', 'k', 'a', '.', 'c', 'o', 'm', '\0',
   /* "klarmobil-empfehlen.de", true */ 'k', 'l', 'a', 'r', 'm', 'o', 'b', 'i', 'l', '-', 'e', 'm', 'p', 'f', 'e', 'h', 'l', 'e', 'n', '.', 'd', 'e', '\0',
   /* "klas.or.id", true */ 'k', 'l', 'a', 's', '.', 'o', 'r', '.', 'i', 'd', '\0',
   /* "klasfauseweh.de", true */ 'k', 'l', 'a', 's', 'f', 'a', 'u', 's', 'e', 'w', 'e', 'h', '.', 'd', 'e', '\0',
   /* "klatschreime.de", true */ 'k', 'l', 'a', 't', 's', 'c', 'h', 'r', 'e', 'i', 'm', 'e', '.', 'd', 'e', '\0',
+  /* "klausbrinch.dk", true */ 'k', 'l', 'a', 'u', 's', 'b', 'r', 'i', 'n', 'c', 'h', '.', 'd', 'k', '\0',
   /* "klausimas.lt", true */ 'k', 'l', 'a', 'u', 's', 'i', 'm', 'a', 's', '.', 'l', 't', '\0',
   /* "klaver.it", true */ 'k', 'l', 'a', 'v', 'e', 'r', '.', 'i', 't', '\0',
   /* "klaw.xyz", true */ 'k', 'l', 'a', 'w', '.', 'x', 'y', 'z', '\0',
   /* "kle.cz", true */ 'k', 'l', 'e', '.', 'c', 'z', '\0',
   /* "klean-ritekc.com", true */ 'k', 'l', 'e', 'a', 'n', '-', 'r', 'i', 't', 'e', 'k', 'c', '.', 'c', 'o', 'm', '\0',
   /* "kleaning.by", true */ 'k', 'l', 'e', 'a', 'n', 'i', 'n', 'g', '.', 'b', 'y', '\0',
   /* "klebetape.de", true */ 'k', 'l', 'e', 'b', 'e', 't', 'a', 'p', 'e', '.', 'd', 'e', '\0',
   /* "kledingrekken.nl", true */ 'k', 'l', 'e', 'd', 'i', 'n', 'g', 'r', 'e', 'k', 'k', 'e', 'n', '.', 'n', 'l', '\0',
@@ -10980,17 +10967,16 @@ static const char kSTSHostTable[] = {
   /* "kovaldo.ru", true */ 'k', 'o', 'v', 'a', 'l', 'd', 'o', '.', 'r', 'u', '\0',
   /* "kovals.sk", true */ 'k', 'o', 'v', 'a', 'l', 's', '.', 's', 'k', '\0',
   /* "kovnsk.net", true */ 'k', 'o', 'v', 'n', 's', 'k', '.', 'n', 'e', 't', '\0',
   /* "kowalmik.tk", true */ 'k', 'o', 'w', 'a', 'l', 'm', 'i', 'k', '.', 't', 'k', '\0',
   /* "kowarschick.de", true */ 'k', 'o', 'w', 'a', 'r', 's', 'c', 'h', 'i', 'c', 'k', '.', 'd', 'e', '\0',
   /* "kozmik.co", true */ 'k', 'o', 'z', 'm', 'i', 'k', '.', 'c', 'o', '\0',
   /* "kozuch.biz", true */ 'k', 'o', 'z', 'u', 'c', 'h', '.', 'b', 'i', 'z', '\0',
   /* "kpdyer.com", true */ 'k', 'p', 'd', 'y', 'e', 'r', '.', 'c', 'o', 'm', '\0',
-  /* "kpebetka.net", true */ 'k', 'p', 'e', 'b', 'e', 't', 'k', 'a', '.', 'n', 'e', 't', '\0',
   /* "kpfanworld.com", true */ 'k', 'p', 'f', 'a', 'n', 'w', 'o', 'r', 'l', 'd', '.', 'c', 'o', 'm', '\0',
   /* "kpinvest.eu", true */ 'k', 'p', 'i', 'n', 'v', 'e', 's', 't', '.', 'e', 'u', '\0',
   /* "kpn-dnssec.com", true */ 'k', 'p', 'n', '-', 'd', 'n', 's', 's', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "kpumuk.info", true */ 'k', 'p', 'u', 'm', 'u', 'k', '.', 'i', 'n', 'f', 'o', '\0',
   /* "kpvpn.com", true */ 'k', 'p', 'v', 'p', 'n', '.', 'c', 'o', 'm', '\0',
   /* "kpx1.de", true */ 'k', 'p', 'x', '1', '.', 'd', 'e', '\0',
   /* "krachtinverbinding.nl", true */ 'k', 'r', 'a', 'c', 'h', 't', 'i', 'n', 'v', 'e', 'r', 'b', 'i', 'n', 'd', 'i', 'n', 'g', '.', 'n', 'l', '\0',
   /* "kradalby.no", true */ 'k', 'r', 'a', 'd', 'a', 'l', 'b', 'y', '.', 'n', 'o', '\0',
@@ -11002,16 +10988,17 @@ static const char kSTSHostTable[] = {
   /* "kraiwon.com", true */ 'k', 'r', 'a', 'i', 'w', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "kraken.io", true */ 'k', 'r', 'a', 'k', 'e', 'n', '.', 'i', 'o', '\0',
   /* "kralik.io", true */ 'k', 'r', 'a', 'l', 'i', 'k', '.', 'i', 'o', '\0',
   /* "krambeutel.de", true */ 'k', 'r', 'a', 'm', 'b', 'e', 'u', 't', 'e', 'l', '.', 'd', 'e', '\0',
   /* "krampus-fischamend.at", true */ 'k', 'r', 'a', 'm', 'p', 'u', 's', '-', 'f', 'i', 's', 'c', 'h', 'a', 'm', 'e', 'n', 'd', '.', 'a', 't', '\0',
   /* "kramsj.uk", true */ 'k', 'r', 'a', 'm', 's', 'j', '.', 'u', 'k', '\0',
   /* "krang.org.uk", true */ 'k', 'r', 'a', 'n', 'g', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "krasota.ru", false */ 'k', 'r', 'a', 's', 'o', 't', 'a', '.', 'r', 'u', '\0',
+  /* "krasovsky.me", true */ 'k', 'r', 'a', 's', 'o', 'v', 's', 'k', 'y', '.', 'm', 'e', '\0',
   /* "kravelindo-adventure.com", false */ 'k', 'r', 'a', 'v', 'e', 'l', 'i', 'n', 'd', 'o', '-', 'a', 'd', 'v', 'e', 'n', 't', 'u', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "kraynik.com", true */ 'k', 'r', 'a', 'y', 'n', 'i', 'k', '.', 'c', 'o', 'm', '\0',
   /* "krc.link", true */ 'k', 'r', 'c', '.', 'l', 'i', 'n', 'k', '\0',
   /* "kream.io", true */ 'k', 'r', 'e', 'a', 'm', '.', 'i', 'o', '\0',
   /* "kreationnext.com", true */ 'k', 'r', 'e', 'a', 't', 'i', 'o', 'n', 'n', 'e', 'x', 't', '.', 'c', 'o', 'm', '\0',
   /* "kreativstrecke.de", true */ 'k', 'r', 'e', 'a', 't', 'i', 'v', 's', 't', 'r', 'e', 'c', 'k', 'e', '.', 'd', 'e', '\0',
   /* "kredietpaspoort.nl", true */ 'k', 'r', 'e', 'd', 'i', 'e', 't', 'p', 'a', 's', 'p', 'o', 'o', 'r', 't', '.', 'n', 'l', '\0',
   /* "kredite24.de", true */ 'k', 'r', 'e', 'd', 'i', 't', 'e', '2', '4', '.', 'd', 'e', '\0',
@@ -11021,16 +11008,17 @@ static const char kSTSHostTable[] = {
   /* "kreuzpfadfinder.de", true */ 'k', 'r', 'e', 'u', 'z', 'p', 'f', 'a', 'd', 'f', 'i', 'n', 'd', 'e', 'r', '.', 'd', 'e', '\0',
   /* "kreza.de", true */ 'k', 'r', 'e', 'z', 'a', '.', 'd', 'e', '\0',
   /* "kriechel.de", true */ 'k', 'r', 'i', 'e', 'c', 'h', 'e', 'l', '.', 'd', 'e', '\0',
   /* "kriegskindernothilfe.de", true */ 'k', 'r', 'i', 'e', 'g', 's', 'k', 'i', 'n', 'd', 'e', 'r', 'n', 'o', 't', 'h', 'i', 'l', 'f', 'e', '.', 'd', 'e', '\0',
   /* "krinetzki.de", true */ 'k', 'r', 'i', 'n', 'e', 't', 'z', 'k', 'i', '.', 'd', 'e', '\0',
   /* "kriptosec.com", true */ 'k', 'r', 'i', 'p', 't', 'o', 's', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "krislamoureux.com", true */ 'k', 'r', 'i', 's', 'l', 'a', 'm', 'o', 'u', 'r', 'e', 'u', 'x', '.', 'c', 'o', 'm', '\0',
   /* "krisstarkey.co.uk", true */ 'k', 'r', 'i', 's', 's', 't', 'a', 'r', 'k', 'e', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
+  /* "kristikala.nl", true */ 'k', 'r', 'i', 's', 't', 'i', 'k', 'a', 'l', 'a', '.', 'n', 'l', '\0',
   /* "kristinbailey.com", true */ 'k', 'r', 'i', 's', 't', 'i', 'n', 'b', 'a', 'i', 'l', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "kristjanrang.eu", true */ 'k', 'r', 'i', 's', 't', 'j', 'a', 'n', 'r', 'a', 'n', 'g', '.', 'e', 'u', '\0',
   /* "krizek.cc", true */ 'k', 'r', 'i', 'z', 'e', 'k', '.', 'c', 'c', '\0',
   /* "krk-media.pl", false */ 'k', 'r', 'k', '-', 'm', 'e', 'd', 'i', 'a', '.', 'p', 'l', '\0',
   /* "krmela.com", true */ 'k', 'r', 'm', 'e', 'l', 'a', '.', 'c', 'o', 'm', '\0',
   /* "krmeni.cz", true */ 'k', 'r', 'm', 'e', 'n', 'i', '.', 'c', 'z', '\0',
   /* "kromonos.net", true */ 'k', 'r', 'o', 'm', 'o', 'n', 'o', 's', '.', 'n', 'e', 't', '\0',
   /* "kronaw.it", true */ 'k', 'r', 'o', 'n', 'a', 'w', '.', 'i', 't', '\0',
@@ -11151,17 +11139,16 @@ static const char kSTSHostTable[] = {
   /* "labourreedevergheas.fr", true */ 'l', 'a', 'b', 'o', 'u', 'r', 'r', 'e', 'e', 'd', 'e', 'v', 'e', 'r', 'g', 'h', 'e', 'a', 's', '.', 'f', 'r', '\0',
   /* "laboutiquemarocaineduconvoyeur.com", true */ 'l', 'a', 'b', 'o', 'u', 't', 'i', 'q', 'u', 'e', 'm', 'a', 'r', 'o', 'c', 'a', 'i', 'n', 'e', 'd', 'u', 'c', 'o', 'n', 'v', 'o', 'y', 'e', 'u', 'r', '.', 'c', 'o', 'm', '\0',
   /* "laboutiquemarocaineduconvoyeur.ma", true */ 'l', 'a', 'b', 'o', 'u', 't', 'i', 'q', 'u', 'e', 'm', 'a', 'r', 'o', 'c', 'a', 'i', 'n', 'e', 'd', 'u', 'c', 'o', 'n', 'v', 'o', 'y', 'e', 'u', 'r', '.', 'm', 'a', '\0',
   /* "laboxfaitsoncinema.com", true */ 'l', 'a', 'b', 'o', 'x', 'f', 'a', 'i', 't', 's', 'o', 'n', 'c', 'i', 'n', 'e', 'm', 'a', '.', 'c', 'o', 'm', '\0',
   /* "labradorpuppiesforsalebyregisteredlabradorbreeders.com", true */ 'l', 'a', 'b', 'r', 'a', 'd', 'o', 'r', 'p', 'u', 'p', 'p', 'i', 'e', 's', 'f', 'o', 'r', 's', 'a', 'l', 'e', 'b', 'y', 'r', 'e', 'g', 'i', 's', 't', 'e', 'r', 'e', 'd', 'l', 'a', 'b', 'r', 'a', 'd', 'o', 'r', 'b', 'r', 'e', 'e', 'd', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "labrat.mobi", true */ 'l', 'a', 'b', 'r', 'a', 't', '.', 'm', 'o', 'b', 'i', '\0',
   /* "lacarpesaintaubinoise.fr", true */ 'l', 'a', 'c', 'a', 'r', 'p', 'e', 's', 'a', 'i', 'n', 't', 'a', 'u', 'b', 'i', 'n', 'o', 'i', 's', 'e', '.', 'f', 'r', '\0',
   /* "lacasa.fr", true */ 'l', 'a', 'c', 'a', 's', 'a', '.', 'f', 'r', '\0',
-  /* "lacasabelucci.com", true */ 'l', 'a', 'c', 'a', 's', 'a', 'b', 'e', 'l', 'u', 'c', 'c', 'i', '.', 'c', 'o', 'm', '\0',
   /* "lacasseroy.com", true */ 'l', 'a', 'c', 'a', 's', 's', 'e', 'r', 'o', 'y', '.', 'c', 'o', 'm', '\0',
   /* "lacentral.com", false */ 'l', 'a', 'c', 'e', 'n', 't', 'r', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "lacetsroses.ch", true */ 'l', 'a', 'c', 'e', 't', 's', 'r', 'o', 's', 'e', 's', '.', 'c', 'h', '\0',
   /* "lachawoj.de", true */ 'l', 'a', 'c', 'h', 'a', 'w', 'o', 'j', '.', 'd', 'e', '\0',
   /* "lachlan.com", true */ 'l', 'a', 'c', 'h', 'l', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "lacicloud.net", true */ 'l', 'a', 'c', 'i', 'c', 'l', 'o', 'u', 'd', '.', 'n', 'e', 't', '\0',
   /* "laclaque.ch", true */ 'l', 'a', 'c', 'l', 'a', 'q', 'u', 'e', '.', 'c', 'h', '\0',
   /* "lacledelareussite.com", true */ 'l', 'a', 'c', 'l', 'e', 'd', 'e', 'l', 'a', 'r', 'e', 'u', 's', 's', 'i', 't', 'e', '.', 'c', 'o', 'm', '\0',
@@ -11295,30 +11282,30 @@ static const char kSTSHostTable[] = {
   /* "laurel4th.org", true */ 'l', 'a', 'u', 'r', 'e', 'l', '4', 't', 'h', '.', 'o', 'r', 'g', '\0',
   /* "laurelblack.com", true */ 'l', 'a', 'u', 'r', 'e', 'l', 'b', 'l', 'a', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "laureltv.org", true */ 'l', 'a', 'u', 'r', 'e', 'l', 't', 'v', '.', 'o', 'r', 'g', '\0',
   /* "lauriuc.sk", true */ 'l', 'a', 'u', 'r', 'i', 'u', 'c', '.', 's', 'k', '\0',
   /* "lausannedentiste.ch", true */ 'l', 'a', 'u', 's', 'a', 'n', 'n', 'e', 'd', 'e', 'n', 't', 'i', 's', 't', 'e', '.', 'c', 'h', '\0',
   /* "laussat.de", true */ 'l', 'a', 'u', 's', 's', 'a', 't', '.', 'd', 'e', '\0',
   /* "lauzon-hitter.com", true */ 'l', 'a', 'u', 'z', 'o', 'n', '-', 'h', 'i', 't', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "lavabit.no", true */ 'l', 'a', 'v', 'a', 'b', 'i', 't', '.', 'n', 'o', '\0',
-  /* "lavalite.de", true */ 'l', 'a', 'v', 'a', 'l', 'i', 't', 'e', '.', 'd', 'e', '\0',
   /* "lavaux.lv", true */ 'l', 'a', 'v', 'a', 'u', 'x', '.', 'l', 'v', '\0',
   /* "laventainnhotel-mailing.com", true */ 'l', 'a', 'v', 'e', 'n', 't', 'a', 'i', 'n', 'n', 'h', 'o', 't', 'e', 'l', '-', 'm', 'a', 'i', 'l', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "lavita.de", true */ 'l', 'a', 'v', 'i', 't', 'a', '.', 'd', 'e', '\0',
   /* "lavoieducoeur.be", true */ 'l', 'a', 'v', 'o', 'i', 'e', 'd', 'u', 'c', 'o', 'e', 'u', 'r', '.', 'b', 'e', '\0',
   /* "lavoiepharmd.com", true */ 'l', 'a', 'v', 'o', 'i', 'e', 'p', 'h', 'a', 'r', 'm', 'd', '.', 'c', 'o', 'm', '\0',
   /* "law-peters.de", true */ 'l', 'a', 'w', '-', 'p', 'e', 't', 'e', 'r', 's', '.', 'd', 'e', '\0',
   /* "lawformt.com", true */ 'l', 'a', 'w', 'f', 'o', 'r', 'm', 't', '.', 'c', 'o', 'm', '\0',
   /* "lawnuk.com", true */ 'l', 'a', 'w', 'n', 'u', 'k', '.', 'c', 'o', 'm', '\0',
   /* "lawrence-institute.com", true */ 'l', 'a', 'w', 'r', 'e', 'n', 'c', 'e', '-', 'i', 'n', 's', 't', 'i', 't', 'u', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "lawrencemurgatroyd.com", true */ 'l', 'a', 'w', 'r', 'e', 'n', 'c', 'e', 'm', 'u', 'r', 'g', 'a', 't', 'r', 'o', 'y', 'd', '.', 'c', 'o', 'm', '\0',
   /* "layer8.tk", true */ 'l', 'a', 'y', 'e', 'r', '8', '.', 't', 'k', '\0',
   /* "laylo.nl", true */ 'l', 'a', 'y', 'l', 'o', '.', 'n', 'l', '\0',
   /* "layoutsatzunddruck.de", true */ 'l', 'a', 'y', 'o', 'u', 't', 's', 'a', 't', 'z', 'u', 'n', 'd', 'd', 'r', 'u', 'c', 'k', '.', 'd', 'e', '\0',
+  /* "lazerus.net", true */ 'l', 'a', 'z', 'e', 'r', 'u', 's', '.', 'n', 'e', 't', '\0',
   /* "lazowik.pl", true */ 'l', 'a', 'z', 'o', 'w', 'i', 'k', '.', 'p', 'l', '\0',
   /* "lazurit.com", true */ 'l', 'a', 'z', 'u', 'r', 'i', 't', '.', 'c', 'o', 'm', '\0',
   /* "lb-toner.de", true */ 'l', 'b', '-', 't', 'o', 'n', 'e', 'r', '.', 'd', 'e', '\0',
   /* "lbarrios.es", true */ 'l', 'b', 'a', 'r', 'r', 'i', 'o', 's', '.', 'e', 's', '\0',
   /* "lbayer.com", true */ 'l', 'b', 'a', 'y', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "lbihrhelpdesk.com", true */ 'l', 'b', 'i', 'h', 'r', 'h', 'e', 'l', 'p', 'd', 'e', 's', 'k', '.', 'c', 'o', 'm', '\0',
   /* "lbs-logics.com", true */ 'l', 'b', 's', '-', 'l', 'o', 'g', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "lca-pv.de", true */ 'l', 'c', 'a', '-', 'p', 'v', '.', 'd', 'e', '\0',
@@ -11387,16 +11374,18 @@ static const char kSTSHostTable[] = {
   /* "leesilvey.com", true */ 'l', 'e', 'e', 's', 'i', 'l', 'v', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "leet2.com", true */ 'l', 'e', 'e', 't', '2', '.', 'c', 'o', 'm', '\0',
   /* "leetgamers.asia", true */ 'l', 'e', 'e', 't', 'g', 'a', 'm', 'e', 'r', 's', '.', 'a', 's', 'i', 'a', '\0',
   /* "leetsaber.com", true */ 'l', 'e', 'e', 't', 's', 'a', 'b', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "leflibustier.ru", true */ 'l', 'e', 'f', 'l', 'i', 'b', 'u', 's', 't', 'i', 'e', 'r', '.', 'r', 'u', '\0',
   /* "lefonddeloeil.com", true */ 'l', 'e', 'f', 'o', 'n', 'd', 'd', 'e', 'l', 'o', 'e', 'i', 'l', '.', 'c', 'o', 'm', '\0',
   /* "leftclick.cloud", true */ 'l', 'e', 'f', 't', 'c', 'l', 'i', 'c', 'k', '.', 'c', 'l', 'o', 'u', 'd', '\0',
   /* "leftclick.eu", true */ 'l', 'e', 'f', 't', 'c', 'l', 'i', 'c', 'k', '.', 'e', 'u', '\0',
+  /* "lega-dental.com", true */ 'l', 'e', 'g', 'a', '-', 'd', 'e', 'n', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0',
+  /* "lega3.dk", true */ 'l', 'e', 'g', 'a', '3', '.', 'd', 'k', '\0',
   /* "legadental.com", true */ 'l', 'e', 'g', 'a', 'd', 'e', 'n', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "legalcontrol.info", true */ 'l', 'e', 'g', 'a', 'l', 'c', 'o', 'n', 't', 'r', 'o', 'l', '.', 'i', 'n', 'f', 'o', '\0',
   /* "legalrobot-uat.com", true */ 'l', 'e', 'g', 'a', 'l', 'r', 'o', 'b', 'o', 't', '-', 'u', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "legalrobot.com", true */ 'l', 'e', 'g', 'a', 'l', 'r', 'o', 'b', 'o', 't', '.', 'c', 'o', 'm', '\0',
   /* "legaltip.eu", true */ 'l', 'e', 'g', 'a', 'l', 't', 'i', 'p', '.', 'e', 'u', '\0',
   /* "legendary.camera", true */ 'l', 'e', 'g', 'e', 'n', 'd', 'a', 'r', 'y', '.', 'c', 'a', 'm', 'e', 'r', 'a', '\0',
   /* "legendofkrystal.com", false */ 'l', 'e', 'g', 'e', 'n', 'd', 'o', 'f', 'k', 'r', 'y', 's', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "legends-game.ru", false */ 'l', 'e', 'g', 'e', 'n', 'd', 's', '-', 'g', 'a', 'm', 'e', '.', 'r', 'u', '\0',
@@ -11518,17 +11507,16 @@ static const char kSTSHostTable[] = {
   /* "lfgss.com", true */ 'l', 'f', 'g', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "lgbt.io", true */ 'l', 'g', 'b', 't', '.', 'i', 'o', '\0',
   /* "lghfinancialstrategy.ch", true */ 'l', 'g', 'h', 'f', 'i', 'n', 'a', 'n', 'c', 'i', 'a', 'l', 's', 't', 'r', 'a', 't', 'e', 'g', 'y', '.', 'c', 'h', '\0',
   /* "lgsg.us", true */ 'l', 'g', 's', 'g', '.', 'u', 's', '\0',
   /* "lhasaapso.com.br", true */ 'l', 'h', 'a', 's', 'a', 'a', 'p', 's', 'o', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "li-ke.co.jp", true */ 'l', 'i', '-', 'k', 'e', '.', 'c', 'o', '.', 'j', 'p', '\0',
   /* "liangji.com.tw", false */ 'l', 'i', 'a', 'n', 'g', 'j', 'i', '.', 'c', 'o', 'm', '.', 't', 'w', '\0',
   /* "liaronce.win", true */ 'l', 'i', 'a', 'r', 'o', 'n', 'c', 'e', '.', 'w', 'i', 'n', '\0',
-  /* "libbitcoin.org", true */ 'l', 'i', 'b', 'b', 'i', 't', 'c', 'o', 'i', 'n', '.', 'o', 'r', 'g', '\0',
   /* "libble.eu", true */ 'l', 'i', 'b', 'b', 'l', 'e', '.', 'e', 'u', '\0',
   /* "libertas-tech.com", true */ 'l', 'i', 'b', 'e', 'r', 't', 'a', 's', '-', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "libfte.org", true */ 'l', 'i', 'b', 'f', 't', 'e', '.', 'o', 'r', 'g', '\0',
   /* "libnull.com", true */ 'l', 'i', 'b', 'n', 'u', 'l', 'l', '.', 'c', 'o', 'm', '\0',
   /* "libraryextension.com", true */ 'l', 'i', 'b', 'r', 'a', 'r', 'y', 'e', 'x', 't', 'e', 'n', 's', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "libraryfreedomproject.org", false */ 'l', 'i', 'b', 'r', 'a', 'r', 'y', 'f', 'r', 'e', 'e', 'd', 'o', 'm', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0',
   /* "libre.university", true */ 'l', 'i', 'b', 'r', 'e', '.', 'u', 'n', 'i', 'v', 'e', 'r', 's', 'i', 't', 'y', '\0',
   /* "librelamp.com", true */ 'l', 'i', 'b', 'r', 'e', 'l', 'a', 'm', 'p', '.', 'c', 'o', 'm', '\0',
@@ -11792,16 +11780,17 @@ static const char kSTSHostTable[] = {
   /* "logopaediereinhard.de", true */ 'l', 'o', 'g', 'o', 'p', 'a', 'e', 'd', 'i', 'e', 'r', 'e', 'i', 'n', 'h', 'a', 'r', 'd', '.', 'd', 'e', '\0',
   /* "logopoeia.com", true */ 'l', 'o', 'g', 'o', 'p', 'o', 'e', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "loichot.ch", true */ 'l', 'o', 'i', 'c', 'h', 'o', 't', '.', 'c', 'h', '\0',
   /* "lojadoprazer.com.br", true */ 'l', 'o', 'j', 'a', 'd', 'o', 'p', 'r', 'a', 'z', 'e', 'r', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "lojamagicalx.com", true */ 'l', 'o', 'j', 'a', 'm', 'a', 'g', 'i', 'c', 'a', 'l', 'x', '.', 'c', 'o', 'm', '\0',
   /* "lojix.com", true */ 'l', 'o', 'j', 'i', 'x', '.', 'c', 'o', 'm', '\0',
   /* "lojj.pt", true */ 'l', 'o', 'j', 'j', '.', 'p', 't', '\0',
   /* "lokaal.org", true */ 'l', 'o', 'k', 'a', 'a', 'l', '.', 'o', 'r', 'g', '\0',
+  /* "loli.bz", true */ 'l', 'o', 'l', 'i', '.', 'b', 'z', '\0',
   /* "loli.pet", true */ 'l', 'o', 'l', 'i', '.', 'p', 'e', 't', '\0',
   /* "loli.world", true */ 'l', 'o', 'l', 'i', '.', 'w', 'o', 'r', 'l', 'd', '\0',
   /* "lolicon.eu", true */ 'l', 'o', 'l', 'i', 'c', 'o', 'n', '.', 'e', 'u', '\0',
   /* "lolicon.info", true */ 'l', 'o', 'l', 'i', 'c', 'o', 'n', '.', 'i', 'n', 'f', 'o', '\0',
   /* "lolkot.ru", true */ 'l', 'o', 'l', 'k', 'o', 't', '.', 'r', 'u', '\0',
   /* "lolmegafroi.de", true */ 'l', 'o', 'l', 'm', 'e', 'g', 'a', 'f', 'r', 'o', 'i', '.', 'd', 'e', '\0',
   /* "lolpatrol.de", true */ 'l', 'o', 'l', 'p', 'a', 't', 'r', 'o', 'l', '.', 'd', 'e', '\0',
   /* "lolpatrol.wtf", true */ 'l', 'o', 'l', 'p', 'a', 't', 'r', 'o', 'l', '.', 'w', 't', 'f', '\0',
@@ -12133,17 +12122,16 @@ static const char kSTSHostTable[] = {
   /* "malamutedoalasca.com.br", true */ 'm', 'a', 'l', 'a', 'm', 'u', 't', 'e', 'd', 'o', 'a', 'l', 'a', 's', 'c', 'a', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "malash.me", true */ 'm', 'a', 'l', 'a', 's', 'h', '.', 'm', 'e', '\0',
   /* "malaysia.search.yahoo.com", false */ 'm', 'a', 'l', 'a', 'y', 's', 'i', 'a', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "malaysian.dating", true */ 'm', 'a', 'l', 'a', 'y', 's', 'i', 'a', 'n', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "maldiverna.guide", true */ 'm', 'a', 'l', 'd', 'i', 'v', 'e', 'r', 'n', 'a', '.', 'g', 'u', 'i', 'd', 'e', '\0',
   /* "malesbdsm.com", true */ 'm', 'a', 'l', 'e', 's', 'b', 'd', 's', 'm', '.', 'c', 'o', 'm', '\0',
   /* "malibubeachrecoverycenter.com", true */ 'm', 'a', 'l', 'i', 'b', 'u', 'b', 'e', 'a', 'c', 'h', 'r', 'e', 'c', 'o', 'v', 'e', 'r', 'y', 'c', 'e', 'n', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "malinator.net", false */ 'm', 'a', 'l', 'i', 'n', 'a', 't', 'o', 'r', '.', 'n', 'e', 't', '\0',
-  /* "malinheadview.ie", true */ 'm', 'a', 'l', 'i', 'n', 'h', 'e', 'a', 'd', 'v', 'i', 'e', 'w', '.', 'i', 'e', '\0',
   /* "maliskovik.si", true */ 'm', 'a', 'l', 'i', 's', 'k', 'o', 'v', 'i', 'k', '.', 's', 'i', '\0',
   /* "maljaars-fotografie.nl", true */ 'm', 'a', 'l', 'j', 'a', 'a', 'r', 's', '-', 'f', 'o', 't', 'o', 'g', 'r', 'a', 'f', 'i', 'e', '.', 'n', 'l', '\0',
   /* "mall.cz", true */ 'm', 'a', 'l', 'l', '.', 'c', 'z', '\0',
   /* "mall.hr", true */ 'm', 'a', 'l', 'l', '.', 'h', 'r', '\0',
   /* "mall.hu", true */ 'm', 'a', 'l', 'l', '.', 'h', 'u', '\0',
   /* "mall.pl", true */ 'm', 'a', 'l', 'l', '.', 'p', 'l', '\0',
   /* "mall.sk", true */ 'm', 'a', 'l', 'l', '.', 's', 'k', '\0',
   /* "mallach.net", true */ 'm', 'a', 'l', 'l', 'a', 'c', 'h', '.', 'n', 'e', 't', '\0',
@@ -12506,17 +12494,16 @@ static const char kSTSHostTable[] = {
   /* "mchopkins.net", true */ 'm', 'c', 'h', 'o', 'p', 'k', 'i', 'n', 's', '.', 'n', 'e', 't', '\0',
   /* "mchristopher.com", true */ 'm', 'c', 'h', 'r', 'i', 's', 't', 'o', 'p', 'h', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "mcideas.tk", true */ 'm', 'c', 'i', 'd', 'e', 'a', 's', '.', 't', 'k', '\0',
   /* "mcjackk77.com", true */ 'm', 'c', 'j', 'a', 'c', 'k', 'k', '7', '7', '.', 'c', 'o', 'm', '\0',
   /* "mckernan.in", true */ 'm', 'c', 'k', 'e', 'r', 'n', 'a', 'n', '.', 'i', 'n', '\0',
   /* "mckinley.school", true */ 'm', 'c', 'k', 'i', 'n', 'l', 'e', 'y', '.', 's', 'c', 'h', 'o', 'o', 'l', '\0',
   /* "mckinley1.com", true */ 'm', 'c', 'k', 'i', 'n', 'l', 'e', 'y', '1', '.', 'c', 'o', 'm', '\0',
   /* "mcl.gg", true */ 'm', 'c', 'l', '.', 'g', 'g', '\0',
-  /* "mclist.it", true */ 'm', 'c', 'l', 'i', 's', 't', '.', 'i', 't', '\0',
   /* "mclyr.com", true */ 'm', 'c', 'l', 'y', 'r', '.', 'c', 'o', 'm', '\0',
   /* "mcmillansedationdentistry.com", true */ 'm', 'c', 'm', 'i', 'l', 'l', 'a', 'n', 's', 'e', 'd', 'a', 't', 'i', 'o', 'n', 'd', 'e', 'n', 't', 'i', 's', 't', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "mcneill.io", true */ 'm', 'c', 'n', 'e', 'i', 'l', 'l', '.', 'i', 'o', '\0',
   /* "mcnext.net", true */ 'm', 'c', 'n', 'e', 'x', 't', '.', 'n', 'e', 't', '\0',
   /* "mcooperlaw.com", true */ 'm', 'c', 'o', 'o', 'p', 'e', 'r', 'l', 'a', 'w', '.', 'c', 'o', 'm', '\0',
   /* "mcpart.land", true */ 'm', 'c', 'p', 'a', 'r', 't', '.', 'l', 'a', 'n', 'd', '\0',
   /* "mcrn.jp", true */ 'm', 'c', 'r', 'n', '.', 'j', 'p', '\0',
   /* "mcsa-usa.org", true */ 'm', 'c', 's', 'a', '-', 'u', 's', 'a', '.', 'o', 'r', 'g', '\0',
@@ -12719,31 +12706,29 @@ static const char kSTSHostTable[] = {
   /* "meteobox.cz", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'c', 'z', '\0',
   /* "meteobox.de", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'd', 'e', '\0',
   /* "meteobox.es", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'e', 's', '\0',
   /* "meteobox.fr", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'f', 'r', '\0',
   /* "meteobox.mx", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'm', 'x', '\0',
   /* "meteobox.pl", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 'p', 'l', '\0',
   /* "meteobox.sk", true */ 'm', 'e', 't', 'e', 'o', 'b', 'o', 'x', '.', 's', 'k', '\0',
   /* "meteorapp.space", true */ 'm', 'e', 't', 'e', 'o', 'r', 'a', 'p', 'p', '.', 's', 'p', 'a', 'c', 'e', '\0',
-  /* "meteosherbrooke.com", false */ 'm', 'e', 't', 'e', 'o', 's', 'h', 'e', 'r', 'b', 'r', 'o', 'o', 'k', 'e', '.', 'c', 'o', 'm', '\0',
   /* "meteosmit.it", true */ 'm', 'e', 't', 'e', 'o', 's', 'm', 'i', 't', '.', 'i', 't', '\0',
   /* "meter.md", true */ 'm', 'e', 't', 'e', 'r', '.', 'm', 'd', '\0',
   /* "meterhost.com", true */ 'm', 'e', 't', 'e', 'r', 'h', 'o', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "methamphetamine.co.uk", true */ 'm', 'e', 't', 'h', 'a', 'm', 'p', 'h', 'e', 't', 'a', 'm', 'i', 'n', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "methylone.com", true */ 'm', 'e', 't', 'h', 'y', 'l', 'o', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "metricaid.com", true */ 'm', 'e', 't', 'r', 'i', 'c', 'a', 'i', 'd', '.', 'c', 'o', 'm', '\0',
   /* "metrobriefs.com", true */ 'm', 'e', 't', 'r', 'o', 'b', 'r', 'i', 'e', 'f', 's', '.', 'c', 'o', 'm', '\0',
   /* "metronaut.de", true */ 'm', 'e', 't', 'r', 'o', 'n', 'a', 'u', 't', '.', 'd', 'e', '\0',
   /* "metropop.ch", true */ 'm', 'e', 't', 'r', 'o', 'p', 'o', 'p', '.', 'c', 'h', '\0',
   /* "metsasta.com", true */ 'm', 'e', 't', 's', 'a', 's', 't', 'a', '.', 'c', 'o', 'm', '\0',
   /* "metzgerei-birkenhof.de", true */ 'm', 'e', 't', 'z', 'g', 'e', 'r', 'e', 'i', '-', 'b', 'i', 'r', 'k', 'e', 'n', 'h', 'o', 'f', '.', 'd', 'e', '\0',
   /* "meulike.us", true */ 'm', 'e', 'u', 'l', 'i', 'k', 'e', '.', 'u', 's', '\0',
   /* "meusigno.com", true */ 'm', 'e', 'u', 's', 'i', 'g', 'n', 'o', '.', 'c', 'o', 'm', '\0',
-  /* "mevo.xyz", true */ 'm', 'e', 'v', 'o', '.', 'x', 'y', 'z', '\0',
   /* "mevs.cz", true */ 'm', 'e', 'v', 's', '.', 'c', 'z', '\0',
   /* "mexican.dating", true */ 'm', 'e', 'x', 'i', 'c', 'a', 'n', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "mexior.nl", true */ 'm', 'e', 'x', 'i', 'o', 'r', '.', 'n', 'l', '\0',
   /* "meyeraviation.com", true */ 'm', 'e', 'y', 'e', 'r', 'a', 'v', 'i', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "meyercloud.de", true */ 'm', 'e', 'y', 'e', 'r', 'c', 'l', 'o', 'u', 'd', '.', 'd', 'e', '\0',
   /* "mfedderke.com", true */ 'm', 'f', 'e', 'd', 'd', 'e', 'r', 'k', 'e', '.', 'c', 'o', 'm', '\0',
   /* "mfiles.pl", true */ 'm', 'f', 'i', 'l', 'e', 's', '.', 'p', 'l', '\0',
   /* "mflodin.se", true */ 'm', 'f', 'l', 'o', 'd', 'i', 'n', '.', 's', 'e', '\0',
@@ -13075,17 +13060,16 @@ static const char kSTSHostTable[] = {
   /* "mobobe.com", true */ 'm', 'o', 'b', 'o', 'b', 'e', '.', 'c', 'o', 'm', '\0',
   /* "mobsender.com", true */ 'm', 'o', 'b', 's', 'e', 'n', 'd', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "mochoko.com", true */ 'm', 'o', 'c', 'h', 'o', 'k', 'o', '.', 'c', 'o', 'm', '\0',
   /* "mockmyapp.com", true */ 'm', 'o', 'c', 'k', 'm', 'y', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0',
   /* "modafinil.com", true */ 'm', 'o', 'd', 'a', 'f', 'i', 'n', 'i', 'l', '.', 'c', 'o', 'm', '\0',
   /* "modafinil.wiki", true */ 'm', 'o', 'd', 'a', 'f', 'i', 'n', 'i', 'l', '.', 'w', 'i', 'k', 'i', '\0',
   /* "modafo.com", true */ 'm', 'o', 'd', 'a', 'f', 'o', '.', 'c', 'o', 'm', '\0',
   /* "modalogi.com", true */ 'm', 'o', 'd', 'a', 'l', 'o', 'g', 'i', '.', 'c', 'o', 'm', '\0',
-  /* "modded-minecraft-server-list.com", true */ 'm', 'o', 'd', 'd', 'e', 'd', '-', 'm', 'i', 'n', 'e', 'c', 'r', 'a', 'f', 't', '-', 's', 'e', 'r', 'v', 'e', 'r', '-', 'l', 'i', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "mode-individuell.de", true */ 'm', 'o', 'd', 'e', '-', 'i', 'n', 'd', 'i', 'v', 'i', 'd', 'u', 'e', 'l', 'l', '.', 'd', 'e', '\0',
   /* "mode-marine.com", true */ 'm', 'o', 'd', 'e', '-', 'm', 'a', 'r', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "modecaso.com", true */ 'm', 'o', 'd', 'e', 'c', 'a', 's', 'o', '.', 'c', 'o', 'm', '\0',
   /* "modehaus-marionk.de", true */ 'm', 'o', 'd', 'e', 'h', 'a', 'u', 's', '-', 'm', 'a', 'r', 'i', 'o', 'n', 'k', '.', 'd', 'e', '\0',
   /* "modelcase.co.jp", false */ 'm', 'o', 'd', 'e', 'l', 'c', 'a', 's', 'e', '.', 'c', 'o', '.', 'j', 'p', '\0',
   /* "modelcube.com", true */ 'm', 'o', 'd', 'e', 'l', 'c', 'u', 'b', 'e', '.', 'c', 'o', 'm', '\0',
   /* "modeldimension.com", true */ 'm', 'o', 'd', 'e', 'l', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "modelservis.cz", true */ 'm', 'o', 'd', 'e', 'l', 's', 'e', 'r', 'v', 'i', 's', '.', 'c', 'z', '\0',
@@ -13217,17 +13201,16 @@ static const char kSTSHostTable[] = {
   /* "mosin.org", true */ 'm', 'o', 's', 'i', 'n', '.', 'o', 'r', 'g', '\0',
   /* "moskva.guide", true */ 'm', 'o', 's', 'k', 'v', 'a', '.', 'g', 'u', 'i', 'd', 'e', '\0',
   /* "mosos.de", true */ 'm', 'o', 's', 'o', 's', '.', 'd', 'e', '\0',
   /* "mosstier.com", true */ 'm', 'o', 's', 's', 't', 'i', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "mostlyharmless.at", true */ 'm', 'o', 's', 't', 'l', 'y', 'h', 'a', 'r', 'm', 'l', 'e', 's', 's', '.', 'a', 't', '\0',
   /* "motd.ch", true */ 'm', 'o', 't', 'd', '.', 'c', 'h', '\0',
   /* "mothereff.in", false */ 'm', 'o', 't', 'h', 'e', 'r', 'e', 'f', 'f', '.', 'i', 'n', '\0',
   /* "motohell.com", true */ 'm', 'o', 't', 'o', 'h', 'e', 'l', 'l', '.', 'c', 'o', 'm', '\0',
-  /* "motorbiketourhanoi.com", true */ 'm', 'o', 't', 'o', 'r', 'b', 'i', 'k', 'e', 't', 'o', 'u', 'r', 'h', 'a', 'n', 'o', 'i', '.', 'c', 'o', 'm', '\0',
   /* "motorcheck.ie", true */ 'm', 'o', 't', 'o', 'r', 'c', 'h', 'e', 'c', 'k', '.', 'i', 'e', '\0',
   /* "motoryachtclub-radolfzell.de", true */ 'm', 'o', 't', 'o', 'r', 'y', 'a', 'c', 'h', 't', 'c', 'l', 'u', 'b', '-', 'r', 'a', 'd', 'o', 'l', 'f', 'z', 'e', 'l', 'l', '.', 'd', 'e', '\0',
   /* "mottomortgage.com", true */ 'm', 'o', 't', 't', 'o', 'm', 'o', 'r', 't', 'g', 'a', 'g', 'e', '.', 'c', 'o', 'm', '\0',
   /* "moulinaparoles.ca", true */ 'm', 'o', 'u', 'l', 'i', 'n', 'a', 'p', 'a', 'r', 'o', 'l', 'e', 's', '.', 'c', 'a', '\0',
   /* "moumaobuchiyu.com", true */ 'm', 'o', 'u', 'm', 'a', 'o', 'b', 'u', 'c', 'h', 'i', 'y', 'u', '.', 'c', 'o', 'm', '\0',
   /* "mountainactivitysection.org.uk", true */ 'm', 'o', 'u', 'n', 't', 'a', 'i', 'n', 'a', 'c', 't', 'i', 'v', 'i', 't', 'y', 's', 'e', 'c', 't', 'i', 'o', 'n', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "mountainadventureseminars.com", true */ 'm', 'o', 'u', 'n', 't', 'a', 'i', 'n', 'a', 'd', 'v', 'e', 'n', 't', 'u', 'r', 'e', 's', 'e', 'm', 'i', 'n', 'a', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "mountainroseherbs.com", true */ 'm', 'o', 'u', 'n', 't', 'a', 'i', 'n', 'r', 'o', 's', 'e', 'h', 'e', 'r', 'b', 's', '.', 'c', 'o', 'm', '\0',
@@ -13402,17 +13385,16 @@ static const char kSTSHostTable[] = {
   /* "mv-wohnen.de", true */ 'm', 'v', '-', 'w', 'o', 'h', 'n', 'e', 'n', '.', 'd', 'e', '\0',
   /* "mvbits.com", true */ 'm', 'v', 'b', 'i', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "mvno.io", true */ 'm', 'v', 'n', 'o', '.', 'i', 'o', '\0',
   /* "mvp-stars.com", true */ 'm', 'v', 'p', '-', 's', 't', 'a', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "mware-staging.azurewebsites.net", true */ 'm', 'w', 'a', 'r', 'e', '-', 's', 't', 'a', 'g', 'i', 'n', 'g', '.', 'a', 'z', 'u', 'r', 'e', 'w', 'e', 'b', 's', 'i', 't', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "mwavuli.co.ke", true */ 'm', 'w', 'a', 'v', 'u', 'l', 'i', '.', 'c', 'o', '.', 'k', 'e', '\0',
   /* "mwba.org", true */ 'm', 'w', 'b', 'a', '.', 'o', 'r', 'g', '\0',
   /* "mwe.st", true */ 'm', 'w', 'e', '.', 's', 't', '\0',
-  /* "mwohlfarth.de", true */ 'm', 'w', 'o', 'h', 'l', 'f', 'a', 'r', 't', 'h', '.', 'd', 'e', '\0',
   /* "mx.org.ua", false */ 'm', 'x', '.', 'o', 'r', 'g', '.', 'u', 'a', '\0',
   /* "mx.search.yahoo.com", false */ 'm', 'x', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "mxawei.cn", true */ 'm', 'x', 'a', 'w', 'e', 'i', '.', 'c', 'n', '\0',
   /* "mxihan.xyz", true */ 'm', 'x', 'i', 'h', 'a', 'n', '.', 'x', 'y', 'z', '\0',
   /* "mxp.tw", true */ 'm', 'x', 'p', '.', 't', 'w', '\0',
   /* "my-cdn.de", true */ 'm', 'y', '-', 'c', 'd', 'n', '.', 'd', 'e', '\0',
   /* "my-demo.co", true */ 'm', 'y', '-', 'd', 'e', 'm', 'o', '.', 'c', 'o', '\0',
   /* "my-dick.ru", true */ 'm', 'y', '-', 'd', 'i', 'c', 'k', '.', 'r', 'u', '\0',
@@ -13537,17 +13519,16 @@ static const char kSTSHostTable[] = {
   /* "mystickphysick.com", true */ 'm', 'y', 's', 't', 'i', 'c', 'k', 'p', 'h', 'y', 's', 'i', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "mysticplumes.com", true */ 'm', 'y', 's', 't', 'i', 'c', 'p', 'l', 'u', 'm', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "mystown.org", true */ 'm', 'y', 's', 't', 'o', 'w', 'n', '.', 'o', 'r', 'g', '\0',
   /* "mystudy.me", true */ 'm', 'y', 's', 't', 'u', 'd', 'y', '.', 'm', 'e', '\0',
   /* "myswissmailaddress.com", true */ 'm', 'y', 's', 'w', 'i', 's', 's', 'm', 'a', 'i', 'l', 'a', 'd', 'd', 'r', 'e', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "mytc.fr", true */ 'm', 'y', 't', 'c', '.', 'f', 'r', '\0',
   /* "mythengay.ch", true */ 'm', 'y', 't', 'h', 'e', 'n', 'g', 'a', 'y', '.', 'c', 'h', '\0',
   /* "mythicdelirium.com", true */ 'm', 'y', 't', 'h', 'i', 'c', 'd', 'e', 'l', 'i', 'r', 'i', 'u', 'm', '.', 'c', 'o', 'm', '\0',
-  /* "mythslegendscollection.com", true */ 'm', 'y', 't', 'h', 's', 'l', 'e', 'g', 'e', 'n', 'd', 's', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "mytraiteurs.com", true */ 'm', 'y', 't', 'r', 'a', 'i', 't', 'e', 'u', 'r', 's', '.', 'c', 'o', 'm', '\0',
   /* "mytripcar.co.uk", true */ 'm', 'y', 't', 'r', 'i', 'p', 'c', 'a', 'r', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "mytripcar.com", true */ 'm', 'y', 't', 'r', 'i', 'p', 'c', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "mytripcar.de", true */ 'm', 'y', 't', 'r', 'i', 'p', 'c', 'a', 'r', '.', 'd', 'e', '\0',
   /* "mytripcar.es", true */ 'm', 'y', 't', 'r', 'i', 'p', 'c', 'a', 'r', '.', 'e', 's', '\0',
   /* "mytripcar.fr", true */ 'm', 'y', 't', 'r', 'i', 'p', 'c', 'a', 'r', '.', 'f', 'r', '\0',
   /* "mytty.net", true */ 'm', 'y', 't', 't', 'y', '.', 'n', 'e', 't', '\0',
   /* "mytweeps.com", true */ 'm', 'y', 't', 'w', 'e', 'e', 'p', 's', '.', 'c', 'o', 'm', '\0',
@@ -13847,16 +13828,17 @@ static const char kSTSHostTable[] = {
   /* "netvizura.co.uk", true */ 'n', 'e', 't', 'v', 'i', 'z', 'u', 'r', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "netwarc.eu", true */ 'n', 'e', 't', 'w', 'a', 'r', 'c', '.', 'e', 'u', '\0',
   /* "netwarc.nl", true */ 'n', 'e', 't', 'w', 'a', 'r', 'c', '.', 'n', 'l', '\0',
   /* "netwerkmanager.nl", true */ 'n', 'e', 't', 'w', 'e', 'r', 'k', 'm', 'a', 'n', 'a', 'g', 'e', 'r', '.', 'n', 'l', '\0',
   /* "network-notes.com", true */ 'n', 'e', 't', 'w', 'o', 'r', 'k', '-', 'n', 'o', 't', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "network23.nl", true */ 'n', 'e', 't', 'w', 'o', 'r', 'k', '2', '3', '.', 'n', 'l', '\0',
   /* "networkalarmcorp.com", true */ 'n', 'e', 't', 'w', 'o', 'r', 'k', 'a', 'l', 'a', 'r', 'm', 'c', 'o', 'r', 'p', '.', 'c', 'o', 'm', '\0',
   /* "networkersdiary.com", true */ 'n', 'e', 't', 'w', 'o', 'r', 'k', 'e', 'r', 's', 'd', 'i', 'a', 'r', 'y', '.', 'c', 'o', 'm', '\0',
+  /* "networking4all.com", false */ 'n', 'e', 't', 'w', 'o', 'r', 'k', 'i', 'n', 'g', '4', 'a', 'l', 'l', '.', 'c', 'o', 'm', '\0',
   /* "networkingnexus.net", true */ 'n', 'e', 't', 'w', 'o', 'r', 'k', 'i', 'n', 'g', 'n', 'e', 'x', 'u', 's', '.', 'n', 'e', 't', '\0',
   /* "networkingphoenix.com", true */ 'n', 'e', 't', 'w', 'o', 'r', 'k', 'i', 'n', 'g', 'p', 'h', 'o', 'e', 'n', 'i', 'x', '.', 'c', 'o', 'm', '\0',
   /* "networkmarketingpro.com", true */ 'n', 'e', 't', 'w', 'o', 'r', 'k', 'm', 'a', 'r', 'k', 'e', 't', 'i', 'n', 'g', 'p', 'r', 'o', '.', 'c', 'o', 'm', '\0',
   /* "networth.at", true */ 'n', 'e', 't', 'w', 'o', 'r', 't', 'h', '.', 'a', 't', '\0',
   /* "netzfrauen.org", true */ 'n', 'e', 't', 'z', 'f', 'r', 'a', 'u', 'e', 'n', '.', 'o', 'r', 'g', '\0',
   /* "netzspielplatz.de", true */ 'n', 'e', 't', 'z', 's', 'p', 'i', 'e', 'l', 'p', 'l', 'a', 't', 'z', '.', 'd', 'e', '\0',
   /* "netzwerkwerk.de", true */ 'n', 'e', 't', 'z', 'w', 'e', 'r', 'k', 'w', 'e', 'r', 'k', '.', 'd', 'e', '\0',
   /* "neuflizeobc.net", true */ 'n', 'e', 'u', 'f', 'l', 'i', 'z', 'e', 'o', 'b', 'c', '.', 'n', 'e', 't', '\0',
@@ -14000,35 +13982,32 @@ static const char kSTSHostTable[] = {
   /* "nightfirecat.com", true */ 'n', 'i', 'g', 'h', 't', 'f', 'i', 'r', 'e', 'c', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "nightsnack.cf", true */ 'n', 'i', 'g', 'h', 't', 's', 'n', 'a', 'c', 'k', '.', 'c', 'f', '\0',
   /* "nihseniorhealth.gov", true */ 'n', 'i', 'h', 's', 'e', 'n', 'i', 'o', 'r', 'h', 'e', 'a', 'l', 't', 'h', '.', 'g', 'o', 'v', '\0',
   /* "nijiero-ch.com", false */ 'n', 'i', 'j', 'i', 'e', 'r', 'o', '-', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "nijm.nl", true */ 'n', 'i', 'j', 'm', '.', 'n', 'l', '\0',
   /* "nikandcara.com", true */ 'n', 'i', 'k', 'a', 'n', 'd', 'c', 'a', 'r', 'a', '.', 'c', 'o', 'm', '\0',
   /* "nikao-tech.com", true */ 'n', 'i', 'k', 'a', 'o', '-', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0',
   /* "nikklassen.ca", true */ 'n', 'i', 'k', 'k', 'l', 'a', 's', 's', 'e', 'n', '.', 'c', 'a', '\0',
-  /* "niklas.pw", true */ 'n', 'i', 'k', 'l', 'a', 's', '.', 'p', 'w', '\0',
-  /* "nikobradshaw.com", true */ 'n', 'i', 'k', 'o', 'b', 'r', 'a', 'd', 's', 'h', 'a', 'w', '.', 'c', 'o', 'm', '\0',
   /* "nikolaichik.photo", true */ 'n', 'i', 'k', 'o', 'l', 'a', 'i', 'c', 'h', 'i', 'k', '.', 'p', 'h', 'o', 't', 'o', '\0',
   /* "nikolasbradshaw.com", true */ 'n', 'i', 'k', 'o', 'l', 'a', 's', 'b', 'r', 'a', 'd', 's', 'h', 'a', 'w', '.', 'c', 'o', 'm', '\0',
   /* "nikolasgrottendieck.com", true */ 'n', 'i', 'k', 'o', 'l', 'a', 's', 'g', 'r', 'o', 't', 't', 'e', 'n', 'd', 'i', 'e', 'c', 'k', '.', 'c', 'o', 'm', '\0',
   /* "nil.gs", true */ 'n', 'i', 'l', '.', 'g', 's', '\0',
   /* "niloxy.com", true */ 'n', 'i', 'l', 'o', 'x', 'y', '.', 'c', 'o', 'm', '\0',
   /* "nilrem.org", true */ 'n', 'i', 'l', 'r', 'e', 'm', '.', 'o', 'r', 'g', '\0',
   /* "nimeshjm.com", true */ 'n', 'i', 'm', 'e', 's', 'h', 'j', 'm', '.', 'c', 'o', 'm', '\0',
   /* "ninaundandre.de", true */ 'n', 'i', 'n', 'a', 'u', 'n', 'd', 'a', 'n', 'd', 'r', 'e', '.', 'd', 'e', '\0',
   /* "ninchat.com", true */ 'n', 'i', 'n', 'c', 'h', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "nine-hells.net", false */ 'n', 'i', 'n', 'e', '-', 'h', 'e', 'l', 'l', 's', '.', 'n', 'e', 't', '\0',
   /* "ninebennink.com", true */ 'n', 'i', 'n', 'e', 'b', 'e', 'n', 'n', 'i', 'n', 'k', '.', 'c', 'o', 'm', '\0',
   /* "ninespec.com", true */ 'n', 'i', 'n', 'e', 's', 'p', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "ning.so", true */ 'n', 'i', 'n', 'g', '.', 's', 'o', '\0',
   /* "ninjan.co", true */ 'n', 'i', 'n', 'j', 'a', 'n', '.', 'c', 'o', '\0',
   /* "ninofink.com", true */ 'n', 'i', 'n', 'o', 'f', 'i', 'n', 'k', '.', 'c', 'o', 'm', '\0',
   /* "ninthfloor.org", true */ 'n', 'i', 'n', 't', 'h', 'f', 'l', 'o', 'o', 'r', '.', 'o', 'r', 'g', '\0',
-  /* "ninux.ch", false */ 'n', 'i', 'n', 'u', 'x', '.', 'c', 'h', '\0',
   /* "niouininon.eu", true */ 'n', 'i', 'o', 'u', 'i', 'n', 'i', 'n', 'o', 'n', '.', 'e', 'u', '\0',
   /* "nippon-oku.com", true */ 'n', 'i', 'p', 'p', 'o', 'n', '-', 'o', 'k', 'u', '.', 'c', 'o', 'm', '\0',
   /* "nippon.fr", true */ 'n', 'i', 'p', 'p', 'o', 'n', '.', 'f', 'r', '\0',
   /* "nirada.info", true */ 'n', 'i', 'r', 'a', 'd', 'a', '.', 'i', 'n', 'f', 'o', '\0',
   /* "nirudo.me", true */ 'n', 'i', 'r', 'u', 'd', 'o', '.', 'm', 'e', '\0',
   /* "nissanofbismarckparts.com", true */ 'n', 'i', 's', 's', 'a', 'n', 'o', 'f', 'b', 'i', 's', 'm', 'a', 'r', 'c', 'k', 'p', 'a', 'r', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "nitrokey.com", true */ 'n', 'i', 't', 'r', 'o', 'k', 'e', 'y', '.', 'c', 'o', 'm', '\0',
   /* "nitropanel.com", true */ 'n', 'i', 't', 'r', 'o', 'p', 'a', 'n', 'e', 'l', '.', 'c', 'o', 'm', '\0',
@@ -14103,17 +14082,16 @@ static const char kSTSHostTable[] = {
   /* "noop.ch", true */ 'n', 'o', 'o', 'p', '.', 'c', 'h', '\0',
   /* "noordsee.de", true */ 'n', 'o', 'o', 'r', 'd', 's', 'e', 'e', '.', 'd', 'e', '\0',
   /* "nootropic.com", true */ 'n', 'o', 'o', 't', 'r', 'o', 'p', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "nootropicsource.com", true */ 'n', 'o', 'o', 't', 'r', 'o', 'p', 'i', 'c', 's', 'o', 'u', 'r', 'c', 'e', '.', 'c', 'o', 'm', '\0',
   /* "nord-sud.be", true */ 'n', 'o', 'r', 'd', '-', 's', 'u', 'd', '.', 'b', 'e', '\0',
   /* "nordic-survival.de", true */ 'n', 'o', 'r', 'd', 'i', 'c', '-', 's', 'u', 'r', 'v', 'i', 'v', 'a', 'l', '.', 'd', 'e', '\0',
   /* "nordiccasinocommunity.com", true */ 'n', 'o', 'r', 'd', 'i', 'c', 'c', 'a', 's', 'i', 'n', 'o', 'c', 'o', 'm', 'm', 'u', 'n', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "nordlicht.photography", true */ 'n', 'o', 'r', 'd', 'l', 'i', 'c', 'h', 't', '.', 'p', 'h', 'o', 't', 'o', 'g', 'r', 'a', 'p', 'h', 'y', '\0',
-  /* "nordor.homeip.net", true */ 'n', 'o', 'r', 'd', 'o', 'r', '.', 'h', 'o', 'm', 'e', 'i', 'p', '.', 'n', 'e', 't', '\0',
   /* "nordseeblicke.de", true */ 'n', 'o', 'r', 'd', 's', 'e', 'e', 'b', 'l', 'i', 'c', 'k', 'e', '.', 'd', 'e', '\0',
   /* "nordwaldzendo.de", true */ 'n', 'o', 'r', 'd', 'w', 'a', 'l', 'd', 'z', 'e', 'n', 'd', 'o', '.', 'd', 'e', '\0',
   /* "noref.tk", true */ 'n', 'o', 'r', 'e', 'f', '.', 't', 'k', '\0',
   /* "noreply.mx", true */ 'n', 'o', 'r', 'e', 'p', 'l', 'y', '.', 'm', 'x', '\0',
   /* "norge.guide", true */ 'n', 'o', 'r', 'g', 'e', '.', 'g', 'u', 'i', 'd', 'e', '\0',
   /* "normaculta.com.br", true */ 'n', 'o', 'r', 'm', 'a', 'c', 'u', 'l', 't', 'a', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "norman-preusser-gmbh.de", true */ 'n', 'o', 'r', 'm', 'a', 'n', '-', 'p', 'r', 'e', 'u', 's', 's', 'e', 'r', '-', 'g', 'm', 'b', 'h', '.', 'd', 'e', '\0',
   /* "normanbauer.com", true */ 'n', 'o', 'r', 'm', 'a', 'n', 'b', 'a', 'u', 'e', 'r', '.', 'c', 'o', 'm', '\0',
@@ -14154,17 +14132,16 @@ static const char kSTSHostTable[] = {
   /* "notarvysocina.cz", true */ 'n', 'o', 't', 'a', 'r', 'v', 'y', 's', 'o', 'c', 'i', 'n', 'a', '.', 'c', 'z', '\0',
   /* "notbolaget.se", true */ 'n', 'o', 't', 'b', 'o', 'l', 'a', 'g', 'e', 't', '.', 's', 'e', '\0',
   /* "notcompletelycorrect.com", true */ 'n', 'o', 't', 'c', 'o', 'm', 'p', 'l', 'e', 't', 'e', 'l', 'y', 'c', 'o', 'r', 'r', 'e', 'c', 't', '.', 'c', 'o', 'm', '\0',
   /* "note7forever.com", true */ 'n', 'o', 't', 'e', '7', 'f', 'o', 'r', 'e', 'v', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "notesforpebble.com", true */ 'n', 'o', 't', 'e', 's', 'f', 'o', 'r', 'p', 'e', 'b', 'b', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "noticia.do", true */ 'n', 'o', 't', 'i', 'c', 'i', 'a', '.', 'd', 'o', '\0',
   /* "noticiasdehumor.com", true */ 'n', 'o', 't', 'i', 'c', 'i', 'a', 's', 'd', 'e', 'h', 'u', 'm', 'o', 'r', '.', 'c', 'o', 'm', '\0',
   /* "notificami.com", true */ 'n', 'o', 't', 'i', 'f', 'i', 'c', 'a', 'm', 'i', '.', 'c', 'o', 'm', '\0',
-  /* "notify.moe", true */ 'n', 'o', 't', 'i', 'f', 'y', '.', 'm', 'o', 'e', '\0',
   /* "notinglife.com", true */ 'n', 'o', 't', 'i', 'n', 'g', 'l', 'i', 'f', 'e', '.', 'c', 'o', 'm', '\0',
   /* "notjustbitchy.com", true */ 'n', 'o', 't', 'j', 'u', 's', 't', 'b', 'i', 't', 'c', 'h', 'y', '.', 'c', 'o', 'm', '\0',
   /* "notjustvacs.com", true */ 'n', 'o', 't', 'j', 'u', 's', 't', 'v', 'a', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "notnize.net", true */ 'n', 'o', 't', 'n', 'i', 'z', 'e', '.', 'n', 'e', 't', '\0',
   /* "notnl.com", true */ 'n', 'o', 't', 'n', 'l', '.', 'c', 'o', 'm', '\0',
   /* "notoriousdev.com", true */ 'n', 'o', 't', 'o', 'r', 'i', 'o', 'u', 's', 'd', 'e', 'v', '.', 'c', 'o', 'm', '\0',
   /* "notrecourrier.net", true */ 'n', 'o', 't', 'r', 'e', 'c', 'o', 'u', 'r', 'r', 'i', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "nottres.com", true */ 'n', 'o', 't', 't', 'r', 'e', 's', '.', 'c', 'o', 'm', '\0',
@@ -14235,16 +14212,17 @@ static const char kSTSHostTable[] = {
   /* "nullday.de", true */ 'n', 'u', 'l', 'l', 'd', 'a', 'y', '.', 'd', 'e', '\0',
   /* "nullpro.com", true */ 'n', 'u', 'l', 'l', 'p', 'r', 'o', '.', 'c', 'o', 'm', '\0',
   /* "nullroute.com", true */ 'n', 'u', 'l', 'l', 'r', 'o', 'u', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "nulltime.net", true */ 'n', 'u', 'l', 'l', 't', 'i', 'm', 'e', '.', 'n', 'e', 't', '\0',
   /* "numatic.co.uk", true */ 'n', 'u', 'm', 'a', 't', 'i', 'c', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "number.me", true */ 'n', 'u', 'm', 'b', 'e', 'r', '.', 'm', 'e', '\0',
   /* "numbercult.net", true */ 'n', 'u', 'm', 'b', 'e', 'r', 'c', 'u', 'l', 't', '.', 'n', 'e', 't', '\0',
   /* "numberoneshoes.co.nz", true */ 'n', 'u', 'm', 'b', 'e', 'r', 'o', 'n', 'e', 's', 'h', 'o', 'e', 's', '.', 'c', 'o', '.', 'n', 'z', '\0',
+  /* "numberzero.org", true */ 'n', 'u', 'm', 'b', 'e', 'r', 'z', 'e', 'r', 'o', '.', 'o', 'r', 'g', '\0',
   /* "numero-aleatorio.com", true */ 'n', 'u', 'm', 'e', 'r', 'o', '-', 'a', 'l', 'e', 'a', 't', 'o', 'r', 'i', 'o', '.', 'c', 'o', 'm', '\0',
   /* "numero1.ch", true */ 'n', 'u', 'm', 'e', 'r', 'o', '1', '.', 'c', 'h', '\0',
   /* "numerossanos.com.ar", true */ 'n', 'u', 'm', 'e', 'r', 'o', 's', 's', 'a', 'n', 'o', 's', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0',
   /* "numis.tech", true */ 'n', 'u', 'm', 'i', 's', '.', 't', 'e', 'c', 'h', '\0',
   /* "numm.fr", true */ 'n', 'u', 'm', 'm', '.', 'f', 'r', '\0',
   /* "nunnenmacher.net", true */ 'n', 'u', 'n', 'n', 'e', 'n', 'm', 'a', 'c', 'h', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "nunomoura.com", true */ 'n', 'u', 'n', 'o', 'm', 'o', 'u', 'r', 'a', '.', 'c', 'o', 'm', '\0',
   /* "nuos.org", true */ 'n', 'u', 'o', 's', '.', 'o', 'r', 'g', '\0',
@@ -14630,16 +14608,17 @@ static const char kSTSHostTable[] = {
   /* "oreka.online", true */ 'o', 'r', 'e', 'k', 'a', '.', 'o', 'n', 'l', 'i', 'n', 'e', '\0',
   /* "oreshinya.xyz", true */ 'o', 'r', 'e', 's', 'h', 'i', 'n', 'y', 'a', '.', 'x', 'y', 'z', '\0',
   /* "orf-kartentausch.at", true */ 'o', 'r', 'f', '-', 'k', 'a', 'r', 't', 'e', 'n', 't', 'a', 'u', 's', 'c', 'h', '.', 'a', 't', '\0',
   /* "organic-superfood.net", true */ 'o', 'r', 'g', 'a', 'n', 'i', 'c', '-', 's', 'u', 'p', 'e', 'r', 'f', 'o', 'o', 'd', '.', 'n', 'e', 't', '\0',
   /* "organicae.com", true */ 'o', 'r', 'g', 'a', 'n', 'i', 'c', 'a', 'e', '.', 'c', 'o', 'm', '\0',
   /* "organisationsberatung-jacobi.de", true */ 'o', 'r', 'g', 'a', 'n', 'i', 's', 'a', 't', 'i', 'o', 'n', 's', 'b', 'e', 'r', 'a', 't', 'u', 'n', 'g', '-', 'j', 'a', 'c', 'o', 'b', 'i', '.', 'd', 'e', '\0',
   /* "organix.ma", true */ 'o', 'r', 'g', 'a', 'n', 'i', 'x', '.', 'm', 'a', '\0',
   /* "orgasmium.com", true */ 'o', 'r', 'g', 'a', 's', 'm', 'i', 'u', 'm', '.', 'c', 'o', 'm', '\0',
+  /* "orhideous.name", true */ 'o', 'r', 'h', 'i', 'd', 'e', 'o', 'u', 's', '.', 'n', 'a', 'm', 'e', '\0',
   /* "oricejoc.com", false */ 'o', 'r', 'i', 'c', 'e', 'j', 'o', 'c', '.', 'c', 'o', 'm', '\0',
   /* "orientalart.nl", true */ 'o', 'r', 'i', 'e', 'n', 't', 'a', 'l', 'a', 'r', 't', '.', 'n', 'l', '\0',
   /* "origami.to", true */ 'o', 'r', 'i', 'g', 'a', 'm', 'i', '.', 't', 'o', '\0',
   /* "originalmockups.com", true */ 'o', 'r', 'i', 'g', 'i', 'n', 'a', 'l', 'm', 'o', 'c', 'k', 'u', 'p', 's', '.', 'c', 'o', 'm', '\0',
   /* "orimex-mebel.ru", true */ 'o', 'r', 'i', 'm', 'e', 'x', '-', 'm', 'e', 'b', 'e', 'l', '.', 'r', 'u', '\0',
   /* "orion-universe.com", true */ 'o', 'r', 'i', 'o', 'n', '-', 'u', 'n', 'i', 'v', 'e', 'r', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "oriongames.eu", true */ 'o', 'r', 'i', 'o', 'n', 'g', 'a', 'm', 'e', 's', '.', 'e', 'u', '\0',
   /* "orkestar-krizevci.hr", true */ 'o', 'r', 'k', 'e', 's', 't', 'a', 'r', '-', 'k', 'r', 'i', 'z', 'e', 'v', 'c', 'i', '.', 'h', 'r', '\0',
@@ -15201,16 +15180,17 @@ static const char kSTSHostTable[] = {
   /* "philippkeschl.at", true */ 'p', 'h', 'i', 'l', 'i', 'p', 'p', 'k', 'e', 's', 'c', 'h', 'l', '.', 'a', 't', '\0',
   /* "phillippi.me", true */ 'p', 'h', 'i', 'l', 'l', 'i', 'p', 'p', 'i', '.', 'm', 'e', '\0',
   /* "phillmoore.com", true */ 'p', 'h', 'i', 'l', 'l', 'm', 'o', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "philonas.net", true */ 'p', 'h', 'i', 'l', 'o', 'n', 'a', 's', '.', 'n', 'e', 't', '\0',
   /* "philosoftware.com.br", true */ 'p', 'h', 'i', 'l', 'o', 's', 'o', 'f', 't', 'w', 'a', 'r', 'e', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "philosopherswool.com", true */ 'p', 'h', 'i', 'l', 'o', 's', 'o', 'p', 'h', 'e', 'r', 's', 'w', 'o', 'o', 'l', '.', 'c', 'o', 'm', '\0',
   /* "philosophyguides.org", true */ 'p', 'h', 'i', 'l', 'o', 's', 'o', 'p', 'h', 'y', 'g', 'u', 'i', 'd', 'e', 's', '.', 'o', 'r', 'g', '\0',
   /* "philphonic.de", true */ 'p', 'h', 'i', 'l', 'p', 'h', 'o', 'n', 'i', 'c', '.', 'd', 'e', '\0',
+  /* "philpropertygroup.com", true */ 'p', 'h', 'i', 'l', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', 'g', 'r', 'o', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "philsturgeon.uk", true */ 'p', 'h', 'i', 'l', 's', 't', 'u', 'r', 'g', 'e', 'o', 'n', '.', 'u', 'k', '\0',
   /* "philux.ch", true */ 'p', 'h', 'i', 'l', 'u', 'x', '.', 'c', 'h', '\0',
   /* "phishingusertraining.com", true */ 'p', 'h', 'i', 's', 'h', 'i', 'n', 'g', 'u', 's', 'e', 'r', 't', 'r', 'a', 'i', 'n', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "phocean.net", true */ 'p', 'h', 'o', 'c', 'e', 'a', 'n', '.', 'n', 'e', 't', '\0',
   /* "phoenix.dj", true */ 'p', 'h', 'o', 'e', 'n', 'i', 'x', '.', 'd', 'j', '\0',
   /* "phoenixlogan.com", true */ 'p', 'h', 'o', 'e', 'n', 'i', 'x', 'l', 'o', 'g', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "phone-service-center.de", true */ 'p', 'h', 'o', 'n', 'e', '-', 's', 'e', 'r', 'v', 'i', 'c', 'e', '-', 'c', 'e', 'n', 't', 'e', 'r', '.', 'd', 'e', '\0',
   /* "phood.be", true */ 'p', 'h', 'o', 'o', 'd', '.', 'b', 'e', '\0',
@@ -15485,17 +15465,16 @@ static const char kSTSHostTable[] = {
   /* "poinsot.beer", true */ 'p', 'o', 'i', 'n', 's', 'o', 't', '.', 'b', 'e', 'e', 'r', '\0',
   /* "poinsot.info", false */ 'p', 'o', 'i', 'n', 's', 'o', 't', '.', 'i', 'n', 'f', 'o', '\0',
   /* "pointaction.com", true */ 'p', 'o', 'i', 'n', 't', 'a', 'c', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "pointagri.com", true */ 'p', 'o', 'i', 'n', 't', 'a', 'g', 'r', 'i', '.', 'c', 'o', 'm', '\0',
   /* "points4unitedway.com", true */ 'p', 'o', 'i', 'n', 't', 's', '4', 'u', 'n', 'i', 't', 'e', 'd', 'w', 'a', 'y', '.', 'c', 'o', 'm', '\0',
   /* "pointsixtyfive.com", true */ 'p', 'o', 'i', 'n', 't', 's', 'i', 'x', 't', 'y', 'f', 'i', 'v', 'e', '.', 'c', 'o', 'm', '\0',
   /* "poitiers-ttacc-86.eu.org", true */ 'p', 'o', 'i', 't', 'i', 'e', 'r', 's', '-', 't', 't', 'a', 'c', 'c', '-', '8', '6', '.', 'e', 'u', '.', 'o', 'r', 'g', '\0',
   /* "pojer.me", true */ 'p', 'o', 'j', 'e', 'r', '.', 'm', 'e', '\0',
-  /* "pokeduel.me", true */ 'p', 'o', 'k', 'e', 'd', 'u', 'e', 'l', '.', 'm', 'e', '\0',
   /* "pokefarm.com", true */ 'p', 'o', 'k', 'e', 'f', 'a', 'r', 'm', '.', 'c', 'o', 'm', '\0',
   /* "pokeinthe.io", true */ 'p', 'o', 'k', 'e', 'i', 'n', 't', 'h', 'e', '.', 'i', 'o', '\0',
   /* "pokemondb.net", true */ 'p', 'o', 'k', 'e', 'm', 'o', 'n', 'd', 'b', '.', 'n', 'e', 't', '\0',
   /* "pokemori.jp", true */ 'p', 'o', 'k', 'e', 'm', 'o', 'r', 'i', '.', 'j', 'p', '\0',
   /* "pokl.cz", true */ 'p', 'o', 'k', 'l', '.', 'c', 'z', '\0',
   /* "pol-expo.ru", true */ 'p', 'o', 'l', '-', 'e', 'x', 'p', 'o', '.', 'r', 'u', '\0',
   /* "polaire.org", true */ 'p', 'o', 'l', 'a', 'i', 'r', 'e', '.', 'o', 'r', 'g', '\0',
   /* "polarityschule.com", true */ 'p', 'o', 'l', 'a', 'r', 'i', 't', 'y', 's', 'c', 'h', 'u', 'l', 'e', '.', 'c', 'o', 'm', '\0',
@@ -15587,16 +15566,17 @@ static const char kSTSHostTable[] = {
   /* "postback.io", true */ 'p', 'o', 's', 't', 'b', 'a', 'c', 'k', '.', 'i', 'o', '\0',
   /* "postblue.info", true */ 'p', 'o', 's', 't', 'b', 'l', 'u', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "postbox.life", true */ 'p', 'o', 's', 't', 'b', 'o', 'x', '.', 'l', 'i', 'f', 'e', '\0',
   /* "postcardpayment.com", true */ 'p', 'o', 's', 't', 'c', 'a', 'r', 'd', 'p', 'a', 'y', 'm', 'e', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "postcodegarant.nl", true */ 'p', 'o', 's', 't', 'c', 'o', 'd', 'e', 'g', 'a', 'r', 'a', 'n', 't', '.', 'n', 'l', '\0',
   /* "postdarwinian.com", true */ 'p', 'o', 's', 't', 'd', 'a', 'r', 'w', 'i', 'n', 'i', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "postdarwinism.com", true */ 'p', 'o', 's', 't', 'd', 'a', 'r', 'w', 'i', 'n', 'i', 's', 'm', '.', 'c', 'o', 'm', '\0',
   /* "posteo.de", false */ 'p', 'o', 's', 't', 'e', 'o', '.', 'd', 'e', '\0',
+  /* "posterspy.com", true */ 'p', 'o', 's', 't', 'e', 'r', 's', 'p', 'y', '.', 'c', 'o', 'm', '\0',
   /* "postfinance.ch", true */ 'p', 'o', 's', 't', 'f', 'i', 'n', 'a', 'n', 'c', 'e', '.', 'c', 'h', '\0',
   /* "postmatescode.com", true */ 'p', 'o', 's', 't', 'm', 'a', 't', 'e', 's', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "postn.eu", true */ 'p', 'o', 's', 't', 'n', '.', 'e', 'u', '\0',
   /* "posttigo.com", true */ 'p', 'o', 's', 't', 't', 'i', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "potatiz.com", true */ 'p', 'o', 't', 'a', 't', 'i', 'z', '.', 'c', 'o', 'm', '\0',
   /* "potatofrom.space", true */ 'p', 'o', 't', 'a', 't', 'o', 'f', 'r', 'o', 'm', '.', 's', 'p', 'a', 'c', 'e', '\0',
   /* "potbox.com", true */ 'p', 'o', 't', 'b', 'o', 'x', '.', 'c', 'o', 'm', '\0',
   /* "pothe.com", true */ 'p', 'o', 't', 'h', 'e', '.', 'c', 'o', 'm', '\0',
@@ -15728,17 +15708,16 @@ static const char kSTSHostTable[] = {
   /* "privategiant.com", true */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 'g', 'i', 'a', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "privateideas.de", true */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 'i', 'd', 'e', 'a', 's', '.', 'd', 'e', '\0',
   /* "privateimarketing.com", true */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 'i', 'm', 'a', 'r', 'k', 'e', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "privatepokertour.com", true */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 'p', 'o', 'k', 'e', 'r', 't', 'o', 'u', 'r', '.', 'c', 'o', 'm', '\0',
   /* "privaterelay.com", false */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 'r', 'e', 'l', 'a', 'y', '.', 'c', 'o', 'm', '\0',
   /* "privatestatic.com", false */ 'p', 'r', 'i', 'v', 'a', 't', 'e', 's', 't', 'a', 't', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "privatfrei.de", true */ 'p', 'r', 'i', 'v', 'a', 't', 'f', 'r', 'e', 'i', '.', 'd', 'e', '\0',
   /* "privea.fr", true */ 'p', 'r', 'i', 'v', 'e', 'a', '.', 'f', 'r', '\0',
-  /* "privytime.com", true */ 'p', 'r', 'i', 'v', 'y', 't', 'i', 'm', 'e', '.', 'c', 'o', 'm', '\0',
   /* "prjktruby.com", true */ 'p', 'r', 'j', 'k', 't', 'r', 'u', 'b', 'y', '.', 'c', 'o', 'm', '\0',
   /* "prnav.com", true */ 'p', 'r', 'n', 'a', 'v', '.', 'c', 'o', 'm', '\0',
   /* "pro-bike.ro", true */ 'p', 'r', 'o', '-', 'b', 'i', 'k', 'e', '.', 'r', 'o', '\0',
   /* "pro-link.eu", true */ 'p', 'r', 'o', '-', 'l', 'i', 'n', 'k', '.', 'e', 'u', '\0',
   /* "pro-mile.pl", true */ 'p', 'r', 'o', '-', 'm', 'i', 'l', 'e', '.', 'p', 'l', '\0',
   /* "probas.de", true */ 'p', 'r', 'o', 'b', 'a', 's', '.', 'd', 'e', '\0',
   /* "probiv.biz", true */ 'p', 'r', 'o', 'b', 'i', 'v', '.', 'b', 'i', 'z', '\0',
   /* "procens.us", true */ 'p', 'r', 'o', 'c', 'e', 'n', 's', '.', 'u', 's', '\0',
@@ -16084,16 +16063,17 @@ static const char kSTSHostTable[] = {
   /* "r-cut.fr", true */ 'r', '-', 'c', 'u', 't', '.', 'f', 'r', '\0',
   /* "r-rickroll-u.pw", true */ 'r', '-', 'r', 'i', 'c', 'k', 'r', 'o', 'l', 'l', '-', 'u', '.', 'p', 'w', '\0',
   /* "r-rwebdesign.com", true */ 'r', '-', 'r', 'w', 'e', 'b', 'd', 'e', 's', 'i', 'g', 'n', '.', 'c', 'o', 'm', '\0',
   /* "r0t.co", true */ 'r', '0', 't', '.', 'c', 'o', '\0',
   /* "r0uzic.net", true */ 'r', '0', 'u', 'z', 'i', 'c', '.', 'n', 'e', 't', '\0',
   /* "r2d2pc.com", true */ 'r', '2', 'd', '2', 'p', 'c', '.', 'c', 'o', 'm', '\0',
   /* "r3nt3r.com", true */ 'r', '3', 'n', 't', '3', 'r', '.', 'c', 'o', 'm', '\0',
   /* "r3s1stanc3.me", true */ 'r', '3', 's', '1', 's', 't', 'a', 'n', 'c', '3', '.', 'm', 'e', '\0',
+  /* "r40.us", true */ 'r', '4', '0', '.', 'u', 's', '\0',
   /* "r6-team.ru", true */ 'r', '6', '-', 't', 'e', 'a', 'm', '.', 'r', 'u', '\0',
   /* "r811.de", true */ 'r', '8', '1', '1', '.', 'd', 'e', '\0',
   /* "ra-micro-koeln.de", true */ 'r', 'a', '-', 'm', 'i', 'c', 'r', 'o', '-', 'k', 'o', 'e', 'l', 'n', '.', 'd', 'e', '\0',
   /* "ra4wvpn.com", true */ 'r', 'a', '4', 'w', 'v', 'p', 'n', '.', 'c', 'o', 'm', '\0',
   /* "raah.co", true */ 'r', 'a', 'a', 'h', '.', 'c', 'o', '\0',
   /* "racasdecachorro.org", true */ 'r', 'a', 'c', 'a', 's', 'd', 'e', 'c', 'a', 'c', 'h', 'o', 'r', 'r', 'o', '.', 'o', 'r', 'g', '\0',
   /* "racermaster.xyz", false */ 'r', 'a', 'c', 'e', 'r', 'm', 'a', 's', 't', 'e', 'r', '.', 'x', 'y', 'z', '\0',
   /* "raceviewcycles.com", true */ 'r', 'a', 'c', 'e', 'v', 'i', 'e', 'w', 'c', 'y', 'c', 'l', 'e', 's', '.', 'c', 'o', 'm', '\0',
@@ -16413,16 +16393,17 @@ static const char kSTSHostTable[] = {
   /* "rengarenkblog.com", true */ 'r', 'e', 'n', 'g', 'a', 'r', 'e', 'n', 'k', 'b', 'l', 'o', 'g', '.', 'c', 'o', 'm', '\0',
   /* "renkenlaw.com", true */ 'r', 'e', 'n', 'k', 'e', 'n', 'l', 'a', 'w', '.', 'c', 'o', 'm', '\0',
   /* "renkhosting.com", true */ 'r', 'e', 'n', 'k', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "rennfire.org", true */ 'r', 'e', 'n', 'n', 'f', 'i', 'r', 'e', '.', 'o', 'r', 'g', '\0',
   /* "renrenche.com", false */ 'r', 'e', 'n', 'r', 'e', 'n', 'c', 'h', 'e', '.', 'c', 'o', 'm', '\0',
   /* "rens.nu", true */ 'r', 'e', 'n', 's', '.', 'n', 'u', '\0',
   /* "rent-a-coder.de", true */ 'r', 'e', 'n', 't', '-', 'a', '-', 'c', 'o', 'd', 'e', 'r', '.', 'd', 'e', '\0',
   /* "rentasweb.gob.ar", true */ 'r', 'e', 'n', 't', 'a', 's', 'w', 'e', 'b', '.', 'g', 'o', 'b', '.', 'a', 'r', '\0',
+  /* "rentbrowser.com", true */ 'r', 'e', 'n', 't', 'b', 'r', 'o', 'w', 's', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "rentex.com", true */ 'r', 'e', 'n', 't', 'e', 'x', '.', 'c', 'o', 'm', '\0',
   /* "rentinsingapore.com.sg", true */ 'r', 'e', 'n', 't', 'i', 'n', 's', 'i', 'n', 'g', 'a', 'p', 'o', 'r', 'e', '.', 'c', 'o', 'm', '.', 's', 'g', '\0',
   /* "renuo.ch", true */ 'r', 'e', 'n', 'u', 'o', '.', 'c', 'h', '\0',
   /* "reox.at", false */ 'r', 'e', 'o', 'x', '.', 'a', 't', '\0',
   /* "repair.by", true */ 'r', 'e', 'p', 'a', 'i', 'r', '.', 'b', 'y', '\0',
   /* "repaper.org", true */ 'r', 'e', 'p', 'a', 'p', 'e', 'r', '.', 'o', 'r', 'g', '\0',
   /* "repaxan.com", true */ 'r', 'e', 'p', 'a', 'x', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "replicagunsswords.com", false */ 'r', 'e', 'p', 'l', 'i', 'c', 'a', 'g', 'u', 'n', 's', 's', 'w', 'o', 'r', 'd', 's', '.', 'c', 'o', 'm', '\0',
@@ -16451,17 +16432,16 @@ static const char kSTSHostTable[] = {
   /* "request-trent.com", true */ 'r', 'e', 'q', 'u', 'e', 's', 't', '-', 't', 'r', 'e', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "resc.la", true */ 'r', 'e', 's', 'c', '.', 'l', 'a', '\0',
   /* "rescms-secure.com", true */ 'r', 'e', 's', 'c', 'm', 's', '-', 's', 'e', 'c', 'u', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "research.md", true */ 'r', 'e', 's', 'e', 'a', 'r', 'c', 'h', '.', 'm', 'd', '\0',
   /* "researchgate.net", true */ 'r', 'e', 's', 'e', 'a', 'r', 'c', 'h', 'g', 'a', 't', 'e', '.', 'n', 'e', 't', '\0',
   /* "reservar-un-hotel.com", true */ 'r', 'e', 's', 'e', 'r', 'v', 'a', 'r', '-', 'u', 'n', '-', 'h', 'o', 't', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "residence-simoncelli.com", true */ 'r', 'e', 's', 'i', 'd', 'e', 'n', 'c', 'e', '-', 's', 'i', 'm', 'o', 'n', 'c', 'e', 'l', 'l', 'i', '.', 'c', 'o', 'm', '\0',
   /* "resist.ca", true */ 'r', 'e', 's', 'i', 's', 't', '.', 'c', 'a', '\0',
-  /* "resl20.servehttp.com", true */ 'r', 'e', 's', 'l', '2', '0', '.', 's', 'e', 'r', 'v', 'e', 'h', 't', 't', 'p', '.', 'c', 'o', 'm', '\0',
   /* "resortohshima.com", true */ 'r', 'e', 's', 'o', 'r', 't', 'o', 'h', 's', 'h', 'i', 'm', 'a', '.', 'c', 'o', 'm', '\0',
   /* "resources.flowfinity.com", true */ 'r', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', '.', 'f', 'l', 'o', 'w', 'f', 'i', 'n', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "respectmyprivacy.eu", true */ 'r', 'e', 's', 'p', 'e', 'c', 't', 'm', 'y', 'p', 'r', 'i', 'v', 'a', 'c', 'y', '.', 'e', 'u', '\0',
   /* "respectmyprivacy.net", true */ 'r', 'e', 's', 'p', 'e', 'c', 't', 'm', 'y', 'p', 'r', 'i', 'v', 'a', 'c', 'y', '.', 'n', 'e', 't', '\0',
   /* "respectmyprivacy.nl", true */ 'r', 'e', 's', 'p', 'e', 'c', 't', 'm', 'y', 'p', 'r', 'i', 'v', 'a', 'c', 'y', '.', 'n', 'l', '\0',
   /* "respon.jp", true */ 'r', 'e', 's', 'p', 'o', 'n', '.', 'j', 'p', '\0',
   /* "responer.com", true */ 'r', 'e', 's', 'p', 'o', 'n', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "responsibledisclosure.nl", false */ 'r', 'e', 's', 'p', 'o', 'n', 's', 'i', 'b', 'l', 'e', 'd', 'i', 's', 'c', 'l', 'o', 's', 'u', 'r', 'e', '.', 'n', 'l', '\0',
@@ -16536,17 +16516,16 @@ static const char kSTSHostTable[] = {
   /* "ricardo.nu", true */ 'r', 'i', 'c', 'a', 'r', 'd', 'o', '.', 'n', 'u', '\0',
   /* "ricardobalk.nl", true */ 'r', 'i', 'c', 'a', 'r', 'd', 'o', 'b', 'a', 'l', 'k', '.', 'n', 'l', '\0',
   /* "ricaud.me", true */ 'r', 'i', 'c', 'a', 'u', 'd', '.', 'm', 'e', '\0',
   /* "riccy.org", true */ 'r', 'i', 'c', 'c', 'y', '.', 'o', 'r', 'g', '\0',
   /* "riceadvice.info", true */ 'r', 'i', 'c', 'e', 'a', 'd', 'v', 'i', 'c', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "riceglue.com", true */ 'r', 'i', 'c', 'e', 'g', 'l', 'u', 'e', '.', 'c', 'o', 'm', '\0',
   /* "richardb.me", true */ 'r', 'i', 'c', 'h', 'a', 'r', 'd', 'b', '.', 'm', 'e', '\0',
   /* "richardhering.de", true */ 'r', 'i', 'c', 'h', 'a', 'r', 'd', 'h', 'e', 'r', 'i', 'n', 'g', '.', 'd', 'e', '\0',
-  /* "richardjgreen.net", true */ 'r', 'i', 'c', 'h', 'a', 'r', 'd', 'j', 'g', 'r', 'e', 'e', 'n', '.', 'n', 'e', 't', '\0',
   /* "richardlangworth.com", true */ 'r', 'i', 'c', 'h', 'a', 'r', 'd', 'l', 'a', 'n', 'g', 'w', 'o', 'r', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "richardlugten.nl", true */ 'r', 'i', 'c', 'h', 'a', 'r', 'd', 'l', 'u', 'g', 't', 'e', 'n', '.', 'n', 'l', '\0',
   /* "richardrblocker.net", true */ 'r', 'i', 'c', 'h', 'a', 'r', 'd', 'r', 'b', 'l', 'o', 'c', 'k', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "richardwarrender.com", true */ 'r', 'i', 'c', 'h', 'a', 'r', 'd', 'w', 'a', 'r', 'r', 'e', 'n', 'd', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "richonrails.com", true */ 'r', 'i', 'c', 'h', 'o', 'n', 'r', 'a', 'i', 'l', 's', '.', 'c', 'o', 'm', '\0',
   /* "richterphilipp.com", true */ 'r', 'i', 'c', 'h', 't', 'e', 'r', 'p', 'h', 'i', 'l', 'i', 'p', 'p', '.', 'c', 'o', 'm', '\0',
   /* "ricki-z.com", true */ 'r', 'i', 'c', 'k', 'i', '-', 'z', '.', 'c', 'o', 'm', '\0',
   /* "rickrongen.nl", true */ 'r', 'i', 'c', 'k', 'r', 'o', 'n', 'g', 'e', 'n', '.', 'n', 'l', '\0',
@@ -16825,16 +16804,17 @@ static const char kSTSHostTable[] = {
   /* "rtfpessoa.xyz", true */ 'r', 't', 'f', 'p', 'e', 's', 's', 'o', 'a', '.', 'x', 'y', 'z', '\0',
   /* "rtho.me", true */ 'r', 't', 'h', 'o', '.', 'm', 'e', '\0',
   /* "ru-sprachstudio.ch", true */ 'r', 'u', '-', 's', 'p', 'r', 'a', 'c', 'h', 's', 't', 'u', 'd', 'i', 'o', '.', 'c', 'h', '\0',
   /* "ru.search.yahoo.com", false */ 'r', 'u', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "ruanmi.de", true */ 'r', 'u', 'a', 'n', 'm', 'i', '.', 'd', 'e', '\0',
   /* "rubbermaidoutlet.com", true */ 'r', 'u', 'b', 'b', 'e', 'r', 'm', 'a', 'i', 'd', 'o', 'u', 't', 'l', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "ruben.am", true */ 'r', 'u', 'b', 'e', 'n', '.', 'a', 'm', '\0',
   /* "rubendv.be", true */ 'r', 'u', 'b', 'e', 'n', 'd', 'v', '.', 'b', 'e', '\0',
+  /* "rubi-ka.net", false */ 'r', 'u', 'b', 'i', '-', 'k', 'a', '.', 'n', 'e', 't', '\0',
   /* "rublacklist.net", true */ 'r', 'u', 'b', 'l', 'a', 'c', 'k', 'l', 'i', 's', 't', '.', 'n', 'e', 't', '\0',
   /* "rubyist.today", true */ 'r', 'u', 'b', 'y', 'i', 's', 't', '.', 't', 'o', 'd', 'a', 'y', '\0',
   /* "rubyquincunx.com", true */ 'r', 'u', 'b', 'y', 'q', 'u', 'i', 'n', 'c', 'u', 'n', 'x', '.', 'c', 'o', 'm', '\0',
   /* "rubyquincunx.org", true */ 'r', 'u', 'b', 'y', 'q', 'u', 'i', 'n', 'c', 'u', 'n', 'x', '.', 'o', 'r', 'g', '\0',
   /* "rudd-o.com", true */ 'r', 'u', 'd', 'd', '-', 'o', '.', 'c', 'o', 'm', '\0',
   /* "rudelune.fr", true */ 'r', 'u', 'd', 'e', 'l', 'u', 'n', 'e', '.', 'f', 'r', '\0',
   /* "ruderverein-gelsenkirchen.de", true */ 'r', 'u', 'd', 'e', 'r', 'v', 'e', 'r', 'e', 'i', 'n', '-', 'g', 'e', 'l', 's', 'e', 'n', 'k', 'i', 'r', 'c', 'h', 'e', 'n', '.', 'd', 'e', '\0',
   /* "rudloff.pro", false */ 'r', 'u', 'd', 'l', 'o', 'f', 'f', '.', 'p', 'r', 'o', '\0',
@@ -17276,17 +17256,16 @@ static const char kSTSHostTable[] = {
   /* "scotthel.me", true */ 's', 'c', 'o', 't', 't', 'h', 'e', 'l', '.', 'm', 'e', '\0',
   /* "scotthelme.co.uk", true */ 's', 'c', 'o', 't', 't', 'h', 'e', 'l', 'm', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "scotthelme.com", true */ 's', 'c', 'o', 't', 't', 'h', 'e', 'l', 'm', 'e', '.', 'c', 'o', 'm', '\0',
   /* "scottnicol.co.uk", true */ 's', 'c', 'o', 't', 't', 'n', 'i', 'c', 'o', 'l', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "scottstorey.co.uk", true */ 's', 'c', 'o', 't', 't', 's', 't', 'o', 'r', 'e', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "scoutdb.ch", true */ 's', 'c', 'o', 'u', 't', 'd', 'b', '.', 'c', 'h', '\0',
   /* "scoutnet.de", true */ 's', 'c', 'o', 'u', 't', 'n', 'e', 't', '.', 'd', 'e', '\0',
   /* "scp-trens.notaires.fr", true */ 's', 'c', 'p', '-', 't', 'r', 'e', 'n', 's', '.', 'n', 'o', 't', 'a', 'i', 'r', 'e', 's', '.', 'f', 'r', '\0',
-  /* "scramble.io", true */ 's', 'c', 'r', 'a', 'm', 'b', 'l', 'e', '.', 'i', 'o', '\0',
   /* "scrap.tf", true */ 's', 'c', 'r', 'a', 'p', '.', 't', 'f', '\0',
   /* "scrayos.net", true */ 's', 'c', 'r', 'a', 'y', 'o', 's', '.', 'n', 'e', 't', '\0',
   /* "scredible.com", true */ 's', 'c', 'r', 'e', 'd', 'i', 'b', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "screen64.tk", true */ 's', 'c', 'r', 'e', 'e', 'n', '6', '4', '.', 't', 'k', '\0',
   /* "screenlight.tv", true */ 's', 'c', 'r', 'e', 'e', 'n', 'l', 'i', 'g', 'h', 't', '.', 't', 'v', '\0',
   /* "script.google.com", true */ 's', 'c', 'r', 'i', 'p', 't', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "scriptgates.ru", true */ 's', 'c', 'r', 'i', 'p', 't', 'g', 'a', 't', 'e', 's', '.', 'r', 'u', '\0',
   /* "scriptjunkie.us", true */ 's', 'c', 'r', 'i', 'p', 't', 'j', 'u', 'n', 'k', 'i', 'e', '.', 'u', 's', '\0',
@@ -17577,17 +17556,16 @@ static const char kSTSHostTable[] = {
   /* "sexpay.net", true */ 's', 'e', 'x', 'p', 'a', 'y', '.', 'n', 'e', 't', '\0',
   /* "sexwork.net", true */ 's', 'e', 'x', 'w', 'o', 'r', 'k', '.', 'n', 'e', 't', '\0',
   /* "sexy-store.nl", true */ 's', 'e', 'x', 'y', '-', 's', 't', 'o', 'r', 'e', '.', 'n', 'l', '\0',
   /* "seyfarth.de", true */ 's', 'e', 'y', 'f', 'a', 'r', 't', 'h', '.', 'd', 'e', '\0',
   /* "seyr.it", true */ 's', 'e', 'y', 'r', '.', 'i', 't', '\0',
   /* "seyr.me", true */ 's', 'e', 'y', 'r', '.', 'm', 'e', '\0',
   /* "sfashion.si", true */ 's', 'f', 'a', 's', 'h', 'i', 'o', 'n', '.', 's', 'i', '\0',
   /* "sfirat-haomer.com", true */ 's', 'f', 'i', 'r', 'a', 't', '-', 'h', 'a', 'o', 'm', 'e', 'r', '.', 'c', 'o', 'm', '\0',
-  /* "sftool.gov", true */ 's', 'f', 't', 'o', 'o', 'l', '.', 'g', 'o', 'v', '\0',
   /* "sg.search.yahoo.com", false */ 's', 'g', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0',
   /* "sgcaccounts.co.uk", true */ 's', 'g', 'c', 'a', 'c', 'c', 'o', 'u', 'n', 't', 's', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "sgroup-hitoduma.com", true */ 's', 'g', 'r', 'o', 'u', 'p', '-', 'h', 'i', 't', 'o', 'd', 'u', 'm', 'a', '.', 'c', 'o', 'm', '\0',
   /* "sgroup-rec.com", true */ 's', 'g', 'r', 'o', 'u', 'p', '-', 'r', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "sgtcodfish.com", true */ 's', 'g', 't', 'c', 'o', 'd', 'f', 'i', 's', 'h', '.', 'c', 'o', 'm', '\0',
   /* "sh-heppelmann.de", true */ 's', 'h', '-', 'h', 'e', 'p', 'p', 'e', 'l', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
   /* "sh-network.de", false */ 's', 'h', '-', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'd', 'e', '\0',
   /* "shaaaaaaaaaaaaa.com", true */ 's', 'h', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', '.', 'c', 'o', 'm', '\0',
@@ -17789,17 +17767,16 @@ static const char kSTSHostTable[] = {
   /* "signere.no", true */ 's', 'i', 'g', 'n', 'e', 'r', 'e', '.', 'n', 'o', '\0',
   /* "significados.com.br", true */ 's', 'i', 'g', 'n', 'i', 'f', 'i', 'c', 'a', 'd', 'o', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "signing-milter.org", true */ 's', 'i', 'g', 'n', 'i', 'n', 'g', '-', 'm', 'i', 'l', 't', 'e', 'r', '.', 'o', 'r', 'g', '\0',
   /* "signix.net", true */ 's', 'i', 'g', 'n', 'i', 'x', '.', 'n', 'e', 't', '\0',
   /* "signoracle.com", true */ 's', 'i', 'g', 'n', 'o', 'r', 'a', 'c', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "signosquecombinam.com.br", true */ 's', 'i', 'g', 'n', 'o', 's', 'q', 'u', 'e', 'c', 'o', 'm', 'b', 'i', 'n', 'a', 'm', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "signslabelstapesandmore.com", false */ 's', 'i', 'g', 'n', 's', 'l', 'a', 'b', 'e', 'l', 's', 't', 'a', 'p', 'e', 's', 'a', 'n', 'd', 'm', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "signtul.com", false */ 's', 'i', 'g', 'n', 't', 'u', 'l', '.', 'c', 'o', 'm', '\0',
-  /* "sigsegv.run", true */ 's', 'i', 'g', 's', 'e', 'g', 'v', '.', 'r', 'u', 'n', '\0',
   /* "sigterm.no", true */ 's', 'i', 'g', 't', 'e', 'r', 'm', '.', 'n', 'o', '\0',
   /* "sigterm.sh", true */ 's', 'i', 'g', 't', 'e', 'r', 'm', '.', 's', 'h', '\0',
   /* "siirtutkusu.com", true */ 's', 'i', 'i', 'r', 't', 'u', 't', 'k', 'u', 's', 'u', '.', 'c', 'o', 'm', '\0',
   /* "sijmenschoon.nl", true */ 's', 'i', 'j', 'm', 'e', 'n', 's', 'c', 'h', 'o', 'o', 'n', '.', 'n', 'l', '\0',
   /* "sikatehtaat.fi", true */ 's', 'i', 'k', 'a', 't', 'e', 'h', 't', 'a', 'a', 't', '.', 'f', 'i', '\0',
   /* "sikayetvar.com", true */ 's', 'i', 'k', 'a', 'y', 'e', 't', 'v', 'a', 'r', '.', 'c', 'o', 'm', '\0',
   /* "sikevux.se", true */ 's', 'i', 'k', 'e', 'v', 'u', 'x', '.', 's', 'e', '\0',
   /* "siku-shop.ch", true */ 's', 'i', 'k', 'u', '-', 's', 'h', 'o', 'p', '.', 'c', 'h', '\0',
@@ -17860,17 +17837,17 @@ static const char kSTSHostTable[] = {
   /* "simccorp.com", true */ 's', 'i', 'm', 'c', 'c', 'o', 'r', 'p', '.', 'c', 'o', 'm', '\0',
   /* "simeon.us", true */ 's', 'i', 'm', 'e', 'o', 'n', '.', 'u', 's', '\0',
   /* "simeonoff.ninja", true */ 's', 'i', 'm', 'e', 'o', 'n', 'o', 'f', 'f', '.', 'n', 'i', 'n', 'j', 'a', '\0',
   /* "simetal.ch", true */ 's', 'i', 'm', 'e', 't', 'a', 'l', '.', 'c', 'h', '\0',
   /* "simfed.org", true */ 's', 'i', 'm', 'f', 'e', 'd', '.', 'o', 'r', 'g', '\0',
   /* "simlau.net", true */ 's', 'i', 'm', 'l', 'a', 'u', '.', 'n', 'e', 't', '\0',
   /* "simnovo.net", true */ 's', 'i', 'm', 'n', 'o', 'v', 'o', '.', 'n', 'e', 't', '\0',
   /* "simon-hofmann.org", true */ 's', 'i', 'm', 'o', 'n', '-', 'h', 'o', 'f', 'm', 'a', 'n', 'n', '.', 'o', 'r', 'g', '\0',
-  /* "simon-pokorny.com", true */ 's', 'i', 'm', 'o', 'n', '-', 'p', 'o', 'k', 'o', 'r', 'n', 'y', '.', 'c', 'o', 'm', '\0',
+  /* "simon.lc", true */ 's', 'i', 'm', 'o', 'n', '.', 'l', 'c', '\0',
   /* "simoncommunity.org.uk", true */ 's', 'i', 'm', 'o', 'n', 'c', 'o', 'm', 'm', 'u', 'n', 'i', 't', 'y', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0',
   /* "simoncook.org", true */ 's', 'i', 'm', 'o', 'n', 'c', 'o', 'o', 'k', '.', 'o', 'r', 'g', '\0',
   /* "simonhirscher.de", true */ 's', 'i', 'm', 'o', 'n', 'h', 'i', 'r', 's', 'c', 'h', 'e', 'r', '.', 'd', 'e', '\0',
   /* "simonkjellberg.com", true */ 's', 'i', 'm', 'o', 'n', 'k', 'j', 'e', 'l', 'l', 'b', 'e', 'r', 'g', '.', 'c', 'o', 'm', '\0',
   /* "simonkjellberg.se", true */ 's', 'i', 'm', 'o', 'n', 'k', 'j', 'e', 'l', 'l', 'b', 'e', 'r', 'g', '.', 's', 'e', '\0',
   /* "simonlyabonnement.nl", true */ 's', 'i', 'm', 'o', 'n', 'l', 'y', 'a', 'b', 'o', 'n', 'n', 'e', 'm', 'e', 'n', 't', '.', 'n', 'l', '\0',
   /* "simonreich.de", true */ 's', 'i', 'm', 'o', 'n', 'r', 'e', 'i', 'c', 'h', '.', 'd', 'e', '\0',
   /* "simonschmitt.ch", true */ 's', 'i', 'm', 'o', 'n', 's', 'c', 'h', 'm', 'i', 't', 't', '.', 'c', 'h', '\0',
@@ -18215,16 +18192,17 @@ static const char kSTSHostTable[] = {
   /* "socioambiental.org", true */ 's', 'o', 'c', 'i', 'o', 'a', 'm', 'b', 'i', 'e', 'n', 't', 'a', 'l', '.', 'o', 'r', 'g', '\0',
   /* "sociobiology.com", true */ 's', 'o', 'c', 'i', 'o', 'b', 'i', 'o', 'l', 'o', 'g', 'y', '.', 'c', 'o', 'm', '\0',
   /* "sociopathy.org", true */ 's', 'o', 'c', 'i', 'o', 'p', 'a', 't', 'h', 'y', '.', 'o', 'r', 'g', '\0',
   /* "socketize.com", true */ 's', 'o', 'c', 'k', 'e', 't', 'i', 'z', 'e', '.', 'c', 'o', 'm', '\0',
   /* "sockeye.io", false */ 's', 'o', 'c', 'k', 'e', 'y', 'e', '.', 'i', 'o', '\0',
   /* "sockscap64.com", true */ 's', 'o', 'c', 'k', 's', 'c', 'a', 'p', '6', '4', '.', 'c', 'o', 'm', '\0',
   /* "sodi.nl", true */ 's', 'o', 'd', 'i', '.', 'n', 'l', '\0',
   /* "sodiao.cc", true */ 's', 'o', 'd', 'i', 'a', 'o', '.', 'c', 'c', '\0',
+  /* "soe-server.com", true */ 's', 'o', 'e', '-', 's', 'e', 'r', 'v', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "sofa-rockers.org", true */ 's', 'o', 'f', 'a', '-', 'r', 'o', 'c', 'k', 'e', 'r', 's', '.', 'o', 'r', 'g', '\0',
   /* "sofabedshop.de", true */ 's', 'o', 'f', 'a', 'b', 'e', 'd', 's', 'h', 'o', 'p', '.', 'd', 'e', '\0',
   /* "sofort.com", true */ 's', 'o', 'f', 'o', 'r', 't', '.', 'c', 'o', 'm', '\0',
   /* "sofortueberweisung.de", true */ 's', 'o', 'f', 'o', 'r', 't', 'u', 'e', 'b', 'e', 'r', 'w', 'e', 'i', 's', 'u', 'n', 'g', '.', 'd', 'e', '\0',
   /* "softanka.com", true */ 's', 'o', 'f', 't', 'a', 'n', 'k', 'a', '.', 'c', 'o', 'm', '\0',
   /* "softballsavings.com", true */ 's', 'o', 'f', 't', 'b', 'a', 'l', 'l', 's', 'a', 'v', 'i', 'n', 'g', 's', '.', 'c', 'o', 'm', '\0',
   /* "softprayog.in", true */ 's', 'o', 'f', 't', 'p', 'r', 'a', 'y', 'o', 'g', '.', 'i', 'n', '\0',
   /* "softwarebetrieb.de", true */ 's', 'o', 'f', 't', 'w', 'a', 'r', 'e', 'b', 'e', 't', 'r', 'i', 'e', 'b', '.', 'd', 'e', '\0',
@@ -18382,17 +18360,16 @@ static const char kSTSHostTable[] = {
   /* "sparmedo.de", true */ 's', 'p', 'a', 'r', 'm', 'e', 'd', 'o', '.', 'd', 'e', '\0',
   /* "sparta-trade.com", true */ 's', 'p', 'a', 'r', 't', 'a', '-', 't', 'r', 'a', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "spartaconsulting.fi", true */ 's', 'p', 'a', 'r', 't', 'a', 'c', 'o', 'n', 's', 'u', 'l', 't', 'i', 'n', 'g', '.', 'f', 'i', '\0',
   /* "spartantheatre.org", true */ 's', 'p', 'a', 'r', 't', 'a', 'n', 't', 'h', 'e', 'a', 't', 'r', 'e', '.', 'o', 'r', 'g', '\0',
   /* "spatzenwerkstatt.de", true */ 's', 'p', 'a', 't', 'z', 'e', 'n', 'w', 'e', 'r', 'k', 's', 't', 'a', 't', 't', '.', 'd', 'e', '\0',
   /* "spawn.cz", true */ 's', 'p', 'a', 'w', 'n', '.', 'c', 'z', '\0',
   /* "spaysy.com", true */ 's', 'p', 'a', 'y', 's', 'y', '.', 'c', 'o', 'm', '\0',
   /* "spdf.net", true */ 's', 'p', 'd', 'f', '.', 'n', 'e', 't', '\0',
-  /* "specialedesigns.com", true */ 's', 'p', 'e', 'c', 'i', 'a', 'l', 'e', 'd', 'e', 's', 'i', 'g', 'n', 's', '.', 'c', 'o', 'm', '\0',
   /* "speciesism.com", true */ 's', 'p', 'e', 'c', 'i', 'e', 's', 'i', 's', 'm', '.', 'c', 'o', 'm', '\0',
   /* "spectrosoftware.de", true */ 's', 'p', 'e', 'c', 't', 'r', 'o', 's', 'o', 'f', 't', 'w', 'a', 'r', 'e', '.', 'd', 'e', '\0',
   /* "spedition-transport-umzug.de", true */ 's', 'p', 'e', 'd', 'i', 't', 'i', 'o', 'n', '-', 't', 'r', 'a', 'n', 's', 'p', 'o', 'r', 't', '-', 'u', 'm', 'z', 'u', 'g', '.', 'd', 'e', '\0',
   /* "spedplus.com.br", false */ 's', 'p', 'e', 'd', 'p', 'l', 'u', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "speechndraw.com", true */ 's', 'p', 'e', 'e', 'c', 'h', 'n', 'd', 'r', 'a', 'w', '.', 'c', 'o', 'm', '\0',
   /* "speeddate.it", false */ 's', 'p', 'e', 'e', 'd', 'd', 'a', 't', 'e', '.', 'i', 't', '\0',
   /* "speedmann.de", false */ 's', 'p', 'e', 'e', 'd', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
   /* "speeds.vip", true */ 's', 'p', 'e', 'e', 'd', 's', '.', 'v', 'i', 'p', '\0',
@@ -18538,17 +18515,16 @@ static const char kSTSHostTable[] = {
   /* "ssldev.net", true */ 's', 's', 'l', 'd', 'e', 'v', '.', 'n', 'e', 't', '\0',
   /* "sslmate.com", true */ 's', 's', 'l', 'm', 'a', 't', 'e', '.', 'c', 'o', 'm', '\0',
   /* "sslping.com", true */ 's', 's', 'l', 'p', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "sslpoint.com", true */ 's', 's', 'l', 'p', 'o', 'i', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "ssls.cz", true */ 's', 's', 'l', 's', '.', 'c', 'z', '\0',
   /* "sslsurvey.de", true */ 's', 's', 'l', 's', 'u', 'r', 'v', 'e', 'y', '.', 'd', 'e', '\0',
   /* "sslzilla.de", true */ 's', 's', 'l', 'z', 'i', 'l', 'l', 'a', '.', 'd', 'e', '\0',
   /* "ssn1.ru", true */ 's', 's', 'n', '1', '.', 'r', 'u', '\0',
-  /* "ssrvpn.tech", true */ 's', 's', 'r', 'v', 'p', 'n', '.', 't', 'e', 'c', 'h', '\0',
   /* "sss3s.com", true */ 's', 's', 's', '3', 's', '.', 'c', 'o', 'm', '\0',
   /* "sstewartgallus.com", true */ 's', 's', 't', 'e', 'w', 'a', 'r', 't', 'g', 'a', 'l', 'l', 'u', 's', '.', 'c', 'o', 'm', '\0',
   /* "st-kilian-markt-erlbach.de", true */ 's', 't', '-', 'k', 'i', 'l', 'i', 'a', 'n', '-', 'm', 'a', 'r', 'k', 't', '-', 'e', 'r', 'l', 'b', 'a', 'c', 'h', '.', 'd', 'e', '\0',
   /* "st-news.de", true */ 's', 't', '-', 'n', 'e', 'w', 's', '.', 'd', 'e', '\0',
   /* "staatschutz.at", true */ 's', 't', 'a', 'a', 't', 's', 'c', 'h', 'u', 't', 'z', '.', 'a', 't', '\0',
   /* "staatsschutz.at", true */ 's', 't', 'a', 'a', 't', 's', 's', 'c', 'h', 'u', 't', 'z', '.', 'a', 't', '\0',
   /* "staatsschutzgesetz.at", true */ 's', 't', 'a', 'a', 't', 's', 's', 'c', 'h', 'u', 't', 'z', 'g', 'e', 's', 'e', 't', 'z', '.', 'a', 't', '\0',
   /* "stablelib.com", true */ 's', 't', 'a', 'b', 'l', 'e', 'l', 'i', 'b', '.', 'c', 'o', 'm', '\0',
@@ -18572,16 +18548,17 @@ static const char kSTSHostTable[] = {
   /* "stalker-shop.com", true */ 's', 't', 'a', 'l', 'k', 'e', 'r', '-', 's', 'h', 'o', 'p', '.', 'c', 'o', 'm', '\0',
   /* "stalkerteam.pl", true */ 's', 't', 'a', 'l', 'k', 'e', 'r', 't', 'e', 'a', 'm', '.', 'p', 'l', '\0',
   /* "stalkr.net", true */ 's', 't', 'a', 'l', 'k', 'r', '.', 'n', 'e', 't', '\0',
   /* "stalkthe.net", true */ 's', 't', 'a', 'l', 'k', 't', 'h', 'e', '.', 'n', 'e', 't', '\0',
   /* "stamboommuller.nl", true */ 's', 't', 'a', 'm', 'b', 'o', 'o', 'm', 'm', 'u', 'l', 'l', 'e', 'r', '.', 'n', 'l', '\0',
   /* "stamboomvanderwal.nl", true */ 's', 't', 'a', 'm', 'b', 'o', 'o', 'm', 'v', 'a', 'n', 'd', 'e', 'r', 'w', 'a', 'l', '.', 'n', 'l', '\0',
   /* "stamkassa.nl", true */ 's', 't', 'a', 'm', 'k', 'a', 's', 's', 'a', '.', 'n', 'l', '\0',
   /* "stammtisch.domains", true */ 's', 't', 'a', 'm', 'm', 't', 'i', 's', 'c', 'h', '.', 'd', 'o', 'm', 'a', 'i', 'n', 's', '\0',
+  /* "stamonicatourandtravel.com", true */ 's', 't', 'a', 'm', 'o', 'n', 'i', 'c', 'a', 't', 'o', 'u', 'r', 'a', 'n', 'd', 't', 'r', 'a', 'v', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "stamparmakarije.me", true */ 's', 't', 'a', 'm', 'p', 'a', 'r', 'm', 'a', 'k', 'a', 'r', 'i', 'j', 'e', '.', 'm', 'e', '\0',
   /* "stampederadon.com", true */ 's', 't', 'a', 'm', 'p', 'e', 'd', 'e', 'r', 'a', 'd', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "stanandjerre.org", true */ 's', 't', 'a', 'n', 'a', 'n', 'd', 'j', 'e', 'r', 'r', 'e', '.', 'o', 'r', 'g', '\0',
   /* "standagainstspying.org", true */ 's', 't', 'a', 'n', 'd', 'a', 'g', 'a', 'i', 'n', 's', 't', 's', 'p', 'y', 'i', 'n', 'g', '.', 'o', 'r', 'g', '\0',
   /* "standards.gov", true */ 's', 't', 'a', 'n', 'd', 'a', 'r', 'd', 's', '.', 'g', 'o', 'v', '\0',
   /* "standoutbooks.com", true */ 's', 't', 'a', 'n', 'd', 'o', 'u', 't', 'b', 'o', 'o', 'k', 's', '.', 'c', 'o', 'm', '\0',
   /* "star-citizen.wiki", true */ 's', 't', 'a', 'r', '-', 'c', 'i', 't', 'i', 'z', 'e', 'n', '.', 'w', 'i', 'k', 'i', '\0',
   /* "star-killer.net", true */ 's', 't', 'a', 'r', '-', 'k', 'i', 'l', 'l', 'e', 'r', '.', 'n', 'e', 't', '\0',
@@ -18620,17 +18597,16 @@ static const char kSTSHostTable[] = {
   /* "static-myfxoau-808795.c.cdn77.org", true */ 's', 't', 'a', 't', 'i', 'c', '-', 'm', 'y', 'f', 'x', 'o', 'a', 'u', '-', '8', '0', '8', '7', '9', '5', '.', 'c', '.', 'c', 'd', 'n', '7', '7', '.', 'o', 'r', 'g', '\0',
   /* "static-myfxouk-808795.c.cdn77.org", true */ 's', 't', 'a', 't', 'i', 'c', '-', 'm', 'y', 'f', 'x', 'o', 'u', 'k', '-', '8', '0', '8', '7', '9', '5', '.', 'c', '.', 'c', 'd', 'n', '7', '7', '.', 'o', 'r', 'g', '\0',
   /* "static.hosting", true */ 's', 't', 'a', 't', 'i', 'c', '.', 'h', 'o', 's', 't', 'i', 'n', 'g', '\0',
   /* "static.wepay.com", false */ 's', 't', 'a', 't', 'i', 'c', '.', 'w', 'e', 'p', 'a', 'y', '.', 'c', 'o', 'm', '\0',
   /* "staticisnoise.com", true */ 's', 't', 'a', 't', 'i', 'c', 'i', 's', 'n', 'o', 'i', 's', 'e', '.', 'c', 'o', 'm', '\0',
   /* "stationa.ch", true */ 's', 't', 'a', 't', 'i', 'o', 'n', 'a', '.', 'c', 'h', '\0',
   /* "stationary-traveller.eu", true */ 's', 't', 'a', 't', 'i', 'o', 'n', 'a', 'r', 'y', '-', 't', 'r', 'a', 'v', 'e', 'l', 'l', 'e', 'r', '.', 'e', 'u', '\0',
   /* "stationcharlie.com", true */ 's', 't', 'a', 't', 'i', 'o', 'n', 'c', 'h', 'a', 'r', 'l', 'i', 'e', '.', 'c', 'o', 'm', '\0',
-  /* "statistikian.com", true */ 's', 't', 'a', 't', 'i', 's', 't', 'i', 'k', 'i', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "stats.g.doubleclick.net", true */ 's', 't', 'a', 't', 's', '.', 'g', '.', 'd', 'o', 'u', 'b', 'l', 'e', 'c', 'l', 'i', 'c', 'k', '.', 'n', 'e', 't', '\0',
   /* "status2u.com", true */ 's', 't', 'a', 't', 'u', 's', '2', 'u', '.', 'c', 'o', 'm', '\0',
   /* "statuscode.ch", true */ 's', 't', 'a', 't', 'u', 's', 'c', 'o', 'd', 'e', '.', 'c', 'h', '\0',
   /* "stav.io", true */ 's', 't', 'a', 'v', '.', 'i', 'o', '\0',
   /* "stay.black", true */ 's', 't', 'a', 'y', '.', 'b', 'l', 'a', 'c', 'k', '\0',
   /* "stbennett.org", true */ 's', 't', 'b', 'e', 'n', 'n', 'e', 't', 't', '.', 'o', 'r', 'g', '\0',
   /* "stcable.net", true */ 's', 't', 'c', 'a', 'b', 'l', 'e', '.', 'n', 'e', 't', '\0',
   /* "stcu.org", true */ 's', 't', 'c', 'u', '.', 'o', 'r', 'g', '\0',
@@ -18758,16 +18734,17 @@ static const char kSTSHostTable[] = {
   /* "strahlende-augen.info", true */ 's', 't', 'r', 'a', 'h', 'l', 'e', 'n', 'd', 'e', '-', 'a', 'u', 'g', 'e', 'n', '.', 'i', 'n', 'f', 'o', '\0',
   /* "strangemusicinc.net", true */ 's', 't', 'r', 'a', 'n', 'g', 'e', 'm', 'u', 's', 'i', 'c', 'i', 'n', 'c', '.', 'n', 'e', 't', '\0',
   /* "strangeplace.net", true */ 's', 't', 'r', 'a', 'n', 'g', 'e', 'p', 'l', 'a', 'c', 'e', '.', 'n', 'e', 't', '\0',
   /* "strategie-zone.de", true */ 's', 't', 'r', 'a', 't', 'e', 'g', 'i', 'e', '-', 'z', 'o', 'n', 'e', '.', 'd', 'e', '\0',
   /* "strathewerd.de", true */ 's', 't', 'r', 'a', 't', 'h', 'e', 'w', 'e', 'r', 'd', '.', 'd', 'e', '\0',
   /* "straubis.org", true */ 's', 't', 'r', 'a', 'u', 'b', 'i', 's', '.', 'o', 'r', 'g', '\0',
   /* "strauser.com", true */ 's', 't', 'r', 'a', 'u', 's', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "stravers.shoes", true */ 's', 't', 'r', 'a', 'v', 'e', 'r', 's', '.', 's', 'h', 'o', 'e', 's', '\0',
+  /* "stream.pub", true */ 's', 't', 'r', 'e', 'a', 'm', '.', 'p', 'u', 'b', '\0',
   /* "streamchan.org", true */ 's', 't', 'r', 'e', 'a', 'm', 'c', 'h', 'a', 'n', '.', 'o', 'r', 'g', '\0',
   /* "streamdesk.ca", true */ 's', 't', 'r', 'e', 'a', 'm', 'd', 'e', 's', 'k', '.', 'c', 'a', '\0',
   /* "streamlineautogroup.com", true */ 's', 't', 'r', 'e', 'a', 'm', 'l', 'i', 'n', 'e', 'a', 'u', 't', 'o', 'g', 'r', 'o', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "streamzilla.com", true */ 's', 't', 'r', 'e', 'a', 'm', 'z', 'i', 'l', 'l', 'a', '.', 'c', 'o', 'm', '\0',
   /* "streetdancecenter.com", true */ 's', 't', 'r', 'e', 'e', 't', 'd', 'a', 'n', 'c', 'e', 'c', 'e', 'n', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "streets.mn", true */ 's', 't', 'r', 'e', 'e', 't', 's', '.', 'm', 'n', '\0',
   /* "streetspotr.com", true */ 's', 't', 'r', 'e', 'e', 't', 's', 'p', 'o', 't', 'r', '.', 'c', 'o', 'm', '\0',
   /* "streetview.wien", true */ 's', 't', 'r', 'e', 'e', 't', 'v', 'i', 'e', 'w', '.', 'w', 'i', 'e', 'n', '\0',
@@ -18790,16 +18767,17 @@ static const char kSTSHostTable[] = {
   /* "structurally.net", true */ 's', 't', 'r', 'u', 'c', 't', 'u', 'r', 'a', 'l', 'l', 'y', '.', 'n', 'e', 't', '\0',
   /* "strugee.net", true */ 's', 't', 'r', 'u', 'g', 'e', 'e', '.', 'n', 'e', 't', '\0',
   /* "strutta.me", true */ 's', 't', 'r', 'u', 't', 't', 'a', '.', 'm', 'e', '\0',
   /* "struxureon.com", true */ 's', 't', 'r', 'u', 'x', 'u', 'r', 'e', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "stt.wiki", true */ 's', 't', 't', '.', 'w', 'i', 'k', 'i', '\0',
   /* "stuartbell.co.uk", true */ 's', 't', 'u', 'a', 'r', 't', 'b', 'e', 'l', 'l', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "stuco.co", true */ 's', 't', 'u', 'c', 'o', '.', 'c', 'o', '\0',
   /* "studenckiemetody.pl", true */ 's', 't', 'u', 'd', 'e', 'n', 'c', 'k', 'i', 'e', 'm', 'e', 't', 'o', 'd', 'y', '.', 'p', 'l', '\0',
+  /* "student.andover.edu", true */ 's', 't', 'u', 'd', 'e', 'n', 't', '.', 'a', 'n', 'd', 'o', 'v', 'e', 'r', '.', 'e', 'd', 'u', '\0',
   /* "studentite.bg", false */ 's', 't', 'u', 'd', 'e', 'n', 't', 'i', 't', 'e', '.', 'b', 'g', '\0',
   /* "studentloans.gov", true */ 's', 't', 'u', 'd', 'e', 'n', 't', 'l', 'o', 'a', 'n', 's', '.', 'g', 'o', 'v', '\0',
   /* "studentrdh.com", true */ 's', 't', 'u', 'd', 'e', 'n', 't', 'r', 'd', 'h', '.', 'c', 'o', 'm', '\0',
   /* "studentrightsadvocate.org", true */ 's', 't', 'u', 'd', 'e', 'n', 't', 'r', 'i', 'g', 'h', 't', 's', 'a', 'd', 'v', 'o', 'c', 'a', 't', 'e', '.', 'o', 'r', 'g', '\0',
   /* "studenttenant.com", true */ 's', 't', 'u', 'd', 'e', 'n', 't', 't', 'e', 'n', 'a', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "studer.su", true */ 's', 't', 'u', 'd', 'e', 'r', '.', 's', 'u', '\0',
   /* "studienportal.eu", true */ 's', 't', 'u', 'd', 'i', 'e', 'n', 'p', 'o', 'r', 't', 'a', 'l', '.', 'e', 'u', '\0',
   /* "studiodentisticosanmarco.it", true */ 's', 't', 'u', 'd', 'i', 'o', 'd', 'e', 'n', 't', 'i', 's', 't', 'i', 'c', 'o', 's', 'a', 'n', 'm', 'a', 'r', 'c', 'o', '.', 'i', 't', '\0',
@@ -19030,19 +19008,19 @@ static const char kSTSHostTable[] = {
   /* "synotna.eu", true */ 's', 'y', 'n', 'o', 't', 'n', 'a', '.', 'e', 'u', '\0',
   /* "syntaxnightmare.com", true */ 's', 'y', 'n', 't', 'a', 'x', 'n', 'i', 'g', 'h', 't', 'm', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "sysadmin.pm", true */ 's', 'y', 's', 'a', 'd', 'm', 'i', 'n', '.', 'p', 'm', '\0',
   /* "sysadmin.xyz", true */ 's', 'y', 's', 'a', 'd', 'm', 'i', 'n', '.', 'x', 'y', 'z', '\0',
   /* "sysadmins.ro", true */ 's', 'y', 's', 'a', 'd', 'm', 'i', 'n', 's', '.', 'r', 'o', '\0',
   /* "sysadminstory.com", true */ 's', 'y', 's', 'a', 'd', 'm', 'i', 'n', 's', 't', 'o', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "sysctl.se", true */ 's', 'y', 's', 'c', 't', 'l', '.', 's', 'e', '\0',
   /* "sysdb.io", true */ 's', 'y', 's', 'd', 'b', '.', 'i', 'o', '\0',
+  /* "sysert.tv", false */ 's', 'y', 's', 'e', 'r', 't', '.', 't', 'v', '\0',
   /* "sysmike.de", true */ 's', 'y', 's', 'm', 'i', 'k', 'e', '.', 'd', 'e', '\0',
   /* "sysmike.net", true */ 's', 'y', 's', 'm', 'i', 'k', 'e', '.', 'n', 'e', 't', '\0',
-  /* "sysrq.tech", true */ 's', 'y', 's', 'r', 'q', '.', 't', 'e', 'c', 'h', '\0',
   /* "syss.de", true */ 's', 'y', 's', 's', '.', 'd', 'e', '\0',
   /* "system.cf", true */ 's', 'y', 's', 't', 'e', 'm', '.', 'c', 'f', '\0',
   /* "system.is", true */ 's', 'y', 's', 't', 'e', 'm', '.', 'i', 's', '\0',
   /* "system12.pl", true */ 's', 'y', 's', 't', 'e', 'm', '1', '2', '.', 'p', 'l', '\0',
   /* "systemd.ch", true */ 's', 'y', 's', 't', 'e', 'm', 'd', '.', 'c', 'h', '\0',
   /* "systemeprod.fr", true */ 's', 'y', 's', 't', 'e', 'm', 'e', 'p', 'r', 'o', 'd', '.', 'f', 'r', '\0',
   /* "systemintegra.ru", true */ 's', 'y', 's', 't', 'e', 'm', 'i', 'n', 't', 'e', 'g', 'r', 'a', '.', 'r', 'u', '\0',
   /* "systemreboot.net", true */ 's', 'y', 's', 't', 'e', 'm', 'r', 'e', 'b', 'o', 'o', 't', '.', 'n', 'e', 't', '\0',
@@ -19180,17 +19158,16 @@ static const char kSTSHostTable[] = {
   /* "taxspeaker.com", true */ 't', 'a', 'x', 's', 'p', 'e', 'a', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "taxsquirrel.com", true */ 't', 'a', 'x', 's', 'q', 'u', 'i', 'r', 'r', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "taylorpearson.me", true */ 't', 'a', 'y', 'l', 'o', 'r', 'p', 'e', 'a', 'r', 's', 'o', 'n', '.', 'm', 'e', '\0',
   /* "taysonvodao.fr", true */ 't', 'a', 'y', 's', 'o', 'n', 'v', 'o', 'd', 'a', 'o', '.', 'f', 'r', '\0',
   /* "tazemama.biz", true */ 't', 'a', 'z', 'e', 'm', 'a', 'm', 'a', '.', 'b', 'i', 'z', '\0',
   /* "tazj.in", false */ 't', 'a', 'z', 'j', '.', 'i', 'n', '\0',
   /* "tbarter.com", false */ 't', 'b', 'a', 'r', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "tbitc.ch", true */ 't', 'b', 'i', 't', 'c', '.', 'c', 'h', '\0',
-  /* "tbrss.com", true */ 't', 'b', 'r', 's', 's', '.', 'c', 'o', 'm', '\0',
   /* "tbspace.de", true */ 't', 'b', 's', 'p', 'a', 'c', 'e', '.', 'd', 'e', '\0',
   /* "tbuchloh.de", true */ 't', 'b', 'u', 'c', 'h', 'l', 'o', 'h', '.', 'd', 'e', '\0',
   /* "tc-st-leonard.ch", true */ 't', 'c', '-', 's', 't', '-', 'l', 'e', 'o', 'n', 'a', 'r', 'd', '.', 'c', 'h', '\0',
   /* "tc.nz", true */ 't', 'c', '.', 'n', 'z', '\0',
   /* "tcacademy.co.uk", true */ 't', 'c', 'a', 'c', 'a', 'd', 'e', 'm', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "tcgrepublic.com", true */ 't', 'c', 'g', 'r', 'e', 'p', 'u', 'b', 'l', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "tchebb.me", true */ 't', 'c', 'h', 'e', 'b', 'b', '.', 'm', 'e', '\0',
   /* "tchoukball.ch", true */ 't', 'c', 'h', 'o', 'u', 'k', 'b', 'a', 'l', 'l', '.', 'c', 'h', '\0',
@@ -19227,18 +19204,16 @@ static const char kSTSHostTable[] = {
   /* "teambition.com", true */ 't', 'e', 'a', 'm', 'b', 'i', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "teamcombat.com", true */ 't', 'e', 'a', 'm', 'c', 'o', 'm', 'b', 'a', 't', '.', 'c', 'o', 'm', '\0',
   /* "teamdaylo.xyz", true */ 't', 'e', 'a', 'm', 'd', 'a', 'y', 'l', 'o', '.', 'x', 'y', 'z', '\0',
   /* "teamhood.io", true */ 't', 'e', 'a', 'm', 'h', 'o', 'o', 'd', '.', 'i', 'o', '\0',
   /* "teammathics.com", true */ 't', 'e', 'a', 'm', 'm', 'a', 't', 'h', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0',
   /* "teamnetsol.com", true */ 't', 'e', 'a', 'm', 'n', 'e', 't', 's', 'o', 'l', '.', 'c', 'o', 'm', '\0',
   /* "teamnissannorthparts.com", true */ 't', 'e', 'a', 'm', 'n', 'i', 's', 's', 'a', 'n', 'n', 'o', 'r', 't', 'h', 'p', 'a', 'r', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "teamnorthgermany.de", true */ 't', 'e', 'a', 'm', 'n', 'o', 'r', 't', 'h', 'g', 'e', 'r', 'm', 'a', 'n', 'y', '.', 'd', 'e', '\0',
-  /* "teampaddymurphy.ch", true */ 't', 'e', 'a', 'm', 'p', 'a', 'd', 'd', 'y', 'm', 'u', 'r', 'p', 'h', 'y', '.', 'c', 'h', '\0',
-  /* "teampaddymurphy.ie", true */ 't', 'e', 'a', 'm', 'p', 'a', 'd', 'd', 'y', 'm', 'u', 'r', 'p', 'h', 'y', '.', 'i', 'e', '\0',
   /* "teampoint.cz", true */ 't', 'e', 'a', 'm', 'p', 'o', 'i', 'n', 't', '.', 'c', 'z', '\0',
   /* "teamtouring.net", true */ 't', 'e', 'a', 'm', 't', 'o', 'u', 'r', 'i', 'n', 'g', '.', 'n', 'e', 't', '\0',
   /* "teamtrack.uk", true */ 't', 'e', 'a', 'm', 't', 'r', 'a', 'c', 'k', '.', 'u', 'k', '\0',
   /* "teamup.rocks", true */ 't', 'e', 'a', 'm', 'u', 'p', '.', 'r', 'o', 'c', 'k', 's', '\0',
   /* "teamupturn.com", true */ 't', 'e', 'a', 'm', 'u', 'p', 't', 'u', 'r', 'n', '.', 'c', 'o', 'm', '\0',
   /* "teamx-gaming.de", true */ 't', 'e', 'a', 'm', 'x', '-', 'g', 'a', 'm', 'i', 'n', 'g', '.', 'd', 'e', '\0',
   /* "teasenetwork.com", true */ 't', 'e', 'a', 's', 'e', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'c', 'o', 'm', '\0',
   /* "teaser-trailer.com", true */ 't', 'e', 'a', 's', 'e', 'r', '-', 't', 'r', 'a', 'i', 'l', 'e', 'r', '.', 'c', 'o', 'm', '\0',
@@ -19430,17 +19405,16 @@ static const char kSTSHostTable[] = {
   /* "thackbarth.net", true */ 't', 'h', 'a', 'c', 'k', 'b', 'a', 'r', 't', 'h', '.', 'n', 'e', 't', '\0',
   /* "thaedal.net", true */ 't', 'h', 'a', 'e', 'd', 'a', 'l', '.', 'n', 'e', 't', '\0',
   /* "thai.dating", true */ 't', 'h', 'a', 'i', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0',
   /* "thaianthro.com", true */ 't', 'h', 'a', 'i', 'a', 'n', 't', 'h', 'r', 'o', '.', 'c', 'o', 'm', '\0',
   /* "thaicyberpoint.com", true */ 't', 'h', 'a', 'i', 'c', 'y', 'b', 'e', 'r', 'p', 'o', 'i', 'n', 't', '.', 'c', 'o', 'm', '\0',
   /* "thaihomecooking.com", true */ 't', 'h', 'a', 'i', 'h', 'o', 'm', 'e', 'c', 'o', 'o', 'k', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "thailandpropertylisting.com", true */ 't', 'h', 'a', 'i', 'l', 'a', 'n', 'd', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'y', 'l', 'i', 's', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "thairehabassociation.com", true */ 't', 'h', 'a', 'i', 'r', 'e', 'h', 'a', 'b', 'a', 's', 's', 'o', 'c', 'i', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
-  /* "thalan.fr", true */ 't', 'h', 'a', 'l', 'a', 'n', '.', 'f', 'r', '\0',
   /* "thalgott.net", true */ 't', 'h', 'a', 'l', 'g', 'o', 't', 't', '.', 'n', 'e', 't', '\0',
   /* "thalhammer.it", true */ 't', 'h', 'a', 'l', 'h', 'a', 'm', 'm', 'e', 'r', '.', 'i', 't', '\0',
   /* "thalskarth.com", true */ 't', 'h', 'a', 'l', 's', 'k', 'a', 'r', 't', 'h', '.', 'c', 'o', 'm', '\0',
   /* "thamesfamilydentistry.com", true */ 't', 'h', 'a', 'm', 'e', 's', 'f', 'a', 'm', 'i', 'l', 'y', 'd', 'e', 'n', 't', 'i', 's', 't', 'r', 'y', '.', 'c', 'o', 'm', '\0',
   /* "thanatoid.net", true */ 't', 'h', 'a', 'n', 'a', 't', 'o', 'i', 'd', '.', 'n', 'e', 't', '\0',
   /* "thatgudstuff.com", true */ 't', 'h', 'a', 't', 'g', 'u', 'd', 's', 't', 'u', 'f', 'f', '.', 'c', 'o', 'm', '\0',
   /* "thatpodcast.io", true */ 't', 'h', 'a', 't', 'p', 'o', 'd', 'c', 'a', 's', 't', '.', 'i', 'o', '\0',
   /* "thatquiz.org", true */ 't', 'h', 'a', 't', 'q', 'u', 'i', 'z', '.', 'o', 'r', 'g', '\0',
@@ -19603,17 +19577,16 @@ static const char kSTSHostTable[] = {
   /* "thesignalco.com.au", true */ 't', 'h', 'e', 's', 'i', 'g', 'n', 'a', 'l', 'c', 'o', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "thesled.net", true */ 't', 'h', 'e', 's', 'l', 'e', 'd', '.', 'n', 'e', 't', '\0',
   /* "thesocialmediacentral.com", true */ 't', 'h', 'e', 's', 'o', 'c', 'i', 'a', 'l', 'm', 'e', 'd', 'i', 'a', 'c', 'e', 'n', 't', 'r', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "thesplit.is", true */ 't', 'h', 'e', 's', 'p', 'l', 'i', 't', '.', 'i', 's', '\0',
   /* "thestory.ie", true */ 't', 'h', 'e', 's', 't', 'o', 'r', 'y', '.', 'i', 'e', '\0',
   /* "thetechnical.me", true */ 't', 'h', 'e', 't', 'e', 'c', 'h', 'n', 'i', 'c', 'a', 'l', '.', 'm', 'e', '\0',
   /* "thethirdroad.com", true */ 't', 'h', 'e', 't', 'h', 'i', 'r', 'd', 'r', 'o', 'a', 'd', '.', 'c', 'o', 'm', '\0',
   /* "thetomharling.com", true */ 't', 'h', 'e', 't', 'o', 'm', 'h', 'a', 'r', 'l', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
-  /* "thetradinghall.com", true */ 't', 'h', 'e', 't', 'r', 'a', 'd', 'i', 'n', 'g', 'h', 'a', 'l', 'l', '.', 'c', 'o', 'm', '\0',
   /* "thetrendspotter.net", true */ 't', 'h', 'e', 't', 'r', 'e', 'n', 'd', 's', 'p', 'o', 't', 't', 'e', 'r', '.', 'n', 'e', 't', '\0',
   /* "thetruthhurvitz.com", true */ 't', 'h', 'e', 't', 'r', 'u', 't', 'h', 'h', 'u', 'r', 'v', 'i', 't', 'z', '.', 'c', 'o', 'm', '\0',
   /* "thetuxkeeper.de", true */ 't', 'h', 'e', 't', 'u', 'x', 'k', 'e', 'e', 'p', 'e', 'r', '.', 'd', 'e', '\0',
   /* "theunitedstates.io", true */ 't', 'h', 'e', 'u', 'n', 'i', 't', 'e', 'd', 's', 't', 'a', 't', 'e', 's', '.', 'i', 'o', '\0',
   /* "thevgg.com", true */ 't', 'h', 'e', 'v', 'g', 'g', '.', 'c', 'o', 'm', '\0',
   /* "thewebsitemarketingagency.com", true */ 't', 'h', 'e', 'w', 'e', 'b', 's', 'i', 't', 'e', 'm', 'a', 'r', 'k', 'e', 't', 'i', 'n', 'g', 'a', 'g', 'e', 'n', 'c', 'y', '.', 'c', 'o', 'm', '\0',
   /* "theweilai.com", false */ 't', 'h', 'e', 'w', 'e', 'i', 'l', 'a', 'i', '.', 'c', 'o', 'm', '\0',
   /* "thewhitehat.club", true */ 't', 'h', 'e', 'w', 'h', 'i', 't', 'e', 'h', 'a', 't', '.', 'c', 'l', 'u', 'b', '\0',
@@ -19652,16 +19625,17 @@ static const char kSTSHostTable[] = {
   /* "thom4s.info", true */ 't', 'h', 'o', 'm', '4', 's', '.', 'i', 'n', 'f', 'o', '\0',
   /* "thomalaudan.de", true */ 't', 'h', 'o', 'm', 'a', 'l', 'a', 'u', 'd', 'a', 'n', '.', 'd', 'e', '\0',
   /* "thomas-bertran.com", true */ 't', 'h', 'o', 'm', 'a', 's', '-', 'b', 'e', 'r', 't', 'r', 'a', 'n', '.', 'c', 'o', 'm', '\0',
   /* "thomas-gibertie.fr", true */ 't', 'h', 'o', 'm', 'a', 's', '-', 'g', 'i', 'b', 'e', 'r', 't', 'i', 'e', '.', 'f', 'r', '\0',
   /* "thomas-grobelny.de", true */ 't', 'h', 'o', 'm', 'a', 's', '-', 'g', 'r', 'o', 'b', 'e', 'l', 'n', 'y', '.', 'd', 'e', '\0',
   /* "thomas-suchon.fr", true */ 't', 'h', 'o', 'm', 'a', 's', '-', 's', 'u', 'c', 'h', 'o', 'n', '.', 'f', 'r', '\0',
   /* "thomasbeckers.be", true */ 't', 'h', 'o', 'm', 'a', 's', 'b', 'e', 'c', 'k', 'e', 'r', 's', '.', 'b', 'e', '\0',
   /* "thomasbreads.com", true */ 't', 'h', 'o', 'm', 'a', 's', 'b', 'r', 'e', 'a', 'd', 's', '.', 'c', 'o', 'm', '\0',
+  /* "thomascloud.ddns.net", true */ 't', 'h', 'o', 'm', 'a', 's', 'c', 'l', 'o', 'u', 'd', '.', 'd', 'd', 'n', 's', '.', 'n', 'e', 't', '\0',
   /* "thomasfoster.co", true */ 't', 'h', 'o', 'm', 'a', 's', 'f', 'o', 's', 't', 'e', 'r', '.', 'c', 'o', '\0',
   /* "thomasgriffin.io", true */ 't', 'h', 'o', 'm', 'a', 's', 'g', 'r', 'i', 'f', 'f', 'i', 'n', '.', 'i', 'o', '\0',
   /* "thomasharvey.me", true */ 't', 'h', 'o', 'm', 'a', 's', 'h', 'a', 'r', 'v', 'e', 'y', '.', 'm', 'e', '\0',
   /* "thomashunter.name", false */ 't', 'h', 'o', 'm', 'a', 's', 'h', 'u', 'n', 't', 'e', 'r', '.', 'n', 'a', 'm', 'e', '\0',
   /* "thomasmeester.nl", true */ 't', 'h', 'o', 'm', 'a', 's', 'm', 'e', 'e', 's', 't', 'e', 'r', '.', 'n', 'l', '\0',
   /* "thomasnet.fr", true */ 't', 'h', 'o', 'm', 'a', 's', 'n', 'e', 't', '.', 'f', 'r', '\0',
   /* "thomastimepieces.com.au", true */ 't', 'h', 'o', 'm', 'a', 's', 't', 'i', 'm', 'e', 'p', 'i', 'e', 'c', 'e', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "thomasvochten.com", true */ 't', 'h', 'o', 'm', 'a', 's', 'v', 'o', 'c', 'h', 't', 'e', 'n', '.', 'c', 'o', 'm', '\0',
@@ -19707,28 +19681,28 @@ static const char kSTSHostTable[] = {
   /* "tiacollection.com", true */ 't', 'i', 'a', 'c', 'o', 'l', 'l', 'e', 'c', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "tiagonunes.pt", true */ 't', 'i', 'a', 'g', 'o', 'n', 'u', 'n', 'e', 's', '.', 'p', 't', '\0',
   /* "tiaki.org", true */ 't', 'i', 'a', 'k', 'i', '.', 'o', 'r', 'g', '\0',
   /* "tianeptine.com", true */ 't', 'i', 'a', 'n', 'e', 'p', 't', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0',
   /* "tianshili.me", true */ 't', 'i', 'a', 'n', 's', 'h', 'i', 'l', 'i', '.', 'm', 'e', '\0',
   /* "tianxing.pro", true */ 't', 'i', 'a', 'n', 'x', 'i', 'n', 'g', '.', 'p', 'r', 'o', '\0',
   /* "tianxingvpn.pro", true */ 't', 'i', 'a', 'n', 'x', 'i', 'n', 'g', 'v', 'p', 'n', '.', 'p', 'r', 'o', '\0',
   /* "tianya.tv", true */ 't', 'i', 'a', 'n', 'y', 'a', '.', 't', 'v', '\0',
+  /* "tibbitshall.ca", true */ 't', 'i', 'b', 'b', 'i', 't', 's', 'h', 'a', 'l', 'l', '.', 'c', 'a', '\0',
   /* "ticfleet.com", true */ 't', 'i', 'c', 'f', 'l', 'e', 'e', 't', '.', 'c', 'o', 'm', '\0',
   /* "ticketmates.com.au", true */ 't', 'i', 'c', 'k', 'e', 't', 'm', 'a', 't', 'e', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "ticketoplichting.nl", true */ 't', 'i', 'c', 'k', 'e', 't', 'o', 'p', 'l', 'i', 'c', 'h', 't', 'i', 'n', 'g', '.', 'n', 'l', '\0',
   /* "ticketsourcebeta.co.uk", true */ 't', 'i', 'c', 'k', 'e', 't', 's', 'o', 'u', 'r', 'c', 'e', 'b', 'e', 't', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "tid.jp", true */ 't', 'i', 'd', '.', 'j', 'p', '\0',
   /* "tidycustoms.net", true */ 't', 'i', 'd', 'y', 'c', 'u', 's', 't', 'o', 'm', 's', '.', 'n', 'e', 't', '\0',
   /* "tiendavertigo.com", true */ 't', 'i', 'e', 'n', 'd', 'a', 'v', 'e', 'r', 't', 'i', 'g', 'o', '.', 'c', 'o', 'm', '\0',
   /* "tiens-ib.cz", true */ 't', 'i', 'e', 'n', 's', '-', 'i', 'b', '.', 'c', 'z', '\0',
   /* "tier-1-entrepreneur.com", true */ 't', 'i', 'e', 'r', '-', '1', '-', 'e', 'n', 't', 'r', 'e', 'p', 'r', 'e', 'n', 'e', 'u', 'r', '.', 'c', 'o', 'm', '\0',
   /* "tierarztpraxis-bogenhausen.de", true */ 't', 'i', 'e', 'r', 'a', 'r', 'z', 't', 'p', 'r', 'a', 'x', 'i', 's', '-', 'b', 'o', 'g', 'e', 'n', 'h', 'a', 'u', 's', 'e', 'n', '.', 'd', 'e', '\0',
   /* "tiernanx.com", true */ 't', 'i', 'e', 'r', 'n', 'a', 'n', 'x', '.', 'c', 'o', 'm', '\0',
-  /* "tierrarp.com", true */ 't', 'i', 'e', 'r', 'r', 'a', 'r', 'p', '.', 'c', 'o', 'm', '\0',
   /* "tifan.net", true */ 't', 'i', 'f', 'a', 'n', '.', 'n', 'e', 't', '\0',
   /* "tiffnix.com", true */ 't', 'i', 'f', 'f', 'n', 'i', 'x', '.', 'c', 'o', 'm', '\0',
   /* "tigerchef.com", true */ 't', 'i', 'g', 'e', 'r', 'c', 'h', 'e', 'f', '.', 'c', 'o', 'm', '\0',
   /* "tigerdile.com", true */ 't', 'i', 'g', 'e', 'r', 'd', 'i', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "tijden.nu", true */ 't', 'i', 'j', 'd', 'e', 'n', '.', 'n', 'u', '\0',
   /* "tiki-god.co.uk", true */ 't', 'i', 'k', 'i', '-', 'g', 'o', 'd', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "tiledailyshop.com", true */ 't', 'i', 'l', 'e', 'd', 'a', 'i', 'l', 'y', 's', 'h', 'o', 'p', '.', 'c', 'o', 'm', '\0',
   /* "tileyourvisit.pt", true */ 't', 'i', 'l', 'e', 'y', 'o', 'u', 'r', 'v', 'i', 's', 'i', 't', '.', 'p', 't', '\0',
@@ -20019,16 +19993,17 @@ static const char kSTSHostTable[] = {
   /* "toshkov.com", true */ 't', 'o', 's', 'h', 'k', 'o', 'v', '.', 'c', 'o', 'm', '\0',
   /* "tosteberg.se", true */ 't', 'o', 's', 't', 'e', 'b', 'e', 'r', 'g', '.', 's', 'e', '\0',
   /* "tostu.de", true */ 't', 'o', 's', 't', 'u', '.', 'd', 'e', '\0',
   /* "totaku.ru", true */ 't', 'o', 't', 'a', 'k', 'u', '.', 'r', 'u', '\0',
   /* "totalbeauty.co.uk", true */ 't', 'o', 't', 'a', 'l', 'b', 'e', 'a', 'u', 't', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "totalcarcheck.co.uk", true */ 't', 'o', 't', 'a', 'l', 'c', 'a', 'r', 'c', 'h', 'e', 'c', 'k', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "totalchecklist.com", true */ 't', 'o', 't', 'a', 'l', 'c', 'h', 'e', 'c', 'k', 'l', 'i', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "totalhomecareinc.com", true */ 't', 'o', 't', 'a', 'l', 'h', 'o', 'm', 'e', 'c', 'a', 'r', 'e', 'i', 'n', 'c', '.', 'c', 'o', 'm', '\0',
+  /* "totallylegitimatehosting.ru", true */ 't', 'o', 't', 'a', 'l', 'l', 'y', 'l', 'e', 'g', 'i', 't', 'i', 'm', 'a', 't', 'e', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'r', 'u', '\0',
   /* "totalprint.hu", true */ 't', 'o', 't', 'a', 'l', 'p', 'r', 'i', 'n', 't', '.', 'h', 'u', '\0',
   /* "totalsystemcare.com", true */ 't', 'o', 't', 'a', 'l', 's', 'y', 's', 't', 'e', 'm', 'c', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0',
   /* "totaltriathlon.com", true */ 't', 'o', 't', 'a', 'l', 't', 'r', 'i', 'a', 't', 'h', 'l', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "totalworkout.fitness", true */ 't', 'o', 't', 'a', 'l', 'w', 'o', 'r', 'k', 'o', 'u', 't', '.', 'f', 'i', 't', 'n', 'e', 's', 's', '\0',
   /* "totch.de", true */ 't', 'o', 't', 'c', 'h', '.', 'd', 'e', '\0',
   /* "totem-international.com", true */ 't', 'o', 't', 'e', 'm', '-', 'i', 'n', 't', 'e', 'r', 'n', 'a', 't', 'i', 'o', 'n', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "totobetty.com", true */ 't', 'o', 't', 'o', 'b', 'e', 't', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "totot.net", true */ 't', 'o', 't', 'o', 't', '.', 'n', 'e', 't', '\0',
@@ -20221,16 +20196,17 @@ static const char kSTSHostTable[] = {
   /* "triop.se", true */ 't', 'r', 'i', 'o', 'p', '.', 's', 'e', '\0',
   /* "trior.net", true */ 't', 'r', 'i', 'o', 'r', '.', 'n', 'e', 't', '\0',
   /* "tripcombi.com", true */ 't', 'r', 'i', 'p', 'c', 'o', 'm', 'b', 'i', '.', 'c', 'o', 'm', '\0',
   /* "triple-mmm.de", true */ 't', 'r', 'i', 'p', 'l', 'e', '-', 'm', 'm', 'm', '.', 'd', 'e', '\0',
   /* "tripseats.com", true */ 't', 'r', 'i', 'p', 's', 'e', 'a', 't', 's', '.', 'c', 'o', 'm', '\0',
   /* "trisportas.lt", true */ 't', 'r', 'i', 's', 'p', 'o', 'r', 't', 'a', 's', '.', 'l', 't', '\0',
   /* "trixexpressweb.nl", true */ 't', 'r', 'i', 'x', 'e', 'x', 'p', 'r', 'e', 's', 's', 'w', 'e', 'b', '.', 'n', 'l', '\0',
   /* "trkpuls.tk", true */ 't', 'r', 'k', 'p', 'u', 'l', 's', '.', 't', 'k', '\0',
+  /* "troedel-trolle.de", true */ 't', 'r', 'o', 'e', 'd', 'e', 'l', '-', 't', 'r', 'o', 'l', 'l', 'e', '.', 'd', 'e', '\0',
   /* "troianet.com.br", true */ 't', 'r', 'o', 'i', 'a', 'n', 'e', 't', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0',
   /* "trollmoa.se", true */ 't', 'r', 'o', 'l', 'l', 'm', 'o', 'a', '.', 's', 'e', '\0',
   /* "trollscave.xyz", true */ 't', 'r', 'o', 'l', 'l', 's', 'c', 'a', 'v', 'e', '.', 'x', 'y', 'z', '\0',
   /* "trommelwirbel.com", true */ 't', 'r', 'o', 'm', 'm', 'e', 'l', 'w', 'i', 'r', 'b', 'e', 'l', '.', 'c', 'o', 'm', '\0',
   /* "tronatic-studio.com", true */ 't', 'r', 'o', 'n', 'a', 't', 'i', 'c', '-', 's', 't', 'u', 'd', 'i', 'o', '.', 'c', 'o', 'm', '\0',
   /* "trondelan.no", true */ 't', 'r', 'o', 'n', 'd', 'e', 'l', 'a', 'n', '.', 'n', 'o', '\0',
   /* "troo.ly", true */ 't', 'r', 'o', 'o', '.', 'l', 'y', '\0',
   /* "trophee-discount.com", true */ 't', 'r', 'o', 'p', 'h', 'e', 'e', '-', 'd', 'i', 's', 'c', 'o', 'u', 'n', 't', '.', 'c', 'o', 'm', '\0',
@@ -20402,18 +20378,20 @@ static const char kSTSHostTable[] = {
   /* "txdivorce.org", true */ 't', 'x', 'd', 'i', 'v', 'o', 'r', 'c', 'e', '.', 'o', 'r', 'g', '\0',
   /* "txi.su", true */ 't', 'x', 'i', '.', 's', 'u', '\0',
   /* "txm.pl", true */ 't', 'x', 'm', '.', 'p', 'l', '\0',
   /* "tyche.io", true */ 't', 'y', 'c', 'h', 'e', '.', 'i', 'o', '\0',
   /* "tyil.nl", true */ 't', 'y', 'i', 'l', '.', 'n', 'l', '\0',
   /* "tyil.work", true */ 't', 'y', 'i', 'l', '.', 'w', 'o', 'r', 'k', '\0',
   /* "tykoon.com", true */ 't', 'y', 'k', 'o', 'o', 'n', '.', 'c', 'o', 'm', '\0',
   /* "tyl.io", true */ 't', 'y', 'l', '.', 'i', 'o', '\0',
+  /* "tyler.rs", true */ 't', 'y', 'l', 'e', 'r', '.', 'r', 's', '\0',
   /* "tylerdavies.net", true */ 't', 'y', 'l', 'e', 'r', 'd', 'a', 'v', 'i', 'e', 's', '.', 'n', 'e', 't', '\0',
   /* "tylerfreedman.com", true */ 't', 'y', 'l', 'e', 'r', 'f', 'r', 'e', 'e', 'd', 'm', 'a', 'n', '.', 'c', 'o', 'm', '\0',
+  /* "tyleromeara.com", true */ 't', 'y', 'l', 'e', 'r', 'o', 'm', 'e', 'a', 'r', 'a', '.', 'c', 'o', 'm', '\0',
   /* "tylerschmidtke.com", true */ 't', 'y', 'l', 'e', 'r', 's', 'c', 'h', 'm', 'i', 'd', 't', 'k', 'e', '.', 'c', 'o', 'm', '\0',
   /* "typeblog.net", true */ 't', 'y', 'p', 'e', 'b', 'l', 'o', 'g', '.', 'n', 'e', 't', '\0',
   /* "typecodes.com", true */ 't', 'y', 'p', 'e', 'c', 'o', 'd', 'e', 's', '.', 'c', 'o', 'm', '\0',
   /* "typehub.net", true */ 't', 'y', 'p', 'e', 'h', 'u', 'b', '.', 'n', 'e', 't', '\0',
   /* "typeofweb.com", true */ 't', 'y', 'p', 'e', 'o', 'f', 'w', 'e', 'b', '.', 'c', 'o', 'm', '\0',
   /* "typeonejoe.com", true */ 't', 'y', 'p', 'e', 'o', 'n', 'e', 'j', 'o', 'e', '.', 'c', 'o', 'm', '\0',
   /* "typeria.net", true */ 't', 'y', 'p', 'e', 'r', 'i', 'a', '.', 'n', 'e', 't', '\0',
   /* "typewolf.com", true */ 't', 'y', 'p', 'e', 'w', 'o', 'l', 'f', '.', 'c', 'o', 'm', '\0',
@@ -20630,17 +20608,16 @@ static const char kSTSHostTable[] = {
   /* "urban-culture.fr", true */ 'u', 'r', 'b', 'a', 'n', '-', 'c', 'u', 'l', 't', 'u', 'r', 'e', '.', 'f', 'r', '\0',
   /* "urban-garden.lt", true */ 'u', 'r', 'b', 'a', 'n', '-', 'g', 'a', 'r', 'd', 'e', 'n', '.', 'l', 't', '\0',
   /* "urban-garden.lv", true */ 'u', 'r', 'b', 'a', 'n', '-', 'g', 'a', 'r', 'd', 'e', 'n', '.', 'l', 'v', '\0',
   /* "urban.melbourne", true */ 'u', 'r', 'b', 'a', 'n', '.', 'm', 'e', 'l', 'b', 'o', 'u', 'r', 'n', 'e', '\0',
   /* "urbanesecurity.com", true */ 'u', 'r', 'b', 'a', 'n', 'e', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'c', 'o', 'm', '\0',
   /* "urbanietz-immobilien.de", true */ 'u', 'r', 'b', 'a', 'n', 'i', 'e', 't', 'z', '-', 'i', 'm', 'm', 'o', 'b', 'i', 'l', 'i', 'e', 'n', '.', 'd', 'e', '\0',
   /* "urbanmelbourne.info", true */ 'u', 'r', 'b', 'a', 'n', 'm', 'e', 'l', 'b', 'o', 'u', 'r', 'n', 'e', '.', 'i', 'n', 'f', 'o', '\0',
   /* "urbannewsservice.com", true */ 'u', 'r', 'b', 'a', 'n', 'n', 'e', 'w', 's', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'c', 'o', 'm', '\0',
-  /* "urbanstylestaging.com", true */ 'u', 'r', 'b', 'a', 'n', 's', 't', 'y', 'l', 'e', 's', 't', 'a', 'g', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "urbanwildlifealliance.org", true */ 'u', 'r', 'b', 'a', 'n', 'w', 'i', 'l', 'd', 'l', 'i', 'f', 'e', 'a', 'l', 'l', 'i', 'a', 'n', 'c', 'e', '.', 'o', 'r', 'g', '\0',
   /* "urbexdk.nl", true */ 'u', 'r', 'b', 'e', 'x', 'd', 'k', '.', 'n', 'l', '\0',
   /* "urcentral.com", true */ 'u', 'r', 'c', 'e', 'n', 't', 'r', 'a', 'l', '.', 'c', 'o', 'm', '\0',
   /* "ureka.org", true */ 'u', 'r', 'e', 'k', 'a', '.', 'o', 'r', 'g', '\0',
   /* "uripura.de", true */ 'u', 'r', 'i', 'p', 'u', 'r', 'a', '.', 'd', 'e', '\0',
   /* "urist1011.ru", true */ 'u', 'r', 'i', 's', 't', '1', '0', '1', '1', '.', 'r', 'u', '\0',
   /* "url.cab", true */ 'u', 'r', 'l', '.', 'c', 'a', 'b', '\0',
   /* "url.fi", true */ 'u', 'r', 'l', '.', 'f', 'i', '\0',
@@ -20732,17 +20709,16 @@ static const char kSTSHostTable[] = {
   /* "vaew.com", true */ 'v', 'a', 'e', 'w', '.', 'c', 'o', 'm', '\0',
   /* "vagabond.fr", true */ 'v', 'a', 'g', 'a', 'b', 'o', 'n', 'd', '.', 'f', 'r', '\0',
   /* "vagmour.eu", true */ 'v', 'a', 'g', 'm', 'o', 'u', 'r', '.', 'e', 'u', '\0',
   /* "vagpartsdb.com", true */ 'v', 'a', 'g', 'p', 'a', 'r', 't', 's', 'd', 'b', '.', 'c', 'o', 'm', '\0',
   /* "vagrantup.com", true */ 'v', 'a', 'g', 'r', 'a', 'n', 't', 'u', 'p', '.', 'c', 'o', 'm', '\0',
   /* "vaioswolke.xyz", true */ 'v', 'a', 'i', 'o', 's', 'w', 'o', 'l', 'k', 'e', '.', 'x', 'y', 'z', '\0',
   /* "vakantienet.nl", true */ 'v', 'a', 'k', 'a', 'n', 't', 'i', 'e', 'n', 'e', 't', '.', 'n', 'l', '\0',
   /* "vakuutuskanava.fi", true */ 'v', 'a', 'k', 'u', 'u', 't', 'u', 's', 'k', 'a', 'n', 'a', 'v', 'a', '.', 'f', 'i', '\0',
-  /* "val-sec.com", true */ 'v', 'a', 'l', '-', 's', 'e', 'c', '.', 'c', 'o', 'm', '\0',
   /* "valasi.eu", true */ 'v', 'a', 'l', 'a', 's', 'i', '.', 'e', 'u', '\0',
   /* "valbonne-consulting.com", true */ 'v', 'a', 'l', 'b', 'o', 'n', 'n', 'e', '-', 'c', 'o', 'n', 's', 'u', 'l', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0',
   /* "valenhub.com", true */ 'v', 'a', 'l', 'e', 'n', 'h', 'u', 'b', '.', 'c', 'o', 'm', '\0',
   /* "valenhub.es", true */ 'v', 'a', 'l', 'e', 'n', 'h', 'u', 'b', '.', 'e', 's', '\0',
   /* "valenscaelum.com", true */ 'v', 'a', 'l', 'e', 'n', 's', 'c', 'a', 'e', 'l', 'u', 'm', '.', 'c', 'o', 'm', '\0',
   /* "valentin-sundermann.de", true */ 'v', 'a', 'l', 'e', 'n', 't', 'i', 'n', '-', 's', 'u', 'n', 'd', 'e', 'r', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0',
   /* "valentinritz.com", true */ 'v', 'a', 'l', 'e', 'n', 't', 'i', 'n', 'r', 'i', 't', 'z', '.', 'c', 'o', 'm', '\0',
   /* "valeriansaliou.name", true */ 'v', 'a', 'l', 'e', 'r', 'i', 'a', 'n', 's', 'a', 'l', 'i', 'o', 'u', '.', 'n', 'a', 'm', 'e', '\0',
@@ -21349,16 +21325,17 @@ static const char kSTSHostTable[] = {
   /* "webreport.fr", true */ 'w', 'e', 'b', 'r', 'e', 'p', 'o', 'r', 't', '.', 'f', 'r', '\0',
   /* "webreslist.com", true */ 'w', 'e', 'b', 'r', 'e', 's', 'l', 'i', 's', 't', '.', 'c', 'o', 'm', '\0',
   /* "webs4all.ro", true */ 'w', 'e', 'b', 's', '4', 'a', 'l', 'l', '.', 'r', 'o', '\0',
   /* "webscale.nl", true */ 'w', 'e', 'b', 's', 'c', 'a', 'l', 'e', '.', 'n', 'l', '\0',
   /* "websectools.com", true */ 'w', 'e', 'b', 's', 'e', 'c', 't', 'o', 'o', 'l', 's', '.', 'c', 'o', 'm', '\0',
   /* "websecurity.is", true */ 'w', 'e', 'b', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', '.', 'i', 's', '\0',
   /* "webseitendesigner.com", false */ 'w', 'e', 'b', 's', 'e', 'i', 't', 'e', 'n', 'd', 'e', 's', 'i', 'g', 'n', 'e', 'r', '.', 'c', 'o', 'm', '\0',
   /* "webseitenserver.com", true */ 'w', 'e', 'b', 's', 'e', 'i', 't', 'e', 'n', 's', 'e', 'r', 'v', 'e', 'r', '.', 'c', 'o', 'm', '\0',
+  /* "websenat.de", true */ 'w', 'e', 'b', 's', 'e', 'n', 'a', 't', '.', 'd', 'e', '\0',
   /* "websiteadvice.com.au", true */ 'w', 'e', 'b', 's', 'i', 't', 'e', 'a', 'd', 'v', 'i', 'c', 'e', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0',
   /* "websitedesign.bg", true */ 'w', 'e', 'b', 's', 'i', 't', 'e', 'd', 'e', 's', 'i', 'g', 'n', '.', 'b', 'g', '\0',
   /* "websiteservice.pro", true */ 'w', 'e', 'b', 's', 'i', 't', 'e', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'p', 'r', 'o', '\0',
   /* "webspotter.nl", true */ 'w', 'e', 'b', 's', 'p', 'o', 't', 't', 'e', 'r', '.', 'n', 'l', '\0',
   /* "webstore.be", false */ 'w', 'e', 'b', 's', 't', 'o', 'r', 'e', '.', 'b', 'e', '\0',
   /* "webstudio-n.com", true */ 'w', 'e', 'b', 's', 't', 'u', 'd', 'i', 'o', '-', 'n', '.', 'c', 'o', 'm', '\0',
   /* "webstylemedia.com", true */ 'w', 'e', 'b', 's', 't', 'y', 'l', 'e', 'm', 'e', 'd', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "webtalis.nl", true */ 'w', 'e', 'b', 't', 'a', 'l', 'i', 's', '.', 'n', 'l', '\0',
@@ -22012,16 +21989,17 @@ static const char kSTSHostTable[] = {
   /* "xmedius.com", false */ 'x', 'm', 'e', 'd', 'i', 'u', 's', '.', 'c', 'o', 'm', '\0',
   /* "xmedius.eu", true */ 'x', 'm', 'e', 'd', 'i', 'u', 's', '.', 'e', 'u', '\0',
   /* "xmlbeam.org", true */ 'x', 'm', 'l', 'b', 'e', 'a', 'm', '.', 'o', 'r', 'g', '\0',
   /* "xmpp.dk", true */ 'x', 'm', 'p', 'p', '.', 'd', 'k', '\0',
   /* "xmr.to", true */ 'x', 'm', 'r', '.', 't', 'o', '\0',
   /* "xmv.cz", true */ 'x', 'm', 'v', '.', 'c', 'z', '\0',
   /* "xn----7sbmucgqdbgwwc5e9b.xn--p1ai", true */ 'x', 'n', '-', '-', '-', '-', '7', 's', 'b', 'm', 'u', 'c', 'g', 'q', 'd', 'b', 'g', 'w', 'w', 'c', '5', 'e', '9', 'b', '.', 'x', 'n', '-', '-', 'p', '1', 'a', 'i', '\0',
   /* "xn----8hcdn2ankm1bfq.com", true */ 'x', 'n', '-', '-', '-', '-', '8', 'h', 'c', 'd', 'n', '2', 'a', 'n', 'k', 'm', '1', 'b', 'f', 'q', '.', 'c', 'o', 'm', '\0',
+  /* "xn--0kqx72g4gftob.com", true */ 'x', 'n', '-', '-', '0', 'k', 'q', 'x', '7', '2', 'g', '4', 'g', 'f', 't', 'o', 'b', '.', 'c', 'o', 'm', '\0',
   /* "xn--3lqp21gwna.cn", true */ 'x', 'n', '-', '-', '3', 'l', 'q', 'p', '2', '1', 'g', 'w', 'n', 'a', '.', 'c', 'n', '\0',
   /* "xn--3lqp21gwna.xn--fiqs8s", true */ 'x', 'n', '-', '-', '3', 'l', 'q', 'p', '2', '1', 'g', 'w', 'n', 'a', '.', 'x', 'n', '-', '-', 'f', 'i', 'q', 's', '8', 's', '\0',
   /* "xn--3lqp21gwna.xn--fiqz9s", true */ 'x', 'n', '-', '-', '3', 'l', 'q', 'p', '2', '1', 'g', 'w', 'n', 'a', '.', 'x', 'n', '-', '-', 'f', 'i', 'q', 'z', '9', 's', '\0',
   /* "xn--4dbjwf8c.ml", true */ 'x', 'n', '-', '-', '4', 'd', 'b', 'j', 'w', 'f', '8', 'c', '.', 'm', 'l', '\0',
   /* "xn--6cv66l79sp0n0ibo7s9ne.xyz", true */ 'x', 'n', '-', '-', '6', 'c', 'v', '6', '6', 'l', '7', '9', 's', 'p', '0', 'n', '0', 'i', 'b', 'o', '7', 's', '9', 'n', 'e', '.', 'x', 'y', 'z', '\0',
   /* "xn--7v8h.cf", true */ 'x', 'n', '-', '-', '7', 'v', '8', 'h', '.', 'c', 'f', '\0',
   /* "xn--7xa.google.com", true */ 'x', 'n', '-', '-', '7', 'x', 'a', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', '\0',
   /* "xn--80azelb.xn--p1ai", true */ 'x', 'n', '-', '-', '8', '0', 'a', 'z', 'e', 'l', 'b', '.', 'x', 'n', '-', '-', 'p', '1', 'a', 'i', '\0',
@@ -22081,17 +22059,16 @@ static const char kSTSHostTable[] = {
   /* "xn5.de", true */ 'x', 'n', '5', '.', 'd', 'e', '\0',
   /* "xnaas.info", true */ 'x', 'n', 'a', 'a', 's', '.', 'i', 'n', 'f', 'o', '\0',
   /* "xng.io", true */ 'x', 'n', 'g', '.', 'i', 'o', '\0',
   /* "xninja.xyz", true */ 'x', 'n', 'i', 'n', 'j', 'a', '.', 'x', 'y', 'z', '\0',
   /* "xnode.org", true */ 'x', 'n', 'o', 'd', 'e', '.', 'o', 'r', 'g', '\0',
   /* "xo.tc", true */ 'x', 'o', '.', 't', 'c', '\0',
   /* "xolphin.nl", true */ 'x', 'o', 'l', 'p', 'h', 'i', 'n', '.', 'n', 'l', '\0',
   /* "xombitgames.com", true */ 'x', 'o', 'm', 'b', 'i', 't', 'g', 'a', 'm', 'e', 's', '.', 'c', 'o', 'm', '\0',
-  /* "xombitmusic.com", true */ 'x', 'o', 'm', 'b', 'i', 't', 'm', 'u', 's', 'i', 'c', '.', 'c', 'o', 'm', '\0',
   /* "xombra.com", true */ 'x', 'o', 'm', 'b', 'r', 'a', '.', 'c', 'o', 'm', '\0',
   /* "xotika.tv", true */ 'x', 'o', 't', 'i', 'k', 'a', '.', 't', 'v', '\0',
   /* "xp2.de", true */ 'x', 'p', '2', '.', 'd', 'e', '\0',
   /* "xpd.se", true */ 'x', 'p', 'd', '.', 's', 'e', '\0',
   /* "xpenology-fr.net", true */ 'x', 'p', 'e', 'n', 'o', 'l', 'o', 'g', 'y', '-', 'f', 'r', '.', 'n', 'e', 't', '\0',
   /* "xperidia.com", true */ 'x', 'p', 'e', 'r', 'i', 'd', 'i', 'a', '.', 'c', 'o', 'm', '\0',
   /* "xpj.sx", true */ 'x', 'p', 'j', '.', 's', 'x', '\0',
   /* "xplore-dna.net", true */ 'x', 'p', 'l', 'o', 'r', 'e', '-', 'd', 'n', 'a', '.', 'n', 'e', 't', '\0',
@@ -22258,16 +22235,17 @@ static const char kSTSHostTable[] = {
   /* "youlog.net", true */ 'y', 'o', 'u', 'l', 'o', 'g', '.', 'n', 'e', 't', '\0',
   /* "youms.de", true */ 'y', 'o', 'u', 'm', 's', '.', 'd', 'e', '\0',
   /* "youngdogs.org", true */ 'y', 'o', 'u', 'n', 'g', 'd', 'o', 'g', 's', '.', 'o', 'r', 'g', '\0',
   /* "youngfree.cn", true */ 'y', 'o', 'u', 'n', 'g', 'f', 'r', 'e', 'e', '.', 'c', 'n', '\0',
   /* "youpark.no", true */ 'y', 'o', 'u', 'p', 'a', 'r', 'k', '.', 'n', 'o', '\0',
   /* "youran.me", true */ 'y', 'o', 'u', 'r', 'a', 'n', '.', 'm', 'e', '\0',
   /* "yourciso.com", true */ 'y', 'o', 'u', 'r', 'c', 'i', 's', 'o', '.', 'c', 'o', 'm', '\0',
   /* "yourcopywriter.it", true */ 'y', 'o', 'u', 'r', 'c', 'o', 'p', 'y', 'w', 'r', 'i', 't', 'e', 'r', '.', 'i', 't', '\0',
+  /* "yourdaddy.dk", true */ 'y', 'o', 'u', 'r', 'd', 'a', 'd', 'd', 'y', '.', 'd', 'k', '\0',
   /* "yourgame.co.il", true */ 'y', 'o', 'u', 'r', 'g', 'a', 'm', 'e', '.', 'c', 'o', '.', 'i', 'l', '\0',
   /* "yourgames.tv", true */ 'y', 'o', 'u', 'r', 'g', 'a', 'm', 'e', 's', '.', 't', 'v', '\0',
   /* "yourhair.net", true */ 'y', 'o', 'u', 'r', 'h', 'a', 'i', 'r', '.', 'n', 'e', 't', '\0',
   /* "yourself.today", true */ 'y', 'o', 'u', 'r', 's', 'e', 'l', 'f', '.', 't', 'o', 'd', 'a', 'y', '\0',
   /* "yourznc.com", true */ 'y', 'o', 'u', 'r', 'z', 'n', 'c', '.', 'c', 'o', 'm', '\0',
   /* "yout.com", true */ 'y', 'o', 'u', 't', '.', 'c', 'o', 'm', '\0',
   /* "youtous.me", true */ 'y', 'o', 'u', 't', 'o', 'u', 's', '.', 'm', 'e', '\0',
   /* "youtubedownloader.com", true */ 'y', 'o', 'u', 't', 'u', 'b', 'e', 'd', 'o', 'w', 'n', 'l', 'o', 'a', 'd', 'e', 'r', '.', 'c', 'o', 'm', '\0',
@@ -22347,17 +22325,16 @@ static const char kSTSHostTable[] = {
   /* "zaalleatherwear.nl", false */ 'z', 'a', 'a', 'l', 'l', 'e', 'a', 't', 'h', 'e', 'r', 'w', 'e', 'a', 'r', '.', 'n', 'l', '\0',
   /* "zabszk.net", true */ 'z', 'a', 'b', 's', 'z', 'k', '.', 'n', 'e', 't', '\0',
   /* "zacarias.com.ar", true */ 'z', 'a', 'c', 'a', 'r', 'i', 'a', 's', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0',
   /* "zachborboa.com", true */ 'z', 'a', 'c', 'h', 'b', 'o', 'r', 'b', 'o', 'a', '.', 'c', 'o', 'm', '\0',
   /* "zachgibbens.org", true */ 'z', 'a', 'c', 'h', 'g', 'i', 'b', 'b', 'e', 'n', 's', '.', 'o', 'r', 'g', '\0',
   /* "zachpeters.org", true */ 'z', 'a', 'c', 'h', 'p', 'e', 't', 'e', 'r', 's', '.', 'o', 'r', 'g', '\0',
   /* "zaclys.com", true */ 'z', 'a', 'c', 'l', 'y', 's', '.', 'c', 'o', 'm', '\0',
   /* "zadroweb.com", true */ 'z', 'a', 'd', 'r', 'o', 'w', 'e', 'b', '.', 'c', 'o', 'm', '\0',
-  /* "zafirus.name", true */ 'z', 'a', 'f', 'i', 'r', 'u', 's', '.', 'n', 'a', 'm', 'e', '\0',
   /* "zaidan.de", true */ 'z', 'a', 'i', 'd', 'a', 'n', '.', 'd', 'e', '\0',
   /* "zaidan.eu", true */ 'z', 'a', 'i', 'd', 'a', 'n', '.', 'e', 'u', '\0',
   /* "zaidanfood.com", true */ 'z', 'a', 'i', 'd', 'a', 'n', 'f', 'o', 'o', 'd', '.', 'c', 'o', 'm', '\0',
   /* "zaidanfood.eu", true */ 'z', 'a', 'i', 'd', 'a', 'n', 'f', 'o', 'o', 'd', '.', 'e', 'u', '\0',
   /* "zaidanlebensmittelhandel.de", true */ 'z', 'a', 'i', 'd', 'a', 'n', 'l', 'e', 'b', 'e', 'n', 's', 'm', 'i', 't', 't', 'e', 'l', 'h', 'a', 'n', 'd', 'e', 'l', '.', 'd', 'e', '\0',
   /* "zajazd.biz", true */ 'z', 'a', 'j', 'a', 'z', 'd', '.', 'b', 'i', 'z', '\0',
   /* "zakcutner.uk", true */ 'z', 'a', 'k', 'c', 'u', 't', 'n', 'e', 'r', '.', 'u', 'k', '\0',
   /* "zakladam.cz", true */ 'z', 'a', 'k', 'l', 'a', 'd', 'a', 'm', '.', 'c', 'z', '\0',
@@ -22554,16 +22531,17 @@ static const char kSTSHostTable[] = {
   /* "zuzumba.es", true */ 'z', 'u', 'z', 'u', 'm', 'b', 'a', '.', 'e', 's', '\0',
   /* "zvps.uk", true */ 'z', 'v', 'p', 's', '.', 'u', 'k', '\0',
   /* "zvxr.net", true */ 'z', 'v', 'x', 'r', '.', 'n', 'e', 't', '\0',
   /* "zwalcz-cellulit.com", true */ 'z', 'w', 'a', 'l', 'c', 'z', '-', 'c', 'e', 'l', 'l', 'u', 'l', 'i', 't', '.', 'c', 'o', 'm', '\0',
   /* "zwartendijkstalling.nl", true */ 'z', 'w', 'a', 'r', 't', 'e', 'n', 'd', 'i', 'j', 'k', 's', 't', 'a', 'l', 'l', 'i', 'n', 'g', '.', 'n', 'l', '\0',
   /* "zwb3.de", true */ 'z', 'w', 'b', '3', '.', 'd', 'e', '\0',
   /* "zwerimex.com", true */ 'z', 'w', 'e', 'r', 'i', 'm', 'e', 'x', '.', 'c', 'o', 'm', '\0',
   /* "zwollemag.nl", true */ 'z', 'w', 'o', 'l', 'l', 'e', 'm', 'a', 'g', '.', 'n', 'l', '\0',
+  /* "zwy.me", false */ 'z', 'w', 'y', '.', 'm', 'e', '\0',
   /* "zx6rninja.de", true */ 'z', 'x', '6', 'r', 'n', 'i', 'n', 'j', 'a', '.', 'd', 'e', '\0',
   /* "zxity.co.uk", true */ 'z', 'x', 'i', 't', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0',
   /* "zxity.ltd", true */ 'z', 'x', 'i', 't', 'y', '.', 'l', 't', 'd', '\0',
   /* "zxity.uk", true */ 'z', 'x', 'i', 't', 'y', '.', 'u', 'k', '\0',
   /* "zxtcode.com", true */ 'z', 'x', 't', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '\0',
   /* "zybbo.com", true */ 'z', 'y', 'b', 'b', 'o', '.', 'c', 'o', 'm', '\0',
   /* "zymmm.com", true */ 'z', 'y', 'm', 'm', 'm', '.', 'c', 'o', 'm', '\0',
   /* "zync.ca", true */ 'z', 'y', 'n', 'c', '.', 'c', 'a', '\0',
@@ -22685,22464 +22663,22442 @@ static const nsSTSPreload kSTSPreloadLis
   { 1142, true },
   { 1153, false },
   { 1169, true },
   { 1180, true },
   { 1188, false },
   { 1200, true },
   { 1210, true },
   { 1235, true },
-  { 1257, true },
-  { 1274, true },
-  { 1297, true },
-  { 1307, true },
-  { 1318, true },
-  { 1331, true },
-  { 1345, true },
-  { 1352, true },
-  { 1374, true },
-  { 1384, true },
-  { 1396, true },
-  { 1403, true },
-  { 1414, true },
+  { 1260, true },
+  { 1282, true },
+  { 1299, true },
+  { 1322, true },
+  { 1332, true },
+  { 1343, true },
+  { 1356, true },
+  { 1370, true },
+  { 1377, true },
+  { 1399, true },
+  { 1409, true },
   { 1421, true },
-  { 1429, true },
-  { 1440, true },
-  { 1451, false },
-  { 1457, true },
-  { 1470, true },
-  { 1480, true },
-  { 1487, true },
-  { 1494, true },
+  { 1428, true },
+  { 1439, true },
+  { 1446, true },
+  { 1454, true },
+  { 1465, true },
+  { 1476, false },
+  { 1482, true },
+  { 1495, true },
   { 1505, true },
   { 1512, true },
-  { 1523, true },
-  { 1535, true },
-  { 1552, true },
-  { 1566, true },
-  { 1578, true },
-  { 1589, true },
-  { 1598, true },
-  { 1604, true },
-  { 1618, true },
-  { 1633, true },
-  { 1640, true },
-  { 1648, true },
-  { 1657, true },
-  { 1668, true },
-  { 1677, true },
-  { 1685, true },
-  { 1695, true },
-  { 1713, true },
-  { 1731, true },
-  { 1740, true },
-  { 1748, true },
+  { 1519, true },
+  { 1530, true },
+  { 1537, true },
+  { 1548, true },
+  { 1560, true },
+  { 1577, true },
+  { 1591, true },
+  { 1603, true },
+  { 1614, true },
+  { 1623, true },
+  { 1629, true },
+  { 1643, true },
+  { 1658, true },
+  { 1665, true },
+  { 1673, true },
+  { 1682, true },
+  { 1693, true },
+  { 1702, true },
+  { 1710, true },
+  { 1720, true },
+  { 1738, true },
   { 1756, true },
-  { 1764, true },
-  { 1780, true },
-  { 1798, true },
-  { 1809, true },
-  { 1818, true },
-  { 1827, true },
-  { 1837, true },
-  { 1849, true },
-  { 1863, true },
-  { 1871, true },
-  { 1884, true },
-  { 1894, true },
-  { 1903, true },
-  { 1912, true },
-  { 1921, true },
-  { 1930, true },
-  { 1941, true },
-  { 1952, true },
-  { 1963, false },
-  { 1976, true },
-  { 1985, true },
-  { 1999, true },
-  { 2006, true },
-  { 2017, true },
-  { 2026, true },
-  { 2047, true },
-  { 2056, true },
-  { 2068, true },
-  { 2082, true },
-  { 2092, true },
+  { 1765, true },
+  { 1773, true },
+  { 1781, true },
+  { 1789, true },
+  { 1805, true },
+  { 1823, true },
+  { 1834, true },
+  { 1843, true },
+  { 1852, true },
+  { 1862, true },
+  { 1874, true },
+  { 1888, true },
+  { 1896, true },
+  { 1909, true },
+  { 1919, true },
+  { 1928, true },
+  { 1937, true },
+  { 1946, true },
+  { 1955, true },
+  { 1966, true },
+  { 1977, true },
+  { 1988, false },
+  { 2001, true },
+  { 2010, true },
+  { 2024, true },
+  { 2031, true },
+  { 2042, true },
+  { 2051, true },
+  { 2072, true },
+  { 2081, true },
+  { 2093, true },
   { 2107, true },
-  { 2115, true },
+  { 2117, true },
   { 2132, true },
-  { 2148, true },
-  { 2161, true },
+  { 2140, true },
+  { 2157, true },
   { 2173, true },
-  { 2185, true },
-  { 2193, true },
-  { 2204, true },
-  { 2211, true },
-  { 2220, true },
+  { 2186, true },
+  { 2198, true },
+  { 2210, true },
+  { 2218, true },
   { 2229, true },
-  { 2237, true },
-  { 2244, true },
-  { 2257, true },
-  { 2266, true },
-  { 2277, true },
-  { 2286, true },
-  { 2305, true },
-  { 2316, true },
-  { 2335, true },
-  { 2354, true },
-  { 2366, true },
-  { 2380, true },
-  { 2389, true },
-  { 2401, true },
-  { 2412, true },
-  { 2422, true },
-  { 2431, true },
-  { 2441, true },
-  { 2449, true },
-  { 2464, true },
-  { 2477, true },
-  { 2485, true },
-  { 2495, true },
-  { 2513, true },
+  { 2236, true },
+  { 2245, true },
+  { 2254, true },
+  { 2262, true },
+  { 2269, true },
+  { 2282, true },
+  { 2291, true },
+  { 2302, true },
+  { 2311, true },
+  { 2330, true },
+  { 2341, true },
+  { 2360, true },
+  { 2379, true },
+  { 2391, true },
+  { 2405, true },
+  { 2414, true },
+  { 2426, true },
+  { 2437, true },
+  { 2447, true },
+  { 2456, true },
+  { 2466, true },
+  { 2474, true },
+  { 2489, true },
+  { 2502, true },
+  { 2510, true },
   { 2520, true },
-  { 2534, true },
+  { 2538, true },
   { 2545, true },
-  { 2557, true },
+  { 2559, true },
   { 2570, true },
-  { 2590, true },
-  { 2605, true },
-  { 2625, true },
-  { 2645, true },
-  { 2654, true },
-  { 2664, true },
-  { 2678, true },
-  { 2692, true },
-  { 2702, true },
-  { 2711, true },
-  { 2730, true },
-  { 2744, true },
-  { 2752, true },
-  { 2759, true },
-  { 2773, true },
-  { 2792, true },
-  { 2803, true },
-  { 2816, true },
-  { 2825, true },
-  { 2837, true },
-  { 2848, true },
-  { 2867, true },
-  { 2878, true },
-  { 2889, true },
-  { 2900, true },
-  { 2910, true },
-  { 2918, true },
-  { 2928, true },
-  { 2939, true },
-  { 2954, false },
-  { 2967, true },
-  { 2977, true },
-  { 2985, true },
-  { 2993, true },
-  { 3005, true },
-  { 3016, true },
-  { 3031, true },
+  { 2582, true },
+  { 2595, true },
+  { 2615, true },
+  { 2630, true },
+  { 2650, true },
+  { 2670, true },
+  { 2679, true },
+  { 2689, true },
+  { 2699, true },
+  { 2713, true },
+  { 2727, true },
+  { 2737, true },
+  { 2746, true },
+  { 2765, true },
+  { 2779, true },
+  { 2787, true },
+  { 2794, true },
+  { 2808, true },
+  { 2827, true },
+  { 2838, true },
+  { 2851, true },
+  { 2860, true },
+  { 2872, true },
+  { 2883, true },
+  { 2902, true },
+  { 2913, true },
+  { 2923, true },
+  { 2934, true },
+  { 2945, true },
+  { 2955, true },
+  { 2963, true },
+  { 2973, true },
+  { 2984, true },
+  { 2999, false },
+  { 3012, true },
+  { 3022, true },
+  { 3030, true },
+  { 3038, true },
   { 3050, true },
-  { 3062, true },
-  { 3073, true },
-  { 3080, true },
-  { 3090, true },
-  { 3096, true },
-  { 3105, true },
-  { 3113, true },
-  { 3126, true },
+  { 3061, true },
+  { 3076, true },
+  { 3095, true },
+  { 3107, true },
+  { 3118, true },
+  { 3125, true },
   { 3135, true },
-  { 3149, true },
-  { 3161, true },
-  { 3170, true },
-  { 3183, true },
-  { 3193, true },
-  { 3232, true },
-  { 3242, false },
-  { 3249, true },
-  { 3260, true },
-  { 3272, true },
-  { 3284, true },
-  { 3296, true },
-  { 3308, true },
-  { 3319, true },
-  { 3330, true },
-  { 3342, true },
-  { 3350, true },
-  { 3366, true },
-  { 3373, true },
-  { 3382, true },
-  { 3401, true },
-  { 3409, true },
-  { 3416, true },
+  { 3141, true },
+  { 3150, true },
+  { 3158, true },
+  { 3171, true },
+  { 3180, true },
+  { 3194, true },
+  { 3206, true },
+  { 3215, true },
+  { 3228, true },
+  { 3238, true },
+  { 3277, true },
+  { 3287, false },
+  { 3294, true },
+  { 3305, true },
+  { 3317, true },
+  { 3329, true },
+  { 3341, true },
+  { 3353, true },
+  { 3364, true },
+  { 3375, true },
+  { 3387, true },
+  { 3395, true },
+  { 3411, true },
+  { 3418, true },
   { 3427, true },
   { 3437, true },
-  { 3449, true },
-  { 3466, true },
-  { 3473, true },
+  { 3456, true },
+  { 3464, true },
+  { 3471, true },
   { 3482, true },
-  { 3503, true },
-  { 3527, true },
-  { 3539, true },
-  { 3554, true },
-  { 3562, true },
-  { 3573, true },
-  { 3579, true },
-  { 3590, true },
-  { 3600, true },
-  { 3611, true },
-  { 3622, true },
-  { 3635, true },
-  { 3647, true },
-  { 3659, true },
-  { 3669, true },
+  { 3492, true },
+  { 3504, true },
+  { 3521, true },
+  { 3528, true },
+  { 3537, true },
+  { 3558, true },
+  { 3582, true },
+  { 3594, true },
+  { 3609, true },
+  { 3617, true },
+  { 3628, true },
+  { 3634, true },
+  { 3645, true },
+  { 3655, true },
+  { 3666, true },
   { 3677, true },
-  { 3693, true },
-  { 3703, false },
-  { 3710, true },
-  { 3727, true },
-  { 3736, true },
-  { 3743, true },
-  { 3752, true },
-  { 3773, true },
-  { 3786, true },
-  { 3801, false },
-  { 3814, true },
-  { 3824, true },
-  { 3877, true },
-  { 3889, true },
-  { 3898, true },
-  { 3908, true },
-  { 3918, true },
+  { 3690, true },
+  { 3702, true },
+  { 3714, true },
+  { 3724, true },
+  { 3732, true },
+  { 3748, true },
+  { 3758, false },
+  { 3765, true },
+  { 3782, true },
+  { 3791, true },
+  { 3798, true },
+  { 3807, true },
+  { 3828, true },
+  { 3841, true },
+  { 3856, false },
+  { 3869, true },
+  { 3879, true },
   { 3932, true },
-  { 3942, true },
-  { 3950, true },
-  { 3957, true },
-  { 3985, true },
+  { 3944, true },
+  { 3953, true },
+  { 3963, true },
+  { 3973, true },
+  { 3987, true },
   { 3997, true },
-  { 4006, true },
-  { 4028, true },
-  { 4044, true },
-  { 4049, true },
-  { 4073, true },
+  { 4005, true },
+  { 4012, true },
+  { 4040, true },
+  { 4052, true },
+  { 4061, true },
   { 4083, true },
-  { 4091, true },
-  { 4102, true },
-  { 4110, true },
-  { 4129, true },
+  { 4099, true },
+  { 4104, true },
+  { 4128, true },
+  { 4138, true },
   { 4146, true },
   { 4157, true },
-  { 4168, true },
-  { 4182, true },
-  { 4196, true },
-  { 4206, true },
-  { 4224, true },
-  { 4235, true },
-  { 4248, true },
-  { 4265, true },
-  { 4281, true },
-  { 4296, true },
-  { 4304, true },
-  { 4321, true },
+  { 4165, true },
+  { 4184, true },
+  { 4201, true },
+  { 4212, true },
+  { 4223, true },
+  { 4237, true },
+  { 4251, true },
+  { 4261, true },
+  { 4279, true },
+  { 4290, true },
+  { 4303, true },
+  { 4320, true },
   { 4336, true },
   { 4351, true },
-  { 4362, true },
-  { 4374, true },
-  { 4390, true },
-  { 4400, true },
-  { 4407, true },
-  { 4418, true },
-  { 4430, true },
-  { 4445, false },
-  { 4455, false },
-  { 4470, true },
-  { 4498, true },
-  { 4512, true },
-  { 4532, true },
-  { 4551, true },
-  { 4561, true },
-  { 4575, true },
-  { 4586, true },
-  { 4597, true },
-  { 4609, true },
-  { 4627, true },
-  { 4638, true },
+  { 4359, true },
+  { 4376, true },
+  { 4391, true },
+  { 4406, true },
+  { 4417, true },
+  { 4429, true },
+  { 4445, true },
+  { 4455, true },
+  { 4462, true },
+  { 4473, true },
+  { 4485, true },
+  { 4500, false },
+  { 4510, false },
+  { 4525, true },
+  { 4553, true },
+  { 4567, true },
+  { 4587, true },
+  { 4606, true },
+  { 4616, true },
+  { 4630, true },
+  { 4641, true },
   { 4652, true },
-  { 4665, true },
-  { 4677, true },
-  { 4699, true },
-  { 4710, false },
-  { 4726, false },
-  { 4738, true },
-  { 4751, true },
-  { 4764, true },
-  { 4786, true },
-  { 4805, true },
-  { 4818, true },
-  { 4832, true },
-  { 4848, true },
-  { 4867, true },
-  { 4884, true },
-  { 4900, true },
-  { 4917, true },
-  { 4933, true },
-  { 4958, true },
-  { 4983, true },
-  { 4999, true },
-  { 5018, true },
-  { 5035, true },
-  { 5051, true },
-  { 5068, true },
-  { 5084, true },
+  { 4664, true },
+  { 4682, true },
+  { 4693, true },
+  { 4707, true },
+  { 4720, true },
+  { 4732, true },
+  { 4754, true },
+  { 4765, false },
+  { 4781, false },
+  { 4793, true },
+  { 4806, true },
+  { 4819, true },
+  { 4841, true },
+  { 4860, true },
+  { 4873, true },
+  { 4887, true },
+  { 4903, true },
+  { 4922, true },
+  { 4939, true },
+  { 4955, true },
+  { 4972, true },
+  { 4988, true },
+  { 5013, true },
+  { 5038, true },
+  { 5054, true },
+  { 5073, true },
+  { 5090, true },
   { 5106, true },
-  { 5130, true },
-  { 5154, true },
-  { 5173, true },
-  { 5191, false },
-  { 5199, true },
-  { 5223, true },
-  { 5235, true },
-  { 5247, true },
-  { 5261, true },
-  { 5275, true },
-  { 5294, true },
-  { 5309, true },
-  { 5322, true },
-  { 5334, true },
-  { 5348, true },
-  { 5359, true },
-  { 5376, true },
-  { 5411, true },
-  { 5429, true },
-  { 5453, true },
+  { 5123, true },
+  { 5139, true },
+  { 5161, true },
+  { 5185, true },
+  { 5209, true },
+  { 5228, true },
+  { 5246, false },
+  { 5254, true },
+  { 5278, true },
+  { 5290, true },
+  { 5302, true },
+  { 5316, true },
+  { 5330, true },
+  { 5349, true },
+  { 5364, true },
+  { 5377, true },
+  { 5389, true },
+  { 5403, true },
+  { 5414, true },
+  { 5431, true },
   { 5466, true },
-  { 5479, true },
-  { 5488, true },
-  { 5505, true },
-  { 5517, true },
-  { 5536, true },
-  { 5548, true },
-  { 5567, true },
-  { 5590, true },
-  { 5610, true },
-  { 5624, true },
-  { 5632, true },
-  { 5651, true },
-  { 5675, true },
-  { 5688, true },
-  { 5707, true },
-  { 5722, true },
-  { 5739, true },
-  { 5763, true },
-  { 5776, true },
+  { 5484, true },
+  { 5508, true },
+  { 5521, true },
+  { 5534, true },
+  { 5543, true },
+  { 5560, true },
+  { 5572, true },
+  { 5591, true },
+  { 5603, true },
+  { 5622, true },
+  { 5645, true },
+  { 5665, true },
+  { 5679, true },
+  { 5687, true },
+  { 5706, true },
+  { 5730, true },
+  { 5743, true },
+  { 5762, true },
+  { 5777, true },
   { 5794, true },
-  { 5815, true },
-  { 5835, true },
-  { 5860, true },
-  { 5872, true },
-  { 5887, true },
-  { 5906, false },
-  { 5920, true },
-  { 5939, true },
-  { 5946, true },
-  { 5959, true },
-  { 5980, true },
-  { 5992, true },
-  { 6009, true },
-  { 6022, true },
-  { 6038, true },
-  { 6070, true },
-  { 6091, true },
-  { 6103, true },
-  { 6114, true },
-  { 6127, false },
-  { 6136, true },
+  { 5818, true },
+  { 5831, true },
+  { 5849, true },
+  { 5870, true },
+  { 5890, true },
+  { 5915, true },
+  { 5927, true },
+  { 5942, true },
+  { 5961, false },
+  { 5975, true },
+  { 5994, true },
+  { 6001, true },
+  { 6014, true },
+  { 6035, true },
+  { 6047, true },
+  { 6064, true },
+  { 6077, true },
+  { 6093, true },
+  { 6125, true },
   { 6146, true },
-  { 6162, false },
-  { 6172, true },
-  { 6187, true },
-  { 6204, true },
-  { 6215, true },
-  { 6243, false },
-  { 6257, true },
-  { 6270, true },
-  { 6286, true },
+  { 6158, true },
+  { 6169, true },
+  { 6182, false },
+  { 6191, true },
+  { 6201, true },
+  { 6217, true },
+  { 6232, true },
+  { 6249, true },
+  { 6260, true },
+  { 6288, false },
   { 6302, true },
-  { 6313, true },
-  { 6325, true },
-  { 6338, true },
-  { 6350, true },
-  { 6376, true },
-  { 6397, true },
-  { 6415, false },
-  { 6425, true },
-  { 6440, true },
-  { 6454, true },
-  { 6475, false },
-  { 6488, true },
-  { 6497, true },
-  { 6512, true },
-  { 6528, true },
+  { 6315, true },
+  { 6331, true },
+  { 6347, true },
+  { 6358, true },
+  { 6370, true },
+  { 6383, true },
+  { 6395, true },
+  { 6421, true },
+  { 6442, true },
+  { 6460, false },
+  { 6470, true },
+  { 6485, true },
+  { 6499, true },
+  { 6520, false },
+  { 6533, true },
   { 6542, true },
-  { 6554, true },
-  { 6569, true },
-  { 6582, true },
-  { 6594, true },
-  { 6606, true },
-  { 6618, true },
-  { 6630, true },
-  { 6642, true },
-  { 6650, true },
-  { 6661, true },
-  { 6678, true },
-  { 6692, true },
-  { 6708, true },
-  { 6722, true },
-  { 6735, true },
-  { 6752, true },
-  { 6768, true },
-  { 6783, true },
-  { 6798, true },
-  { 6816, true },
-  { 6825, true },
-  { 6838, true },
-  { 6853, true },
-  { 6874, true },
-  { 6883, true },
-  { 6893, true },
-  { 6918, true },
-  { 6929, true },
-  { 6941, true },
-  { 6960, true },
-  { 6972, true },
-  { 6991, true },
-  { 7010, true },
-  { 7029, true },
-  { 7040, true },
-  { 7052, true },
-  { 7067, true },
-  { 7082, true },
-  { 7093, true },
-  { 7106, true },
-  { 7118, true },
-  { 7131, true },
-  { 7145, true },
-  { 7160, true },
-  { 7182, true },