Merge inbound to mozilla-central. a=merge
authorBrindusan Cristian <cbrindusan@mozilla.com>
Mon, 14 Jan 2019 23:51:26 +0200
changeset 453849 8ec327de0ba7c25c185b887a57877657bda20d47
parent 453786 50b3268954b1300941453d11934d032478425a55 (diff)
parent 453848 43022e5e375774afce6db2316028e16bb09a9ec9 (current diff)
child 453850 7f08c65a8bd31ec37dd3b15df3de548b3b591bb4
child 453896 45294093578dfcc64b1bb4f7610c186be78485ed
push id76039
push usercbrindusan@mozilla.com
push dateMon, 14 Jan 2019 21:54:07 +0000
treeherderautoland@7f08c65a8bd3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone66.0a1
first release with
nightly linux32
8ec327de0ba7 / 66.0a1 / 20190114215201 / files
nightly linux64
8ec327de0ba7 / 66.0a1 / 20190114215201 / files
nightly mac
8ec327de0ba7 / 66.0a1 / 20190114215201 / files
nightly win32
8ec327de0ba7 / 66.0a1 / 20190114215201 / files
nightly win64
8ec327de0ba7 / 66.0a1 / 20190114215201 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge inbound to mozilla-central. a=merge
--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -1,10 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
-<blocklist lastupdate="1546439268437" xmlns="http://www.mozilla.org/2006/addons-blocklist">
+<blocklist lastupdate="1547206877909" xmlns="http://www.mozilla.org/2006/addons-blocklist">
   <emItems>
     <emItem blockID="i334" id="{0F827075-B026-42F3-885D-98981EE7B1AE}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="i1211" id="flvto@hotger.com">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
@@ -2435,16 +2435,28 @@
     <emItem blockID="6dd73da4-cb2f-4eb8-8850-890e80c8d57b" id="{02267dc4-36f2-4c22-8103-9e26477b48ef}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="53c5fb08-1001-471e-87ce-31185a84bcbc" id="/^((\{00cf6ee0-14f3-4e35-a4fd-d2160fe2f05e\})|(\{0da583da-e623-41f2-b2d2-0ac61b493171\})|(\{105c14a6-8b6f-49ef-b0d6-41bad99ad5e8\})|(\{10a15a74-271f-4098-a662-bd827db4f8bc\})|(\{13e02b9b-2797-4100-8144-65b73c4145c4\})|(\{1eb56568-8a30-42b1-a646-ad9f485f60fe\})|(\{1eb8a08c-82a8-4d1d-8b80-f7b5cd4751bf\})|(\{2f8220a8-b2a7-4277-ba6b-bdcb6958f669\})|(\{33f39a5d-137c-4757-9f9d-e86395c8bf20\})|(\{347ca189-9e63-43d2-8a2f-5d5141598bdc\})|(\{396056fc-1697-4954-b535-06de8d62fe1b\})|(\{3d530918-dbe8-442c-8faf-1f4ca7ca8ab9\})|(\{3e283c2e-cde3-4baa-8076-226ca8fb90ef\})|(\{591468f8-ebbd-497a-92f1-fa0a1206adb4\})|(\{5f6c3eb8-aa32-489a-bb01-b12b23d2001a\})|(\{6cbb397a-d865-42b2-8454-25a75b710dff\})|(\{7ae2bde0-f7ea-4bf3-a055-06953f9fcf31\})|(\{7b402578-ddec-4eee-9c8b-98e4e8db0059\})|(\{7fb00cf7-40d3-4415-a0c8-a48d3fbe847f\})|(\{87a8a08c-82a8-4d1d-8b80-f7b5cd4751bf\})|(\{888220a8-b2a7-4277-ba6b-bdcb6958f669\})|(\{8b1dd8f3-224b-4975-bda2-cb2dd184d4d8\})|(\{8bcdc9cc-f6be-4203-ae43-a9d281f0bcdb\})|(\{8cda9ce6-7893-4f47-ac70-a65215cec288\})|(\{8dc9b946-0bb9-4264-9c76-fd9ff1e159a2\})|(\{942e0fec-19f2-4ebc-8a74-009da7fa625d\})|(\{b2a720a8-b2a7-4277-aa6b-bdeb6958f669\})|(\{bdcf953b-d2aa-4e7a-8176-aeb1e95a0caf\})|(\{cae82615-f7be-4aff-875d-33da1bc93923\})|(\{d2aa953b-bdcf-4f7a-8476-ddb1e9500caf\})|(\{da0fa57e-17d3-40d3-99f8-e9d5b2a7759d\})|(\{da1237ca-e35d-4653-b2b5-d98043f33781\})|(\{e164563a-1512-4b81-99ff-95f2644c4075\})|(\{e2a720a8-b3a7-1277-aa2b-bdeb2958f669\})|(\{e6a90490-6ef7-407d-863a-7dd120f6f7dc\})|(\{f15cfa53-fa9b-43cf-84e8-16ece6695922\})|(\{f722c845-2d8b-4a0a-b518-4f39af703e79\})|(\{ff1c4e62-7c11-4ea7-b734-3462417ceeb5\})|(\{ffa0a57e-17d2-41d3-96f8-e8d5b2a0759d\}))$/">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
+    <emItem blockID="5a42c5bb-9cb4-4d96-b978-8d9f816322e6" id="youtube_downloader@addon.partners">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
+    <emItem blockID="06c6868e-055f-4e7d-aa8f-5ba577f43e85" id="{43ecded1-f7cb-4bb6-a03d-4bec23b9f22d}">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
+    <emItem blockID="451d950f-ca89-491b-87e7-45123e4f5ab4" id="reopen@closedtab.com">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
   </emItems>
   <pluginItems>
     <pluginItem blockID="p332">
       <match exp="libflashplayer\.so" name="filename"/>
       <match exp="^Shockwave Flash 11.(0|1) r[0-9]{1,3}$" name="description"/>
       <infoURL>https://get.adobe.com/flashplayer/</infoURL>
       <versionRange severity="0" vulnerabilitystatus="1">
         <targetApplication id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}">
--- a/browser/base/content/test/static/browser_all_files_referenced.js
+++ b/browser/base/content/test/static/browser_all_files_referenced.js
@@ -149,19 +149,16 @@ var whitelist = [
   // Bug 1337345
   {file: "resource://gre/modules/Manifest.jsm"},
   // Bug 1351097
   {file: "resource://gre/modules/accessibility/AccessFu.jsm"},
   // Bug 1356043
   {file: "resource://gre/modules/PerfMeasurement.jsm"},
   // Bug 1356045
   {file: "chrome://global/content/test-ipc.xul"},
-  // Bug 1356036
-  {file: "resource://gre/modules/PerformanceWatcher-content.js"},
-  {file: "resource://gre/modules/PerformanceWatcher.jsm"},
   // Bug 1378173 (warning: still used by devtools)
   {file: "resource://gre/modules/Promise.jsm"},
   // Still used by WebIDE, which is going away but not entirely gone.
   {file: "resource://gre/modules/ZipUtils.jsm"},
   // Bug 1463225 (on Mac and Windows this is only used by a test)
   {file: "chrome://global/content/bindings/toolbar.xml",
    platforms: ["macosx", "win"]},
   // Bug 1483277 (temporarily unreferenced)
--- a/browser/base/content/test/static/browser_parsable_css.js
+++ b/browser/base/content/test/static/browser_parsable_css.js
@@ -90,16 +90,24 @@ if (!Services.prefs.getBoolPref("full-sc
 if (!Services.prefs.getBoolPref("layout.css.scrollbar-width.enabled")) {
   whitelist.push({
     sourceName: /(?:res|gre-resources)\/forms\.css$/i,
     errorMessage: /Unknown property .*\bscrollbar-width\b/i,
     isFromDevTools: false,
   });
 }
 
+if (!Services.prefs.getBoolPref("layout.css.scroll-anchoring.enabled")) {
+  whitelist.push({
+    sourceName: /webconsole\.css$/i,
+    errorMessage: /Unknown property .*\boverflow-anchor\b/i,
+    isFromDevTools: true,
+  });
+}
+
 let propNameWhitelist = [
   // These custom properties are retrieved directly from CSSOM
   // in videocontrols.xml to get pre-defined style instead of computed
   // dimensions, which is why they are not referenced by CSS.
   {propName: "--clickToPlay-width",
    isFromDevTools: false},
   {propName: "--playButton-width",
    isFromDevTools: false},
--- a/browser/components/extensions/parent/ext-commands.js
+++ b/browser/components/extensions/parent/ext-commands.js
@@ -1,380 +1,40 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 "use strict";
 
-ChromeUtils.defineModuleGetter(this, "ExtensionParent",
-                               "resource://gre/modules/ExtensionParent.jsm");
-ChromeUtils.defineModuleGetter(this, "ExtensionSettingsStore",
-                               "resource://gre/modules/ExtensionSettingsStore.jsm");
-
-var {
-  chromeModifierKeyMap,
-  ExtensionError,
-} = ExtensionUtils;
-
-const EXECUTE_PAGE_ACTION = "_execute_page_action";
-const EXECUTE_BROWSER_ACTION = "_execute_browser_action";
-const EXECUTE_SIDEBAR_ACTION = "_execute_sidebar_action";
-
-function normalizeShortcut(shortcut) {
-  return shortcut ? shortcut.replace(/\s+/g, "") : null;
-}
+ChromeUtils.defineModuleGetter(this, "ExtensionShortcuts",
+                               "resource://gre/modules/ExtensionShortcuts.jsm");
 
 this.commands = class extends ExtensionAPI {
-  static async onUninstall(extensionId) {
-    // Cleanup the updated commands. In some cases the extension is installed
-    // and uninstalled so quickly that `this.commands` hasn't loaded yet. To
-    // handle that we need to make sure ExtensionSettingsStore is initialized
-    // before we clean it up.
-    await ExtensionSettingsStore.initialize();
-    ExtensionSettingsStore
-      .getAllForExtension(extensionId, "commands")
-      .forEach(key => {
-        ExtensionSettingsStore.removeSetting(extensionId, "commands", key);
-      });
+  static onUninstall(extensionId) {
+    return ExtensionShortcuts.removeCommandsFromStorage(extensionId);
   }
 
   async onManifestEntry(entryName) {
-    let {extension} = this;
-
-    this.id = makeWidgetId(extension.id);
-    this.windowOpenListener = null;
-
-    // Map[{String} commandName -> {Object} commandProperties]
-    this.manifestCommands = this.loadCommandsFromManifest(extension.manifest);
-
-    this.commands = new Promise(async (resolve) => {
-      // Deep copy the manifest commands to commands so we can keep the original
-      // manifest commands and update commands as needed.
-      let commands = new Map();
-      this.manifestCommands.forEach((command, name) => {
-        commands.set(name, {...command});
-      });
-
-      // Update the manifest commands with the persisted updates from
-      // browser.commands.update().
-      let savedCommands = await this.loadCommandsFromStorage(extension.id);
-      savedCommands.forEach((update, name) => {
-        let command = commands.get(name);
-        if (command) {
-          // We will only update commands, not add them.
-          Object.assign(command, update);
-        }
-      });
-
-      resolve(commands);
+    let shortcuts = new ExtensionShortcuts({
+      extension: this.extension,
+      onCommand: (name) => this.emit("command", name),
     });
-
-    // WeakMap[Window -> <xul:keyset>]
-    this.keysetsMap = new WeakMap();
-
-    await this.register();
+    this.extension.shortcuts = shortcuts;
+    await shortcuts.loadCommands();
+    await shortcuts.register();
   }
 
   onShutdown(reason) {
-    this.unregister();
-  }
-
-  registerKeys(commands) {
-    for (let window of windowTracker.browserWindows()) {
-      this.registerKeysToDocument(window, commands);
-    }
-  }
-
-  /**
-   * Registers the commands to all open windows and to any which
-   * are later created.
-   */
-  async register() {
-    let commands = await this.commands;
-    this.registerKeys(commands);
-
-    this.windowOpenListener = (window) => {
-      if (!this.keysetsMap.has(window)) {
-        this.registerKeysToDocument(window, commands);
-      }
-    };
-
-    windowTracker.addOpenListener(this.windowOpenListener);
-  }
-
-  /**
-   * Unregisters the commands from all open windows and stops commands
-   * from being registered to windows which are later created.
-   */
-  unregister() {
-    for (let window of windowTracker.browserWindows()) {
-      if (this.keysetsMap.has(window)) {
-        this.keysetsMap.get(window).remove();
-      }
-    }
-
-    windowTracker.removeOpenListener(this.windowOpenListener);
-  }
-
-  /**
-   * Creates a Map from commands for each command in the manifest.commands object.
-   *
-   * @param {Object} manifest The manifest JSON object.
-   * @returns {Map<string, object>}
-   */
-  loadCommandsFromManifest(manifest) {
-    let commands = new Map();
-    // For Windows, chrome.runtime expects 'win' while chrome.commands
-    // expects 'windows'.  We can special case this for now.
-    let {PlatformInfo} = ExtensionParent;
-    let os = PlatformInfo.os == "win" ? "windows" : PlatformInfo.os;
-    for (let [name, command] of Object.entries(manifest.commands)) {
-      let suggested_key = command.suggested_key || {};
-      let shortcut = normalizeShortcut(suggested_key[os] || suggested_key.default);
-      commands.set(name, {
-        description: command.description,
-        shortcut,
-      });
-    }
-    return commands;
-  }
-
-  async loadCommandsFromStorage(extensionId) {
-    await ExtensionSettingsStore.initialize();
-    let names = ExtensionSettingsStore.getAllForExtension(extensionId, "commands");
-    return names.reduce((map, name) => {
-      let command = ExtensionSettingsStore.getSetting(
-        "commands", name, extensionId).value;
-      return map.set(name, command);
-    }, new Map());
-  }
-
-  /**
-   * Registers the commands to a document.
-   * @param {ChromeWindow} window The XUL window to insert the Keyset.
-   * @param {Map} commands The commands to be set.
-   */
-  registerKeysToDocument(window, commands) {
-    let doc = window.document;
-    let keyset = doc.createXULElement("keyset");
-    keyset.id = `ext-keyset-id-${this.id}`;
-    if (this.keysetsMap.has(window)) {
-      this.keysetsMap.get(window).remove();
-    }
-    let sidebarKey;
-    commands.forEach((command, name) => {
-      if (command.shortcut) {
-        let parts = command.shortcut.split("+");
-
-        // The key is always the last element.
-        let key = parts.pop();
-
-        if (/^[0-9]$/.test(key)) {
-          let shortcutWithNumpad = command.shortcut.replace(/[0-9]$/, "Numpad$&");
-          let numpadKeyElement = this.buildKey(doc, name, shortcutWithNumpad);
-          keyset.appendChild(numpadKeyElement);
-        }
-
-        let keyElement = this.buildKey(doc, name, command.shortcut);
-        keyset.appendChild(keyElement);
-        if (name == EXECUTE_SIDEBAR_ACTION) {
-          sidebarKey = keyElement;
-        }
-      }
-    });
-    doc.documentElement.appendChild(keyset);
-    if (sidebarKey) {
-      window.SidebarUI.updateShortcut({key: sidebarKey});
-    }
-    this.keysetsMap.set(window, keyset);
-  }
-
-  /**
-   * Builds a XUL Key element and attaches an onCommand listener which
-   * emits a command event with the provided name when fired.
-   *
-   * @param {Document} doc The XUL document.
-   * @param {string} name The name of the command.
-   * @param {string} shortcut The shortcut provided in the manifest.
-   * @see https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/key
-   *
-   * @returns {Document} The newly created Key element.
-   */
-  buildKey(doc, name, shortcut) {
-    let keyElement = this.buildKeyFromShortcut(doc, name, shortcut);
-
-    // We need to have the attribute "oncommand" for the "command" listener to fire,
-    // and it is currently ignored when set to the empty string.
-    keyElement.setAttribute("oncommand", "//");
-
-    /* eslint-disable mozilla/balanced-listeners */
-    // We remove all references to the key elements when the extension is shutdown,
-    // therefore the listeners for these elements will be garbage collected.
-    keyElement.addEventListener("command", (event) => {
-      let action;
-      if (name == EXECUTE_PAGE_ACTION) {
-        action = pageActionFor(this.extension);
-      } else if (name == EXECUTE_BROWSER_ACTION) {
-        action = browserActionFor(this.extension);
-      } else if (name == EXECUTE_SIDEBAR_ACTION) {
-        action = sidebarActionFor(this.extension);
-      } else {
-        this.extension.tabManager
-            .addActiveTabPermission();
-        this.emit("command", name);
-        return;
-      }
-      if (action) {
-        let win = event.target.ownerGlobal;
-        action.triggerAction(win);
-      }
-    });
-    /* eslint-enable mozilla/balanced-listeners */
-
-    return keyElement;
-  }
-
-  /**
-   * Builds a XUL Key element from the provided shortcut.
-   *
-   * @param {Document} doc The XUL document.
-   * @param {string} name The name of the shortcut.
-   * @param {string} shortcut The shortcut provided in the manifest.
-   *
-   * @see https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/key
-   * @returns {Document} The newly created Key element.
-   */
-  buildKeyFromShortcut(doc, name, shortcut) {
-    let keyElement = doc.createXULElement("key");
-
-    let parts = shortcut.split("+");
-
-    // The key is always the last element.
-    let chromeKey = parts.pop();
-
-    // The modifiers are the remaining elements.
-    keyElement.setAttribute("modifiers", this.getModifiersAttribute(parts));
-
-    // A keyElement with key "NumpadX" is created above and isn't from the
-    // manifest. The id will be set on the keyElement with key "X" only.
-    if (name == EXECUTE_SIDEBAR_ACTION && !chromeKey.startsWith("Numpad")) {
-      let id = `ext-key-id-${this.id}-sidebar-action`;
-      keyElement.setAttribute("id", id);
-    }
-
-    if (/^[A-Z]$/.test(chromeKey)) {
-      // We use the key attribute for all single digits and characters.
-      keyElement.setAttribute("key", chromeKey);
-    } else {
-      keyElement.setAttribute("keycode", this.getKeycodeAttribute(chromeKey));
-      keyElement.setAttribute("event", "keydown");
-    }
-
-    return keyElement;
-  }
-
-  /**
-   * Determines the corresponding XUL keycode from the given chrome key.
-   *
-   * For example:
-   *
-   *    input     |  output
-   *    ---------------------------------------
-   *    "PageUP"  |  "VK_PAGE_UP"
-   *    "Delete"  |  "VK_DELETE"
-   *
-   * @param {string} chromeKey The chrome key (e.g. "PageUp", "Space", ...)
-   * @returns {string} The constructed value for the Key's 'keycode' attribute.
-   */
-  getKeycodeAttribute(chromeKey) {
-    if (/^[0-9]$/.test(chromeKey)) {
-      return `VK_${chromeKey}`;
-    }
-    return `VK${chromeKey.replace(/([A-Z])/g, "_$&").toUpperCase()}`;
-  }
-
-  /**
-   * Determines the corresponding XUL modifiers from the chrome modifiers.
-   *
-   * For example:
-   *
-   *    input             |   output
-   *    ---------------------------------------
-   *    ["Ctrl", "Shift"] |   "accel shift"
-   *    ["MacCtrl"]       |   "control"
-   *
-   * @param {Array} chromeModifiers The array of chrome modifiers.
-   * @returns {string} The constructed value for the Key's 'modifiers' attribute.
-   */
-  getModifiersAttribute(chromeModifiers) {
-    return Array.from(chromeModifiers, modifier => {
-      return chromeModifierKeyMap[modifier];
-    }).join(" ");
+    this.extension.shortcuts.unregister();
   }
 
   getAPI(context) {
     return {
       commands: {
-        getAll: async () => {
-          let commands = await this.commands;
-          return Array.from(commands, ([name, command]) => {
-            return ({
-              name,
-              description: command.description,
-              shortcut: command.shortcut,
-            });
-          });
-        },
-        update: async ({name, description, shortcut}) => {
-          let {extension} = this;
-          let commands = await this.commands;
-          let command = commands.get(name);
-
-          if (!command) {
-            throw new ExtensionError(`Unknown command "${name}"`);
-          }
-
-          // Only store the updates so manifest changes can take precedence
-          // later.
-          let previousUpdates = await ExtensionSettingsStore.getSetting(
-            "commands", name, extension.id);
-          let commandUpdates = (previousUpdates && previousUpdates.value) || {};
-
-          if (description && description != command.description) {
-            commandUpdates.description = description;
-            command.description = description;
-          }
-
-          if (shortcut && shortcut != command.shortcut) {
-            shortcut = normalizeShortcut(shortcut);
-            commandUpdates.shortcut = shortcut;
-            command.shortcut = shortcut;
-          }
-
-          await ExtensionSettingsStore.addSetting(
-            extension.id, "commands", name, commandUpdates);
-
-          this.registerKeys(commands);
-        },
-        reset: async (name) => {
-          let {extension, manifestCommands} = this;
-          let commands = await this.commands;
-          let command = commands.get(name);
-
-          if (!command) {
-            throw new ExtensionError(`Unknown command "${name}"`);
-          }
-
-          let storedCommand = ExtensionSettingsStore.getSetting(
-            "commands", name, extension.id);
-
-          if (storedCommand && storedCommand.value) {
-            commands.set(name, {...manifestCommands.get(name)});
-            ExtensionSettingsStore.removeSetting(extension.id, "commands", name);
-            this.registerKeys(commands);
-          }
-        },
+        getAll: () => this.extension.shortcuts.allCommands(),
+        update: (args) => this.extension.shortcuts.updateCommand(args),
+        reset: (name) => this.extension.shortcuts.resetCommand(name),
         onCommand: new EventManager({
           context,
           name: "commands.onCommand",
           inputHandling: true,
           register: fire => {
             let listener = (eventName, commandName) => {
               fire.async(commandName);
             };
--- a/browser/components/extensions/schemas/commands.json
+++ b/browser/components/extensions/schemas/commands.json
@@ -57,16 +57,17 @@
                       "type": "string",
                       "deprecated": "Unknown platform name",
                       "optional": true
                     }
                   }
                 },
                 "description": {
                   "type": "string",
+                  "preprocess": "localize",
                   "optional": true
                 }
               }
             }
           }
         }
       }
     ]
--- a/browser/components/extensions/test/browser/browser_ext_commands_getAll.js
+++ b/browser/components/extensions/test/browser/browser_ext_commands_getAll.js
@@ -1,16 +1,25 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 "use strict";
 
 add_task(async function() {
   let extension = ExtensionTestUtils.loadExtension({
+    files: {
+      "_locales/en/messages.json": {
+        "with_translation": {
+          "message": "The description",
+          "description": "A description",
+        },
+      },
+    },
     manifest: {
       "name": "Commands Extension",
+      "default_locale": "en",
       "commands": {
         "with-desciption": {
           "suggested_key": {
             "default": "Ctrl+Shift+Y",
           },
           "description": "should have a description",
         },
         "without-description": {
@@ -21,29 +30,32 @@ add_task(async function() {
         "with-platform-info": {
           "suggested_key": {
             "mac": "Ctrl+Shift+M",
             "linux": "Ctrl+Shift+L",
             "windows": "Ctrl+Shift+W",
             "android": "Ctrl+Shift+A",
           },
         },
+        "with-translation": {
+          "description": "__MSG_with_translation__",
+        },
         "without-suggested-key": {
           "description": "has no suggested_key",
         },
         "without-suggested-key-nor-description": {
         },
       },
     },
 
     background: function() {
       browser.test.onMessage.addListener((message, additionalScope) => {
         browser.commands.getAll((commands) => {
           let errorMessage = "getAll should return an array of commands";
-          browser.test.assertEq(commands.length, 5, errorMessage);
+          browser.test.assertEq(commands.length, 6, errorMessage);
 
           let command = commands.find(c => c.name == "with-desciption");
 
           errorMessage = "The description should match what is provided in the manifest";
           browser.test.assertEq("should have a description", command.description, errorMessage);
 
           errorMessage = "The shortcut should match the default shortcut provided in the manifest";
           browser.test.assertEq("Ctrl+Shift+Y", command.shortcut, errorMessage);
@@ -64,16 +76,19 @@ add_task(async function() {
           };
 
           command = commands.find(c => c.name == "with-platform-info");
           let platformKey = platformKeys[additionalScope.platform];
           let shortcut = `Ctrl+Shift+${platformKey}`;
           errorMessage = `The shortcut should match the one provided in the manifest for OS='${additionalScope.platform}'`;
           browser.test.assertEq(shortcut, command.shortcut, errorMessage);
 
+          command = commands.find(c => c.name == "with-translation");
+          browser.test.assertEq(command.description, "The description", "The description can be localized");
+
           command = commands.find(c => c.name == "without-suggested-key");
 
           browser.test.assertEq("has no suggested_key", command.description, "The description should match what is provided in the manifest");
 
           browser.test.assertEq(null, command.shortcut, "The shortcut should be empty if not provided");
 
           command = commands.find(c => c.name == "without-suggested-key-nor-description");
 
--- a/browser/components/extensions/test/browser/browser_ext_commands_update.js
+++ b/browser/components/extensions/test/browser/browser_ext_commands_update.js
@@ -163,37 +163,37 @@ add_task(async function test_update_defi
     is(numpadKey.getAttribute("modifiers"), modifiers, "The modifiers are correct");
 
     let originalNumericKey = keyset.children[1];
     is(originalNumericKey.getAttribute("keycode"), `VK_${key}`, "The original key is correct.");
     is(originalNumericKey.getAttribute("modifiers"), modifiers, "The modifiers are correct");
   }
 
   // Check that the <key> is set for the original shortcut.
-  checkKey(extension.id, "I", "accel shift");
+  checkKey(extension.id, "I", "accel,shift");
 
   await extension.awaitMessage("ready");
   extension.sendMessage("run");
   await extension.awaitFinish("commands");
 
   // Check that the <keycode> has been updated.
-  checkNumericKey(extension.id, "9", "alt shift");
+  checkNumericKey(extension.id, "9", "alt,shift");
 
   // Check that the updated command is stored in ExtensionSettingsStore.
   let storedCommands = ExtensionSettingsStore.getAllForExtension(
     extension.id, "commands");
   is(storedCommands.length, 1, "There is only one stored command");
   let command = ExtensionSettingsStore.getSetting("commands", "foo", extension.id).value;
   is(command.description, "The new command", "The description is stored");
   is(command.shortcut, "Alt+Shift+9", "The shortcut is stored");
 
   // Check that the key is updated immediately.
   extension.sendMessage("update", {name: "foo", shortcut: "Ctrl+Shift+M"});
   await extension.awaitMessage("updateDone");
-  checkKey(extension.id, "M", "accel shift");
+  checkKey(extension.id, "M", "accel,shift");
 
   // Ensure all successive updates are stored.
   // Force the command to only have a description saved.
   await ExtensionSettingsStore.addSetting(
     extension.id, "commands", "foo", {description: "description only"});
   // This command now only has a description set in storage, also update the shortcut.
   extension.sendMessage("update", {name: "foo", shortcut: "Alt+Shift+9"});
   await extension.awaitMessage("updateDone");
@@ -201,17 +201,17 @@ add_task(async function test_update_defi
     "commands", "foo", extension.id);
   is(storedCommand.value.shortcut, "Alt+Shift+9", "The shortcut is saved correctly");
   is(storedCommand.value.description, "description only", "The description is saved correctly");
 
   // Calling browser.commands.reset("foo") should reset to manifest version.
   extension.sendMessage("reset", "foo");
   await extension.awaitMessage("resetDone");
 
-  checkKey(extension.id, "I", "accel shift");
+  checkKey(extension.id, "I", "accel,shift");
 
   // Check that enable/disable removes the keyset and reloads the saved command.
   let addon = await AddonManager.getAddonByID(extension.id);
   await disableAddon(addon);
   let keyset = extensionKeyset(extension.id);
   is(keyset, null, "The extension keyset is removed when disabled");
   // Add some commands to storage, only "foo" should get loaded.
   await ExtensionSettingsStore.addSetting(
@@ -219,17 +219,17 @@ add_task(async function test_update_defi
   await ExtensionSettingsStore.addSetting(
     extension.id, "commands", "unknown", {shortcut: "Ctrl+Shift+P"});
   storedCommands = ExtensionSettingsStore.getAllForExtension(extension.id, "commands");
   is(storedCommands.length, 2, "There are now 2 commands stored");
   await enableAddon(addon);
   // Wait for the keyset to appear (it's async on enable).
   await TestUtils.waitForCondition(() => extensionKeyset(extension.id));
   // The keyset is back with the value from ExtensionSettingsStore.
-  checkNumericKey(extension.id, "9", "alt shift");
+  checkNumericKey(extension.id, "9", "alt,shift");
 
   // Check that an update to a shortcut in the manifest is mapped correctly.
   updatedExtension = ExtensionTestUtils.loadExtension({
     useAddonManager: "permanent",
     manifest: {
       version: "1.0",
       applications: {gecko: {id: "commands@mochi.test"}},
       commands: {
@@ -241,17 +241,17 @@ add_task(async function test_update_defi
         },
       },
     },
   });
   await updatedExtension.startup();
 
   await TestUtils.waitForCondition(() => extensionKeyset(extension.id));
   // Shortcut is unchanged since it was previously updated.
-  checkNumericKey(extension.id, "9", "alt shift");
+  checkNumericKey(extension.id, "9", "alt,shift");
 });
 
 add_task(async function updateSidebarCommand() {
   let extension = ExtensionTestUtils.loadExtension({
     useAddonManager: "temporary",
     manifest: {
       commands: {
         _execute_sidebar_action: {
--- a/browser/components/migration/tests/marionette/test_refresh_firefox.py
+++ b/browser/components/migration/tests/marionette/test_refresh_firefox.py
@@ -536,17 +536,16 @@ class TestFirefoxRefresh(MarionetteTestC
           prefsToKeep.push("datareporting.policy.dataSubmissionPolicyBypassNotification");
           let prefObj = {};
           for (let pref of prefsToKeep) {
             prefObj[pref] = global.Preferences.get(pref);
           }
           env.set("MOZ_MARIONETTE_PREF_STATE_ACROSS_RESTARTS", JSON.stringify(prefObj));
           env.set("MOZ_RESET_PROFILE_RESTART", "1");
           env.set("XRE_PROFILE_PATH", arguments[0]);
-          env.set("XRE_PROFILE_NAME", profileName);
         """, script_args=(self.marionette.instance.profile.profile, profileName,))
 
         profileLeafName = os.path.basename(os.path.normpath(
             self.marionette.instance.profile.profile))
 
         # Now restart the browser to get it reset:
         self.marionette.restart(clean=False, in_app=True)
         self.setUpScriptData()
--- a/browser/components/nsBrowserGlue.js
+++ b/browser/components/nsBrowserGlue.js
@@ -1626,22 +1626,16 @@ BrowserGlue.prototype = {
             Cc[WINTASKBAR_CONTRACTID].getService(Ci.nsIWinTaskbar).available) {
           let temp = {};
           ChromeUtils.import("resource:///modules/WindowsJumpLists.jsm", temp);
           temp.WinTaskbarJumpList.startup();
         }
       });
     }
 
-    if (AppConstants.MOZ_DEV_EDITION) {
-      Services.tm.idleDispatchToMainThread(() => {
-        this._createExtraDefaultProfile();
-      });
-    }
-
     Services.tm.idleDispatchToMainThread(() => {
       this._checkForDefaultBrowser();
     });
 
     Services.tm.idleDispatchToMainThread(() => {
       let {setTimeout} = ChromeUtils.import("resource://gre/modules/Timer.jsm", {});
       setTimeout(function() {
         Services.tm.idleDispatchToMainThread(Services.startup.trackStartupCrashEnd);
@@ -1712,50 +1706,16 @@ BrowserGlue.prototype = {
       this._gmpInstallManager.simpleCheckAndInstall().catch(() => {});
     });
 
     Services.tm.idleDispatchToMainThread(() => {
       RemoteSettings.init();
     });
   },
 
-  _createExtraDefaultProfile() {
-    if (!AppConstants.MOZ_DEV_EDITION) {
-      return;
-    }
-    // If Developer Edition is the only installed Firefox version and no other
-    // profiles are present, create a second one for use by other versions.
-    // This helps Firefox versions earlier than 35 avoid accidentally using the
-    // unsuitable Developer Edition profile.
-    let profileService = Cc["@mozilla.org/toolkit/profile-service;1"]
-                         .getService(Ci.nsIToolkitProfileService);
-    let profileCount = profileService.profileCount;
-    if (profileCount == 1 && profileService.selectedProfile.name != "default") {
-      let newProfile;
-      try {
-        newProfile = profileService.createProfile(null, "default");
-        profileService.defaultProfile = newProfile;
-        profileService.flush();
-      } catch (e) {
-        Cu.reportError("Could not create profile 'default': " + e);
-      }
-      if (newProfile) {
-        // We don't want a default profile with Developer Edition settings, an
-        // empty profile directory will do. The profile service of the other
-        // Firefox will populate it with its own stuff.
-        let newProfilePath = newProfile.rootDir.path;
-        OS.File.removeDir(newProfilePath).then(() => {
-          return OS.File.makeDir(newProfilePath);
-        }).catch(e => {
-          Cu.reportError("Could not empty profile 'default': " + e);
-        });
-      }
-    }
-  },
-
   _onQuitRequest: function BG__onQuitRequest(aCancelQuit, aQuitType) {
     // If user has already dismissed quit request, then do nothing
     if ((aCancelQuit instanceof Ci.nsISupportsPRBool) && aCancelQuit.data)
       return;
 
     // There are several cases where we won't show a dialog here:
     // 1. There is only 1 tab open in 1 window
     // 2. browser.warnOnQuit == false
--- a/browser/components/urlbar/UrlbarInput.jsm
+++ b/browser/components/urlbar/UrlbarInput.jsm
@@ -209,16 +209,26 @@ class UrlbarInput {
     // }
     //
     // // Do the command of the selected one-off if it's not an engine.
     // if (selectedOneOff && !selectedOneOff.engine) {
     //   selectedOneOff.doCommand();
     //   return;
     // }
 
+    // Use the selected result if we have one; this should always be the case
+    // when the view is open.
+    let result = this.view.selectedResult;
+    if (result) {
+      this.pickResult(event, result);
+      return;
+    }
+
+    // Use the current value if we don't have a UrlbarMatch e.g. because the
+    // view is closed.
     let url = this.value;
     if (!url) {
       return;
     }
 
     let where = openWhere || this._whereToOpen(event);
 
     openParams.postData = null;
@@ -263,16 +273,18 @@ class UrlbarInput {
    * Called by the view when a result is picked.
    *
    * @param {Event} event The event that picked the result.
    * @param {UrlbarMatch} result The result that was picked.
    */
   pickResult(event, result) {
     this.setValueFromResult(result);
 
+    this.view.close();
+
     // TODO: Work out how we get the user selection behavior, probably via passing
     // it in, since we don't have the old autocomplete controller to work with.
     // BrowserUsageTelemetry.recordUrlbarSelectedResultMethod(
     //   event, this.userSelectionBehavior);
 
     let where = this._whereToOpen(event);
     let openParams = {
       postData: null,
--- a/browser/components/urlbar/UrlbarView.jsm
+++ b/browser/components/urlbar/UrlbarView.jsm
@@ -50,16 +50,29 @@ class UrlbarView {
    * @returns {boolean}
    *   Whether the panel is open.
    */
   get isOpen() {
     return this.panel.state == "open" || this.panel.state == "showing";
   }
 
   /**
+   * @returns {UrlbarMatch}
+   *   The currently selected result.
+   */
+  get selectedResult() {
+    if (!this.isOpen) {
+      return null;
+    }
+
+    let resultIndex = this._selected.getAttribute("resultIndex");
+    return this._queryContext.results[resultIndex];
+  }
+
+  /**
    * Selects the next or previous view item. An item could be an autocomplete
    * result or a one-off search button.
    *
    * @param {boolean} options.reverse
    *   Set to true to select the previous item. By default the next item
    *   will be selected.
    */
   selectNextItem({reverse = false} = {}) {
@@ -298,17 +311,16 @@ class UrlbarView {
     while (!row.classList.contains("urlbarView-row")) {
       row = row.parentNode;
     }
     let resultIndex = row.getAttribute("resultIndex");
     let result = this._queryContext.results[resultIndex];
     if (result) {
       this.input.pickResult(event, result);
     }
-    this.close();
   }
 
   _on_overflow(event) {
     if (event.target.classList.contains("urlbarView-row-inner")) {
       event.target.toggleAttribute("overflow", true);
     }
   }
 
new file mode 100644
--- /dev/null
+++ b/devtools/client/aboutdebugging-new/documentation/TESTS.md
@@ -0,0 +1,124 @@
+# Running Tests for the new about:debugging
+
+## Tests overview
+
+Tests are located in `devtools/client/aboutdebugging-new/test`. There are two subfolders, `browser` and `unit`. `browser` contains our [browser mochitests](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Mochitest). Most of our tests are browser mochitests. `unit` contains our [xpc-shell unit tests](https://developer.mozilla.org/en-US/docs/Mozilla/QA/Writing_xpcshell-based_unit_tests). At the moment of writing we only have one.
+
+## Test coverage
+
+You can get some code coverage information at https://codecov.io/gh/mozilla/gecko-dev/tree/master/devtools/client/aboutdebugging-new/src . The service is sometimes very slow, be patient! You might have to reload the page several times to get a result.
+
+## Running tests
+
+To run tests, you can use `./mach test {path}`. The path argument can be:
+- relative/absolute path to a single test file: will run only this test
+- relative/absolute path to a folder: will run all tests in the folder
+- just a string: will match all the tests that contain this string
+
+A few examples below:
+
+```
+# Run browser_aboutdebugging_addons_manifest_url.js only
+
+./mach test devtools/client/aboutdebugging-new/test/browser/browser_aboutdebugging_addons_manifest_url.js
+
+# or
+
+./mach test browser_aboutdebugging_addons_manifest_url.js
+```
+
+```
+# Run all aboutdebugging tests
+
+./mach test devtools/client/aboutdebugging-new/test/browser/
+
+# or (this works because all our tests start with "browser_aboutdebugging...")
+
+./mach test browser_aboutdebugging
+```
+
+Having consistent names for our tests can be very helpful to quickly run subset of tests:
+```
+# Run all sidebar tests (will just run all the tests that start with browser_aboutdebugging_sidebar)
+
+./mach test browser_aboutdebugging_sidebar
+```
+
+## Troubleshooting
+
+### Fix the error "ADB process is already running"
+
+Some tests for about:debugging rely on starting and stopping the ADB (android debug bridge) process. However if the process is already running on your machine, the tests have no way to proceed and will fail with the message:
+
+```
+Error: The ADB process is already running on this machine, it should be stopped before running this test
+```
+
+In this case try to kill the process named `adb` in your process manager. If the adb process keeps coming back up, there must be an application that spawns the process. It might be a Firefox instance. Stop all your Firefox instances, then kill the `adb` process again and restart Firefox. (Note that in theory we should always stop adb correctly, but it seems there are still scenarios where this doesn't happen).
+
+### Pause a test
+
+If a test is not behaving as expected, it can be helpful to pause it at a certain step to have the time to investigate. You can add an await such as:
+
+```
+await new Promise(r => setTimeout(r, TIME)); // eg, replace TIME by 60000 to wait for 1 minute
+```
+
+Note that if you really need to wait for a long time, tests will timeout after some time and shutdown automatically. To avoid that, call `requestLongerTimeout(N);` somewhere in your test. `requestLongerTimeout()` takes an integer factor that is a multiplier for the the default 45 seconds timeout. So a factor of 2 means: Wait for at last 90s.
+
+### Attach a JS debugger to mochitests
+
+You can set debug tests with the DevTools debugger by passing the `--jsdebugger` argument to your tests.
+
+At the moment, you need to use `./mach mochitest` instead of `./mach test`, because of [Bug 1519369](https://bugzilla.mozilla.org/show_bug.cgi?id=1519369). This command is less flexible than `./mach test` so you will need to absolutely pass a relative path here.
+
+```
+./mach mochitest relative/path/to/test.js --jsdebugger
+```
+
+This will open a browser toolbox, with the debugger selected, before starting your test. Feel free to browse the files in the debugger and to add breakpoints. However your file is most likely not loaded yet, so the best is usually to add `debugger` statements in your code directly.
+
+This time the tests will wait for you to click on the "Browser chrome test" window to start. Do not be fooled by the "Run all tests" button on this window, clicking anywhere in the window will actually start the tests.
+
+## Other Tips
+
+### Headless mode
+
+Headless mode allows to run tests without opening a Firefox window and therefore blocking your computer.
+
+```
+./mach test browser_aboutdebugging --headless
+```
+
+### Memory leaks and Debug mode
+
+Running tests in debug mode is simply done by using a debug build (build with `ac_add_options --enable-debug`). The added value of debug mode is that it will also assert leaks. It can be very useful to run tests in debug mode if you modified things related to event listeners for instance, and you are not sure if you are cleanly removing all the listeners.
+
+### Test verify mode
+
+The test-verify mode - shortened as "TV" on our continuous integration platforms - will run a single test in a loop with some different flavors. The intent is to make it easier to catch intermittents. If you added or modified a test significantly, it is usually a good idea, to run it in test-verify mode at least once.
+
+```
+# Keeping the --headless argument, because the tests can be pretty slow
+./mach test browser_aboutdebugging_addons_manifest_url.js --headless --test-verify
+```
+
+## Try server
+
+You can push your local changesets to our remote continuous integration server, try. This is useful if you made some significant changes and you would like to make sure nothing is broken in the whole DevTools tests suite, on any platform.
+
+There are many topics to cover here, but none are specific to about:debugging. Here are a few pointers:
+- [Try overview](https://firefox-source-docs.mozilla.org/tools/try/index.html)
+- [Selectors integrated with ./mach](https://firefox-source-docs.mozilla.org/tools/try/selectors/index.html)
+- [Try syntax selector](https://firefox-source-docs.mozilla.org/tools/try/selectors/syntax.html)
+- [Try fuzzy selector](https://firefox-source-docs.mozilla.org/tools/try/selectors/fuzzy.html)
+
+Below is an example of pushing to try using the try syntax selector. As the documentation says, this syntax is obscure and can be difficult to remember, but it is still widely used by developers in mozilla-central.
+
+```
+./mach try -b do -p linux64 -u xpcshell,mochitest-dt,mochitest-chrome --artifact
+```
+
+Refer to the [try syntax documentation](https://firefox-source-docs.mozilla.org/tools/try/selectors/syntax.html) to learn what the various parameters mean.
+
+Note that you need committer access level 1 in order to push to try.
\ No newline at end of file
--- a/devtools/client/themes/common.css
+++ b/devtools/client/themes/common.css
@@ -807,32 +807,33 @@ checkbox:-moz-focusring {
   -moz-appearance: none;
   background-color: var(--toggle-track-color);
   cursor: pointer;
   /* Change font-size to scale. */
   font-size: 16px;
   width: 2em;
   height: 1em;
   border-radius: 1em;
+  border: 1px solid transparent;
+  box-sizing: content-box;
   /* Animate the thumb position between states of the checkbox. */
   transition: background-color .1s ease-out;
 }
 
 /* For right-to-left layout, the toggle thumb goes in the opposite direction. */
 html[dir="rtl"] .devtools-checkbox-toggle {
   --x-pos: -.15em;
 }
 
-.devtools-checkbox-toggle:focus {
-  box-shadow: 0 0 0 1px var(--blue-55);
+.devtools-checkbox-toggle:not(:checked):focus {
+  border-color: var(--blue-55);
 }
 
 .devtools-checkbox-toggle:checked:focus {
   background-color: var(--blue-40);
-  box-shadow: none;
 }
 
 .devtools-checkbox-toggle:checked {
   --x-pos: 1.15em;
   background-color: var(--blue-55);
 }
 
 html[dir="rtl"] .devtools-checkbox-toggle:checked {
--- a/docshell/base/nsDocShellTreeOwner.cpp
+++ b/docshell/base/nsDocShellTreeOwner.cpp
@@ -1161,19 +1161,18 @@ ChromeTooltipListener::ShowTooltip(int32
                                    const nsAString& aInTipText,
                                    const nsAString& aTipDir) {
   nsresult rv = NS_OK;
 
   // do the work to call the client
   nsCOMPtr<nsITooltipListener> tooltipListener(
       do_QueryInterface(mWebBrowserChrome));
   if (tooltipListener) {
-    rv = tooltipListener->OnShowTooltip(aInXCoords, aInYCoords,
-                                        PromiseFlatString(aInTipText).get(),
-                                        PromiseFlatString(aTipDir).get());
+    rv = tooltipListener->OnShowTooltip(aInXCoords, aInYCoords, aInTipText,
+                                        aTipDir);
     if (NS_SUCCEEDED(rv)) {
       mShowingTooltip = true;
     }
   }
 
   return rv;
 }
 
--- a/docshell/base/nsITooltipListener.idl
+++ b/docshell/base/nsITooltipListener.idl
@@ -28,17 +28,17 @@ interface nsITooltipListener : nsISuppor
      * @param aTipDir  The direction (ltr or rtl) in which to display the text
      *
      * @note
      * Coordinates are specified in pixels, relative to the top-left
      * corner of the browser area.
      *
      * @return <code>NS_OK</code> if the tooltip was displayed.
      */
-    void onShowTooltip(in long aXCoords, in long aYCoords, in wstring aTipText,
-                       in wstring aTipDir);
+    void onShowTooltip(in long aXCoords, in long aYCoords, in AString aTipText,
+                       in AString aTipDir);
   
     /**
      * Called when the tooltip should be hidden, either because the pointer
      * has moved or the tooltip has timed out.
      */
     void onHideTooltip();
 };
--- a/dom/base/Selection.cpp
+++ b/dom/base/Selection.cpp
@@ -378,27 +378,29 @@ void printRange(nsRange* aDomRange) {
   int32_t endOffset = aDomRange->EndOffset();
 
   printf("range: 0x%lx\t start: 0x%lx %ld, \t end: 0x%lx,%ld\n",
          (unsigned long)aDomRange, (unsigned long)startNode, (long)startOffset,
          (unsigned long)endNode, (long)endOffset);
 }
 #endif /* PRINT_RANGE */
 
-void Selection::Stringify(nsAString& aResult) {
-  // We need FlushType::Frames here to make sure frames have been created for
-  // the selected content.  Use mFrameSelection->GetShell() which returns
-  // null if the Selection has been disconnected (the shell is Destroyed).
-  nsCOMPtr<nsIPresShell> shell =
-      mFrameSelection ? mFrameSelection->GetShell() : nullptr;
-  if (!shell) {
-    aResult.Truncate();
-    return;
+void Selection::Stringify(nsAString& aResult, FlushFrames aFlushFrames) {
+  if (aFlushFrames == FlushFrames::Yes) {
+    // We need FlushType::Frames here to make sure frames have been created for
+    // the selected content.  Use mFrameSelection->GetShell() which returns
+    // null if the Selection has been disconnected (the shell is Destroyed).
+    nsCOMPtr<nsIPresShell> shell =
+        mFrameSelection ? mFrameSelection->GetShell() : nullptr;
+    if (!shell) {
+      aResult.Truncate();
+      return;
+    }
+    shell->FlushPendingNotifications(FlushType::Frames);
   }
-  shell->FlushPendingNotifications(FlushType::Frames);
 
   IgnoredErrorResult rv;
   ToStringWithFormat(NS_LITERAL_STRING("text/plain"),
                      nsIDocumentEncoder::SkipInvisibleContent, 0, aResult, rv);
   if (rv.Failed()) {
     aResult.Truncate();
   }
 }
--- a/dom/base/Selection.h
+++ b/dom/base/Selection.h
@@ -298,17 +298,22 @@ class Selection final : public nsSupport
   /**
    * RemoveAllRangesTemporarily() is useful if the caller will add one or more
    * ranges later.  This tries to cache a removing range if it's possible.
    * If a range is not referred by anything else this selection, the range
    * can be reused later.  Otherwise, this works as same as RemoveAllRanges().
    */
   nsresult RemoveAllRangesTemporarily();
 
-  void Stringify(nsAString& aResult);
+  /**
+   * Whether Stringify should flush layout or not.
+   */
+  enum class FlushFrames { No, Yes };
+  MOZ_CAN_RUN_SCRIPT
+  void Stringify(nsAString& aResult, FlushFrames = FlushFrames::Yes);
 
   /**
    * Indicates whether the node is part of the selection. If partlyContained
    * is true, the function returns true when some part of the node
    * is part of the selection. If partlyContained is false, the
    * function only returns true when the entire node is part of the selection.
    */
   bool ContainsNode(nsINode& aNode, bool aPartlyContained,
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -2969,17 +2969,17 @@ void TabChild::ReinitRenderingForDeviceR
   }
 
   // Proceed with destroying and recreating the layer manager.
   ReinitRendering();
 }
 
 NS_IMETHODIMP
 TabChild::OnShowTooltip(int32_t aXCoords, int32_t aYCoords,
-                        const char16_t* aTipText, const char16_t* aTipDir) {
+                        const nsAString& aTipText, const nsAString& aTipDir) {
   nsString str(aTipText);
   nsString dir(aTipDir);
   SendShowTooltip(aXCoords, aYCoords, str, dir);
   return NS_OK;
 }
 
 NS_IMETHODIMP
 TabChild::OnHideTooltip() {
--- a/dom/media/fake-cdm/cdm-fake.cpp
+++ b/dom/media/fake-cdm/cdm-fake.cpp
@@ -42,21 +42,21 @@ extern "C" {
 
 CDM_API
 void INITIALIZE_CDM_MODULE() {}
 
 CDM_API
 void* CreateCdmInstance(int cdm_interface_version, const char* key_system,
                         uint32_t key_system_size,
                         GetCdmHostFunc get_cdm_host_func, void* user_data) {
-  if (cdm_interface_version != cdm::ContentDecryptionModule_9::kVersion) {
-    // Only support CDM version 9 currently.
+  if (cdm_interface_version != cdm::ContentDecryptionModule_10::kVersion) {
+    // Only support CDM version 10 currently.
     return nullptr;
   }
-  cdm::Host_9* host = static_cast<cdm::Host_9*>(
+  cdm::Host_10* host = static_cast<cdm::Host_10*>(
       get_cdm_host_func(cdm_interface_version, user_data));
   return new FakeDecryptor(host);
 }
 
 CDM_API
 bool VerifyCdmHost_0(const cdm::HostFile* aHostFiles, uint32_t aNumFiles) {
   return true;
 }
--- a/dom/media/fake-cdm/cdm-test-decryptor.cpp
+++ b/dom/media/fake-cdm/cdm-test-decryptor.cpp
@@ -67,17 +67,17 @@ class TestManager {
   static void Error(const string& msg) { FakeDecryptor::Message(msg); }
 
   static void Finish() { FakeDecryptor::Message("test-storage complete"); }
 
   std::mutex mMutex;
   set<string> mTestIDs;
 };
 
-FakeDecryptor::FakeDecryptor(cdm::Host_9* aHost) : mHost(aHost) {
+FakeDecryptor::FakeDecryptor(cdm::Host_10* aHost) : mHost(aHost) {
   MOZ_ASSERT(!sInstance);
   sInstance = this;
 }
 
 void FakeDecryptor::Message(const std::string& aMessage) {
   MOZ_ASSERT(sInstance);
   const static std::string sid("fake-session-id");
   sInstance->mHost->OnSessionMessage(sid.c_str(), sid.size(),
--- a/dom/media/fake-cdm/cdm-test-decryptor.h
+++ b/dom/media/fake-cdm/cdm-test-decryptor.h
@@ -5,22 +5,24 @@
 
 #ifndef FAKE_DECRYPTOR_H__
 #define FAKE_DECRYPTOR_H__
 
 #include "content_decryption_module.h"
 #include <string>
 #include "mozilla/Attributes.h"
 
-class FakeDecryptor : public cdm::ContentDecryptionModule_9 {
+class FakeDecryptor : public cdm::ContentDecryptionModule_10 {
  public:
-  explicit FakeDecryptor(cdm::Host_9* aHost);
+  explicit FakeDecryptor(cdm::Host_10* aHost);
 
-  void Initialize(bool aAllowDistinctiveIdentifier,
-                  bool aAllowPersistentState) override {}
+  void Initialize(bool aAllowDistinctiveIdentifier, bool aAllowPersistentState,
+                  bool aUseHardwareSecureCodecs) override {
+    mHost->OnInitialized(true);
+  }
 
   void GetStatusForPolicy(uint32_t aPromiseId,
                           const cdm::Policy& aPolicy) override {}
 
   void SetServerCertificate(uint32_t aPromiseId,
                             const uint8_t* aServerCertificateData,
                             uint32_t aServerCertificateDataSize) override {}
 
@@ -40,42 +42,42 @@ class FakeDecryptor : public cdm::Conten
   void CloseSession(uint32_t aPromiseId, const char* aSessionId,
                     uint32_t aSessionIdSize) override {}
 
   void RemoveSession(uint32_t aPromiseId, const char* aSessionId,
                      uint32_t aSessionIdSize) override {}
 
   void TimerExpired(void* aContext) override {}
 
-  cdm::Status Decrypt(const cdm::InputBuffer_1& aEncryptedBuffer,
+  cdm::Status Decrypt(const cdm::InputBuffer_2& aEncryptedBuffer,
                       cdm::DecryptedBlock* aDecryptedBuffer) override {
     return cdm::Status::kDecodeError;
   }
 
   cdm::Status InitializeAudioDecoder(
-      const cdm::AudioDecoderConfig_1& aAudioDecoderConfig) override {
+      const cdm::AudioDecoderConfig_2& aAudioDecoderConfig) override {
     return cdm::Status::kDecodeError;
   }
 
   cdm::Status InitializeVideoDecoder(
-      const cdm::VideoDecoderConfig_1& aVideoDecoderConfig) override {
+      const cdm::VideoDecoderConfig_2& aVideoDecoderConfig) override {
     return cdm::Status::kDecodeError;
   }
 
   void DeinitializeDecoder(cdm::StreamType aDecoderType) override {}
 
   void ResetDecoder(cdm::StreamType aDecoderType) override {}
 
-  cdm::Status DecryptAndDecodeFrame(const cdm::InputBuffer_1& aEncryptedBuffer,
+  cdm::Status DecryptAndDecodeFrame(const cdm::InputBuffer_2& aEncryptedBuffer,
                                     cdm::VideoFrame* aVideoFrame) override {
     return cdm::Status::kDecodeError;
   }
 
   cdm::Status DecryptAndDecodeSamples(
-      const cdm::InputBuffer_1& aEncryptedBuffer,
+      const cdm::InputBuffer_2& aEncryptedBuffer,
       cdm::AudioFrames* aAudioFrame) override {
     return cdm::Status::kDecodeError;
   }
 
   void OnPlatformChallengeResponse(
       const cdm::PlatformChallengeResponse& aResponse) override {}
 
   void OnQueryOutputProtectionStatus(cdm::QueryResult aResult,
@@ -87,17 +89,17 @@ class FakeDecryptor : public cdm::Conten
 
   void Destroy() override {
     delete this;
     sInstance = nullptr;
   }
 
   static void Message(const std::string& aMessage);
 
-  cdm::Host_9* mHost;
+  cdm::Host_10* mHost;
 
   static FakeDecryptor* sInstance;
 
  private:
   virtual ~FakeDecryptor() {}
 
   void TestStorage();
 };
--- a/dom/media/fake-cdm/cdm-test-storage.cpp
+++ b/dom/media/fake-cdm/cdm-test-storage.cpp
@@ -30,17 +30,17 @@ class WriteRecordClient : public FileIOC
     }
   }
 
   void OnReadComplete(Status aStatus, const uint8_t* aData,
                       uint32_t aDataSize) override {}
 
   void OnWriteComplete(Status aStatus) override { Done(aStatus); }
 
-  void Do(const string& aName, Host_9* aHost) {
+  void Do(const string& aName, Host_10* aHost) {
     // Initialize the FileIO.
     mFileIO = aHost->CreateFileIO(this);
     mFileIO->Open(aName.c_str(), aName.size());
   }
 
  private:
   void Done(cdm::FileIOClient::Status aStatus) {
     // Note: Call Close() before running continuation, in case the
@@ -63,26 +63,26 @@ class WriteRecordClient : public FileIOC
   }
 
   FileIO* mFileIO = nullptr;
   function<void()> mOnSuccess;
   function<void()> mOnFailure;
   std::vector<uint8_t> mData;
 };
 
-void WriteRecord(Host_9* aHost, const std::string& aRecordName,
+void WriteRecord(Host_10* aHost, const std::string& aRecordName,
                  const uint8_t* aData, uint32_t aNumBytes,
                  function<void()>&& aOnSuccess, function<void()>&& aOnFailure) {
   // client will be delete in WriteRecordClient::Done
   WriteRecordClient* client = new WriteRecordClient(
       move(aOnSuccess), move(aOnFailure), aData, aNumBytes);
   client->Do(aRecordName, aHost);
 }
 
-void WriteRecord(Host_9* aHost, const std::string& aRecordName,
+void WriteRecord(Host_10* aHost, const std::string& aRecordName,
                  const std::string& aData, function<void()>&& aOnSuccess,
                  function<void()>&& aOnFailure) {
   return WriteRecord(aHost, aRecordName, (const uint8_t*)aData.c_str(),
                      aData.size(), move(aOnSuccess), move(aOnFailure));
 }
 
 class ReadRecordClient : public FileIOClient {
  public:
@@ -101,17 +101,17 @@ class ReadRecordClient : public FileIOCl
 
   void OnReadComplete(Status aStatus, const uint8_t* aData,
                       uint32_t aDataSize) override {
     Done(aStatus, aData, aDataSize);
   }
 
   void OnWriteComplete(Status aStatus) override {}
 
-  void Do(const string& aName, Host_9* aHost) {
+  void Do(const string& aName, Host_10* aHost) {
     mFileIO = aHost->CreateFileIO(this);
     mFileIO->Open(aName.c_str(), aName.size());
   }
 
  private:
   void Done(cdm::FileIOClient::Status aStatus, const uint8_t* aData,
             uint32_t aDataSize) {
     // Note: Call Close() before running continuation, in case the
@@ -133,17 +133,17 @@ class ReadRecordClient : public FileIOCl
     delete this;
   }
 
   FileIO* mFileIO = nullptr;
   function<void(bool, const uint8_t*, uint32_t)> mOnReadComplete;
 };
 
 void ReadRecord(
-    Host_9* aHost, const std::string& aRecordName,
+    Host_10* aHost, const std::string& aRecordName,
     function<void(bool, const uint8_t*, uint32_t)>&& aOnReadComplete) {
   // client will be delete in ReadRecordClient::Done
   ReadRecordClient* client = new ReadRecordClient(move(aOnReadComplete));
   client->Do(aRecordName, aHost);
 }
 
 class OpenRecordClient : public FileIOClient {
  public:
@@ -152,17 +152,17 @@ class OpenRecordClient : public FileIOCl
 
   void OnOpenComplete(Status aStatus) override { Done(aStatus); }
 
   void OnReadComplete(Status aStatus, const uint8_t* aData,
                       uint32_t aDataSize) override {}
 
   void OnWriteComplete(Status aStatus) override {}
 
-  void Do(const string& aName, Host_9* aHost) {
+  void Do(const string& aName, Host_10* aHost) {
     // Initialize the FileIO.
     mFileIO = aHost->CreateFileIO(this);
     mFileIO->Open(aName.c_str(), aName.size());
   }
 
  private:
   void Done(cdm::FileIOClient::Status aStatus) {
     // Note: Call Close() before running continuation, in case the
@@ -184,14 +184,14 @@ class OpenRecordClient : public FileIOCl
     delete this;
   }
 
   FileIO* mFileIO = nullptr;
   function<void(bool)> mOpenComplete;
   ;
 };
 
-void OpenRecord(Host_9* aHost, const std::string& aRecordName,
+void OpenRecord(Host_10* aHost, const std::string& aRecordName,
                 function<void(bool)>&& aOpenComplete) {
   // client will be delete in OpenRecordClient::Done
   OpenRecordClient* client = new OpenRecordClient(move(aOpenComplete));
   client->Do(aRecordName, aHost);
 }
--- a/dom/media/fake-cdm/cdm-test-storage.h
+++ b/dom/media/fake-cdm/cdm-test-storage.h
@@ -19,30 +19,30 @@
 
 class ReadContinuation {
  public:
   virtual ~ReadContinuation() {}
   virtual void operator()(bool aSuccess, const uint8_t* aData,
                           uint32_t aDataSize) = 0;
 };
 
-void WriteRecord(cdm::Host_9* aHost, const std::string& aRecordName,
+void WriteRecord(cdm::Host_10* aHost, const std::string& aRecordName,
                  const std::string& aData, std::function<void()>&& aOnSuccess,
                  std::function<void()>&& aOnFailure);
 
-void WriteRecord(cdm::Host_9* aHost, const std::string& aRecordName,
+void WriteRecord(cdm::Host_10* aHost, const std::string& aRecordName,
                  const uint8_t* aData, uint32_t aNumBytes,
                  std::function<void()>&& aOnSuccess,
                  std::function<void()>&& aOnFailure);
 
 void ReadRecord(
-    cdm::Host_9* aHost, const std::string& aRecordName,
+    cdm::Host_10* aHost, const std::string& aRecordName,
     std::function<void(bool, const uint8_t*, uint32_t)>&& aOnReadComplete);
 
 class OpenContinuation {
  public:
   virtual ~OpenContinuation() {}
   virtual void operator()(bool aSuccess) = 0;
 };
 
-void OpenRecord(cdm::Host_9* aHost, const std::string& aRecordName,
+void OpenRecord(cdm::Host_10* aHost, const std::string& aRecordName,
                 std::function<void(bool)>&& aOpenComplete);
 #endif  // TEST_CDM_STORAGE_H__
--- a/dom/media/fake-cdm/manifest.json
+++ b/dom/media/fake-cdm/manifest.json
@@ -1,9 +1,9 @@
 {
     "name": "fake",
     "description": "Fake CDM Plugin",
     "version": "1",
     "x-cdm-module-versions": "4",
-    "x-cdm-interface-versions": "9",
-    "x-cdm-host-versions": "9",
+    "x-cdm-interface-versions": "10",
+    "x-cdm-host-versions": "10",
     "x-cdm-codecs": ""
 }
\ No newline at end of file
--- a/dom/media/gtest/mp4_demuxer/TestParser.cpp
+++ b/dom/media/gtest/mp4_demuxer/TestParser.cpp
@@ -89,17 +89,17 @@ TEST(MP4Metadata, EmptyStream) {
   // We can seek anywhere in any MPEG4.
   EXPECT_TRUE(metadata.CanSeek());
   EXPECT_FALSE(metadata.Crypto().Ref()->valid);
 }
 
 TEST(MoofParser, EmptyStream) {
   RefPtr<ByteStream> stream = new TestStream(nullptr, 0);
 
-  MoofParser parser(stream, 0, false);
+  MoofParser parser(stream, 0, false, true);
   EXPECT_EQ(0u, parser.mOffset);
   EXPECT_TRUE(parser.ReachedEnd());
 
   MediaByteRangeSet byteRanges;
   EXPECT_FALSE(parser.RebuildFragmentedIndex(byteRanges));
 
   EXPECT_TRUE(parser.GetCompositionRange(byteRanges).IsNull());
   EXPECT_TRUE(parser.mInitRange.IsEmpty());
@@ -399,17 +399,17 @@ TEST(MoofParser, test_case_mp4) {
   length = ArrayLength(testFiles);
 
   for (size_t test = 0; test < length; ++test) {
     nsTArray<uint8_t> buffer = ReadTestFile(tests[test].mFilename);
     ASSERT_FALSE(buffer.IsEmpty());
     RefPtr<ByteStream> stream =
         new TestStream(buffer.Elements(), buffer.Length());
 
-    MoofParser parser(stream, 0, false);
+    MoofParser parser(stream, 0, false, true);
     EXPECT_EQ(0u, parser.mOffset) << tests[test].mFilename;
     EXPECT_FALSE(parser.ReachedEnd()) << tests[test].mFilename;
     EXPECT_TRUE(parser.mInitRange.IsEmpty()) << tests[test].mFilename;
 
     RefPtr<MediaByteBuffer> metadataBuffer = parser.Metadata();
     EXPECT_TRUE(metadataBuffer) << tests[test].mFilename;
 
     EXPECT_FALSE(parser.mInitRange.IsEmpty()) << tests[test].mFilename;
--- a/dom/media/mediasource/ContainerParser.cpp
+++ b/dom/media/mediasource/ContainerParser.cpp
@@ -521,17 +521,18 @@ class MP4ContainerParser : public Contai
     if (initSegment) {
       mResource = new SourceBufferResource();
       DDLINKCHILD("resource", mResource.get());
       mStream = new MP4Stream(mResource);
       // We use a timestampOffset of 0 for ContainerParser, and require
       // consumers of ParseStartAndEndTimestamps to add their timestamp offset
       // manually. This allows the ContainerParser to be shared across different
       // timestampOffsets.
-      mParser = new MoofParser(mStream, 0, /* aIsAudio = */ false);
+      mParser = new MoofParser(mStream, 0, /* aIsAudio = */ false,
+                               /* aIsMultitrackParser */ true);
       DDLINKCHILD("parser", mParser.get());
       mInitData = new MediaByteBuffer();
       mCompleteInitSegmentRange = MediaByteRange();
       mCompleteMediaHeaderRange = MediaByteRange();
       mCompleteMediaSegmentRange = MediaByteRange();
       mGlobalOffset = mTotalParsed;
     } else if (!mStream || !mParser) {
       mTotalParsed += aData->Length();
--- a/dom/media/mp4/MoofParser.cpp
+++ b/dom/media/mp4/MoofParser.cpp
@@ -222,21 +222,21 @@ void MoofParser::ParseMoov(Box& aBox) {
 }
 
 void MoofParser::ParseTrak(Box& aBox) {
   Tkhd tkhd;
   for (Box box = aBox.FirstChild(); box.IsAvailable(); box = box.Next()) {
     if (box.IsType("tkhd")) {
       tkhd = Tkhd(box);
     } else if (box.IsType("mdia")) {
-      if (!mTrex.mTrackId || tkhd.mTrackId == mTrex.mTrackId) {
+      if (mIsMultitrackParser || tkhd.mTrackId == mTrex.mTrackId) {
         ParseMdia(box, tkhd);
       }
     } else if (box.IsType("edts") &&
-               (!mTrex.mTrackId || tkhd.mTrackId == mTrex.mTrackId)) {
+               (mIsMultitrackParser || tkhd.mTrackId == mTrex.mTrackId)) {
       mEdts = Edts(box);
     }
   }
 }
 
 void MoofParser::ParseMdia(Box& aBox, Tkhd& aTkhd) {
   for (Box box = aBox.FirstChild(); box.IsAvailable(); box = box.Next()) {
     if (box.IsType("mdhd")) {
@@ -246,22 +246,18 @@ void MoofParser::ParseMdia(Box& aBox, Tk
     }
   }
 }
 
 void MoofParser::ParseMvex(Box& aBox) {
   for (Box box = aBox.FirstChild(); box.IsAvailable(); box = box.Next()) {
     if (box.IsType("trex")) {
       Trex trex = Trex(box);
-      if (!mTrex.mTrackId || trex.mTrackId == mTrex.mTrackId) {
-        auto trackId = mTrex.mTrackId;
+      if (mIsMultitrackParser || trex.mTrackId == mTrex.mTrackId) {
         mTrex = trex;
-        // Keep the original trackId, as should it be 0 we want to continue
-        // parsing all tracks.
-        mTrex.mTrackId = trackId;
       }
     }
   }
 }
 
 void MoofParser::ParseMinf(Box& aBox) {
   for (Box box = aBox.FirstChild(); box.IsAvailable(); box = box.Next()) {
     if (box.IsType("stbl")) {
@@ -294,18 +290,18 @@ void MoofParser::ParseStbl(Box& aBox) {
           return;
         }
       }
     }
   }
 }
 
 void MoofParser::ParseStsd(Box& aBox) {
-  if (mTrex.mTrackId == 0) {
-    // If mTrex.mTrackId is 0, then the parser is being used to read multiple
+  if (mIsMultitrackParser) {
+    // If mIsMultitrackParser, then the parser is being used to read multiple
     // tracks metadata, and it is not a sane operation to try and map multiple
     // sample description boxes, from different tracks, onto the parser, which
     // is modeled around storing metadata for a single track.
     return;
   }
   MOZ_ASSERT(
       mSampleDescriptions.IsEmpty(),
       "Shouldn't have any sample descriptions when starting to parse stsd");
--- a/dom/media/mp4/MoofParser.h
+++ b/dom/media/mp4/MoofParser.h
@@ -262,24 +262,28 @@ class Moof final : public Atom {
   bool ProcessCencAuxInfo(AtomType aScheme);
   uint64_t mMaxRoundingError;
 };
 
 DDLoggedTypeDeclName(MoofParser);
 
 class MoofParser : public DecoderDoctorLifeLogger<MoofParser> {
  public:
-  MoofParser(ByteStream* aSource, uint32_t aTrackId, bool aIsAudio)
+  MoofParser(ByteStream* aSource, uint32_t aTrackId, bool aIsAudio,
+             bool aIsMultitrackParser = false)
       : mSource(aSource),
         mOffset(0),
         mTrex(aTrackId),
         mIsAudio(aIsAudio),
-        mLastDecodeTime(0) {
-    // Setting the mTrex.mTrackId to 0 is a nasty work around for calculating
-    // the composition range for MSE. We need an array of tracks.
+        mLastDecodeTime(0),
+        mIsMultitrackParser(aIsMultitrackParser) {
+    // Setting mIsMultitrackParser is a nasty work around for calculating
+    // the composition range for MSE that causes the parser to parse multiple
+    // tracks. Ideally we'd store an array of tracks with different metadata
+    // for each.
     DDLINKCHILD("source", aSource);
   }
   bool RebuildFragmentedIndex(const mozilla::MediaByteRangeSet& aByteRanges);
   // If *aCanEvict is set to true. then will remove all moofs already parsed
   // from index then rebuild the index. *aCanEvict is set to true upon return if
   // some moofs were removed.
   bool RebuildFragmentedIndex(const mozilla::MediaByteRangeSet& aByteRanges,
                               bool* aCanEvict);
@@ -321,12 +325,13 @@ class MoofParser : public DecoderDoctorL
   nsTArray<Moof>& Moofs() { return mMoofs; }
 
  private:
   void ScanForMetadata(mozilla::MediaByteRange& aMoov);
   nsTArray<Moof> mMoofs;
   nsTArray<MediaByteRange> mMediaRanges;
   bool mIsAudio;
   uint64_t mLastDecodeTime;
+  bool mIsMultitrackParser;
 };
 }  // namespace mozilla
 
 #endif
--- a/dom/media/webrtc/MediaEngineWebRTCAudio.cpp
+++ b/dom/media/webrtc/MediaEngineWebRTCAudio.cpp
@@ -515,16 +515,19 @@ void MediaEngineWebRTCMicrophoneSource::
   mTrackID = aTrackID;
   mPrincipal = aPrincipal;
 
   AudioSegment* segment = new AudioSegment();
 
   aStream->AddAudioTrack(aTrackID, aStream->GraphRate(), segment,
                          SourceMediaStream::ADDTRACK_QUEUED);
 
+  mInputProcessing = new AudioInputProcessing(mDeviceMaxChannelCount, mStream,
+                                              mTrackID, mPrincipal);
+
   LOG("Stream %p registered for microphone capture", aStream.get());
 }
 
 class StartStopMessage : public ControlMessage {
  public:
   enum StartStop { Start, Stop };
 
   StartStopMessage(AudioInputProcessing* aInputProcessing, StartStop aAction)
@@ -561,19 +564,16 @@ nsresult MediaEngineWebRTCMicrophoneSour
   CubebUtils::AudioDeviceID deviceID = mDeviceInfo->DeviceID();
   if (mStream->GraphImpl()->InputDeviceID() &&
       mStream->GraphImpl()->InputDeviceID() != deviceID) {
     // For now, we only allow opening a single audio input device per document,
     // because we can only have one MSG per document.
     return NS_ERROR_FAILURE;
   }
 
-  mInputProcessing = new AudioInputProcessing(mDeviceMaxChannelCount, mStream,
-                                              mTrackID, mPrincipal);
-
   RefPtr<MediaEngineWebRTCMicrophoneSource> that = this;
   NS_DispatchToMainThread(media::NewRunnableFrom(
       [that, deviceID, stream = mStream, track = mTrackID]() {
         if (stream->IsDestroyed()) {
           return NS_OK;
         }
 
         stream->GraphImpl()->AppendMessage(MakeUnique<StartStopMessage>(
@@ -771,17 +771,24 @@ void AudioInputProcessing::UpdateAPMExtr
   webrtc::Config config;
   config.Set<webrtc::ExtendedFilter>(
       new webrtc::ExtendedFilter(aExtendedFilter));
   config.Set<webrtc::DelayAgnostic>(new webrtc::DelayAgnostic(aDelayAgnostic));
 
   mAudioProcessing->SetExtraOptions(config);
 }
 
-void AudioInputProcessing::Start() { mEnabled = true; }
+void AudioInputProcessing::Start() {
+  mEnabled = true;
+  mLiveFramesAppended = false;
+  mLiveSilenceAppended = false;
+#ifdef DEBUG
+  mLastCallbackAppendTime = 0;
+#endif
+}
 
 void AudioInputProcessing::Stop() { mEnabled = false; }
 
 void AudioInputProcessing::Pull(const RefPtr<SourceMediaStream>& aStream,
                                 TrackID aTrackID, StreamTime aEndOfAppendedData,
                                 StreamTime aDesiredTime,
                                 const PrincipalHandle& aPrincipalHandle) {
   TRACE_AUDIO_CALLBACK_COMMENT("SourceMediaStream %p track %i", aStream.get(),
--- a/dom/security/nsContentSecurityManager.cpp
+++ b/dom/security/nsContentSecurityManager.cpp
@@ -613,18 +613,32 @@ static void LogPrincipal(nsIPrincipal* a
   if (aPrincipal) {
     if (aPrincipal->GetIsNullPrincipal()) {
       MOZ_LOG(sCSMLog, LogLevel::Debug,
               ("  %s: NullPrincipal\n",
                NS_ConvertUTF16toUTF8(aPrincipalName).get()));
       return;
     }
     if (aPrincipal->GetIsExpandedPrincipal()) {
+      nsCOMPtr<nsIExpandedPrincipal> expanded(do_QueryInterface(aPrincipal));
+      const nsTArray<nsCOMPtr<nsIPrincipal>>& allowList = expanded->AllowList();
       nsAutoCString origin;
-      aPrincipal->GetOrigin(origin);
+      origin.AssignLiteral("[Expanded Principal [");
+      for (size_t i = 0; i < allowList.Length(); ++i) {
+        if (i != 0) {
+          origin.AppendLiteral(", ");
+        }
+
+        nsAutoCString subOrigin;
+        DebugOnly<nsresult> rv = allowList.ElementAt(i)->GetOrigin(subOrigin);
+        MOZ_ASSERT(NS_SUCCEEDED(rv));
+        origin.Append(subOrigin);
+      }
+      origin.AppendLiteral("]]");
+
       MOZ_LOG(sCSMLog, LogLevel::Debug,
               ("  %s: %s\n", NS_ConvertUTF16toUTF8(aPrincipalName).get(),
                origin.get()));
       return;
     }
     nsCOMPtr<nsIURI> principalURI;
     nsAutoCString principalSpec;
     aPrincipal->GetURI(getter_AddRefs(principalURI));
--- a/gfx/wr/webrender/src/lib.rs
+++ b/gfx/wr/webrender/src/lib.rs
@@ -7,42 +7,43 @@ A GPU based renderer for the web.
 
 It serves as an experimental render backend for [Servo](https://servo.org/),
 but it can also be used as such in a standalone application.
 
 # External dependencies
 WebRender currently depends on [FreeType](https://www.freetype.org/)
 
 # Api Structure
-The main entry point to WebRender is the `webrender::Renderer`.
-
-By calling `Renderer::new(...)` you get a `Renderer`, as well as a `RenderApiSender`.
-Your `Renderer` is responsible to render the previously processed frames onto the screen.
+The main entry point to WebRender is the [`crate::Renderer`].
 
-By calling `yourRenderApiSender.create_api()`, you'll get a `RenderApi` instance,
-which is responsible for managing resources and documents. A worker thread is used internally
-to untie the workload from the application thread and therefore be able to make better use of
-multicore systems.
+By calling [`Renderer::new(...)`](crate::Renderer::new) you get a [`Renderer`], as well as
+a [`RenderApiSender`](api::RenderApiSender). Your [`Renderer`] is responsible to render the
+previously processed frames onto the screen.
+
+By calling [`yourRenderApiSender.create_api()`](api::RenderApiSender::create_api), you'll
+get a [`RenderApi`](api::RenderApi) instance, which is responsible for managing resources
+and documents. A worker thread is used internally to untie the workload from the application
+thread and therefore be able to make better use of multicore systems.
 
 ## Frame
 
 What is referred to as a `frame`, is the current geometry on the screen.
-A new Frame is created by calling [`set_display_list()`][newframe] on the `RenderApi`.
-When the geometry is processed, the application will be informed via a `RenderNotifier`,
-a callback which you employ with [set_render_notifier][notifier] on the `Renderer`
+A new Frame is created by calling [`set_display_list()`](api::Transaction::set_display_list)
+on the [`RenderApi`](api::RenderApi). When the geometry is processed, the application will be
+informed via a [`RenderNotifier`](api::RenderNotifier), a callback which you pass to
+[`Renderer::new`].
 More information about [stacking contexts][stacking_contexts].
 
-`set_display_list()` also needs to be supplied with `BuiltDisplayList`s.
-These are obtained by finalizing a `DisplayListBuilder`. These are used to draw your geometry.
-But it doesn't only contain trivial geometry, it can also store another StackingContext, as
-they're nestable.
+[`set_display_list()`](api::Transaction::set_display_list) also needs to be supplied with
+[`BuiltDisplayList`](api::BuiltDisplayList)s. These are obtained by finalizing a
+[`DisplayListBuilder`](api::DisplayListBuilder). These are used to draw your geometry. But it
+doesn't only contain trivial geometry, it can also store another
+[`StackingContext`](api::StackingContext), as they're nestable.
 
 [stacking_contexts]: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context
-[newframe]: ../webrender_api/struct.RenderApi.html#method.set_display_list
-[notifier]: renderer/struct.Renderer.html#method.set_render_notifier
 */
 
 // Cribbed from the |matches| crate, for simplicity.
 macro_rules! matches {
     ($expression:expr, $($pattern:tt)+) => {
         match $expression {
             $($pattern)+ => true,
             _ => false
--- a/gfx/wr/webrender/src/renderer.rs
+++ b/gfx/wr/webrender/src/renderer.rs
@@ -2472,18 +2472,17 @@ impl Renderer {
 
     pub fn notify_slow_frame(&mut self) {
         #[cfg(feature = "debug_renderer")]
         self.slow_frame_indicator.changed();
     }
 
     /// Renders the current frame.
     ///
-    /// A Frame is supplied by calling [`generate_frame()`][genframe].
-    /// [genframe]: ../../webrender_api/struct.DocumentApi.html#method.generate_frame
+    /// A Frame is supplied by calling [`generate_frame()`][webrender_api::Transaction::generate_frame].
     pub fn render(
         &mut self,
         framebuffer_size: DeviceIntSize,
     ) -> Result<RendererStats, Vec<RendererError>> {
         self.framebuffer_size = Some(framebuffer_size);
 
         let result = self.render_impl(Some(framebuffer_size));
 
--- a/gfx/wr/webrender_api/src/api.rs
+++ b/gfx/wr/webrender_api/src/api.rs
@@ -142,17 +142,16 @@ impl Transaction {
     /// Supplies a new frame to WebRender.
     ///
     /// Non-blocking, it notifies a worker process which processes the display list.
     ///
     /// Note: Scrolling doesn't require an own Frame.
     ///
     /// Arguments:
     ///
-    /// * `document_id`: Target Document ID.
     /// * `epoch`: The unique Frame ID, monotonically increasing.
     /// * `background`: The background color of this pipeline.
     /// * `viewport_size`: The size of the viewport for this frame.
     /// * `pipeline_id`: The ID of the pipeline that is supplying this display list.
     /// * `content_size`: The total screen space size of this display list's display items.
     /// * `display_list`: The root Display list used in this frame.
     /// * `preserve_frame_state`: If a previous frame exists which matches this pipeline
     ///                           id, this setting determines if frame state (such as scrolling
deleted file mode 100644
--- a/js/ipc/CPOWTimer.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * vim: set ts=4 sw=2 et 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/. */
-
-#include "jsfriendapi.h"
-#include "nsContentUtils.h"
-#include "CPOWTimer.h"
-
-#include "jsapi.h"
-
-CPOWTimer::CPOWTimer(JSContext* cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM_IN_IMPL)
-    : cx_(nullptr), startInterval_(0) {
-  MOZ_GUARD_OBJECT_NOTIFIER_INIT;
-  if (!js::GetStopwatchIsMonitoringCPOW(cx)) {
-    return;
-  }
-  cx_ = cx;
-  startInterval_ = JS_Now();
-}
-CPOWTimer::~CPOWTimer() {
-  if (!cx_) {
-    // Monitoring was off when we started the timer.
-    return;
-  }
-
-  if (!js::GetStopwatchIsMonitoringCPOW(cx_)) {
-    // Monitoring has been deactivated while we were in the timer.
-    return;
-  }
-
-  const int64_t endInterval = JS_Now();
-  if (endInterval <= startInterval_) {
-    // Do not assume monotonicity.
-    return;
-  }
-
-  js::AddCPOWPerformanceDelta(cx_, endInterval - startInterval_);
-}
deleted file mode 100644
--- a/js/ipc/CPOWTimer.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * vim: set ts=4 sw=2 et 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/. */
-
-#ifndef CPOWTIMER_H
-#define CPOWTIMER_H
-
-#include "prinrval.h"
-#include "jsapi.h"
-
-/**
- * A stopwatch measuring the duration of a CPOW call.
- *
- * As the process is consuming neither user time nor system time
- * during a CPOW call, we measure such durations using wallclock time.
- *
- * This stopwatch is active iff JSRuntime::stopwatch.isActive is set.
- * Upon destruction, update JSRuntime::stopwatch.data.totalCPOWTime.
- */
-class MOZ_RAII CPOWTimer final {
- public:
-  explicit inline CPOWTimer(JSContext* cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM);
-  ~CPOWTimer();
-
- private:
-  MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER
-
-  /**
-   * The context in which this timer was created, or `nullptr` if
-   * CPOW monitoring was off when the timer was created.
-   */
-  JSContext* cx_;
-
-  /**
-   * The instant at which the stopwatch was started. Undefined
-   * if CPOW monitoring was off when the timer was created.
-   */
-  int64_t startInterval_;
-};
-
-#endif
--- a/js/ipc/WrapperOwner.cpp
+++ b/js/ipc/WrapperOwner.cpp
@@ -7,17 +7,16 @@
 
 #include "WrapperOwner.h"
 #include "JavaScriptLogging.h"
 #include "mozilla/Unused.h"
 #include "mozilla/dom/BindingUtils.h"
 #include "jsfriendapi.h"
 #include "js/CharacterEncoding.h"
 #include "xpcprivate.h"
-#include "CPOWTimer.h"
 #include "WrapperFactory.h"
 
 #include "nsIDocShellTreeItem.h"
 #include "mozilla/dom/Document.h"
 
 using namespace js;
 using namespace JS;
 using namespace mozilla;
@@ -144,17 +143,16 @@ const CPOWProxyHandler CPOWProxyHandler:
   if (!owner->active()) {                                               \
     JS_ReportErrorASCII(cx, "cannot use a CPOW whose process is gone"); \
     return failRetVal;                                                  \
   }                                                                     \
   if (!owner->allowMessage(cx)) {                                       \
     return failRetVal;                                                  \
   }                                                                     \
   {                                                                     \
-    CPOWTimer timer(cx);                                                \
     return owner->call args;                                            \
   }
 
 bool CPOWProxyHandler::getOwnPropertyDescriptor(
     JSContext* cx, HandleObject proxy, HandleId id,
     MutableHandle<PropertyDescriptor> desc) const {
   FORWARD(getOwnPropertyDescriptor, (cx, proxy, id, desc), false);
 }
--- a/js/ipc/moz.build
+++ b/js/ipc/moz.build
@@ -1,16 +1,15 @@
 # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # 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/.
 
 UNIFIED_SOURCES += [
-    'CPOWTimer.cpp',
     'JavaScriptChild.cpp',
     'JavaScriptParent.cpp',
     'JavaScriptShared.cpp',
     'WrapperAnswer.cpp',
     'WrapperOwner.cpp',
 ]
 
 IPDL_SOURCES += [
--- a/js/public/Principals.h
+++ b/js/public/Principals.h
@@ -13,20 +13,16 @@
 
 #include <stdint.h>
 
 #include "jspubtd.h"
 
 struct JSStructuredCloneReader;
 struct JSStructuredCloneWriter;
 
-namespace js {
-struct JS_PUBLIC_API PerformanceGroup;
-}  // namespace js
-
 struct JSPrincipals {
   /* Don't call "destroy"; use reference counting macros below. */
   mozilla::Atomic<int32_t, mozilla::SequentiallyConsistent,
                   mozilla::recordreplay::Behavior::DontPreserve>
       refcount;
 
 #ifdef JS_DEBUG
   /* A helper to facilitate principals debugging. */
--- a/js/src/jit/ProcessExecutableMemory.cpp
+++ b/js/src/jit/ProcessExecutableMemory.cpp
@@ -39,18 +39,17 @@
 #ifdef MOZ_VALGRIND
 #include <valgrind/valgrind.h>
 #endif
 
 using namespace js;
 using namespace js::jit;
 
 #ifdef XP_WIN
-// TODO: implement the necessary support for AArch64.
-#if defined(HAVE_64BIT_BUILD) && defined(_M_X64)
+#if defined(HAVE_64BIT_BUILD)
 #define NEED_JIT_UNWIND_HANDLING
 #endif
 
 static void* ComputeRandomAllocationAddress() {
   /*
    * Inspiration is V8's OS::Allocate in platform-win32.cc.
    *
    * VirtualAlloc takes 64K chunks out of the virtual address space, so we
@@ -78,29 +77,51 @@ static void* ComputeRandomAllocationAddr
 #ifdef NEED_JIT_UNWIND_HANDLING
 static js::JitExceptionHandler sJitExceptionHandler;
 
 JS_FRIEND_API void js::SetJitExceptionHandler(JitExceptionHandler handler) {
   MOZ_ASSERT(!sJitExceptionHandler);
   sJitExceptionHandler = handler;
 }
 
+#if defined(_M_ARM64)
+// See the ".xdata records" section of
+// https://docs.microsoft.com/en-us/cpp/build/arm64-exception-handling
+// These records can have various fields present or absent depending on the
+// bits set in the header. We'll be using a mostly-zero dummy structure with
+// no slots for epilogs or unwind codes. But when epilogCount and codeWords are
+// both zero, the interpretation is that there is an additional word containing
+// extended epilog count and code words (which in our case will also be zero).
+struct UnwindInfo {
+  uint32_t functionLength : 18;
+  uint32_t version : 2;
+  uint32_t hasExceptionHandler : 1;
+  uint32_t packedEpilog : 1;
+  uint32_t epilogCount : 5;
+  uint32_t codeWords : 5;
+  uint16_t extEpilogCount;
+  uint8_t extCodeWords;
+  uint8_t reserved;
+  uint32_t exceptionHandler;
+};
+static const unsigned ThunkLength = 20;
+#else
 // From documentation for UNWIND_INFO on
 // http://msdn.microsoft.com/en-us/library/ddssxxy8.aspx
 struct UnwindInfo {
   uint8_t version : 3;
   uint8_t flags : 5;
   uint8_t sizeOfPrologue;
   uint8_t countOfUnwindCodes;
   uint8_t frameRegister : 4;
   uint8_t frameOffset : 4;
   ULONG exceptionHandler;
 };
-
 static const unsigned ThunkLength = 12;
+#endif
 
 struct ExceptionHandlerRecord {
   RUNTIME_FUNCTION runtimeFunction;
   UnwindInfo unwindInfo;
   uint8_t thunk[ThunkLength];
 };
 
 // This function must match the function pointer type PEXCEPTION_HANDLER
@@ -109,76 +130,105 @@ struct ExceptionHandlerRecord {
 // This type is rather elusive in documentation; Wine is the best I've found:
 //   http://source.winehq.org/source/include/winnt.h
 static DWORD ExceptionHandler(PEXCEPTION_RECORD exceptionRecord,
                               _EXCEPTION_REGISTRATION_RECORD*, PCONTEXT context,
                               _EXCEPTION_REGISTRATION_RECORD**) {
   return sJitExceptionHandler(exceptionRecord, context);
 }
 
+PRUNTIME_FUNCTION RuntimeFunctionCallback(DWORD64 ControlPc, PVOID Context);
+
 // For an explanation of the problem being solved here, see
 // SetJitExceptionFilter in jsfriendapi.h.
 static bool RegisterExecutableMemory(void* p, size_t bytes, size_t pageSize) {
   if (!VirtualAlloc(p, pageSize, MEM_COMMIT, PAGE_READWRITE)) {
     MOZ_CRASH();
   }
 
   ExceptionHandlerRecord* r = reinterpret_cast<ExceptionHandlerRecord*>(p);
+  void* handler = JS_FUNC_TO_DATA_PTR(void*, ExceptionHandler);
+
+  // Because the .xdata format on ARM64 can only encode sizes up to 1M (much
+  // too small for our JIT code regions), we register a function table callback
+  // to provide RUNTIME_FUNCTIONs at runtime. Windows doesn't seem to care about
+  // the size fields on RUNTIME_FUNCTIONs that are created in this way, so the
+  // same RUNTIME_FUNCTION can work for any address in the region. We'll set up
+  // a generic one now and the callback can just return a pointer to it.
 
   // All these fields are specified to be offsets from the base of the
   // executable code (which is 'p'), even if they have 'Address' in their
   // names. In particular, exceptionHandler is a ULONG offset which is a
   // 32-bit integer. Since 'p' can be farther than INT32_MAX away from
   // sJitExceptionHandler, we must generate a little thunk inside the
   // record. The record is put on its own page so that we can take away write
   // access to protect against accidental clobbering.
 
+#if defined(_M_ARM64)
+  r->runtimeFunction.BeginAddress = pageSize;
+  r->runtimeFunction.UnwindData = offsetof(ExceptionHandlerRecord, unwindInfo);
+  static_assert(offsetof(ExceptionHandlerRecord, unwindInfo) % 4 == 0,
+                "The ARM64 .pdata format requires that exception information "
+                "RVAs be 4-byte aligned.");
+
+  memset(&r->unwindInfo, 0, sizeof(r->unwindInfo));
+  r->unwindInfo.hasExceptionHandler = true;
+  r->unwindInfo.exceptionHandler = offsetof(ExceptionHandlerRecord, thunk);
+
+  uint32_t* thunk = (uint32_t*)r->thunk;
+  uint16_t* addr = (uint16_t*)&handler;
+
+  // xip0/r16 should be safe to clobber: Windows just used it to call our thunk.
+  const uint8_t reg = 16;
+
+  // Say `handler` is 0x4444333322221111, then:
+  thunk[0] = 0xd2800000 | addr[0] << 5 | reg;  // mov  xip0, 1111
+  thunk[1] = 0xf2a00000 | addr[1] << 5 | reg;  // movk xip0, 2222 lsl #0x10
+  thunk[2] = 0xf2c00000 | addr[2] << 5 | reg;  // movk xip0, 3333 lsl #0x20
+  thunk[3] = 0xf2e00000 | addr[3] << 5 | reg;  // movk xip0, 4444 lsl #0x30
+  thunk[4] = 0xd61f0000 | reg << 5;            // br xip0
+#else
   r->runtimeFunction.BeginAddress = pageSize;
   r->runtimeFunction.EndAddress = (DWORD)bytes;
   r->runtimeFunction.UnwindData = offsetof(ExceptionHandlerRecord, unwindInfo);
 
   r->unwindInfo.version = 1;
   r->unwindInfo.flags = UNW_FLAG_EHANDLER;
   r->unwindInfo.sizeOfPrologue = 0;
   r->unwindInfo.countOfUnwindCodes = 0;
   r->unwindInfo.frameRegister = 0;
   r->unwindInfo.frameOffset = 0;
   r->unwindInfo.exceptionHandler = offsetof(ExceptionHandlerRecord, thunk);
 
   // mov imm64, rax
   r->thunk[0] = 0x48;
   r->thunk[1] = 0xb8;
-  void* handler = JS_FUNC_TO_DATA_PTR(void*, ExceptionHandler);
   memcpy(&r->thunk[2], &handler, 8);
 
   // jmp rax
   r->thunk[10] = 0xff;
   r->thunk[11] = 0xe0;
+#endif
 
   DWORD oldProtect;
   if (!VirtualProtect(p, pageSize, PAGE_EXECUTE_READ, &oldProtect)) {
     MOZ_CRASH();
   }
 
   // XXX NB: The profiler believes this function is only called from the main
   // thread. If that ever becomes untrue, the profiler must be updated
   // immediately.
   AutoSuppressStackWalking suppress;
-  return RtlAddFunctionTable(&r->runtimeFunction, 1,
-                             reinterpret_cast<DWORD64>(p));
+  return RtlInstallFunctionTableCallback((DWORD64)p | 0x3, (DWORD64)p, bytes,
+                                         RuntimeFunctionCallback, NULL, NULL);
 }
 
 static void UnregisterExecutableMemory(void* p, size_t bytes, size_t pageSize) {
-  ExceptionHandlerRecord* r = reinterpret_cast<ExceptionHandlerRecord*>(p);
-
-  // XXX NB: The profiler believes this function is only called from the main
-  // thread. If that ever becomes untrue, the profiler must be updated
-  // immediately.
-  AutoSuppressStackWalking suppress;
-  RtlDeleteFunctionTable(&r->runtimeFunction);
+  // There's no such thing as RtlUninstallFunctionTableCallback, so there's
+  // nothing to do here.
 }
 #endif
 
 static void* ReserveProcessExecutableMemory(size_t bytes) {
 #ifdef NEED_JIT_UNWIND_HANDLING
   size_t pageSize = gc::SystemPageSize();
   if (sJitExceptionHandler) {
     bytes += pageSize;
@@ -469,16 +519,18 @@ class ProcessExecutableMemory {
     base_ = static_cast<uint8_t*>(p);
 
     mozilla::Array<uint64_t, 2> seed;
     GenerateXorShift128PlusSeed(seed);
     rng_.emplace(seed[0], seed[1]);
     return true;
   }
 
+  uint8_t* base() const { return base_; }
+
   bool initialized() const { return base_ != nullptr; }
 
   size_t bytesAllocated() const {
     MOZ_ASSERT(pagesAllocated_ <= MaxCodePages);
     return pagesAllocated_ * ExecutableCodePageSize;
   }
 
   void release() {
@@ -680,8 +732,23 @@ bool js::jit::ReprotectRegion(void* star
   if (mprotect(pageStart, size, flags)) {
     return false;
   }
 #endif
 
   execMemory.assertValidAddress(pageStart, size);
   return true;
 }
+
+#if defined(XP_WIN) && defined(NEED_JIT_UNWIND_HANDLING)
+static PRUNTIME_FUNCTION RuntimeFunctionCallback(DWORD64 ControlPc,
+                                                 PVOID Context) {
+  MOZ_ASSERT(sJitExceptionHandler);
+
+  // RegisterExecutableMemory already set up the runtime function in the
+  // exception-data page preceding the allocation.
+  uint8_t* p = execMemory.base();
+  if (!p) {
+    return nullptr;
+  }
+  return (PRUNTIME_FUNCTION)(p - gc::SystemPageSize());
+}
+#endif
--- a/js/src/jsapi.h
+++ b/js/src/jsapi.h
@@ -4112,180 +4112,16 @@ extern JS_PUBLIC_API bool IsUnwrappedSav
 
 /* Stopwatch-based performance monitoring. */
 
 namespace js {
 
 class AutoStopwatch;
 
 /**
- * Abstract base class for a representation of the performance of a
- * component. Embeddings interested in performance monitoring should
- * provide a concrete implementation of this class, as well as the
- * relevant callbacks (see below).
- */
-struct JS_PUBLIC_API PerformanceGroup {
-  PerformanceGroup();
-
-  // The current iteration of the event loop.
-  uint64_t iteration() const;
-
-  // `true` if an instance of `AutoStopwatch` is already monitoring
-  // the performance of this performance group for this iteration
-  // of the event loop, `false` otherwise.
-  bool isAcquired(uint64_t it) const;
-
-  // `true` if a specific instance of `AutoStopwatch` is already monitoring
-  // the performance of this performance group for this iteration
-  // of the event loop, `false` otherwise.
-  bool isAcquired(uint64_t it, const AutoStopwatch* owner) const;
-
-  // Mark that an instance of `AutoStopwatch` is monitoring
-  // the performance of this group for a given iteration.
-  void acquire(uint64_t it, const AutoStopwatch* owner);
-
-  // Mark that no `AutoStopwatch` is monitoring the
-  // performance of this group for the iteration.
-  void release(uint64_t it, const AutoStopwatch* owner);
-
-  // The number of cycles spent in this group during this iteration
-  // of the event loop. Note that cycles are not a reliable measure,
-  // especially over short intervals. See Stopwatch.* for a more
-  // complete discussion on the imprecision of cycle measurement.
-  uint64_t recentCycles(uint64_t iteration) const;
-  void addRecentCycles(uint64_t iteration, uint64_t cycles);
-
-  // The number of times this group has been activated during this
-  // iteration of the event loop.
-  uint64_t recentTicks(uint64_t iteration) const;
-  void addRecentTicks(uint64_t iteration, uint64_t ticks);
-
-  // The number of microseconds spent doing CPOW during this
-  // iteration of the event loop.
-  uint64_t recentCPOW(uint64_t iteration) const;
-  void addRecentCPOW(uint64_t iteration, uint64_t CPOW);
-
-  // Get rid of any data that pretends to be recent.
-  void resetRecentData();
-
-  // `true` if new measures should be added to this group, `false`
-  // otherwise.
-  bool isActive() const;
-  void setIsActive(bool);
-
-  // `true` if this group has been used in the current iteration,
-  // `false` otherwise.
-  bool isUsedInThisIteration() const;
-  void setIsUsedInThisIteration(bool);
-
- protected:
-  // An implementation of `delete` for this object. Must be provided
-  // by the embedding.
-  virtual void Delete() = 0;
-
- private:
-  // The number of cycles spent in this group during this iteration
-  // of the event loop. Note that cycles are not a reliable measure,
-  // especially over short intervals. See Runtime.cpp for a more
-  // complete discussion on the imprecision of cycle measurement.
-  uint64_t recentCycles_;
-
-  // The number of times this group has been activated during this
-  // iteration of the event loop.
-  uint64_t recentTicks_;
-
-  // The number of microseconds spent doing CPOW during this
-  // iteration of the event loop.
-  uint64_t recentCPOW_;
-
-  // The current iteration of the event loop. If necessary,
-  // may safely overflow.
-  uint64_t iteration_;
-
-  // `true` if new measures should be added to this group, `false`
-  // otherwise.
-  bool isActive_;
-
-  // `true` if this group has been used in the current iteration,
-  // `false` otherwise.
-  bool isUsedInThisIteration_;
-
-  // The stopwatch currently monitoring the group,
-  // or `nullptr` if none. Used ony for comparison.
-  const AutoStopwatch* owner_;
-
- public:
-  // Compatibility with RefPtr<>
-  void AddRef();
-  void Release();
-  uint64_t refCount_;
-};
-
-using PerformanceGroupVector =
-    mozilla::Vector<RefPtr<js::PerformanceGroup>, 8, SystemAllocPolicy>;
-
-/**
- * Commit any Performance Monitoring data.
- *
- * Until `FlushMonitoring` has been called, all PerformanceMonitoring data is
- * invisible to the outside world and can cancelled with a call to
- * `ResetMonitoring`.
- */
-extern JS_PUBLIC_API bool FlushPerformanceMonitoring(JSContext*);
-
-/**
- * Cancel any measurement that hasn't been committed.
- */
-extern JS_PUBLIC_API void ResetPerformanceMonitoring(JSContext*);
-
-/**
- * Cleanup any memory used by performance monitoring.
- */
-extern JS_PUBLIC_API void DisposePerformanceMonitoring(JSContext*);
-
-/**
- * Turn on/off stopwatch-based CPU monitoring.
- *
- * `SetStopwatchIsMonitoringCPOW` or `SetStopwatchIsMonitoringJank`
- * may return `false` if monitoring could not be activated, which may
- * happen if we are out of memory.
- */
-extern JS_PUBLIC_API bool SetStopwatchIsMonitoringCPOW(JSContext*, bool);
-extern JS_PUBLIC_API bool GetStopwatchIsMonitoringCPOW(JSContext*);
-extern JS_PUBLIC_API bool SetStopwatchIsMonitoringJank(JSContext*, bool);
-extern JS_PUBLIC_API bool GetStopwatchIsMonitoringJank(JSContext*);
-
-// Extract the CPU rescheduling data.
-extern JS_PUBLIC_API void GetPerfMonitoringTestCpuRescheduling(JSContext*,
-                                                               uint64_t* stayed,
-                                                               uint64_t* moved);
-
-/**
- * Add a number of microseconds to the time spent waiting on CPOWs
- * since process start.
- */
-extern JS_PUBLIC_API void AddCPOWPerformanceDelta(JSContext*, uint64_t delta);
-
-typedef bool (*StopwatchStartCallback)(uint64_t, void*);
-extern JS_PUBLIC_API bool SetStopwatchStartCallback(JSContext*,
-                                                    StopwatchStartCallback,
-                                                    void*);
-
-typedef bool (*StopwatchCommitCallback)(uint64_t, PerformanceGroupVector&,
-                                        void*);
-extern JS_PUBLIC_API bool SetStopwatchCommitCallback(JSContext*,
-                                                     StopwatchCommitCallback,
-                                                     void*);
-
-typedef bool (*GetGroupsCallback)(JSContext*, PerformanceGroupVector&, void*);
-extern JS_PUBLIC_API bool SetGetPerformanceGroupsCallback(JSContext*,
-                                                          GetGroupsCallback,
-                                                          void*);
-
-/**
  * Hint that we expect a crash. Currently, the only thing that cares is the
  * breakpad injector, which (if loaded) will suppress minidump generation.
  */
 extern JS_PUBLIC_API void NoteIntentionalCrash();
 
 } /* namespace js */
 
 namespace js {
--- a/js/src/jsfriendapi.h
+++ b/js/src/jsfriendapi.h
@@ -2620,17 +2620,17 @@ extern JS_FRIEND_API JSObject* GetJSMEnv
 
 // Determine if obj is a JSMEnvironment
 //
 // NOTE: This may return true for an NonSyntacticVariablesObject generated by
 // other embedding such as a Gecko FrameScript. Caller can check compartment.
 extern JS_FRIEND_API bool IsJSMEnvironment(JSObject* obj);
 
 // Matches the condition in js/src/jit/ProcessExecutableMemory.cpp
-#if defined(XP_WIN) && defined(HAVE_64BIT_BUILD) && defined(_M_X64)
+#if defined(XP_WIN) && defined(HAVE_64BIT_BUILD)
 // Parameters use void* types to avoid #including windows.h. The return value of
 // this function is returned from the exception handler.
 typedef long (*JitExceptionHandler)(void* exceptionRecord,  // PEXECTION_RECORD
                                     void* context);         // PCONTEXT
 
 /**
  * Windows uses "structured exception handling" to handle faults. When a fault
  * occurs, the stack is searched for a handler (similar to C++ exception
--- a/js/src/moz.build
+++ b/js/src/moz.build
@@ -300,17 +300,16 @@ UNIFIED_SOURCES += [
     'vm/Runtime.cpp',
     'vm/SavedStacks.cpp',
     'vm/Scope.cpp',
     'vm/SelfHosting.cpp',
     'vm/Shape.cpp',
     'vm/SharedArrayObject.cpp',
     'vm/SharedImmutableStringsCache.cpp',
     'vm/Stack.cpp',
-    'vm/Stopwatch.cpp',
     'vm/StringType.cpp',
     'vm/SymbolType.cpp',
     'vm/TaggedProto.cpp',
     'vm/Time.cpp',
     'vm/TypedArrayObject.cpp',
     'vm/TypeInference.cpp',
     'vm/UbiNode.cpp',
     'vm/UbiNodeCensus.cpp',
--- a/js/src/vm/Interpreter.cpp
+++ b/js/src/vm/Interpreter.cpp
@@ -46,17 +46,16 @@
 #include "vm/JSAtom.h"
 #include "vm/JSContext.h"
 #include "vm/JSFunction.h"
 #include "vm/JSObject.h"
 #include "vm/JSScript.h"
 #include "vm/Opcodes.h"
 #include "vm/Scope.h"
 #include "vm/Shape.h"
-#include "vm/Stopwatch.h"
 #include "vm/StringType.h"
 #include "vm/TraceLogging.h"
 
 #include "builtin/Boolean-inl.h"
 #include "jit/JitFrames-inl.h"
 #include "vm/Debugger-inl.h"
 #include "vm/EnvironmentObject-inl.h"
 #include "vm/GeckoProfiler-inl.h"
@@ -393,20 +392,16 @@ bool js::RunScript(JSContext* cx, RunSta
                         cx->runtime()->allowContentJS());
 
   MOZ_ASSERT(!cx->enableAccessValidation || cx->realm()->isAccessValid());
 
   if (!Debugger::checkNoExecute(cx, state.script())) {
     return false;
   }
 
-#if defined(MOZ_HAVE_RDTSC)
-  js::AutoStopwatch stopwatch(cx);
-#endif  // defined(MOZ_HAVE_RDTSC)
-
   GeckoProfilerEntryMarker marker(cx, state.script());
 
   state.script()->ensureNonLazyCanonicalFunction();
 
   jit::EnterJitStatus status = jit::MaybeEnterJit(cx, state);
   switch (status) {
     case jit::EnterJitStatus::Error:
       return false;
--- a/js/src/vm/Realm.cpp
+++ b/js/src/vm/Realm.cpp
@@ -48,18 +48,17 @@ Realm::Realm(Compartment* comp, const JS
     : JS::shadow::Realm(comp),
       zone_(comp->zone()),
       runtime_(comp->runtimeFromMainThread()),
       creationOptions_(options.creationOptions()),
       behaviors_(options.behaviors()),
       global_(nullptr),
       objects_(zone_),
       randomKeyGenerator_(runtime_->forkRandomKeyGenerator()),
-      wasm(runtime_),
-      performanceMonitoring(runtime_) {
+      wasm(runtime_) {
   MOZ_ASSERT_IF(creationOptions_.mergeable(),
                 creationOptions_.invisibleToDebugger());
 
   runtime_->numRealms++;
 }
 
 Realm::~Realm() {
   MOZ_ASSERT(!hasBeenEnteredIgnoringJit());
--- a/js/src/vm/Realm.h
+++ b/js/src/vm/Realm.h
@@ -404,18 +404,16 @@ class JS::Realm : public JS::shadow::Rea
 
   js::RegExpRealm regExps;
 
   js::DtoaCache dtoaCache;
   js::NewProxyCache newProxyCache;
   js::ArraySpeciesLookup arraySpeciesLookup;
   js::PromiseLookup promiseLookup;
 
-  js::PerformanceGroupHolder performanceMonitoring;
-
   js::UniquePtr<js::ScriptCountsMap> scriptCountsMap;
   js::UniquePtr<js::ScriptNameMap> scriptNameMap;
   js::UniquePtr<js::DebugScriptMap> debugScriptMap;
 #ifdef MOZ_VTUNE
   js::UniquePtr<js::ScriptVTuneIdMap> scriptVTuneIdMap;
 #endif
 
   /*
@@ -636,28 +634,16 @@ class JS::Realm : public JS::shadow::Rea
 
   /*
    * The principals associated with this realm. Note that the same several
    * realms may share the same principals and that a realm may change
    * principals during its lifetime (e.g. in case of lazy parsing).
    */
   JSPrincipals* principals() { return principals_; }
   void setPrincipals(JSPrincipals* principals) {
-    if (principals_ == principals) {
-      return;
-    }
-
-    // If we change principals, we need to unlink immediately this
-    // realm from its PerformanceGroup. For one thing, the performance data
-    // we collect should not be improperly associated with a group to which
-    // we do not belong anymore. For another thing, we use `principals()` as
-    // part of the key to map realms to a `PerformanceGroup`, so if we do
-    // not unlink now, this will be too late once we have updated
-    // `principals_`.
-    performanceMonitoring.unlink();
     principals_ = principals;
   }
 
   bool isSystem() const { return isSystem_; }
 
   // Used to approximate non-content code when reporting telemetry.
   bool isProbablySystemCode() const { return isSystem_; }
 
--- a/js/src/vm/Runtime.cpp
+++ b/js/src/vm/Runtime.cpp
@@ -151,17 +151,16 @@ JSRuntime::JSRuntime(JSRuntime* parentRu
       parallelParsingEnabled_(true),
 #ifdef DEBUG
       offThreadParsesRunning_(0),
       offThreadParsingBlocked_(false),
 #endif
       autoWritableJitCodeActive_(false),
       oomCallback(nullptr),
       debuggerMallocSizeOf(ReturnZeroSize),
-      performanceMonitoring_(),
       stackFormat_(parentRuntime ? js::StackFormat::Default
                                  : js::StackFormat::SpiderMonkey),
       wasmInstances(mutexid::WasmRuntimeInstances),
       moduleResolveHook(),
       moduleMetadataHook(),
       moduleDynamicImportHook(),
       scriptPrivateFinalizeHook() {
   JS_COUNT_CTOR(JSRuntime);
--- a/js/src/vm/Runtime.h
+++ b/js/src/vm/Runtime.h
@@ -47,17 +47,16 @@
 #include "vm/CodeCoverage.h"
 #include "vm/CommonPropertyNames.h"
 #include "vm/GeckoProfiler.h"
 #include "vm/JSAtom.h"
 #include "vm/JSScript.h"
 #include "vm/Scope.h"
 #include "vm/SharedImmutableStringsCache.h"
 #include "vm/Stack.h"
-#include "vm/Stopwatch.h"
 #include "vm/SymbolType.h"
 #include "wasm/WasmTypes.h"
 
 namespace js {
 
 class AutoAssertNoContentJS;
 class AutoKeepAtoms;
 class EnterDebuggeeNoExecute;
@@ -917,24 +916,16 @@ struct JSRuntime : public js::MallocProv
    * function to assess the size of malloc'd blocks of memory.
    */
   js::MainThreadData<mozilla::MallocSizeOf> debuggerMallocSizeOf;
 
   /* Last time at which an animation was played for this runtime. */
   js::MainThreadData<mozilla::TimeStamp> lastAnimationTime;
 
  private:
-  js::MainThreadData<js::PerformanceMonitoring> performanceMonitoring_;
-
- public:
-  js::PerformanceMonitoring& performanceMonitoring() {
-    return performanceMonitoring_.ref();
-  }
-
- private:
   /* The stack format for the current runtime.  Only valid on non-child
    * runtimes. */
   mozilla::Atomic<js::StackFormat, mozilla::ReleaseAcquire> stackFormat_;
 
  public:
   js::StackFormat stackFormat() const {
     const JSRuntime* rt = this;
     while (rt->parentRuntime) {
deleted file mode 100644
--- a/js/src/vm/Stopwatch.cpp
+++ /dev/null
@@ -1,595 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * vim: set ts=8 sts=2 et sw=2 tw=80:
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "vm/Stopwatch.h"
-
-#include "mozilla/ArrayUtils.h"
-#include "mozilla/IntegerTypeTraits.h"
-#include "mozilla/Unused.h"
-
-#if defined(XP_WIN)
-#include <processthreadsapi.h>
-#endif  // defined(XP_WIN)
-
-#include "gc/PublicIterators.h"
-#include "util/Windows.h"
-#include "vm/Realm.h"
-#include "vm/Runtime.h"
-
-namespace js {
-
-bool PerformanceMonitoring::addRecentGroup(PerformanceGroup* group) {
-  if (group->isUsedInThisIteration()) {
-    return true;
-  }
-
-  group->setIsUsedInThisIteration(true);
-  return recentGroups_.append(group);
-}
-
-void PerformanceMonitoring::reset() {
-  // All ongoing measures are dependent on the current iteration#.
-  // By incrementing it, we mark all data as stale. Stale data will
-  // be overwritten progressively during the execution.
-  ++iteration_;
-  recentGroups_.clear();
-
-  // Every so often, we will be rescheduled to another CPU. If this
-  // happens, we may end up with an entirely unsynchronized
-  // timestamp counter. If we do not reset
-  // `highestTimestampCounter_`, we could end up ignoring entirely
-  // valid sets of measures just because we are on a CPU that has a
-  // lower RDTSC.
-  highestTimestampCounter_ = 0;
-}
-
-void PerformanceMonitoring::start() {
-  if (!isMonitoringJank_) {
-    return;
-  }
-
-  if (iteration_ == startedAtIteration_) {
-    // The stopwatch is already started for this iteration.
-    return;
-  }
-
-  startedAtIteration_ = iteration_;
-  if (stopwatchStartCallback) {
-    stopwatchStartCallback(iteration_, stopwatchStartClosure);
-  }
-}
-
-// Commit the data that has been collected during the iteration
-// into the actual `PerformanceData`.
-//
-// We use the proportion of cycles-spent-in-group over
-// cycles-spent-in-toplevel-group as an approximation to allocate
-// system (kernel) time and user (CPU) time to each group. Note
-// that cycles are not an exact measure:
-//
-// 1. if the computer has gone to sleep, the clock may be reset to 0;
-// 2. if the process is moved between CPUs/cores, it may end up on a CPU
-//    or core with an unsynchronized clock;
-// 3. the mapping between clock cycles and walltime varies with the current
-//    frequency of the CPU;
-// 4. other threads/processes using the same CPU will also increment
-//    the counter.
-//
-// ** Effect of 1. (computer going to sleep)
-//
-// We assume that this will happen very seldom. Since the final numbers
-// are bounded by the CPU time and Kernel time reported by `getresources`,
-// the effect will be contained to a single iteration of the event loop.
-//
-// ** Effect of 2. (moving between CPUs/cores)
-//
-// On platforms that support it, we only measure the number of cycles
-// if we start and end execution of a group on the same
-// CPU/core. While there is a small window (a few cycles) during which
-// the thread can be migrated without us noticing, we expect that this
-// will happen rarely enough that this won't affect the statistics
-// meaningfully.
-//
-// On other platforms, assuming that the probability of jumping
-// between CPUs/cores during a given (real) cycle is constant, and
-// that the distribution of differences between clocks is even, the
-// probability that the number of cycles reported by a measure is
-// modified by X cycles should be a gaussian distribution, with groups
-// with longer execution having a larger amplitude than groups with
-// shorter execution. Since we discard measures that result in a
-// negative number of cycles, this distribution is actually skewed
-// towards over-estimating the number of cycles of groups that already
-// have many cycles and under-estimating the number of cycles that
-// already have fewer cycles.
-//
-// Since the final numbers are bounded by the CPU time and Kernel time
-// reported by `getresources`, we accept this bias.
-//
-// ** Effect of 3. (mapping between clock cycles and walltime)
-//
-// Assuming that this is evenly distributed, we expect that this will
-// eventually balance out.
-//
-// ** Effect of 4. (cycles increase with system activity)
-//
-// Assuming that, within an iteration of the event loop, this happens
-// unformly over time, this will skew towards over-estimating the number
-// of cycles of groups that already have many cycles and under-estimating
-// the number of cycles that already have fewer cycles.
-//
-// Since the final numbers are bounded by the CPU time and Kernel time
-// reported by `getresources`, we accept this bias.
-//
-// ** Big picture
-//
-// Computing the number of cycles is fast and should be accurate
-// enough in practice. Alternatives (such as calling `getresources`
-// all the time or sampling from another thread) are very expensive
-// in system calls and/or battery and not necessarily more accurate.
-bool PerformanceMonitoring::commit() {
-#if defined(MOZ_HAVE_RDTSC)
-  // Maximal initialization size, in elements for the vector of groups.
-  static const size_t MAX_GROUPS_INIT_CAPACITY = 1024;
-
-  if (!isMonitoringJank_) {
-    // Either we have not started monitoring or monitoring has
-    // been cancelled during the iteration.
-    return true;
-  }
-
-  if (startedAtIteration_ != iteration_) {
-    // No JS code has been monitored during this iteration.
-    return true;
-  }
-
-  // The move operation is generally constant time, unless
-  // `recentGroups_.length()` is very small, in which case
-  // it's fast just because it's small.
-  PerformanceGroupVector recentGroups(std::move(recentGroups_));
-  recentGroups_ = PerformanceGroupVector();  // Reconstruct after `Move`.
-
-  bool success = true;
-  if (stopwatchCommitCallback) {
-    success = stopwatchCommitCallback(iteration_, recentGroups,
-                                      stopwatchCommitClosure);
-  }
-
-  // Heuristic: we expect to have roughly the same number of groups as in
-  // the previous iteration.
-  const size_t capacity =
-      std::min(recentGroups.capacity(), MAX_GROUPS_INIT_CAPACITY);
-  success = recentGroups_.reserve(capacity) && success;
-
-  // Reset immediately, to make sure that we're not hit by the end
-  // of a nested event loop (which would cause `commit` to be called
-  // twice in succession).
-  reset();
-  return success;
-#else
-  // The AutoStopwatch is only executed if `MOZ_HAVE_RDTSC`.
-  return false;
-#endif  // defined(MOZ_HAVE_RDTSC)
-}
-
-uint64_t PerformanceMonitoring::monotonicReadTimestampCounter() {
-#if defined(MOZ_HAVE_RDTSC)
-  const uint64_t hardware = ReadTimestampCounter();
-  if (highestTimestampCounter_ < hardware) {
-    highestTimestampCounter_ = hardware;
-  }
-  return highestTimestampCounter_;
-#else
-  return 0;
-#endif  // defined(MOZ_HAVE_RDTSC)
-}
-
-void PerformanceMonitoring::dispose(JSRuntime* rt) {
-  reset();
-  for (RealmsIter r(rt); !r.done(); r.next()) {
-    r->performanceMonitoring.unlink();
-  }
-}
-
-PerformanceGroupHolder::~PerformanceGroupHolder() { unlink(); }
-
-void PerformanceGroupHolder::unlink() {
-  initialized_ = false;
-  groups_.clear();
-}
-
-const PerformanceGroupVector* PerformanceGroupHolder::getGroups(JSContext* cx) {
-  if (initialized_) {
-    return &groups_;
-  }
-
-  if (!runtime_->performanceMonitoring().getGroupsCallback) {
-    return nullptr;
-  }
-
-  if (!runtime_->performanceMonitoring().getGroupsCallback(
-          cx, groups_, runtime_->performanceMonitoring().getGroupsClosure)) {
-    return nullptr;
-  }
-
-  initialized_ = true;
-  return &groups_;
-}
-
-AutoStopwatch::AutoStopwatch(
-    JSContext* cx MOZ_GUARD_OBJECT_NOTIFIER_PARAM_IN_IMPL)
-    : cx_(cx),
-      iteration_(0),
-      isMonitoringJank_(false),
-      isMonitoringCPOW_(false),
-      cyclesStart_(0),
-      CPOWTimeStart_(0) {
-  MOZ_GUARD_OBJECT_NOTIFIER_INIT;
-
-  JS::Compartment* compartment = cx_->compartment();
-  if (MOZ_UNLIKELY(compartment->gcState.scheduledForDestruction)) {
-    return;
-  }
-
-  JSRuntime* runtime = cx_->runtime();
-  iteration_ = runtime->performanceMonitoring().iteration();
-
-  const PerformanceGroupVector* groups =
-      cx_->realm()->performanceMonitoring.getGroups(cx);
-  if (!groups) {
-    // Either the embedding has not provided any performance
-    // monitoring logistics or there was an error that prevents
-    // performance monitoring.
-    return;
-  }
-  for (auto group = groups->begin(); group < groups->end(); group++) {
-    auto acquired = acquireGroup(*group);
-    if (acquired) {
-      if (!groups_.append(acquired)) {
-        MOZ_CRASH();
-      }
-    }
-  }
-  if (groups_.length() == 0) {
-    // We are not in charge of monitoring anything.
-    return;
-  }
-
-  // Now that we are sure that JS code is being executed,
-  // initialize the stopwatch for this iteration, lazily.
-  runtime->performanceMonitoring().start();
-  enter();
-}
-
-AutoStopwatch::~AutoStopwatch() {
-  if (groups_.length() == 0) {
-    // We are not in charge of monitoring anything.
-    return;
-  }
-
-  JS::Compartment* compartment = cx_->compartment();
-  if (MOZ_UNLIKELY(compartment->gcState.scheduledForDestruction)) {
-    return;
-  }
-
-  JSRuntime* runtime = cx_->runtime();
-  if (MOZ_UNLIKELY(iteration_ !=
-                   runtime->performanceMonitoring().iteration())) {
-    // We have entered a nested event loop at some point.
-    // Any information we may have is obsolete.
-    return;
-  }
-
-  mozilla::Unused << exit();  // Sadly, there is nothing we can do about an
-                              // error at this point.
-
-  for (auto group = groups_.begin(); group < groups_.end(); group++) {
-    releaseGroup(*group);
-  }
-}
-
-void AutoStopwatch::enter() {
-  JSRuntime* runtime = cx_->runtime();
-
-  if (runtime->performanceMonitoring().isMonitoringCPOW()) {
-    CPOWTimeStart_ = runtime->performanceMonitoring().totalCPOWTime;
-    isMonitoringCPOW_ = true;
-  }
-
-  if (runtime->performanceMonitoring().isMonitoringJank()) {
-    cyclesStart_ = this->getCycles(runtime);
-    cpuStart_ = this->getCPU();
-    isMonitoringJank_ = true;
-  }
-}
-
-bool AutoStopwatch::exit() {
-  JSRuntime* runtime = cx_->runtime();
-
-  uint64_t cyclesDelta = 0;
-  if (isMonitoringJank_ &&
-      runtime->performanceMonitoring().isMonitoringJank()) {
-    // We were monitoring jank when we entered and we still are.
-
-    // If possible, discard results when we don't end on the
-    // same CPU as we started.  Note that we can be
-    // rescheduled to another CPU beween `getCycles()` and
-    // `getCPU()`.  We hope that this will happen rarely
-    // enough that the impact on our statistics will remain
-    // limited.
-    const cpuid_t cpuEnd = this->getCPU();
-    if (isSameCPU(cpuStart_, cpuEnd)) {
-      const uint64_t cyclesEnd = getCycles(runtime);
-      cyclesDelta = cyclesEnd -
-                    cyclesStart_;  // Always >= 0 by definition of `getCycles`.
-    }
-// Temporary disable untested code path.
-#if 0  // WINVER >= 0x600
-        updateTelemetry(cpuStart_, cpuEnd);
-#elif defined(__linux__)
-    updateTelemetry(cpuStart_, cpuEnd);
-#endif  // WINVER >= 0x600 || _linux__
-  }
-
-  uint64_t CPOWTimeDelta = 0;
-  if (isMonitoringCPOW_ &&
-      runtime->performanceMonitoring().isMonitoringCPOW()) {
-    // We were monitoring CPOW when we entered and we still are.
-    const uint64_t CPOWTimeEnd = runtime->performanceMonitoring().totalCPOWTime;
-    CPOWTimeDelta = getDelta(CPOWTimeEnd, CPOWTimeStart_);
-  }
-  return addToGroups(cyclesDelta, CPOWTimeDelta);
-}
-
-void AutoStopwatch::updateTelemetry(const cpuid_t& cpuStart_,
-                                    const cpuid_t& cpuEnd) {
-  JSRuntime* runtime = cx_->runtime();
-
-  if (isSameCPU(cpuStart_, cpuEnd)) {
-    runtime->performanceMonitoring().testCpuRescheduling.stayed += 1;
-  } else {
-    runtime->performanceMonitoring().testCpuRescheduling.moved += 1;
-  }
-}
-
-PerformanceGroup* AutoStopwatch::acquireGroup(PerformanceGroup* group) {
-  MOZ_ASSERT(group);
-
-  if (group->isAcquired(iteration_)) {
-    return nullptr;
-  }
-
-  if (!group->isActive()) {
-    return nullptr;
-  }
-
-  group->acquire(iteration_, this);
-  return group;
-}
-
-void AutoStopwatch::releaseGroup(PerformanceGroup* group) {
-  MOZ_ASSERT(group);
-  group->release(iteration_, this);
-}
-
-bool AutoStopwatch::addToGroups(uint64_t cyclesDelta, uint64_t CPOWTimeDelta) {
-  JSRuntime* runtime = cx_->runtime();
-
-  for (auto group = groups_.begin(); group < groups_.end(); ++group) {
-    if (!addToGroup(runtime, cyclesDelta, CPOWTimeDelta, *group)) {
-      return false;
-    }
-  }
-  return true;
-}
-
-bool AutoStopwatch::addToGroup(JSRuntime* runtime, uint64_t cyclesDelta,
-                               uint64_t CPOWTimeDelta,
-                               PerformanceGroup* group) {
-  MOZ_ASSERT(group);
-  MOZ_ASSERT(group->isAcquired(iteration_, this));
-
-  if (!runtime->performanceMonitoring().addRecentGroup(group)) {
-    return false;
-  }
-  group->addRecentTicks(iteration_, 1);
-  group->addRecentCycles(iteration_, cyclesDelta);
-  group->addRecentCPOW(iteration_, CPOWTimeDelta);
-  return true;
-}
-
-uint64_t AutoStopwatch::getDelta(const uint64_t end,
-                                 const uint64_t start) const {
-  if (start >= end) {
-    return 0;
-  }
-  return end - start;
-}
-
-uint64_t AutoStopwatch::getCycles(JSRuntime* runtime) const {
-  return runtime->performanceMonitoring().monotonicReadTimestampCounter();
-}
-
-cpuid_t inline AutoStopwatch::getCPU() const {
-// Temporary disable untested code path.
-#if 0  // defined(XP_WIN) && WINVER >= _WIN32_WINNT_VISTA
-    PROCESSOR_NUMBER proc;
-    GetCurrentProcessorNumberEx(&proc);
-
-    cpuid_t result(proc.Group, proc.Number);
-    return result;
-#else
-  return {};
-#endif  // defined(XP_WIN)
-}
-
-bool inline AutoStopwatch::isSameCPU(const cpuid_t& a, const cpuid_t& b) const {
-// Temporary disable untested code path.
-#if 0  // defined(XP_WIN)  && WINVER >= _WIN32_WINNT_VISTA
-    return a.group_ == b.group_ && a.number_ == b.number_;
-#else
-  return true;
-#endif
-}
-
-PerformanceGroup::PerformanceGroup()
-    : recentCycles_(0),
-      recentTicks_(0),
-      recentCPOW_(0),
-      iteration_(0),
-      isActive_(false),
-      isUsedInThisIteration_(false),
-      owner_(nullptr),
-      refCount_(0) {}
-
-uint64_t PerformanceGroup::iteration() const { return iteration_; }
-
-bool PerformanceGroup::isAcquired(uint64_t it) const {
-  return owner_ != nullptr && iteration_ == it;
-}
-
-bool PerformanceGroup::isAcquired(uint64_t it,
-                                  const AutoStopwatch* owner) const {
-  return owner_ == owner && iteration_ == it;
-}
-
-void PerformanceGroup::acquire(uint64_t it, const AutoStopwatch* owner) {
-  if (iteration_ != it) {
-    // Any data that pretends to be recent is actually bound
-    // to an older iteration and therefore stale.
-    resetRecentData();
-  }
-  iteration_ = it;
-  owner_ = owner;
-}
-
-void PerformanceGroup::release(uint64_t it, const AutoStopwatch* owner) {
-  if (iteration_ != it) {
-    return;
-  }
-
-  MOZ_ASSERT(owner == owner_ || owner_ == nullptr);
-  owner_ = nullptr;
-}
-
-void PerformanceGroup::resetRecentData() {
-  recentCycles_ = 0;
-  recentTicks_ = 0;
-  recentCPOW_ = 0;
-  isUsedInThisIteration_ = false;
-}
-
-uint64_t PerformanceGroup::recentCycles(uint64_t iteration) const {
-  MOZ_ASSERT(iteration == iteration_);
-  return recentCycles_;
-}
-
-void PerformanceGroup::addRecentCycles(uint64_t iteration, uint64_t cycles) {
-  MOZ_ASSERT(iteration == iteration_);
-  recentCycles_ += cycles;
-}
-
-uint64_t PerformanceGroup::recentTicks(uint64_t iteration) const {
-  MOZ_ASSERT(iteration == iteration_);
-  return recentTicks_;
-}
-
-void PerformanceGroup::addRecentTicks(uint64_t iteration, uint64_t ticks) {
-  MOZ_ASSERT(iteration == iteration_);
-  recentTicks_ += ticks;
-}
-
-uint64_t PerformanceGroup::recentCPOW(uint64_t iteration) const {
-  MOZ_ASSERT(iteration == iteration_);
-  return recentCPOW_;
-}
-
-void PerformanceGroup::addRecentCPOW(uint64_t iteration, uint64_t CPOW) {
-  MOZ_ASSERT(iteration == iteration_);
-  recentCPOW_ += CPOW;
-}
-
-bool PerformanceGroup::isActive() const { return isActive_; }
-
-void PerformanceGroup::setIsActive(bool value) { isActive_ = value; }
-
-void PerformanceGroup::setIsUsedInThisIteration(bool value) {
-  isUsedInThisIteration_ = value;
-}
-bool PerformanceGroup::isUsedInThisIteration() const {
-  return isUsedInThisIteration_;
-}
-
-void PerformanceGroup::AddRef() { ++refCount_; }
-
-void PerformanceGroup::Release() {
-  MOZ_ASSERT(refCount_ > 0);
-  --refCount_;
-  if (refCount_ > 0) {
-    return;
-  }
-
-  JS::AutoSuppressGCAnalysis nogc;
-  this->Delete();
-}
-
-JS_PUBLIC_API bool SetStopwatchStartCallback(JSContext* cx,
-                                             StopwatchStartCallback cb,
-                                             void* closure) {
-  cx->runtime()->performanceMonitoring().setStopwatchStartCallback(cb, closure);
-  return true;
-}
-
-JS_PUBLIC_API bool SetStopwatchCommitCallback(JSContext* cx,
-                                              StopwatchCommitCallback cb,
-                                              void* closure) {
-  cx->runtime()->performanceMonitoring().setStopwatchCommitCallback(cb,
-                                                                    closure);
-  return true;
-}
-
-JS_PUBLIC_API bool SetGetPerformanceGroupsCallback(JSContext* cx,
-                                                   GetGroupsCallback cb,
-                                                   void* closure) {
-  cx->runtime()->performanceMonitoring().setGetGroupsCallback(cb, closure);
-  return true;
-}
-
-JS_PUBLIC_API bool FlushPerformanceMonitoring(JSContext* cx) {
-  return cx->runtime()->performanceMonitoring().commit();
-}
-JS_PUBLIC_API void ResetPerformanceMonitoring(JSContext* cx) {
-  return cx->runtime()->performanceMonitoring().reset();
-}
-JS_PUBLIC_API void DisposePerformanceMonitoring(JSContext* cx) {
-  return cx->runtime()->performanceMonitoring().dispose(cx->runtime());
-}
-
-JS_PUBLIC_API bool SetStopwatchIsMonitoringJank(JSContext* cx, bool value) {
-  return cx->runtime()->performanceMonitoring().setIsMonitoringJank(value);
-}
-JS_PUBLIC_API bool GetStopwatchIsMonitoringJank(JSContext* cx) {
-  return cx->runtime()->performanceMonitoring().isMonitoringJank();
-}
-
-JS_PUBLIC_API bool SetStopwatchIsMonitoringCPOW(JSContext* cx, bool value) {
-  return cx->runtime()->performanceMonitoring().setIsMonitoringCPOW(value);
-}
-JS_PUBLIC_API bool GetStopwatchIsMonitoringCPOW(JSContext* cx) {
-  return cx->runtime()->performanceMonitoring().isMonitoringCPOW();
-}
-
-JS_PUBLIC_API void GetPerfMonitoringTestCpuRescheduling(JSContext* cx,
-                                                        uint64_t* stayed,
-                                                        uint64_t* moved) {
-  *stayed = cx->runtime()->performanceMonitoring().testCpuRescheduling.stayed;
-  *moved = cx->runtime()->performanceMonitoring().testCpuRescheduling.moved;
-}
-
-JS_PUBLIC_API void AddCPOWPerformanceDelta(JSContext* cx, uint64_t delta) {
-  cx->runtime()->performanceMonitoring().totalCPOWTime += delta;
-}
-
-}  // namespace js
--- a/js/xpconnect/src/XPCJSContext.cpp
+++ b/js/xpconnect/src/XPCJSContext.cpp
@@ -1229,37 +1229,26 @@ XPCJSContext* XPCJSContext::NewXPCJSCont
 void XPCJSContext::BeforeProcessTask(bool aMightBlock) {
   MOZ_ASSERT(NS_IsMainThread());
 
   // Start the slow script timer.
   mSlowScriptCheckpoint = mozilla::TimeStamp::NowLoRes();
   mSlowScriptSecondHalf = false;
   mSlowScriptActualWait = mozilla::TimeDuration();
   mTimeoutAccumulated = false;
-
-  // As we may be entering a nested event loop, we need to
-  // cancel any ongoing performance measurement.
-  js::ResetPerformanceMonitoring(Context());
-
   CycleCollectedJSContext::BeforeProcessTask(aMightBlock);
 }
 
 void XPCJSContext::AfterProcessTask(uint32_t aNewRecursionDepth) {
   // Now that we're back to the event loop, reset the slow script checkpoint.
   mSlowScriptCheckpoint = mozilla::TimeStamp();
   mSlowScriptSecondHalf = false;
 
   // Call cycle collector occasionally.
   MOZ_ASSERT(NS_IsMainThread());
   nsJSContext::MaybePokeCC();
-
   CycleCollectedJSContext::AfterProcessTask(aNewRecursionDepth);
-
-  // Now that we are certain that the event is complete,
-  // we can flush any ongoing performance measurement.
-  js::FlushPerformanceMonitoring(Context());
-
   mozilla::jsipc::AfterProcessTask();
 }
 
 bool XPCJSContext::IsSystemCaller() const {
   return nsContentUtils::IsSystemCaller(Context());
 }
--- a/layout/base/AccessibleCaretManager.cpp
+++ b/layout/base/AccessibleCaretManager.cpp
@@ -714,19 +714,21 @@ already_AddRefed<nsFrameSelection> Acces
     return nullptr;
   }
 
   return fs.forget();
 }
 
 nsAutoString AccessibleCaretManager::StringifiedSelection() const {
   nsAutoString str;
-  Selection* selection = GetSelection();
+  RefPtr<Selection> selection = GetSelection();
   if (selection) {
-    selection->Stringify(str);
+    selection->Stringify(str, mAllowFlushingLayout
+                                  ? Selection::FlushFrames::Yes
+                                  : Selection::FlushFrames::No);
   }
   return str;
 }
 
 Element* AccessibleCaretManager::GetEditingHostForFrame(
     nsIFrame* aFrame) const {
   if (!aFrame) {
     return nullptr;
@@ -1332,17 +1334,17 @@ void AccessibleCaretManager::DispatchCar
 
   init.mBoundingClientRect = domRect;
   init.mReason = aReason;
   init.mCollapsed = sel->IsCollapsed();
   init.mCaretVisible =
       mFirstCaret->IsLogicallyVisible() || mSecondCaret->IsLogicallyVisible();
   init.mCaretVisuallyVisible =
       mFirstCaret->IsVisuallyVisible() || mSecondCaret->IsVisuallyVisible();
-  sel->Stringify(init.mSelectedTextContent);
+  init.mSelectedTextContent = StringifiedSelection();
 
   RefPtr<CaretStateChangedEvent> event = CaretStateChangedEvent::Constructor(
       doc, NS_LITERAL_STRING("mozcaretstatechanged"), init);
 
   event->SetTrusted(true);
   event->WidgetEventPtr()->mFlags.mOnlyChromeDispatch = true;
 
   AC_LOG("%s: reason %" PRIu32 ", collapsed %d, caretVisible %" PRIu32,
--- a/layout/base/AccessibleCaretManager.h
+++ b/layout/base/AccessibleCaretManager.h
@@ -176,27 +176,30 @@ class AccessibleCaretManager {
   // Get the nearest enclosing focusable frame of aFrame.
   // @return focusable frame if there is any; nullptr otherwise.
   nsIFrame* GetFocusableFrame(nsIFrame* aFrame) const;
 
   // Change focus to aFrame if it isn't nullptr. Otherwise, clear the old focus
   // then re-focus the window.
   void ChangeFocusToOrClearOldFocus(nsIFrame* aFrame) const;
 
+  MOZ_CAN_RUN_SCRIPT
   nsresult SelectWord(nsIFrame* aFrame, const nsPoint& aPoint) const;
   void SetSelectionDragState(bool aState) const;
 
   // Return true if the candidate string is a phone number.
   bool IsPhoneNumber(nsAString& aCandidate) const;
 
   // Extend the current selection forwards and backwards if it's already a
   // phone number.
+  MOZ_CAN_RUN_SCRIPT
   void SelectMoreIfPhoneNumber() const;
 
   // Extend the current phone number selection in the requested direction.
+  MOZ_CAN_RUN_SCRIPT
   void ExtendPhoneNumberSelection(const nsAString& aDirection) const;
 
   void SetSelectionDirection(nsDirection aDir) const;
 
   // If aDirection is eDirNext, get the frame for the range start in the first
   // range from the current selection, and return the offset into that frame as
   // well as the range start content and the content offset. Otherwise, get the
   // frame and the offset for the range end in the last range instead.
@@ -221,16 +224,18 @@ class AccessibleCaretManager {
   // See the mRefCnt assertions in AccessibleCaretEventHub.
   //
   // Returns whether mPresShell we're holding is still valid.
   MOZ_MUST_USE MOZ_CAN_RUN_SCRIPT bool FlushLayout();
 
   dom::Element* GetEditingHostForFrame(nsIFrame* aFrame) const;
   dom::Selection* GetSelection() const;
   already_AddRefed<nsFrameSelection> GetFrameSelection() const;
+
+  MOZ_CAN_RUN_SCRIPT
   nsAutoString StringifiedSelection() const;
 
   // Get the union of all the child frame scrollable overflow rects for aFrame,
   // which is used as a helper function to restrict the area where the caret can
   // be dragged. Returns the rect relative to aFrame.
   nsRect GetAllChildFrameRectsUnion(nsIFrame* aFrame) const;
 
   // Restrict the active caret's dragging position based on
new file mode 100644
--- /dev/null
+++ b/layout/base/crashtests/1486521.html
@@ -0,0 +1,11 @@
+<script>
+window.onload=function() {
+  a.options[10] = b;
+  document.execCommand("selectAll", false);
+  document.activeElement.hidden = true;
+  a.options.selectedIndex = 1;
+}
+</script>
+<input contenteditable>
+<select id="a" multiple>
+<option id="b" selected>
--- a/layout/base/crashtests/crashtests.list
+++ b/layout/base/crashtests/crashtests.list
@@ -538,16 +538,17 @@ HTTP load 1464641.html
 load 1464737.html
 load 1466638.html
 load 1467688.html
 load 1467964.html
 load 1469354.html
 pref(layout.accessiblecaret.enabled,true) load 1472020.html
 load 1472027.html
 load 1477847.html
+skip-if(verify&&Android) pref(layout.accessiblecaret.enabled,true) load 1486521.html
 load 1489149.html
 load 1490037.html
 load 1494332.html
 load 1494030.html
 load 1505420.html
 pref(layout.css.column-span.enabled,true) load 1506163.html
 pref(layout.css.column-span.enabled,true) load 1506204.html
 pref(layout.css.column-span.enabled,true) load 1506314.html
--- a/media/gmp-clearkey/0.1/ClearKeyCDM.cpp
+++ b/media/gmp-clearkey/0.1/ClearKeyCDM.cpp
@@ -1,22 +1,25 @@
 #include "ClearKeyCDM.h"
 
 #include "ClearKeyUtils.h"
 
 using namespace cdm;
 
-ClearKeyCDM::ClearKeyCDM(Host_9* aHost) {
+ClearKeyCDM::ClearKeyCDM(Host_10* aHost) {
   mHost = aHost;
   mSessionManager = new ClearKeySessionManager(mHost);
 }
 
 void ClearKeyCDM::Initialize(bool aAllowDistinctiveIdentifier,
-                             bool aAllowPersistentState) {
+                             bool aAllowPersistentState,
+                             bool aUseHardwareSecureCodecs) {
   mSessionManager->Init(aAllowDistinctiveIdentifier, aAllowPersistentState);
+  // We call mHost->OnInitialized() in the session manager once it has
+  // initialized.
 }
 
 void ClearKeyCDM::GetStatusForPolicy(uint32_t aPromiseId,
                                      const Policy& aPolicy) {
   // MediaKeys::GetStatusForPolicy checks the keysystem and
   // reject the promise with NS_ERROR_DOM_NOT_SUPPORTED_ERR without calling CDM.
   // This function should never be called and is not supported.
   assert(false);
@@ -61,31 +64,31 @@ void ClearKeyCDM::RemoveSession(uint32_t
 }
 
 void ClearKeyCDM::TimerExpired(void* aContext) {
   // Clearkey is not interested in timers, so this method has not been
   // implemented.
   assert(false);
 }
 
-Status ClearKeyCDM::Decrypt(const InputBuffer_1& aEncryptedBuffer,
+Status ClearKeyCDM::Decrypt(const InputBuffer_2& aEncryptedBuffer,
                             DecryptedBlock* aDecryptedBuffer) {
   return mSessionManager->Decrypt(aEncryptedBuffer, aDecryptedBuffer);
 }
 
 Status ClearKeyCDM::InitializeAudioDecoder(
-    const AudioDecoderConfig_1& aAudioDecoderConfig) {
+    const AudioDecoderConfig_2& aAudioDecoderConfig) {
   // Audio decoding is not supported by Clearkey because Widevine doesn't
   // support it and Clearkey's raison d'etre is to provide test coverage
   // for paths that Widevine will exercise in the wild.
   return Status::kDecodeError;
 }
 
 Status ClearKeyCDM::InitializeVideoDecoder(
-    const VideoDecoderConfig_1& aVideoDecoderConfig) {
+    const VideoDecoderConfig_2& aVideoDecoderConfig) {
 #ifdef ENABLE_WMF
   mVideoDecoder = new VideoDecoder(mHost);
   return mVideoDecoder->InitDecode(aVideoDecoderConfig);
 #else
   return Status::kDecodeError;
 #endif
 }
 
@@ -101,27 +104,27 @@ void ClearKeyCDM::DeinitializeDecoder(St
 void ClearKeyCDM::ResetDecoder(StreamType aDecoderType) {
 #ifdef ENABLE_WMF
   if (aDecoderType == StreamType::kStreamTypeVideo) {
     mVideoDecoder->Reset();
   }
 #endif
 }
 
-Status ClearKeyCDM::DecryptAndDecodeFrame(const InputBuffer_1& aEncryptedBuffer,
+Status ClearKeyCDM::DecryptAndDecodeFrame(const InputBuffer_2& aEncryptedBuffer,
                                           VideoFrame* aVideoFrame) {
 #ifdef ENABLE_WMF
   return mVideoDecoder->Decode(aEncryptedBuffer, aVideoFrame);
 #else
   return Status::kDecodeError;
 #endif
 }
 
 Status ClearKeyCDM::DecryptAndDecodeSamples(
-    const InputBuffer_1& aEncryptedBuffer, AudioFrames* aAudioFrame) {
+    const InputBuffer_2& aEncryptedBuffer, AudioFrames* aAudioFrame) {
   // Audio decoding is not supported by Clearkey because Widevine doesn't
   // support it and Clearkey's raison d'etre is to provide test coverage
   // for paths that Widevine will exercise in the wild.
   return Status::kDecodeError;
 }
 
 void ClearKeyCDM::OnPlatformChallengeResponse(
     const PlatformChallengeResponse& aResponse) {
--- a/media/gmp-clearkey/0.1/ClearKeyCDM.h
+++ b/media/gmp-clearkey/0.1/ClearKeyCDM.h
@@ -8,31 +8,31 @@
 #include "stddef.h"
 #include "content_decryption_module.h"
 
 #ifdef ENABLE_WMF
 #include "WMFUtils.h"
 #include "VideoDecoder.h"
 #endif
 
-class ClearKeyCDM : public cdm::ContentDecryptionModule_9 {
+class ClearKeyCDM : public cdm::ContentDecryptionModule_10 {
  private:
   RefPtr<ClearKeySessionManager> mSessionManager;
 #ifdef ENABLE_WMF
   RefPtr<VideoDecoder> mVideoDecoder;
 #endif
 
  protected:
-  cdm::Host_9* mHost;
+  cdm::Host_10* mHost;
 
  public:
-  explicit ClearKeyCDM(cdm::Host_9* mHost);
+  explicit ClearKeyCDM(cdm::Host_10* aHost);
 
-  void Initialize(bool aAllowDistinctiveIdentifier,
-                  bool aAllowPersistentState) override;
+  void Initialize(bool aAllowDistinctiveIdentifier, bool aAllowPersistentState,
+                  bool aUseHardwareSecureCodecs) override;
 
   void GetStatusForPolicy(uint32_t aPromiseId,
                           const cdm::Policy& aPolicy) override;
 
   void SetServerCertificate(uint32_t aPromiseId,
                             const uint8_t* aServerCertificateData,
                             uint32_t aServerCertificateDataSize) override;
 
@@ -52,34 +52,34 @@ class ClearKeyCDM : public cdm::ContentD
   void CloseSession(uint32_t aPromiseId, const char* aSessionId,
                     uint32_t aSessionIdSize) override;
 
   void RemoveSession(uint32_t aPromiseId, const char* aSessionId,
                      uint32_t aSessionIdSize) override;
 
   void TimerExpired(void* aContext) override;
 
-  cdm::Status Decrypt(const cdm::InputBuffer_1& aEncryptedBuffer,
+  cdm::Status Decrypt(const cdm::InputBuffer_2& aEncryptedBuffer,
                       cdm::DecryptedBlock* aDecryptedBuffer) override;
 
   cdm::Status InitializeAudioDecoder(
-      const cdm::AudioDecoderConfig_1& aAudioDecoderConfig) override;
+      const cdm::AudioDecoderConfig_2& aAudioDecoderConfig) override;
 
   cdm::Status InitializeVideoDecoder(
-      const cdm::VideoDecoderConfig_1& aVideoDecoderConfig) override;
+      const cdm::VideoDecoderConfig_2& aVideoDecoderConfig) override;
 
   void DeinitializeDecoder(cdm::StreamType aDecoderType) override;
 
   void ResetDecoder(cdm::StreamType aDecoderType) override;
 
-  cdm::Status DecryptAndDecodeFrame(const cdm::InputBuffer_1& aEncryptedBuffer,
+  cdm::Status DecryptAndDecodeFrame(const cdm::InputBuffer_2& aEncryptedBuffer,
                                     cdm::VideoFrame* aVideoFrame) override;
 
   cdm::Status DecryptAndDecodeSamples(
-      const cdm::InputBuffer_1& aEncryptedBuffer,
+      const cdm::InputBuffer_2& aEncryptedBuffer,
       cdm::AudioFrames* aAudioFrame) override;
 
   void OnPlatformChallengeResponse(
       const cdm::PlatformChallengeResponse& aResponse) override;
 
   void OnQueryOutputProtectionStatus(cdm::QueryResult aResult,
                                      uint32_t aLinkMask,
                                      uint32_t aOutputProtectionMask) override;
--- a/media/gmp-clearkey/0.1/ClearKeyDecryptionManager.h
+++ b/media/gmp-clearkey/0.1/ClearKeyDecryptionManager.h
@@ -27,21 +27,21 @@
 #include <map>
 
 class ClearKeyDecryptor;
 
 class CryptoMetaData {
  public:
   CryptoMetaData() {}
 
-  explicit CryptoMetaData(const cdm::InputBuffer_1* aInputBuffer) {
+  explicit CryptoMetaData(const cdm::InputBuffer_2* aInputBuffer) {
     Init(aInputBuffer);
   }
 
-  void Init(const cdm::InputBuffer_1* aInputBuffer) {
+  void Init(const cdm::InputBuffer_2* aInputBuffer) {
     if (!aInputBuffer) {
       assert(!IsValid());
       return;
     }
 
     Assign(mKeyId, aInputBuffer->key_id, aInputBuffer->key_id_size);
     Assign(mIV, aInputBuffer->iv, aInputBuffer->iv_size);
 
--- a/media/gmp-clearkey/0.1/ClearKeyPersistence.cpp
+++ b/media/gmp-clearkey/0.1/ClearKeyPersistence.cpp
@@ -84,17 +84,19 @@ void ClearKeyPersistence::WriteIndex() {
   string dataString = ss.str();
   uint8_t* dataArray = (uint8_t*)dataString.data();
   vector<uint8_t> data(dataArray, dataArray + dataString.size());
 
   string filename = "index";
   WriteData(mHost, filename, data, move(onIndexSuccess), move(onIndexFail));
 }
 
-ClearKeyPersistence::ClearKeyPersistence(Host_9* aHost) { this->mHost = aHost; }
+ClearKeyPersistence::ClearKeyPersistence(Host_10* aHost) {
+  this->mHost = aHost;
+}
 
 void ClearKeyPersistence::EnsureInitialized(bool aPersistentStateAllowed,
                                             function<void()>&& aOnInitialized) {
   if (aPersistentStateAllowed &&
       mPersistentKeyState == PersistentKeyState::UNINITIALIZED) {
     mPersistentKeyState = LOADING;
     ReadAllRecordsFromIndex(move(aOnInitialized));
   } else {
--- a/media/gmp-clearkey/0.1/ClearKeyPersistence.h
+++ b/media/gmp-clearkey/0.1/ClearKeyPersistence.h
@@ -30,31 +30,31 @@
 
 class ClearKeySessionManager;
 
 // Whether we've loaded the persistent session ids yet.
 enum PersistentKeyState { UNINITIALIZED, LOADING, LOADED };
 
 class ClearKeyPersistence : public RefCounted {
  public:
-  explicit ClearKeyPersistence(cdm::Host_9* aHost);
+  explicit ClearKeyPersistence(cdm::Host_10* aHost);
 
   void EnsureInitialized(bool aPersistentStateAllowed,
                          std::function<void()>&& aOnInitialized);
 
   bool IsLoaded() const;
 
   std::string GetNewSessionId(cdm::SessionType aSessionType);
 
   bool IsPersistentSessionId(const std::string& aSid);
 
   void PersistentSessionRemoved(std::string& aSid);
 
  private:
-  cdm::Host_9* mHost = nullptr;
+  cdm::Host_10* mHost = nullptr;
 
   PersistentKeyState mPersistentKeyState = PersistentKeyState::UNINITIALIZED;
 
   std::set<uint32_t> mPersistentSessionIds;
 
   void ReadAllRecordsFromIndex(std::function<void()>&& aOnComplete);
   void WriteIndex();
 };
--- a/media/gmp-clearkey/0.1/ClearKeySessionManager.cpp
+++ b/media/gmp-clearkey/0.1/ClearKeySessionManager.cpp
@@ -28,17 +28,17 @@
 #include <assert.h>
 #include <stdint.h>
 #include <stdio.h>
 #include <string.h>
 
 using namespace std;
 using namespace cdm;
 
-ClearKeySessionManager::ClearKeySessionManager(Host_9* aHost)
+ClearKeySessionManager::ClearKeySessionManager(Host_10* aHost)
     : mDecryptionManager(ClearKeyDecryptionManager::Get()) {
   CK_LOGD("ClearKeySessionManager ctor %p", this);
   AddRef();
 
   mHost = aHost;
   mPersistence = new ClearKeyPersistence(mHost);
 }
 
@@ -53,16 +53,21 @@ void ClearKeySessionManager::Init(bool a
   RefPtr<ClearKeySessionManager> self(this);
   function<void()> onPersistentStateLoaded = [self]() {
     while (!self->mDeferredInitialize.empty()) {
       function<void()> func = self->mDeferredInitialize.front();
       self->mDeferredInitialize.pop();
 
       func();
     }
+    if (self->mHost) {
+      // The session manager should be the last thing the ClearKey CDM is
+      // waiting on to be initialized.
+      self->mHost->OnInitialized(true);
+    }
   };
 
   mPersistence->EnsureInitialized(aPersistentStateAllowed,
                                   move(onPersistentStateLoaded));
 }
 
 void ClearKeySessionManager::CreateSession(uint32_t aPromiseId,
                                            InitDataType aInitDataType,
@@ -524,17 +529,17 @@ void ClearKeySessionManager::SetServerCe
                                                   const uint8_t* aServerCert,
                                                   uint32_t aServerCertSize) {
   // ClearKey CDM doesn't support this method by spec.
   CK_LOGD("ClearKeySessionManager::SetServerCertificate");
   mHost->OnRejectPromise(aPromiseId, Exception::kExceptionNotSupportedError, 0,
                          nullptr /* message */, 0 /* messageLen */);
 }
 
-Status ClearKeySessionManager::Decrypt(const InputBuffer_1& aBuffer,
+Status ClearKeySessionManager::Decrypt(const InputBuffer_2& aBuffer,
                                        DecryptedBlock* aDecryptedBlock) {
   CK_LOGD("ClearKeySessionManager::Decrypt");
 
   CK_LOGARRAY("Key: ", aBuffer.key_id, aBuffer.key_id_size);
 
   Buffer* buffer = mHost->Allocate(aBuffer.data_size);
   assert(buffer != nullptr);
   assert(buffer->Data() != nullptr);
--- a/media/gmp-clearkey/0.1/ClearKeySessionManager.h
+++ b/media/gmp-clearkey/0.1/ClearKeySessionManager.h
@@ -30,17 +30,17 @@
 #include <functional>
 #include <map>
 #include <queue>
 #include <set>
 #include <string>
 
 class ClearKeySessionManager final : public RefCounted {
  public:
-  explicit ClearKeySessionManager(cdm::Host_9* aHost);
+  explicit ClearKeySessionManager(cdm::Host_10* aHost);
 
   void Init(bool aDistinctiveIdentifierAllowed, bool aPersistentStateAllowed);
 
   void CreateSession(uint32_t aPromiseId, cdm::InitDataType aInitDataType,
                      const uint8_t* aInitData, uint32_t aInitDataSize,
                      cdm::SessionType aSessionType);
 
   void LoadSession(uint32_t aPromiseId, const char* aSessionId,
@@ -54,17 +54,17 @@ class ClearKeySessionManager final : pub
                     uint32_t aSessionIdLength);
 
   void RemoveSession(uint32_t aPromiseId, const char* aSessionId,
                      uint32_t aSessionIdLength);
 
   void SetServerCertificate(uint32_t aPromiseId, const uint8_t* aServerCert,
                             uint32_t aServerCertSize);
 
-  cdm::Status Decrypt(const cdm::InputBuffer_1& aBuffer,
+  cdm::Status Decrypt(const cdm::InputBuffer_2& aBuffer,
                       cdm::DecryptedBlock* aDecryptedBlock);
 
   void DecryptingComplete();
 
   void PersistentSessionDataLoaded(uint32_t aPromiseId,
                                    const std::string& aSessionId,
                                    const uint8_t* aKeyData,
                                    uint32_t aKeyDataSize);
@@ -75,17 +75,17 @@ class ClearKeySessionManager final : pub
   void ClearInMemorySessionData(ClearKeySession* aSession);
   bool MaybeDeferTillInitialized(std::function<void()>&& aMaybeDefer);
   void Serialize(const ClearKeySession* aSession,
                  std::vector<uint8_t>& aOutKeyData);
 
   RefPtr<ClearKeyDecryptionManager> mDecryptionManager;
   RefPtr<ClearKeyPersistence> mPersistence;
 
-  cdm::Host_9* mHost = nullptr;
+  cdm::Host_10* mHost = nullptr;
 
   std::set<KeyId> mKeyIds;
   std::map<std::string, ClearKeySession*> mSessions;
 
   std::queue<std::function<void()>> mDeferredInitialize;
 };
 
 #endif  // __ClearKeyDecryptor_h__
--- a/media/gmp-clearkey/0.1/ClearKeyStorage.cpp
+++ b/media/gmp-clearkey/0.1/ClearKeyStorage.cpp
@@ -31,17 +31,17 @@ using namespace cdm;
 using namespace std;
 
 class WriteRecordClient : public FileIOClient {
  public:
   /*
    * This function will take the memory ownership of the parameters and
    * delete them when done.
    */
-  static void Write(Host_9* aHost, string& aRecordName,
+  static void Write(Host_10* aHost, string& aRecordName,
                     const vector<uint8_t>& aData, function<void()>&& aOnSuccess,
                     function<void()>&& aOnFailure) {
     WriteRecordClient* client =
         new WriteRecordClient(aData, move(aOnSuccess), move(aOnFailure));
     client->Do(aRecordName, aHost);
   }
 
   void OnOpenComplete(Status aStatus) override {
@@ -66,17 +66,17 @@ class WriteRecordClient : public FileIOC
   explicit WriteRecordClient(const vector<uint8_t>& aData,
                              function<void()>&& aOnSuccess,
                              function<void()>&& aOnFailure)
       : mFileIO(nullptr),
         mOnSuccess(move(aOnSuccess)),
         mOnFailure(move(aOnFailure)),
         mData(aData) {}
 
-  void Do(const string& aName, Host_9* aHost) {
+  void Do(const string& aName, Host_10* aHost) {
     // Initialize the FileIO.
     mFileIO = aHost->CreateFileIO(this);
     mFileIO->Open(aName.c_str(), aName.size());
   }
 
   void Done(cdm::FileIOClient::Status aStatus) {
     // Note: Call Close() before running continuation, in case the
     // continuation tries to open the same record; if we call Close()
@@ -99,29 +99,30 @@ class WriteRecordClient : public FileIOC
   FileIO* mFileIO = nullptr;
 
   function<void()> mOnSuccess;
   function<void()> mOnFailure;
 
   const vector<uint8_t> mData;
 };
 
-void WriteData(Host_9* aHost, string& aRecordName, const vector<uint8_t>& aData,
-               function<void()>&& aOnSuccess, function<void()>&& aOnFailure) {
+void WriteData(Host_10* aHost, string& aRecordName,
+               const vector<uint8_t>& aData, function<void()>&& aOnSuccess,
+               function<void()>&& aOnFailure) {
   WriteRecordClient::Write(aHost, aRecordName, aData, move(aOnSuccess),
                            move(aOnFailure));
 }
 
 class ReadRecordClient : public FileIOClient {
  public:
   /*
    * This function will take the memory ownership of the parameters and
    * delete them when done.
    */
-  static void Read(Host_9* aHost, string& aRecordName,
+  static void Read(Host_10* aHost, string& aRecordName,
                    function<void(const uint8_t*, uint32_t)>&& aOnSuccess,
                    function<void()>&& aOnFailure) {
     (new ReadRecordClient(move(aOnSuccess), move(aOnFailure)))
         ->Do(aRecordName, aHost);
   }
 
   void OnOpenComplete(Status aStatus) override {
     auto err = aStatus;
@@ -145,17 +146,17 @@ class ReadRecordClient : public FileIOCl
  private:
   explicit ReadRecordClient(
       function<void(const uint8_t*, uint32_t)>&& aOnSuccess,
       function<void()>&& aOnFailure)
       : mFileIO(nullptr),
         mOnSuccess(move(aOnSuccess)),
         mOnFailure(move(aOnFailure)) {}
 
-  void Do(const string& aName, Host_9* aHost) {
+  void Do(const string& aName, Host_10* aHost) {
     mFileIO = aHost->CreateFileIO(this);
     mFileIO->Open(aName.c_str(), aName.size());
   }
 
   void Done(cdm::FileIOClient::Status aStatus, const uint8_t* aData,
             uint32_t aDataSize) {
     // Note: Call Close() before running continuation, in case the
     // continuation tries to open the same record; if we call Close()
@@ -176,14 +177,14 @@ class ReadRecordClient : public FileIOCl
   }
 
   FileIO* mFileIO = nullptr;
 
   function<void(const uint8_t*, uint32_t)> mOnSuccess;
   function<void()> mOnFailure;
 };
 
-void ReadData(Host_9* mHost, string& aRecordName,
+void ReadData(Host_10* aHost, string& aRecordName,
               function<void(const uint8_t*, uint32_t)>&& aOnSuccess,
               function<void()>&& aOnFailure) {
-  ReadRecordClient::Read(mHost, aRecordName, move(aOnSuccess),
+  ReadRecordClient::Read(aHost, aRecordName, move(aOnSuccess),
                          move(aOnFailure));
 }
--- a/media/gmp-clearkey/0.1/ClearKeyStorage.h
+++ b/media/gmp-clearkey/0.1/ClearKeyStorage.h
@@ -23,19 +23,19 @@
 #include <vector>
 
 #include "ClearKeySessionManager.h"
 
 #define IO_SUCCEEDED(x) ((x) == cdm::FileIOClient::Status::kSuccess)
 #define IO_FAILED(x) ((x) != cdm::FileIOClient::Status::kSuccess)
 
 // Writes data to a file and fires the appropriate callback when complete.
-void WriteData(cdm::Host_9* aHost, std::string& aRecordName,
+void WriteData(cdm::Host_10* aHost, std::string& aRecordName,
                const std::vector<uint8_t>& aData,
                std::function<void()>&& aOnSuccess,
                std::function<void()>&& aOnFailure);
 
 // Reads data from a file and fires the appropriate callback when complete.
-void ReadData(cdm::Host_9* aHost, std::string& aRecordName,
+void ReadData(cdm::Host_10* aHost, std::string& aRecordName,
               std::function<void(const uint8_t*, uint32_t)>&& aOnSuccess,
               std::function<void()>&& aOnFailure);
 
 #endif  // __ClearKeyStorage_h__
--- a/media/gmp-clearkey/0.1/VideoDecoder.cpp
+++ b/media/gmp-clearkey/0.1/VideoDecoder.cpp
@@ -22,44 +22,47 @@
 #include "ClearKeyDecryptionManager.h"
 #include "ClearKeyUtils.h"
 #include "VideoDecoder.h"
 #include "mozilla/CheckedInt.h"
 
 using namespace wmf;
 using namespace cdm;
 
-VideoDecoder::VideoDecoder(Host_9* aHost) : mHost(aHost), mHasShutdown(false) {
+VideoDecoder::VideoDecoder(Host_10* aHost) : mHost(aHost), mHasShutdown(false) {
   CK_LOGD("VideoDecoder created");
 
   // We drop the ref in DecodingComplete().
   AddRef();
 
   mDecoder = new WMFH264Decoder();
 
   uint32_t cores = std::max(1u, std::thread::hardware_concurrency());
 
   HRESULT hr = mDecoder->Init(cores);
+  if (FAILED(hr)) {
+    CK_LOGE("Failed to initialize mDecoder!");
+  }
 }
 
 VideoDecoder::~VideoDecoder() { CK_LOGD("VideoDecoder destroyed"); }
 
-Status VideoDecoder::InitDecode(const VideoDecoderConfig_1& aConfig) {
+Status VideoDecoder::InitDecode(const VideoDecoderConfig_2& aConfig) {
   CK_LOGD("VideoDecoder::InitDecode");
 
   if (!mDecoder) {
     CK_LOGD("VideoDecoder::InitDecode failed to init WMFH264Decoder");
 
     return Status::kDecodeError;
   }
 
   return Status::kSuccess;
 }
 
-Status VideoDecoder::Decode(const InputBuffer_1& aInputBuffer,
+Status VideoDecoder::Decode(const InputBuffer_2& aInputBuffer,
                             VideoFrame* aVideoFrame) {
   CK_LOGD("VideoDecoder::Decode");
   // If the input buffer we have been passed has a null buffer, it means we
   // should drain.
   if (!aInputBuffer.data) {
     // This will drain the decoder until there are no frames left to drain,
     // whereupon it will return 'NeedsMoreData'.
     CK_LOGD("VideoDecoder::Decode Input buffer null: Draining");
--- a/media/gmp-clearkey/0.1/VideoDecoder.h
+++ b/media/gmp-clearkey/0.1/VideoDecoder.h
@@ -24,21 +24,21 @@
 // This include is required in order for content_decryption_module to work
 // on Unix systems.
 #include "stddef.h"
 #include "content_decryption_module.h"
 #include "WMFH264Decoder.h"
 
 class VideoDecoder : public RefCounted {
  public:
-  explicit VideoDecoder(cdm::Host_9* aHost);
+  explicit VideoDecoder(cdm::Host_10* aHost);
 
-  cdm::Status InitDecode(const cdm::VideoDecoderConfig_1& aConfig);
+  cdm::Status InitDecode(const cdm::VideoDecoderConfig_2& aConfig);
 
-  cdm::Status Decode(const cdm::InputBuffer_1& aEncryptedBuffer,
+  cdm::Status Decode(const cdm::InputBuffer_2& aEncryptedBuffer,
                      cdm::VideoFrame* aVideoFrame);
 
   void Reset();
 
   void DecodingComplete();
 
   bool HasShutdown() { return mHasShutdown; }
 
@@ -55,17 +55,17 @@ class VideoDecoder : public RefCounted {
 
   cdm::Status OutputFrame(cdm::VideoFrame* aVideoFrame);
 
   HRESULT SampleToVideoFrame(IMFSample* aSample, int32_t aPictureWidth,
                              int32_t aPictureHeight, int32_t aStride,
                              int32_t aFrameHeight,
                              cdm::VideoFrame* aVideoFrame);
 
-  cdm::Host_9* mHost;
+  cdm::Host_10* mHost;
   wmf::AutoPtr<wmf::WMFH264Decoder> mDecoder;
 
   std::queue<wmf::CComPtr<IMFSample>> mOutputQueue;
 
   bool mHasShutdown;
 };
 
 #endif  // __VideoDecoder_h__
--- a/media/gmp-clearkey/0.1/gmp-clearkey.cpp
+++ b/media/gmp-clearkey/0.1/gmp-clearkey.cpp
@@ -45,17 +45,17 @@ void INITIALIZE_CDM_MODULE() {}
 static bool sCanReadHostVerificationFiles = false;
 
 CDM_API
 void* CreateCdmInstance(int cdm_interface_version, const char* key_system,
                         uint32_t key_system_size,
                         GetCdmHostFunc get_cdm_host_func, void* user_data) {
   CK_LOGE("ClearKey CreateCDMInstance");
 
-  if (cdm_interface_version != cdm::ContentDecryptionModule_9::kVersion) {
+  if (cdm_interface_version != cdm::ContentDecryptionModule_10::kVersion) {
     CK_LOGE(
         "ClearKey CreateCDMInstance failed due to requesting unsupported "
         "version %d.",
         cdm_interface_version);
     return nullptr;
   }
 #ifdef ENABLE_WMF
   if (!wmf::EnsureLibs()) {
@@ -66,17 +66,17 @@ void* CreateCdmInstance(int cdm_interfac
 
 #ifdef MOZILLA_OFFICIAL
   // Test that we're able to read the host files.
   if (!sCanReadHostVerificationFiles) {
     return nullptr;
   }
 #endif
 
-  cdm::Host_9* host = static_cast<cdm::Host_9*>(
+  cdm::Host_10* host = static_cast<cdm::Host_10*>(
       get_cdm_host_func(cdm_interface_version, user_data));
   ClearKeyCDM* clearKey = new ClearKeyCDM(host);
 
   CK_LOGE("Created ClearKeyCDM instance!");
 
   return clearKey;
 }
 
--- a/media/gmp-clearkey/0.1/manifest.json.in
+++ b/media/gmp-clearkey/0.1/manifest.json.in
@@ -1,13 +1,13 @@
 {
     "name": "clearkey",
     "description": "ClearKey Gecko Media Plugin",
     "version": "1",
     "x-cdm-module-versions": "4",
-    "x-cdm-interface-versions": "9",
-    "x-cdm-host-versions": "9",
+    "x-cdm-interface-versions": "10",
+    "x-cdm-host-versions": "10",
 #ifdef ENABLE_WMF
     "x-cdm-codecs": "avc1"
 #else
     "x-cdm-codecs": ""
 #endif
 }
\ No newline at end of file
--- a/memory/replace/dmd/block_analyzer.py
+++ b/memory/replace/dmd/block_analyzer.py
@@ -46,16 +46,17 @@ allocatorFns = [
     'vpx_memalign',
     'js_malloc',
     'js_calloc',
     'js_realloc',
     'pod_malloc',
     'pod_calloc',
     'pod_realloc',
     'nsTArrayInfallibleAllocator::Malloc',
+    'Allocator<ReplaceMallocBase>::malloc(',
     # This one necessary to fully filter some sequences of allocation functions
     # that happen in practice. Note that ??? entries that follow non-allocation
     # functions won't be stripped, as explained above.
     '???',
 ]
 
 ####
 
@@ -118,17 +119,17 @@ class BlockData:
         self.alloc_stack = json_block['alloc']
 
 
 def print_trace_segment(args, stacks, block):
     (traceTable, frameTable) = stacks
 
     for l in traceTable[block.alloc_stack]:
         # The 5: is to remove the bogus leading "#00: " from the stack frame.
-        print(' ', frameTable[l][5:args.max_stack_frame_length])
+        print('  ' + frameTable[l][5:args.max_stack_frame_length])
 
 
 def show_referrers(args, blocks, stacks, block):
     visited = set([])
 
     anyFound = False
 
     while True:
@@ -243,17 +244,17 @@ def loadGraph(options):
 def analyzeLogs():
     options = parser.parse_args()
 
     (blocks, stacks) = loadGraph(options)
 
     block = int(options.block, 16)
 
     if block not in blocks:
-        print('Object', block, 'not found in traces.')
+        print('Object ' + block + ' not found in traces.')
         print('It could still be the target of some nodes.')
         return
 
     if options.info:
         show_block_info(options, blocks, stacks, block)
         return
 
     show_referrers(options, blocks, stacks, block)
--- a/mobile/android/base/AndroidManifest.xml.in
+++ b/mobile/android/base/AndroidManifest.xml.in
@@ -25,16 +25,17 @@
 
     <application android:label="@string/moz_app_displayname"
                  android:icon="@mipmap/ic_launcher"
                  android:logo="@drawable/logo"
                  android:name="@MOZ_ANDROID_APPLICATION_CLASS@"
                  android:hardwareAccelerated="true"
                  android:supportsRtl="true"
                  android:allowBackup="false"
+                 android:usesCleartextTraffic="true"
                  >
 
         <meta-data android:name="com.sec.android.support.multiwindow" android:value="true"/>
 
         <meta-data android:name="android.max_aspect" android:value="2.1"/>
 
 #ifdef MOZ_NATIVE_DEVICES
         <service android:name="org.mozilla.gecko.RemotePresentationService" android:exported="false"/>
--- a/mobile/android/base/java/org/mozilla/gecko/search/SearchEngineManager.java
+++ b/mobile/android/base/java/org/mozilla/gecko/search/SearchEngineManager.java
@@ -436,46 +436,46 @@ public class SearchEngineManager impleme
         final InputStream in = getInputStreamFromSearchPluginsJar("list.json");
         if (in == null) {
             Log.e(LOG_TAG, "Error missing list.json");
             return null;
         }
         try {
             final JSONObject json = new JSONObject(FileUtils.readStringFromInputStreamAndCloseStream(in, MAX_LISTJSON_SIZE));
 
-            // Get the region used to fence search engines.
+            // Get the current language
+            final String languageTag = Locales.getLanguageTag(Locale.getDefault());
+
+            // Get the current region
             String region = fetchCountryCode();
 
             // Store the result, even if it's empty. If we fail to get a region, we never
             // try to get it again, and we will always fallback to the non-region engine.
             GeckoSharedPrefs.forApp(context)
                             .edit()
                             .putString(PREF_REGION_KEY, (region == null ? "" : region))
                             .apply();
 
-            if (region != null) {
-                if (json.has(region)) {
-                    final JSONObject regionData = json.getJSONObject(region);
-                    if (regionData.has("searchDefault")) {
-                        Log.d(LOG_TAG, "Found region-specific default engine name in browsersearch.json.");
-                        return regionData.getString("searchDefault");
-                    }
+            final JSONObject locales = json.getJSONObject("locales");
+
+            if (locales.has(languageTag)) {
+                final JSONObject regions = locales.getJSONObject(languageTag);
+                if (!regions.has(region)) {
+                    // Region doesn't exist, use default.
+                    // default always exists.
+                    region = "default";
+                }
+                final JSONObject regionData = regions.getJSONObject(region);
+                if (regionData.has("searchDefault")) {
+                    return regionData.getString("searchDefault");
                 }
             }
-
-            // Either we have no geoip region, or we didn't find the right region and we are falling back to the default.
-            if (json.has("default")) {
-                final JSONObject defaultData = json.getJSONObject("default");
-                if (defaultData.has("searchDefault")) {
-                  Log.d(LOG_TAG, "Found default engine name in list.json.");
-                  return defaultData.getString("searchDefault");
-                }
-            }
-            // We should never get here
-            Log.e(LOG_TAG, "Error missing defaultSearch in list.json");
+            // Falling back to the overall default
+            final JSONObject defaultData = json.getJSONObject("default");
+            return defaultData.getString("searchDefault");
         } catch (IOException e) {
             Log.e(LOG_TAG, "Error getting search engine name from list.json", e);
         } catch (JSONException e) {
             Log.e(LOG_TAG, "Error parsing list.json", e);
         } finally {
             IOUtils.safeStreamClose(in);
         }
         return null;
@@ -598,28 +598,54 @@ public class SearchEngineManager impleme
             return null;
         } catch (JSONException e) {
             Log.e(LOG_TAG, "Error parsing list.json", e);
             return null;
         } finally {
             IOUtils.safeStreamClose(in);
         }
         try {
-            String region = GeckoSharedPrefs.forApp(context).getString(PREF_REGION_KEY, null);
+            final String languageTag = Locales.getLanguageTag(Locale.getDefault());
+
+            String region = fetchCountryCode();
+
+            final JSONObject locales = json.getJSONObject("locales");
 
-            JSONArray engines;
-            if (json.has(region)) {
-                engines = json.getJSONObject(region).getJSONArray("visibleDefaultEngines");
+            JSONArray jsonEngines;
+            if (locales.has(languageTag)) {
+                final JSONObject regions = locales.getJSONObject(languageTag);
+                if (!regions.has(region)) {
+                    // Region doesn't exist, use default.
+                    // default always exists.
+                    region = "default";
+                }
+                jsonEngines = regions.getJSONObject(region).getJSONArray("visibleDefaultEngines");
             } else {
-                engines = json.getJSONObject("default").getJSONArray("visibleDefaultEngines");
+                // Falling back to the overall default
+                jsonEngines = locales.getJSONObject("default").getJSONArray("visibleDefaultEngines");
             }
-            for (int i = 0; i < engines.length(); i++) {
-                final InputStream pluginIn = getInputStreamFromSearchPluginsJar(engines.getString(i) + ".xml");
+
+            ArrayList<String> engines = new ArrayList<String>();
+
+            if (json.getJSONObject("regionOverrides").has(region)) {
+                final JSONObject regionOverride = json.getJSONObject("regionOverrides").getJSONObject(fetchCountryCode());
+                for (int i = 0; i < jsonEngines.length(); i++) {
+                    final String engineName = jsonEngines.getString(i);
+                    if (regionOverride.has(engineName)) {
+                        engines.add(regionOverride.getString(engineName));
+                    } else {
+                        engines.add(engineName);
+                    }
+                }
+            }
+
+            for (int i = 0; i < engines.size(); i++) {
+                final InputStream pluginIn = getInputStreamFromSearchPluginsJar(engines.get(i) + ".xml");
                 if (pluginIn != null) {
-                    final SearchEngine engine = createEngineFromInputStream(engines.getString(i), pluginIn);
+                    final SearchEngine engine = createEngineFromInputStream(engines.get(i), pluginIn);
                     if (engine != null && engine.getName().equals(name)) {
                         return engine;
                     }
                 }
             }
         } catch (Throwable e) {
             Log.e(LOG_TAG, "Error creating shipped search engine from name: " + name, e);
         }
@@ -698,39 +724,18 @@ public class SearchEngineManager impleme
 
     /**
      * Reads a file from the searchplugins directory in the Gecko jar.
      *
      * @param fileName name of the file to read.
      * @return InputStream for file.
      */
     private InputStream getInputStreamFromSearchPluginsJar(String fileName) {
-        final Locale locale = Locale.getDefault();
-
-        // First, try a file path for the full locale.
-        final String languageTag = Locales.getLanguageTag(locale);
-        String url = getSearchPluginsJarURL(context, languageTag, fileName);
-
-        InputStream in = GeckoJarReader.getStream(context, url);
-        if (in != null) {
-            return in;
-        }
-
-        // If that doesn't work, try a file path for just the language.
-        final String language = Locales.getLanguage(locale);
-        if (!languageTag.equals(language)) {
-            url = getSearchPluginsJarURL(context, language, fileName);
-            in = GeckoJarReader.getStream(context, url);
-            if (in != null) {
-                return in;
-            }
-        }
-
-        // Finally, fall back to default locale defined in chrome registry.
-        url = getSearchPluginsJarURL(context, getFallbackLocale(), fileName);
+        final String path = "chrome/chrome/searchplugins/" + fileName;
+        final String url =  GeckoJarReader.getJarURL(context, path);
         return GeckoJarReader.getStream(context, url);
     }
 
     /**
      * Finds a fallback locale in the Gecko chrome registry. If a locale is declared
      * here, we should be guaranteed to find a searchplugins directory for it.
      *
      * This method should only be accessed from the background thread.
@@ -764,28 +769,16 @@ public class SearchEngineManager impleme
                 br.close();
             } catch (IOException e) {
                 // Ignore.
             }
         }
         return fallbackLocale;
     }
 
-    /**
-     * Gets the jar URL for a file in the searchplugins directory.
-     *
-     * @param locale String representing the Gecko locale (e.g. "en-US").
-     * @param fileName The name of the file to read.
-     * @return URL for jar file.
-     */
-    private static String getSearchPluginsJarURL(Context context, String locale, String fileName) {
-        final String path = "chrome/" + locale + "/locale/" + locale + "/browser/searchplugins/" + fileName;
-        return GeckoJarReader.getJarURL(context, path);
-    }
-
     private BufferedReader getBufferedReader(InputStream in) {
         try {
             return new BufferedReader(new InputStreamReader(in, "UTF-8"));
         } catch (UnsupportedEncodingException e) {
             // Cannot happen.
             return null;
         }
     }
--- a/mobile/android/chrome/content/aboutLogins.js
+++ b/mobile/android/chrome/content/aboutLogins.js
@@ -362,16 +362,17 @@ var Logins = {
       window: window,
     });
     let menuItems = [
       { label: gStringBundle.GetStringFromName("loginsMenu.showPassword") },
       { label: gStringBundle.GetStringFromName("loginsMenu.copyPassword") },
       { label: gStringBundle.GetStringFromName("loginsMenu.copyUsername") },
       { label: gStringBundle.GetStringFromName("loginsMenu.editLogin") },
       { label: gStringBundle.GetStringFromName("loginsMenu.delete") },
+      { label: gStringBundle.GetStringFromName("loginsMenu.deleteAll") },
     ];
 
     prompt.setSingleChoiceItems(menuItems);
     prompt.show((data) => {
       // Switch on indices of buttons, as they were added when creating login item.
       switch (data.button) {
         case 0:
           this._showPassword(login.password);
@@ -383,33 +384,52 @@ var Logins = {
           copyStringShowSnackbar(login.username, gStringBundle.GetStringFromName("loginsDetails.usernameCopied"));
           break;
         case 3:
           this._selectedLogin = login;
           this._showEditLoginDialog(login);
           history.pushState({ id: login.guid }, document.title);
           break;
         case 4:
-          let confirmPrompt = new Prompt({
+          let deleteLoginConfirmPrompt = new Prompt({
             window: window,
             message: gStringBundle.GetStringFromName("loginsDialog.confirmDelete"),
             buttons: [
               gStringBundle.GetStringFromName("loginsDialog.confirm"),
               gStringBundle.GetStringFromName("loginsDialog.cancel") ],
           });
-          confirmPrompt.show((data) => {
+          deleteLoginConfirmPrompt.show((data) => {
             switch (data.button) {
               case 0:
                 // Corresponds to "confirm" button.
                 Services.logins.removeLogin(login);
 
                 // Show a snackbar to notify the login record has been deleted.
                 Snackbars.show(gStringBundle.GetStringFromName("loginsDetails.deleted"), Snackbars.LENGTH_LONG);
             }
           });
+          break;
+        case 5:
+          let deleteAllLoginsConfirmPrompt = new Prompt({
+            window: window,
+            message: gStringBundle.GetStringFromName("loginsDialog.confirmDeleteAll"),
+            buttons: [
+              gStringBundle.GetStringFromName("loginsDialog.confirm"),
+              gStringBundle.GetStringFromName("loginsDialog.cancel") ],
+          });
+          deleteAllLoginsConfirmPrompt.show((data) => {
+            switch (data.button) {
+              case 0:
+                // Corresponds to "confirm" button.
+                Services.logins.removeAllLogins();
+
+                // Show a snackbar to notify that all logins records have been deleted.
+                Snackbars.show(gStringBundle.GetStringFromName("loginsDetails.deletedAll"), Snackbars.LENGTH_LONG);
+            }
+          });
       }
     });
   },
 
   _loadFavicon: function(aImg, aHostname) {
     // Load favicon from cache.
     EventDispatcher.instance.sendRequestForResult({
       type: "Favicon:Request",
--- a/mobile/android/geckoview_example/src/main/AndroidManifest.xml
+++ b/mobile/android/geckoview_example/src/main/AndroidManifest.xml
@@ -7,17 +7,18 @@
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
     <uses-permission android:name="android.permission.RECORD_AUDIO"/>
     <uses-permission android:name="android.permission.CAMERA"/>
 
     <application
             android:allowBackup="true"
             android:label="@string/app_name"
-            android:supportsRtl="true">
+            android:supportsRtl="true"
+            android:usesCleartextTraffic="true">
         <uses-library android:name="android.test.runner"/>
 
         <activity
                 android:name=".GeckoViewActivity"
                 android:label="GeckoView Example"
                 android:launchMode="singleTop"
                 android:theme="@style/Theme.AppCompat.Light.NoActionBar"
                 android:windowSoftInputMode="stateUnspecified|adjustResize">
--- a/mobile/android/locales/en-US/chrome/aboutLogins.properties
+++ b/mobile/android/locales/en-US/chrome/aboutLogins.properties
@@ -2,27 +2,30 @@
 # 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/.
 
 loginsMenu.showPassword=Show password
 loginsMenu.copyPassword=Copy password
 loginsMenu.copyUsername=Copy username
 loginsMenu.editLogin=Edit login
 loginsMenu.delete=Delete
+loginsMenu.deleteAll=Delete All
 
 loginsDialog.confirmDelete=Delete this login?
+loginsDialog.confirmDeleteAll=Delete all logins?
 loginsDialog.copy=Copy
 loginsDialog.confirm=OK
 loginsDialog.cancel=Cancel
 
 editLogin.fallbackTitle=Edit Login
 editLogin.saved1=Saved login
 editLogin.couldNotSave=Changes could not be saved
 
 loginsDetails.age=Age: %S days
 
 loginsDetails.copyFailed=Copy failed
 loginsDetails.passwordCopied=Password copied
 loginsDetails.usernameCopied=Username copied
 loginsDetails.deleted=Login deleted
+loginsDetails.deletedAll=All logins deleted
 
 password-btn.show=Show
 password-btn.hide=Hide
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -5550,17 +5550,17 @@ pref("urlclassifier.trackingAnnotationTa
 #else
 pref("urlclassifier.trackingAnnotationTable", "test-track-simple,base-track-digest256");
 #endif
 pref("urlclassifier.trackingAnnotationWhitelistTable", "test-trackwhite-simple,mozstd-trackwhite-digest256");
 pref("urlclassifier.trackingTable", "test-track-simple,base-track-digest256");
 pref("urlclassifier.trackingWhitelistTable", "test-trackwhite-simple,mozstd-trackwhite-digest256");
 
 // These tables will never trigger a gethash call.
-pref("urlclassifier.disallow_completions", "test-malware-simple,test-harmful-simple,test-phish-simple,test-unwanted-simple,test-track-simple,test-trackwhite-simple,test-block-simple,goog-downloadwhite-digest256,base-track-digest256,mozstd-trackwhite-digest256,content-track-digest256,mozplugin-block-digest256,mozplugin2-block-digest256,block-flash-digest256,except-flash-digest256,allow-flashallow-digest256,except-flashallow-digest256,block-flashsubdoc-digest256,except-flashsubdoc-digest256,except-flashinfobar-digest256,goog-passwordwhite-proto,ads-track-digest256,social-track-digest256,analytics-track-digest256");
+pref("urlclassifier.disallow_completions", "test-malware-simple,test-harmful-simple,test-phish-simple,test-unwanted-simple,test-track-simple,test-trackwhite-simple,test-block-simple,goog-downloadwhite-digest256,base-track-digest256,mozstd-trackwhite-digest256,content-track-digest256,mozplugin-block-digest256,mozplugin2-block-digest256,block-flash-digest256,except-flash-digest256,allow-flashallow-digest256,except-flashallow-digest256,block-flashsubdoc-digest256,except-flashsubdoc-digest256,goog-passwordwhite-proto,ads-track-digest256,social-track-digest256,analytics-track-digest256");
 
 // Number of random entries to send with a gethash request
 pref("urlclassifier.gethashnoise", 4);
 
 // Gethash timeout for Safe Browsing
 pref("urlclassifier.gethash.timeout_ms", 5000);
 // Update server response timeout for Safe Browsing
 pref("urlclassifier.update.response_timeout_ms", 30000);
@@ -5619,17 +5619,17 @@ pref("browser.safebrowsing.provider.goog
 pref("browser.safebrowsing.provider.google4.advisoryName", "Google Safe Browsing");
 pref("browser.safebrowsing.provider.google4.dataSharingURL", "https://safebrowsing.googleapis.com/v4/threatHits?$ct=application/x-protobuf&key=%GOOGLE_API_KEY%&$httpMethod=POST");
 pref("browser.safebrowsing.provider.google4.dataSharing.enabled", false);
 
 pref("browser.safebrowsing.reportPhishURL", "https://%LOCALE%.phish-report.mozilla.com/?hl=%LOCALE%&url=");
 
 // Mozilla Safe Browsing provider (for tracking protection and plugin blocking)
 pref("browser.safebrowsing.provider.mozilla.pver", "2.2");
-pref("browser.safebrowsing.provider.mozilla.lists", "base-track-digest256,mozstd-trackwhite-digest256,content-track-digest256,mozplugin-block-digest256,mozplugin2-block-digest256,block-flash-digest256,except-flash-digest256,allow-flashallow-digest256,except-flashallow-digest256,block-flashsubdoc-digest256,except-flashsubdoc-digest256,except-flashinfobar-digest256,ads-track-digest256,social-track-digest256,analytics-track-digest256");
+pref("browser.safebrowsing.provider.mozilla.lists", "base-track-digest256,mozstd-trackwhite-digest256,content-track-digest256,mozplugin-block-digest256,mozplugin2-block-digest256,block-flash-digest256,except-flash-digest256,allow-flashallow-digest256,except-flashallow-digest256,block-flashsubdoc-digest256,except-flashsubdoc-digest256,ads-track-digest256,social-track-digest256,analytics-track-digest256");
 pref("browser.safebrowsing.provider.mozilla.updateURL", "https://shavar.services.mozilla.com/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2");
 pref("browser.safebrowsing.provider.mozilla.gethashURL", "https://shavar.services.mozilla.com/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2");
 // Set to a date in the past to force immediate download in new profiles.
 pref("browser.safebrowsing.provider.mozilla.nextupdatetime", "1");
 // Block lists for tracking protection. The name values will be used as the keys
 // to lookup the localized name in preferences.properties.
 pref("browser.safebrowsing.provider.mozilla.lists.base", "moz-std");
 pref("browser.safebrowsing.provider.mozilla.lists.content", "moz-full");
@@ -5640,17 +5640,16 @@ pref("urlclassifier.blockedTable", "test
 
 // Flash blocking tables
 pref("urlclassifier.flashAllowTable", "allow-flashallow-digest256");
 pref("urlclassifier.flashAllowExceptTable", "except-flashallow-digest256");
 pref("urlclassifier.flashTable", "block-flash-digest256");
 pref("urlclassifier.flashExceptTable", "except-flash-digest256");
 pref("urlclassifier.flashSubDocTable", "block-flashsubdoc-digest256");
 pref("urlclassifier.flashSubDocExceptTable", "except-flashsubdoc-digest256");
-pref("urlclassifier.flashInfobarTable", "except-flashinfobar-digest256");
 
 // Turn off Spatial navigation by default.
 pref("snav.enabled", false);
 
 // Wakelock is disabled by default.
 pref("dom.wakelock.enabled", false);
 
 // The URL of the Firefox Accounts auth server backend
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1166,9 +1166,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 = 488;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1555338304939000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1555935367132000);
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,38 +3,46 @@
  * 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(1557757499522000);
+const PRTime gPreloadListExpirationTime = INT64_C(1558354561758000);
 %%
 0-1.party, 1
+000books.net, 1
 00100010.net, 1
 0010100.net, 1
 00120012.net, 1
 00130013.net, 1
 00140014.net, 1
 00150015.net, 1
 00160016.net, 1
 00180018.net, 1
 00190019.net, 1
 00220022.net, 1
 00330033.net, 1
+003971.com, 1
 00440044.net, 1
 00550055.net, 1
 00660066.net, 1
 007-preisvergleich.de, 1
 00770077.net, 1
 007kf.com, 1
+008207.com, 1
+008251.com, 1
+008253.com, 1
+008271.com, 1
+0086286.com, 1
 00880088.net, 1
 00990099.net, 1
+009p.com, 1
 00dani.me, 1
 00f.net, 1
 00wbf.com, 1
 0100dev.com, 0
 0100dev.nl, 0
 01011970.xyz, 1
 01100010011001010111001101110100.com, 1
 01110000011100110111001001100111.com, 1
@@ -62,25 +70,73 @@ 029inno.com, 1
 02smh.com, 1
 03-09-2016.wedding, 1
 03170317.com, 1
 0391315.com, 1
 046569.com, 1
 04911701.cn, 1
 04sun.com, 1
 050.ca, 1
+050869.com, 1
 050media.nl, 1
 0511315.net, 1
 0513c.com, 1
+056657.com, 1
+056675.com, 1
+056679.com, 1
+056687.com, 1
+056690.com, 1
+056697.com, 1
+056867.com, 1
+056869.com, 1
+056875.com, 1
+056879.com, 1
+056950.com, 1
+056976.com, 1
+056985.com, 1
 0573wk.com, 1
+057587.com, 1
+057596.com, 1
+058509.com, 1
+058596.com, 1
+058679.com, 1
+059957.com, 1
+060757.com, 1
+060795.com, 1
+060796.com, 1
+060798.com, 1
+0607p.com, 1
+060870.com, 1
+060875.com, 1
 06091994.xyz, 1
+065679.com, 1
+065706.com, 1
+065790.com, 1
+065970.com, 1
+065976.com, 1
+066570.com, 1
+066579.com, 1
+066590.com, 1
+066705.com, 1
+066709.com, 1
+066790.com, 1
+068697.com, 1
+068756.com, 1
+068957.com, 1
+069657.com, 1
+069676.com, 1
 06se.com, 1
 070709.net, 1
+0708p.com, 1
+070968.com, 1
+070986.com, 1
+0720p.com, 1
 0788yh.com, 1
 0792112.com, 1
+0798rcw.com, 1
 0809yh.com, 1
 081752.com, 1
 081763.com, 1
 081769.com, 1
 081783.com, 1
 081925.com, 1
 081927.com, 1
 081957.com, 1
@@ -100,16 +156,26 @@ 083903.com, 1
 083905.com, 1
 083907.com, 1
 083912.com, 1
 083957.com, 1
 083960.com, 1
 083962.com, 1
 083965.com, 1
 083967.com, 1
+085806.com, 1
+085905.com, 1
+085950.com, 1
+086807.com, 1
+086907.com, 1
+087059.com, 1
+087065.com, 1
+087540.com, 1
+087569.com, 1
+087580.com, 1
 08detaxe.fr, 1
 09115.com, 1
 09892.net, 1
 0au.de, 1
 0c3.de, 1
 0cdn.ga, 1
 0day.agency, 1
 0day.su, 1
@@ -117,16 +183,17 @@ 0des.com, 1
 0i0.nl, 1
 0ii0.cf, 1
 0ik.de, 1
 0iz.net, 1
 0knowledge.de, 0
 0o0.edu.pl, 1
 0paste.com, 1
 0vi.org, 1
+0vo.moe, 1
 0wx.cat, 1
 0wx.es, 1
 0wx.eu, 1
 0wx.org, 1
 0x.cx, 1
 0x.sk, 1
 0x0.cloud, 1
 0x0.li, 1
@@ -138,16 +205,17 @@ 0x52.net, 1
 0x52.org, 1
 0x7d.com, 1
 0x7fffffff.net, 1
 0x90.in, 1
 0x90.io, 1
 0xaa55.me, 1
 0xabe.io, 1
 0xacab.org, 1
+0xaf.tk, 1
 0xda.de, 1
 0xdc.io, 0
 0xdefaced.de, 1
 0xee.eu, 1
 0xf00.ch, 1
 0xfc.de, 1
 0xn.de, 1
 0yen.org, 1
@@ -189,26 +257,31 @@ 10840.net, 1
 10gb.io, 1
 10gbit.ovh, 1
 10hz.de, 1
 10og.de, 1
 10ppm.com, 1
 10x.ooo, 1
 1100.so, 1
 110110110.net, 1
+110692.com, 1
 112112112.net, 1
+1126p.com, 1
 112app.nl, 1
 112hz.com, 1
+112it.ro, 1
+1130p.com, 1
 113113113.net, 1
 114514ss.com, 1
 118118118.net, 1
 11dzon.com, 1
 11loc.de, 1
 11thstreetcoffee.com, 1
 11urss.com, 1
+120323.com, 1
 1212873467.rsc.cdn77.org, 1
 1218641649.rsc.cdn77.org, 1
 123.gg, 1
 123110.com, 1
 123123qq.com, 1
 123apps.net, 1
 123bearing.co.uk, 1
 123bearing.com, 1
@@ -221,29 +294,43 @@ 123opstalverzekeringen.nl, 1
 123plons.nl, 1
 123roulement.be, 1
 123roulement.com, 1
 123termpapers.com, 1
 123writings.com, 1
 124133.com, 1
 124633.com, 1
 125m125.de, 1
+126772.com, 1
+127661.com, 1
+127662.com, 1
+127663.com, 1
+127665.com, 1
 1288366.com, 1
 1288fc.com, 1
-12photos.eu, 1
+12autoankauf-berlin.de, 1
 12thmanrising.com, 1
 12train.com, 1
 12vpn.net, 1
 130.ua, 1
+130212.com, 1
+131934.com, 1
+131954.com, 1
 132kv.ch, 1
 13318522.com, 1
+133294.com, 1
+133492.com, 1
 1359826938.rsc.cdn77.org, 1
 135vv.com, 1
+136774.com, 1
+136814.com, 1
+137724.com, 1
 13826145000.com, 1
 13th-dover.uk, 1
+141145.com, 1
 143533.com, 1
 143633.com, 1
 143733.com, 1
 143933.com, 1
 1453914078.rsc.cdn77.org, 1
 145433.com, 1
 145733.com, 1
 146233.com, 1
@@ -289,23 +376,23 @@ 168esb.com, 1
 174343.com, 1
 1750studios.com, 0
 1768calc.com.au, 1
 1811559.com, 1
 1844329061.rsc.cdn77.org, 1
 1876996.com, 1
 18888msc.com, 1
 1888zr.com, 1
+1889p.com, 1
 188da.com, 1
 188dv.com, 1
 1895media.com, 1
 189dv.com, 1
 189fc.com, 1
 18celebration.com, 1
-18celebration.org, 1
 18f.gov, 1
 18f.gsa.gov, 0
 1911trust.com, 1
 1912x.com, 1
 192.io, 1
 192168ll.repair, 1
 1921958389.rsc.cdn77.org, 1
 192433.com, 1
@@ -376,29 +463,32 @@ 2.wtf, 1
 200.network, 1
 2001y.me, 1
 200fcw.com, 1
 2012.ovh, 1
 2018.wales, 1
 20188088.com, 1
 2048-spiel.de, 1
 2048game.co.uk, 1
+2083236893.com, 1
 20at.com, 1
 20denier.com, 1
 20zq.com, 1
 215dy.net, 1
 21sthammersmith.org.uk, 1
 21stnc.com, 1
 21stnc.us, 1
 21x9.org, 1
+2206p.com, 1
 222001.com, 1
 2222yh.com, 1
 22digital.agency, 1
 22vetter.st, 1
 230beats.com, 1
+232192.com, 1
 2333.press, 1
 23333.link, 1
 2333666.xyz, 1
 2333blog.com, 1
 233abc.com, 0
 233blog.com, 1
 233boy.com, 1
 233bwg.com, 1
@@ -410,44 +500,48 @@ 233yes.com, 1
 24-7.jp, 1
 245meadowvistaway.com, 1
 246060.ru, 1
 247a.co.uk, 1
 247exchange.com, 1
 247healthshop.com, 1
 247medplan.com, 1
 2495dentalimplants.com, 1
+249722.com, 1
 249cq.com, 1
 24dian30.com, 1
 24hour-locksmithsanantonio.com, 1
 24hourcyclist.co.uk, 1
 24hourlocksmithbaltimore.com, 1
 24hourlocksmithdallastx.com, 1
 24hourlocksmithdetroit.com, 1
 24hourlocksmithshouston.com, 1
 24hoursanantoniolocksmiths.com, 1
 24hourscienceprojects.com, 1
 24ip.com, 1
 24ip.de, 1
 24ip.fr, 1
+24items.com, 1
 24kbet.com, 1
 24timeravis.dk, 1
 24zpravy.cz, 1
 256k.me, 1
 256pages.com, 0
+2586p.com, 1
 25reinyan25.net, 1
 2600edinburgh.org, 1
 2600hq.com, 1
 260887.com, 1
 263.info, 1
 2718282.net, 1
 27728522.com, 1
 28-industries.com, 1
 281180.de, 1
 2858958.com, 1
+286.com, 1
 28peaks.com, 1
 28spots.net, 1
 291167.xyz, 1
 2912.nl, 1
 29227.com, 1
 2948.ca, 1
 297computers.com, 1
 2991236.com, 1
@@ -505,17 +599,16 @@ 3056999.com, 1
 309422.com, 1
 30hzcollective.com, 1
 310422.com, 1
 313422.com, 1
 314022.com, 1
 314122.com, 1
 314322.com, 1
 314522.com, 1
-314553.com, 1
 314622.com, 1
 314633.com, 1
 314922.com, 1
 315422.com, 1
 316433.com, 1
 319422.com, 1
 319k3.com, 1
 31klabs.com, 1
@@ -535,17 +628,18 @@ 32h.de, 1
 33-km.ru, 1
 330.net, 1
 3333yh.com, 1
 33445.com, 1
 33445111.com, 1
 33445222.com, 1
 33445333.com, 1
 33445444.com, 1
-33836.com, 1
+3351p.com, 1
+336yh.com, 1
 338da.com, 1
 33jiasu.com, 1
 340422.com, 1
 340622.com, 1
 340922.com, 1
 341422.com, 1
 341433.com, 1
 341533.com, 1
@@ -591,43 +685,43 @@ 354633.com, 1
 354922.com, 1
 354933.com, 1
 356433.com, 1
 357maelai.co, 1
 360live.fr, 1
 360rail.nl, 1
 360vrs.com, 1
 360woodworking.com, 1
-364553.com, 1
 365365.com, 1
 365beautyworld.com, 1
 365daysreview.com, 1
 365healthworld.com, 1
 365propertybuyer.co.uk, 1
 365skulls.com, 1
 370422.com, 1
 371422.com, 1
 371cloud.com, 1
 373422.com, 1
 374933.com, 1
 375422.com, 1
 379700.com, 1
 380422.com, 1
 3839.ca, 1
+3880p.com, 1
 38888msc.com, 1
 388da.com, 1
+38sihu.com, 0
 390422.com, 1
 392422.com, 1
 393335.ml, 1
 393422.com, 1
 394022.com, 1
 394122.com, 1
 394322.com, 1
 394522.com, 1
-394553.com, 1
 394622.com, 1
 394922.com, 1
 396422.com, 1
 398.info, 1
 39sihu.com, 0
 3aandl.com, 1
 3ags.de, 1
 3amtoolbox.se, 1
@@ -671,16 +765,17 @@ 3niu8888.com, 1
 3niuurl.com, 1
 3os.ooo, 1
 3phase.pw, 1
 3plusdesign.gr, 1
 3prn.com, 1
 3queens.cz, 1
 3queens.io, 1
 3r.org.uk, 1
+3rsee.com, 1
 3s-datasolution.de, 1
 3s-datasolutions.de, 1
 3s-ddns.de, 1
 3s-dns.de, 1
 3s-hosting.de, 1
 3s-mail.de, 1
 3sdatasolution.de, 1
 3sdatasolutions.de, 1
@@ -689,52 +784,57 @@ 3sdns.de, 1
 3shosting.de, 1
 3smail.de, 1
 3timegear.com, 1
 3trees.tk, 1
 3tribes.co.uk, 1
 3typen.tv, 1
 3v4l.org, 1
 3vlnaeet.cz, 1
+3xbit.com.br, 1
 3xx.link, 1
 4-1-where.com, 1
 4-it.de, 1
 4000milestare.com, 0
 403.ch, 1
 404.guide, 1
 404notfound.com.br, 1
 4096b.com, 1
 4096bit.de, 0
 40acts.org.uk, 1
 41-where.com, 1
+4111pk.com, 1
 411416.com, 1
 41199.com, 1
 411film.com, 1
 411movie.com, 1
-414553.com, 1
+4138hd.com, 1
 41844.de, 1
 41studio.com, 1
 41where.com, 1
 420java.com, 1
 42ch.com, 1
 42day.info, 1
 42t.ru, 1
 439050.com, 1
 440887.com, 1
 440hz.radio, 1
 441jj.com, 0
+441jz.com, 0
 442887.com, 1
+442jz.com, 0
 443887.com, 1
+443jz.com, 1
 4444yh.com, 1
 444887.com, 1
 445887.com, 1
 44sec.com, 1
 451.ooo, 1
-4553s.com, 1
 4553vip.com, 1
+46fa.com, 1
 4706666.com, 1
 4716666.com, 1
 4726666.com, 1
 4736666.com, 1
 4756666.com, 1
 4786666.com, 1
 47essays.com, 1
 47tech.com, 1
@@ -742,17 +842,16 @@ 491mhz.net, 1
 49889.com, 1
 49948522.com, 1
 4997777.com, 1
 49dollaridahoregisteredagent.com, 1
 4baby.com.br, 1
 4c-haircare.com, 1
 4d2.xyz, 1
 4dbygg.se, 1
-4everproxy.com, 1
 4eyes.ch, 1
 4fit.ro, 1
 4flex.info, 1
 4freepress.com, 1
 4g-server.eu, 0
 4host.ch, 1
 4kprojektory.cz, 1
 4loc.us, 1
@@ -770,16 +869,18 @@ 4vf.de, 1
 4web-hosting.com, 1
 4x.fi, 1
 4x4.lk, 1
 4x4tt.com, 1
 4xlabs.co, 1
 50.gd, 1
 50.pe, 1
 5000yz.com, 1
+5002888.com, 1
+5007999.com, 1
 500fcw.com, 1
 500k.nl, 1
 500p.xyz, 1
 504122.com, 1
 504322.com, 1
 504622.com, 1
 504922.com, 1
 506422.com, 1
@@ -802,65 +903,71 @@ 51aifuli.com, 1
 51tiaojiu.com, 1
 5214889.com, 1
 5214889.net, 1
 5219.ml, 1
 524022.com, 1
 524622.com, 1
 524922.com, 1
 525.info, 1
+5287.com, 1
 52b9.com, 1
 52b9.net, 1
 52hentai.ml, 1
 52hentai.us, 1
 52kb.net, 1
 52kb1.com, 1
 52kb365.com, 1
 52ncp.net, 1
 52sykb.com, 1
 5310899.com, 1
 5310899.net, 1
 531422.com, 1
+532441.com, 1
+532445.com, 1
 534122.com, 1
 534622.com, 1
 534922.com, 1
 5364.com, 1
 536422.com, 1
 5364b.com, 1
 5364c.com, 1
 5364d.com, 1
 5364jc.com, 1
 53ningen.com, 1
 540922.com, 1
 541022.com, 1
 541622.com, 1
 541722.com, 1
 541922.com, 1
+545755.com, 1
 545922.com, 1
 546802.com, 1
 54below.com, 1
 5518k3.com, 1
 5533445.com, 1
 5555yh.com, 1
+555wfcp.com, 1
 555xl.com, 1
 55639.com, 1
 55797.com, 1
 558da.com, 1
 566380.com, 1
 56877.com, 1
 575380.com, 1
 576422.com, 1
 578380.com, 1
 579422.com, 1
 57wilkie.net, 1
 583422.com, 1
 585380.com, 1
 585422.com, 1
 586422.com, 1
 588da.com, 1
+58nav.com, 1
 591380.com, 1
 591422.com, 1
 592380.com, 1
 592422.com, 1
 5930593.com, 1
 593380.com, 1
 594022.com, 1
 594622.com, 1
@@ -868,41 +975,43 @@ 595422.com, 1
 596422.com, 1
 598380.com, 1
 598598598.net, 1
 5986fc.com, 1
 5997891.com, 1
 5apps.com, 1
 5c1fd0f31022cbc40af9f785847baaf9.space, 1
 5chat.it, 1
-5crowd.com, 1
 5dm.tv, 1
 5dwin.com, 1
 5dwin.net, 1
 5ece.de, 1
 5francs.com, 1
 5gb.space, 1
 5h0r7.com, 1
 5kraceforals.com, 1
 5percentperweek.com, 1
+5stars.tv, 1
 5thchichesterscouts.org.uk, 1
 5y.fi, 1
+5yeb.com, 1
 602422.com, 1
 604122.com, 1
 604322.com, 1
 604522.com, 1
 604622.com, 1
 605422.com, 1
 606422.com, 1
 609422.com, 1
 614022.com, 1
 614322.com, 1
 614922.com, 1
 61730123.com, 1
 618media.com, 1
+620881.com, 1
 621422.com, 1
 624022.com, 1
 624122.com, 1
 624322.com, 1
 624522.com, 1
 624922.com, 1
 626380.com, 1
 626422.com, 1
@@ -961,25 +1070,28 @@ 6547700.com, 1
 6547711.com, 1
 6547722.com, 1
 6547733.com, 1
 6547744.com, 1
 6547755.com, 1
 6547766.com, 1
 6548855.com, 1
 6548877.com, 1
+6556hd.com, 1
+6556pk.com, 1
 656088.com, 1
 659422.com, 1
 65d88.com, 1
+6602p.com, 1
+6603p.com, 1
 66136.com, 1
 6616fc.com, 1
 6633445.com, 1
 6652566.com, 1
 6660111.ru, 1
-6664553.com, 1
 666668722.com, 1
 6666yh.com, 1
 666omg.com, 1
 6677.us, 1
 66b.com, 1
 66bwf.com, 1
 670422.com, 1
 671422.com, 1
@@ -995,16 +1107,17 @@ 690422.com, 1
 691422.com, 1
 692422.com, 1
 692b8c32.de, 1
 693422.com, 1
 694322.com, 1
 694622.com, 1
 694922.com, 1
 6969.us, 1
+69759.com, 1
 698da.com, 1
 69928.com, 1
 6997896.com, 1
 69butterfly.com, 1
 69fps.gg, 1
 69mentor.com, 1
 69wasted.net, 1
 6ird.com, 1
@@ -1012,16 +1125,17 @@ 6lo.zgora.pl, 1
 6pm.com, 1
 6t-montjoye.org, 1
 700.az, 1
 704233.com, 1
 7045.com, 1
 704533.com, 1
 7045h.com, 1
 704633.com, 1
+7080997.com, 1
 712433.com, 1
 713433.com, 1
 714133.com, 1
 714533.com, 1
 714633.com, 1
 715433.com, 1
 7183.org, 1
 718433.com, 1
@@ -1047,18 +1161,20 @@ 741833.com, 1
 742833.com, 1
 743833.com, 1
 74th.jp, 1
 755k3.com, 1
 758global.com, 1
 762.ch, 1
 7717a.com, 1
 7733445.com, 1
+7770b.com, 1
 7777yh.com, 1
 777coin.com, 1
+77dostavkaroz.ru, 1
 783lab.com, 1
 787k3.com, 1
 7885765.com, 1
 7891553.com, 1
 7891997.com, 1
 79ch.com, 1
 7careconnect.com, 1
 7delights.com, 1
@@ -1071,59 +1187,71 @@ 7nw.eu, 1
 7proxies.com, 1
 7qly.com, 1
 7sons.de, 1
 7thcircledesigns.com, 1
 7trade8.com, 1
 7x24servis.com, 1
 8003pay.com, 1
 804322.com, 1
+8080883.com, 1
 8086.cf, 1
+80883.cc, 1
+80887.cc, 1
 808phone.net, 1
 809422.com, 1
 80993.net, 1
 814022.com, 1
+815jz.com, 1
+816jz.com, 1
 81818app.com, 1
 8189196.com, 1
 818bwf.com, 1
 818da.com, 1
 81uc.com, 1
+8211p.com, 1
+8213p.com, 1
+8214p.com, 1
+8215p.com, 1
+8216p.com, 1
 82ty.com, 1
 8349822.com, 1
+848jz.com, 1
 850226.com, 1
 8522.com, 1
 8522club.com, 1
 8522hk.com, 1
 8522ph.com, 1
 8522top.com, 1
 8522tw.com, 1
 8522usa.com, 1
 8560.be, 1
-86286286.com, 1
 86499.com, 1
 8649955.com, 1
 8649966.com, 1
 8649977.com, 1
 8688fc.com, 1
 86metro.ru, 1
 8722.am, 1
 8722am.com, 1
 8722cn.com, 1
 8722hk.com, 1
 8722ph.com, 1
 8722tw.com, 1
 8722usa.com, 1
 87577.com, 1
 88-line.com, 1
 88-line.net, 1
+8802p.com, 1
 881-line.com, 1
 881-line.net, 1
 8818k3.com, 1
 8833445.com, 1
 88522am.com, 1
+885287.com, 1
 887.ag, 1
 8876007.com, 1
 8876008.com, 1
 8876009.com, 1
 8876138.com, 1
 8876278.com, 1
 8876289.com, 1
 8876290.com, 1
@@ -1168,16 +1296,19 @@ 8880021.com, 1
 8880023.com, 1
 8880025.com, 1
 8880057.com, 1
 8880059.com, 1
 8880067.com, 1
 8880083.com, 1
 8880100.com, 1
 8884553.com, 1
+88851333.com, 1
+88851777.com, 1
+888666pj.com, 1
 8886737.com, 1
 8886739.com, 1
 8886793.com, 1
 8886806.com, 1
 8886860.com, 1
 8887999.com, 0
 888888722.com, 1
 88889822.com, 1
@@ -1248,28 +1379,29 @@ 8thportsmouth.org.uk, 1
 8tuffbeers.com, 1
 8ung.online, 1
 8xx.bet, 1
 8xx.io, 1
 8xx888.com, 1
 8xxbet.net, 1
 8xxxxxxx.com, 1
 8y.network, 1
+8yun.cf, 1
 9-11commission.gov, 1
 903422.com, 1
 905422.com, 1
+9090819.com, 1
 90r.jp, 1
 91-freedom.com, 1
 910kj.com, 1
 9118.com, 1
 911commission.gov, 1
 912422.com, 1
 913422.com, 1
 914122.com, 1
-918116.com, 1
 918gd.com, 1
 918yy.com, 1
 919422.com, 1
 91966.com, 1
 91dh.cc, 1
 91tianmi.com, 0
 91travel.info, 1
 924122.com, 1
@@ -1287,61 +1419,65 @@ 946422.com, 1
 949022.com, 1
 949122.com, 1
 949622.com, 1
 949722.com, 1
 94cs.cn, 0
 95778.com, 1
 9617818.com, 1
 9617818.net, 1
+967606.com, 1
 9679693.com, 1
 9681909.com, 1
 9696178.com, 1
 9696178.net, 1
 972422.com, 1
 9788876.com, 1
-97bros.com, 1
 9822.am, 1
 9822.bz, 1
 9822am.com, 1
 9822cn.com, 1
 9822hk.com, 1
 9822ph.com, 1
 9822tw.com, 1
 9822usa.com, 1
-98laba.com, 1
-98laba.net, 1
+98laba.com, 0
+98laba.net, 0
 9918883.com, 1
 9933445.com, 1
+9950p.com, 1
 99599.fi, 1
 99599.net, 1
 9994553.com, 1
 9998722.com, 1
 99998522.com, 1
 99999822.com, 1
 999998722.com, 1
 99buffets.com, 1
 99rst.org, 1
 99wxt.com, 1
 9bingo.net, 1
+9box.jp, 1
 9farm.com, 1
 9fvip.net, 1
 9iwan.net, 1
 9jajuice.com, 1
+9jatrust.com, 1
 9pkfz.com, 1
 9riddles.com, 1
 9ss6.com, 1
 9uelle.jp, 1
 9vx.org, 1
 9won.kr, 1
 9y.at, 1
 9yw.me, 1
 a-1basements.com, 1
 a-1indianawaterproofing.com, 1
 a-allard.be, 1
+a-care.net, 1
 a-classinflatables.co.uk, 1
 a-invest.de, 1
 a-ix.net, 1
 a-little-linux-box.at, 1
 a-msystems.com, 1
 a-oben.org, 1
 a-players.team, 1
 a-starbouncycastles.co.uk, 1
@@ -1403,17 +1539,19 @@ aati.be, 1
 aati.info, 1
 aavienna.com, 1
 ab-bauservice-berlin.de, 1
 abaapplianceservice.com, 1
 abaaustin.com, 1
 ababyco.com.hr, 1
 abacusbouncycastle.co.uk, 1
 abacustech.co.jp, 1
+abaev.uk, 1
 abandonedmines.gov, 1
+abasalehngo.com, 1
 abasky.net, 1
 abateroad66.it, 1
 abbadabbabouncycastles.co.uk, 1
 abbas.ch, 1
 abborsjo.fi, 1
 abbotsparties.co.uk, 1
 abbottscastles.co.uk, 1
 abbradar.net, 1
@@ -1423,31 +1561,31 @@ abc.li, 1
 abcbouncycastlessurrey.co.uk, 1
 abcbouncyfactory.co.uk, 1
 abcdef.be, 1
 abcheck.se, 1
 abckam.com, 1
 abcpartyhire.com, 1
 abcstudio.com.au, 1
 abdel.me, 1
-abdelsater.net, 1
 abdullah.pw, 1
 abdulwahaab.ca, 1
 abe-elektro.de, 1
 abe-medical.jp, 1
 abe.cloud, 0
 abecodes.net, 1
 abeestrada.com, 0
 abeilles-idapi.fr, 1
 abenteuer-ahnenforschung.de, 1
 abeontech.com, 1
 aberdeenalmeras.com, 1
 aberdeencastles.co.uk, 1
 aberdeenjudo.co.uk, 1
 abeus.com, 1
+abhibhat.com, 1
 abhisharma.me, 1
 abi-2017.tk, 1
 abi-fvs.de, 1
 abiapp.net, 1
 abibruce.co.uk, 1
 abidinginhesed.com, 1
 abigailstark.com, 1
 abigisp.com, 1
@@ -1455,29 +1593,31 @@ abilitycaresoftware.com, 1
 abilitynet.org.uk, 1
 abilityone.gov, 1
 abilma.com, 1
 abilymp06.net, 1
 abimelec.com, 1
 abinferis.com, 1
 abinyah.com, 1
 abitidalavoro.roma.it, 1
+abitidasposa.roma.it, 1
 abitur97ag.de, 1
 abiturma.de, 1
 ablak-nyilaszaro.info, 1
 ableprop.net, 1
 abloop.com, 1
 abmc.gov, 1
 abmledger.ca, 1
 abmtax.ca, 1
 abn-consultants.ie, 1
 abnehmen.com, 1
 abobuch.de, 1
 aboces.org, 1
 aboderenovation.co.uk, 1
+abogadosescobarysanchez.es, 1
 abolicionistas.com, 1
 abolition.net, 1
 abolitionism.ca, 1
 abolitionism.co.uk, 1
 abolitionism.com, 1
 abolitionism.in, 1
 abolitionism.net, 1
 abolitionism.us, 1
@@ -1490,16 +1630,17 @@ abolitionist.in, 1
 abolitionist.net, 1
 abolitionist.us, 1
 abolitionistparty.com, 1
 abolitionistproject.com, 1
 abolitionistsociety.com, 1
 abolitionniste.com, 1
 abolizionista.com, 1
 abonilla.com, 1
+aborla.net, 1
 abos.eu, 1
 abou.to, 0
 abouncycastleman.co.uk, 1
 abouthrm.nl, 1
 aboutict.nl, 1
 aboutlegal.nl, 1
 aboutmedia.nl, 1
 aboutmyproperty.ca, 1
@@ -1512,17 +1653,17 @@ aboutyou.nl, 1
 aboveaverageplumbing.com, 1
 abox-kb.com, 1
 abpis.hr, 1
 abracadabra.co.jp, 0
 abraxan.pro, 1
 abrilect.com, 1
 abristolgeek.co.uk, 1
 abseits.org, 1
-absolem.cc, 1
+absolem.cc, 0
 absolutcruceros.com, 1
 absoluteautobody.com, 1
 absolutedouble.co.uk, 1
 absolutehaitian.com, 1
 absolutehosting.co.za, 1
 absolutelyinflatables.co.uk, 1
 absoluterush.net, 1
 absolutewebdesigns.com, 1
@@ -1541,24 +1682,26 @@ abundent.com, 1
 abuse.fi, 1
 abuse.io, 1
 abvent.net, 1
 abvlbasketviganello.ch, 1
 abyssproject.net, 1
 ac-admin.pl, 1
 ac-epmservices.com, 1
 ac-town.com, 1
+ac.milan.it, 1
 ac0g.dyndns.org, 1
 aca-creative.co.uk, 1
 academiadebomberosonline.com, 1
 academicexperts.us, 1
 academichealthscience.net, 1
 academie-de-police.ch, 1
 academkin.com, 1
 academytv.com.au, 1
+acadianapatios.com, 1
 acaeum.com, 1
 acaonegocios.com.br, 1
 acaptureservices.com, 1
 acara-yoga.de, 1
 acareer.in, 1
 acat.io, 1
 acbrussels-used.be, 1
 accbay.com, 1
@@ -1603,17 +1746,16 @@ acedog.co, 1
 aceinflatables.com, 1
 aceinstituteonline.com, 1
 acelpb.com, 1
 acem.org.au, 1
 acemobileforce.com, 1
 acemypaper.com, 1
 acen.eu, 1
 acerentalandsales.com, 1
-acerislaw.com, 1
 acessoeducacao.com, 1
 acfo.org, 1
 acg.mn, 1
 acg.sb, 0
 acg.social, 1
 acgaudio.com, 1
 acgmoon.com, 1
 acgmoon.org, 1
@@ -1635,25 +1777,27 @@ achwo.de, 1
 acid.ninja, 1
 acidbin.co, 1
 aciety.com, 1
 aciksite.com, 1
 ackermann.ch, 1
 ackis.duckdns.org, 0
 acklandstainless.com.au, 1
 acl.gov, 1
+acl.ink, 1
 aclu.org, 0
 acluva.org, 0
 acme.beer, 1
 acmexyz123.info, 1
 acnpacific.com, 1
 acodess.com, 1
 aconnor.xyz, 1
 acordes.online, 1
 acorncastles.co.uk, 1
+acorncredentialing.com, 1
 acorntreecare.com, 1
 acoshift.com, 1
 acoshift.me, 1
 acourse.io, 1
 acousti-tech.com, 1
 acousticalsolutions.com, 1
 acoustics.network, 1
 acoustics.tech, 1
@@ -1679,16 +1823,17 @@ acrosstheblvd.com, 1
 acroyoga-nuernberg.de, 1
 acrylbilder-acrylmalerei.de, 1
 acrylicwifi.com, 1
 acs-chantal.com, 1
 acsbbs.org, 1
 acsc.gov.au, 1
 acscbasket.com, 1
 acsemb.org, 1
+acsihostingsolutions.com, 0
 acsports.ca, 1
 actc.org.uk, 1
 actc81.fr, 1
 actgruppe.de, 1
 actheater.com, 1
 actiefgeld.nl, 1
 actilove.ch, 1
 actioncleaningnd.com, 1
@@ -1772,26 +1917,28 @@ adamsbouncycastles.co.uk, 1
 adamstas.com, 1
 adamwallington.co.uk, 1
 adamyuan.xyz, 1
 adappt.co.uk, 1
 adapptlabs.com, 1
 adapt-elektronik.com, 1
 adapt.de, 1
 adaptablesecurity.org, 1
+adaptergonomics.com, 1
 adapti.de, 1
 adaptivemechanics.edu.au, 1
 adarshthapa.in, 1
 adativos.com.br, 1
 adawolfa.cz, 1
 adayinthelifeof.nl, 1
 adblock.ovh, 1
 adblockextreme.com, 1
 adblockextreme.net, 1
 adblockextreme.org, 1
+adcnvs.com, 1
 addcrazy.com, 1
 addeekt.com, 1
 adderall.space, 1
 addicional.com, 1
 addictionresource.com, 1
 addictively.com, 1
 addiko.net, 1
 addisoncrump.info, 1
@@ -1851,16 +1998,18 @@ admirable.one, 1
 admirable.pro, 1
 admody.com, 1
 admongo.gov, 1
 adnanoktar.com, 1
 adnanotoyedekparca.com, 1
 adnolesh.com, 1
 adnot.am, 1
 adnseguros.es, 1
+adohanyzasjovoje.hu, 1
+adomani-italia.com, 1
 adoniscabaret.co.uk, 1
 adonizer.science, 1
 adonnante.com, 1
 adoptionlink.co.uk, 1
 adorade.ro, 1
 adorai.tk, 1
 adorecricket.com, 1
 adorewe.com, 1
@@ -1886,21 +2035,23 @@ adrianmejias.com, 1
 adrienkohlbecker.com, 1
 adriennesmiles.com, 1
 adrinet.tk, 1
 adrup.com, 1
 adsamcik.com, 1
 adsbouncycastles.co.uk, 1
 adsbtc.org, 1
 adsl2meg.fr, 1
+adtelligent.com, 1
 adtgroup.com, 1
 adult.properties, 1
 adultbizz.eu, 1
 adurra.com, 1
 aduvi.de, 1
+advaithbot.com, 1
 advaithnikhi.ml, 1
 advaithnikhi.tk, 1
 advance.hr, 1
 advanced-fleet-services.com, 1
 advanced-online.eu, 1
 advanced-scribes.com, 1
 advanced.info, 1
 advanceddieselspokane.com, 1
@@ -1912,16 +2063,17 @@ advancedsurgicalconsultantsllc.com, 1
 advancedweb.hu, 1
 advancedwriters.com, 1
 advanceworx.com, 1
 advancis.net, 1
 advancyte.com, 1
 advantagehomeexteriors.com, 1
 advara.com, 1
 advelty.cz, 1
+advenacs.com, 1
 advenacs.com.au, 1
 advenapay.com, 1
 adventaholdings.com, 1
 adventistdeploy.org, 1
 advento.bg, 1
 adventure-inn.com, 1
 adventureally.com, 1
 adventuredrives.com, 1
@@ -1939,17 +2091,16 @@ advocate-europe.eu, 1
 advocaten-avocats.be, 1
 advocatenalkmaar.org, 1
 advocator.ca, 1
 advocoeurdehaan.nl, 1
 advogatech.com.br, 1
 advokat-romanov.com, 1
 advtran.com, 1
 adware.pl, 1
-adwokatkosterka.pl, 1
 adwokatzdunek.pl, 1
 adws.io, 1
 adxperience.com, 1
 adzie.xyz, 1
 adzuna.at, 1
 adzuna.ca, 1
 adzuna.co.nz, 1
 adzuna.co.za, 1
@@ -1967,31 +2118,33 @@ adzuna.sg, 1
 ae-construction.co.uk, 1
 ae-dir.com, 1
 ae-dir.org, 1
 aebian.org, 1
 aecexpert.fr, 1
 aedollon.com, 1
 aefcleaning.com, 1
 aegee-utrecht.nl, 1
+aegis.moe, 1
 aegisalarm.co.uk, 1
 aegisalarm.com, 1
 aegisalarms.co.uk, 1
 aegisalarms.com, 1
 aegrel.ee, 1
 aehe.us, 1
 aei.co.uk, 1
 aelisya.ch, 1
 aelurus.com, 1
+aenterprise.info, 1
 aeon.co, 1
 aeon.wiki, 1
+aeonct.org, 1
 aep-digital.com, 1
 aeradesign.com, 1
 aerandir.fr, 1
-aerapass.io, 1
 aereco.com, 1
 aerelon.de, 0
 aergia.eu, 1
 aerisnetwork.com, 1
 aero-pioneer.com, 1
 aerobasegroup.com, 1
 aerobotz.com, 1
 aeronautix.com, 1
@@ -2016,16 +2169,17 @@ aextron.de, 1
 aextron.org, 1
 afavre.io, 1
 afb24.de, 1
 afbeelding.im, 1
 afbeeldinguploaden.nl, 1
 afcmrs.org, 1
 afcompany.it, 1
 afcurgentcarelyndhurst.com, 1
+aff.moe, 1
 affarsnatverk.nu, 1
 affichagepub3.com, 1
 affiliatefeatures.com, 1
 affiliateroyale.com, 1
 affiliatetest.azurewebsites.net, 1
 affilie.de, 1
 affily.io, 1
 affinitysync.com, 1
@@ -2045,25 +2199,27 @@ affordableracingparts.com.au, 1
 affping.com, 1
 affvps.net, 1
 afghan.dating, 1
 afgn.com.ua, 1
 afi-business-consulting.com, 1
 aficionados.com.br, 1
 afinadoronline.com.br, 1
 afinaudio.com, 1
+aflam4you.tv, 1
 aflamtorrent.com, 1
 aflfreebets.com, 1
 aflowershop.ca, 1
 afmt.fr, 1
 afmtevents.com, 1
 afonso.io, 1
 afp548.com, 1
 afri.cc, 1
 africa.dating, 1
+african-bay.de, 1
 africanexponent.com, 1
 africanimpact.com, 1
 africantourer.com, 1
 afrikarl.de, 1
 afrodigital.uk, 1
 afs-asso.org, 1
 afscheidsportret.nl, 1
 aftab-alam.de, 1
@@ -2086,16 +2242,17 @@ age.hk, 1
 agechecker.net, 1
 ageg.ca, 1
 agelesscitizen.com, 1
 agelesscitizens.com, 1
 agemfis.com, 1
 agencewebstreet.com, 1
 agenciadeempregosdourados.com.br, 1
 agenciafiscal.pe, 1
+agenciamdg.com.br, 1
 agencyinmotion.com, 1
 agencymanager.be, 1
 agenda-loto.net, 0
 agenda21senden.de, 1
 agendatelefonica.com.br, 1
 agendazilei.com, 1
 agent-grow.com, 1
 agentprocessing.com, 1
@@ -2137,16 +2294,17 @@ agourahillselectrical.com, 1
 agourahillselectrician.com, 1
 agourahillsexteriorlighting.com, 1
 agourahillslandscapelighting.com, 1
 agourahillslighting.com, 1
 agourahillsoutdoorlighting.com, 1
 agouralandscapelighting.com, 1
 agouralighting.com, 1
 agouraoutdoorlighting.com, 1
+agowa338.de, 1
 agr.asia, 1
 agracan.com, 1
 agrajag.nl, 1
 agrarking.com, 1
 agrarking.de, 1
 agrarshop4u.de, 1
 agrekov.ru, 1
 agreor.com, 1
@@ -2237,16 +2395,17 @@ aikido-kiel.de, 1
 aikido-linz.at, 1
 aikido-wels.at, 1
 ailitonia.com, 1
 ailitonia.xyz, 1
 aimax.com, 1
 aimeeandalec.com, 1
 aimgroup.co.tz, 1
 aimi-salon.com, 1
+aimonline.nl, 1
 aimotive.com, 1
 aimrom.org, 1
 aintevenmad.ch, 1
 ainutrition.co.uk, 1
 ainvest.de, 1
 aioboot.com, 1
 aiois.com, 1
 aipbarcelona.com, 1
@@ -2323,18 +2482,16 @@ airbnb.ru, 1
 airbnb.se, 1
 airbnb.tools, 1
 airbnbchina.cn, 1
 airbnbopen.com, 1
 airborne-inflatables.co.uk, 1
 airbossofamerica.com, 1
 airclass.com, 1
 aircomms.com, 1
-airconsfourways.co.za, 1
-airconsmidrand.co.za, 1
 airductclean.com, 0
 airductcleaning-fresno.com, 1
 airductcleaninggrandprairie.com, 1
 airductcleaningirving.com, 1
 airdur.eu, 1
 aireaseleaks.org, 1
 airedaleterrier.com.br, 1
 airetvie.com, 1
@@ -2508,16 +2665,17 @@ albuic.tk, 1
 alca31.com, 1
 alcatelonetouch.us, 1
 alchimic.ch, 1
 alcnutrition.com, 1
 alco-united.com, 1
 alcoholapi.com, 1
 alcolecapital.com, 1
 alcorao.org, 1
+alcouponest.com, 1
 aldiabcs.com, 1
 aldo-vandini.de, 1
 aldomedia.com, 1
 aldorr.net, 0
 aldous-huxley.com, 1
 aleax.me, 1
 alecel.de, 1
 alecpap.com, 1
@@ -2533,36 +2691,36 @@ alertboxx.com, 1
 alertonline.nl, 1
 alerts.sg, 1
 alertwire.com, 1
 alesia-formation.fr, 1
 alessandro.pw, 1
 alessandroz.ddns.net, 1
 aletm.it, 1
 alex-ross.co.uk, 1
+alex4386.us, 1
 alex97000.de, 1
 alexander-beck.eu, 1
 alexanderb.info, 1
 alexandermuetzel.de, 1
 alexanderneng.de, 1
 alexandernorth.ch, 1
 alexanderschimpf.de, 1
-alexanderzinn.com, 1
 alexandra-schulze.de, 1
 alexandrastorm.com, 1
 alexandrastylist.com, 0
 alexandre-blond.fr, 1
+alexandrefa.ovh, 1
 alexandros.io, 1
 alexbaker.org, 1
 alexberts.ch, 1
 alexbogovich.com, 1
 alexbresnahan.com, 1
 alexcoman.com, 1
 alexdaniel.org, 1
-alexei.su, 0
 alexey-shamara.ru, 1
 alexeykopytko.com, 1
 alexfabian.myftp.org, 1
 alexgaynor.net, 1
 alexgebhard.com, 1
 alexhd.de, 1
 alexio.ml, 1
 alexisabarca.com, 1
@@ -2577,16 +2735,17 @@ alexkott.com, 1
 alexlouden.com, 1
 alexmerkel.com, 1
 alexmerkel.me, 1
 alexmerkel.xyz, 1
 alexmol.tk, 1
 alexmroberts.net, 1
 alexn.org, 1
 alexpavel.com, 1
+alexpnixon.com, 1
 alexpotter.net, 1
 alexs.de, 1
 alexschroeder.ch, 1
 alexsergeyev.com, 1
 alexsexton.com, 1
 alexsinnott.me, 1
 alextaffe.com, 1
 alexthayne.co.uk, 1
@@ -2657,16 +2816,17 @@ all-fashion-schools.com, 1
 all-markup-news.com, 1
 all4hardware4u.de, 1
 allaboutfunuk.com, 1
 allaboutswing.co.uk, 1
 allaboutswing.com, 1
 allaboutthekink.org, 1
 allactioneventhire.co.uk, 1
 allamericanmuslim.com, 1
+allamericanpaintingplus.com, 1
 allamericanprotection.net, 1
 allamericatrans.com, 1
 allangirvan.net, 1
 allarmi.roma.it, 1
 allbenjoy.de, 1
 allbounceandplay.co.uk, 1
 allbouncesurrey.co.uk, 1
 allbrandbrand.com, 1
@@ -2715,63 +2875,67 @@ allontanamentovolatili.it, 1
 allontanamentovolatili.milano.it, 1
 alloutatl.com, 1
 alloverthehill.com, 1
 alloydevil.nl, 1
 allplayer.tk, 1
 allpointsblog.com, 1
 allpointsheating.com, 1
 allproptonline.com, 1
+allram.one, 1
 allroundpvp.net, 1
 allsaints.church, 1
 allscammers.exposed, 1
 allsearch.io, 1
 allseasons-cleaning.co.uk, 1
 allstakesupply.com.au, 1
 allstarautokiaparts.com, 1
 allstarcashforcars.com, 1
 allstarpartyinflatables.co.uk, 1
 allstarquilts.com, 1
 allstorebrasil.com.br, 1
+allsun.online, 1
 allsync.com, 1
 allsync.nl, 1
 allteach.co.uk, 1
 allterrainfence.com, 1
 allthecryptonews.com, 1
 allthethings.co.nz, 1
 allthings.me, 1
 allthingsblogging.com, 1
 allthingsfpl.com, 1
 allthingssquared.com, 1
 allthingswild.co.uk, 1
 alltubedownload.net, 1
 allurebikerental.com, 1
 allurescarves.com, 1
 alluvion.studio, 1
-allvips.ru, 1
+allvips.ru, 0
 allweatherlandscaping.net, 1
 almaatlantica.com, 1
 almagalla.com, 1
 almatinki.com, 1
 almavios.com, 0
 almayadeen.education, 1
+almenrausch-pirkhof.de, 1
 almorafestival.com, 1
 almstrom.org, 1
 almut-zielonka.de, 1
 alnitech.com, 0
 alocato.com, 1
 aloesoluciones.com.ar, 1
 alohapartyevents.co.uk, 1
 alonetone.com, 1
 alp.net.cn, 1
 alp.od.ua, 1
 alpca.org, 1
 alpe-d-or.dyn-o-saur.com, 1
 alpencam.com, 1
 alpencams.com, 1
+alpencams.net, 1
 alpengreis.ch, 1
 alpenjuice.com, 1
 alpertron.com.ar, 1
 alpes-deis-tools.com, 1
 alpha-assistant.com, 1
 alpha-force.net, 0
 alpha.ch, 1
 alpha88uat.com, 1
@@ -2801,16 +2965,18 @@ alphie.me, 1
 alphipneux.fr, 1
 alpinechaletrental.com, 1
 alpinehighlandrealty.com, 1
 alpineplanet.com, 1
 alpinepubliclibrary.org, 1
 alpinestarmassage.com, 1
 alpinetrek.co.uk, 1
 alpiniste.fr, 1
+alpstarentaisetaxi.com, 1
+alpstarentaisetaxi.fr, 1
 alqassam.net, 1
 alquiaga.com, 1
 alrait.com, 1
 alre-outillage.fr, 1
 alroniks.com, 1
 als-japan.com, 1
 alstertouch.com, 1
 alstertouch.de, 1
@@ -2825,16 +2991,18 @@ altbinaries.com, 1
 altedirect.com, 1
 alter-news.fr, 1
 alterbaum.net, 1
 altered.network, 1
 alternative.bike, 1
 alternative.hosting, 1
 alternativebit.fr, 1
 alternativedev.ca, 1
+alternativehosting.ca, 1
+alternativehosting.com, 1
 alternativeinternet.ca, 1
 alternativet.party, 1
 alternativetomeds.com, 1
 alterspalter.de, 1
 altes-sportamt.de, 1
 altesses.eu, 1
 altestore.com, 1
 altisdev.com, 1
@@ -2847,29 +3015,31 @@ altonblom.com, 1
 altopartners.com, 1
 altopia.com, 1
 altphotos.com, 1
 altporn.xyz, 1
 alts.li, 1
 altstipendiaten.de, 1
 alttrackr.com, 1
 altunbas.info, 1
+aluminium-giesserei.de, 1
 alumni-kusa.jp, 1
 alupferd.de, 1
 aluro.info, 1
 aluroof.eu, 1
 alvcs.com, 1
 alviano.com, 1
 alvicom.hu, 1
 alvn.ga, 1
 alvosec.com, 1
 alwaysdry.com.au, 1
 alwayslookingyourbest.com, 1
 alwaysmine.fi, 1
 alwaysonssl.com, 1
+alxu.ca, 1
 alyoung.com, 1
 alza.at, 1
 alza.co.uk, 1
 alza.cz, 1
 alza.de, 1
 alza.hu, 1
 alza.sk, 1
 alzashop.com, 1
@@ -2936,25 +3106,27 @@ ameego.com, 1
 ameego.it, 1
 ameego.net, 1
 ameego.nl, 1
 ameego.org, 1
 amees.me, 0
 ameho.me, 0
 amelandadventure.nl, 1
 amello.de, 1
+amendine.fr, 1
 america.gov, 1
 americafamilylawcenter.org, 1
 american-school-search.com, 1
 american.dating, 1
 americandetour.com, 1
 americanfoundationbr.com, 1
 americanindiannursing.com, 1
 americanmediainstitute.com, 1
 americasbasementcontractor.com, 1
+americasdirector.com, 1
 americkykongres.cz, 1
 amerigroup.com, 1
 ameriikanpoijat.org, 1
 amerika-forum.de, 1
 amerimex.cc, 1
 amesgen.de, 1
 amesvacuumrepair.com, 1
 amethystcards.co.uk, 1
@@ -2968,16 +3140,18 @@ amf.to, 1
 amg-exterieur.fr, 1
 amg-microwave.com, 1
 amh-entertainments.co.uk, 1
 ami-de-bastanes.fr, 1
 amica-travel.com, 1
 amicalecanyon.ch, 1
 amiciidogrescue.org.uk, 1
 amicimar.it, 1
+amiciperlatesta.it, 1
+amielle.com, 1
 amielucha.com, 1
 amifoundation.net, 1
 amihub.com, 1
 amikootours.com, 1
 amilum.org, 1
 amin.one, 1
 aminafrance.com, 1
 amineptine.com, 1
@@ -2993,16 +3167,17 @@ amitpatra.com, 1
 amiu.org, 1
 ammanagingdirectors.com, 1
 amministratore.biz, 1
 amministratore.roma.it, 1
 amministratorecondominio.roma.it, 1
 amnesty-bf.org, 1
 amnesty.org.au, 1
 amnesy.fr, 1
+amokinio.com, 1
 amoozesh98.com, 1
 amoozesh98.ir, 1
 amorgos-aegialis.com, 1
 amorim.ca, 1
 amosng.com, 1
 ampersandnbspsemicolon.com, 1
 amphetamines.org, 1
 amphibo.ly, 1
@@ -3011,26 +3186,28 @@ ampleinfographics.com, 1
 ampleroads.com, 1
 ampol-agd.pl, 1
 ampproject.com, 1
 ampproject.org, 1
 amrcaustin.com, 1
 amrcla.com, 1
 ams.co.rs, 1
 amsportuk.com, 1
+amstelland.com, 1
 amsterdamian.com, 1
 amtentertainments.co.uk, 1
 amunoz.org, 1
 amuq.net, 1
 amuraimpianti.it, 1
 amv-crm.ru, 1
 amyfoundhermann.com, 1
 amyharrisonline.com, 1
 amyrussellhair.com, 1
 amyyeung.com, 1
+amzanalyzer.com, 1
 amzn.rocks, 1
 an-alles-gedacht.de, 1
 anabolic.co, 0
 anacreon.de, 1
 anadiyogacentre.com, 1
 anaethelion.fr, 1
 anaiscoachpersonal.es, 1
 anajianu.ro, 1
@@ -3055,17 +3232,19 @@ ananke.io, 1
 anankecosmetics.com, 1
 anantshri.info, 1
 ananyoo.com, 1
 anarchistischegroepnijmegen.nl, 0
 anarchyrp.life, 1
 anarka.org, 1
 anassiriphotography.com, 0
 anastasia-shamara.ru, 1
+anatoray.com, 1
 ance.lv, 1
+ancel.io, 1
 ancestramil.fr, 1
 anchev.net, 1
 anchorit.gov, 1
 anchovy.nz, 0
 anciens.org, 1
 ancient-gates.de, 1
 ancientcraft.eu, 1
 ancientnorth.com, 1
@@ -3124,16 +3303,17 @@ andrewdaws.co, 1
 andrewdaws.info, 1
 andrewdaws.io, 1
 andrewdaws.me, 1
 andrewdaws.tv, 1
 andrewensley.com, 1
 andrewhowden.com, 1
 andrewimeson.com, 1
 andrewin.ru, 1
+andrewletson.com, 1
 andrewmichaud.com, 1
 andrewmichaud.me, 1
 andrewpeng.net, 1
 andrewprokos.com, 1
 andrewrdaws.com, 1
 andrewrgoss.com, 1
 andrewryno.com, 1
 andrewsun.com, 1
@@ -3198,16 +3378,17 @@ anginf.de, 1
 anglertanke.de, 1
 anglesgirl.eu.org, 1
 anglesya.win, 1
 anglictina-sojcak.cz, 1
 anglictinasojcak.cz, 1
 anglingactive.co.uk, 1
 anglirl.eu.org, 1
 angrapa.ru, 1
+angrido.com, 1
 angristan.fr, 1
 angristan.xyz, 1
 angrut.com, 1
 angry-monk.com, 1
 angry.im, 1
 angrydragonproductions.com, 1
 angrysnarl.com, 1
 angryteeth.net, 1
@@ -3268,16 +3449,17 @@ anleitung-zum-haekeln.de, 1
 anleitung-zum-schreiben.de, 1
 anleitung-zum-schweissen.de, 1
 anleitung-zum-toepfern.de, 1
 anlovegeek.net, 1
 anlp.top, 1
 anna.info, 1
 annaenemma.nl, 1
 annafiore.com.br, 1
+annangela.moe, 1
 annarokina.com, 1
 annasvapor.se, 1
 annawagner.pl, 1
 annedaniels.co.uk, 1
 anneeden.de, 1
 annejan.com, 1
 anneliesonline.nl, 1
 annema.biz, 1
@@ -3292,16 +3474,18 @@ annicascakes.nl, 1
 anniversary-cruise.com, 1
 annmariewaltsphotography.com, 1
 annonasoftware.com, 1
 annotate.software, 1
 annoyingasfuk.com, 1
 annuaire-jcb.com, 1
 annuaire-photographe.fr, 0
 annunciationbvmchurch.org, 1
+anoboy.org, 1
+anodas.lt, 1
 anohana.org, 1
 anojan.com, 1
 anon-next.de, 1
 anonboards.com, 1
 anoncom.net, 1
 anoncrypto.org, 1
 anoneko.com, 1
 anongoth.pl, 1
@@ -3387,16 +3571,17 @@ antocom.com, 1
 antoga.eu, 1
 antoinedeschenes.com, 1
 antoinemary.com, 1
 antonchen.com, 1
 antonellabb.eu, 1
 antonin.one, 1
 antonio-gartenbau.de, 1
 antonjuulnaber.dk, 1
+antonok.com, 1
 antota.lt, 1
 antragsgruen.de, 1
 antraxx.ee, 1
 antroposboutique.it, 1
 anttitenhunen.com, 1
 antvklik.com, 1
 antyblokada.pl, 1
 anulowano.pl, 1
@@ -3416,27 +3601,31 @@ anyquestions.govt.nz, 1
 anystack.xyz, 1
 anyways.at, 1
 anzeiger.ag, 1
 ao-dev.com, 1
 ao2.it, 1
 aoa.gov, 1
 aoadatacommunity.us, 1
 aoaprograms.net, 1
+aobeauty.com.au, 1
 aobogo.com, 1
+aod-tech.com, 1
 aoeuaoeu.com, 1
 aofusa.net, 1
 aoil.gr, 1
 aojiao.org, 1
 aoku3d.com, 1
 aooobo.com, 1
 aopedeure.nl, 1
 aopsy.de, 1
+aori.com, 1
 aos-llc.com, 1
 aosc.io, 0
+aostacarnavals.it, 1
 aosus.org, 1
 aotearoa.maori.nz, 1
 aotearoaleaks.org, 1
 ap-swiss.ch, 1
 apac-tech.com, 0
 apache-portal.com, 1
 apachehaus.de, 0
 apachelounge.com, 1
@@ -3482,31 +3671,33 @@ apila.us, 1
 apiled.io, 1
 apimon.de, 1
 apination.com, 1
 apio.systems, 1
 apis.blue, 1
 apis.google.com, 1
 apis.moe, 1
 apisyouwonthate.com, 1
+apiu.me, 1
 apk.li, 1
 apk4fun.com, 1
 apkoyunlar.club, 1
 aplikaceproandroid.cz, 1
 aplis-online.de, 0
 aplpackaging.co.uk, 1
 aplu.fr, 1
 aplus-usa.net, 1
 aplusdownload.com, 1
 apluswaterservices.com, 1
 apm.com.tw, 1
 apn-dz.org, 1
 apn-einstellungen.de, 1
 apo-deutschland.biz, 1
 apobot.de, 1
+apocalypsemud.org, 1
 apogeephoto.com, 1
 apoil.org, 1
 apollyon.work, 1
 apoly.de, 1
 aponkral.net, 1
 aporia.io, 1
 aposke.com, 1
 aposke.net, 1
@@ -3574,17 +3765,16 @@ appseccalifornia.org, 0
 appsforlondon.com, 1
 appshuttle.com, 1
 appt.ch, 1
 apptomics.com, 1
 apptoutou.com, 1
 appuals.com, 1
 appui-de-fenetre.fr, 1
 appveyor.com, 1
-appxcrypto.com, 1
 appzoojoo.be, 1
 apratimsaha.com, 1
 aprefix.com, 1
 apretatuercas.es, 1
 aproposcomputing.com, 1
 aprovpn.com, 1
 aprr.org, 1
 aprsdroid.org, 1
@@ -3594,16 +3784,17 @@ apstudynotes.org, 1
 aptitudetests.org, 1
 aptive.co.uk, 1
 apu-board.de, 1
 apv-ollon.ch, 1
 aqdun.com, 1
 aqilacademy.com.au, 1
 aqqrate.com, 1
 aqsiq.net, 1
+aqua-bucht.de, 1
 aqua-fitness-nacht.de, 1
 aqua-fotowelt.de, 1
 aquabar.co.il, 1
 aquabio.ch, 1
 aquadonis.ch, 1
 aquagarden.com.pl, 1
 aquahomo.com, 1
 aquainfo.net, 1
@@ -3649,24 +3840,27 @@ arbitrary.ch, 1
 arboleda-hurtado.com, 1
 arboworks.com, 1
 arbu.eu, 0
 arcaea.net, 1
 arcaik.net, 1
 arcbouncycastles.co.uk, 1
 arcenergy.co.uk, 1
 archaeoadventures.com, 1
+archeologicatoscana.it, 1
 archimedicx.com, 1
 archined.nl, 1
+archit.in, 1
 architectryan.com, 1
 architecture-colleges.com, 1
 architectureandgovernance.com, 1
 archivero.es, 1
 archivesdelavieordinaire.ch, 1
 archivosstl.com, 1
+archiweb.pl, 0
 archlinux.de, 1
 archlinux.org, 1
 archmediamarketing.com, 1
 archoit.org, 0
 archsec.info, 1
 arckr.com, 1
 arclandholdings.com.au, 1
 arcobalabs.ca, 1
@@ -3811,16 +4005,17 @@ arrivedconsulting.com, 1
 arrmaforum.com, 1
 arroba.digital, 1
 arrow-analytics.nl, 1
 arrow-api.nl, 1
 arrowfastener.com, 1
 arrowgrove.com, 1
 arrowheadaddict.com, 1
 arrowheadflats.com, 1
+arrowit.net, 1
 arrowwebprojects.nl, 1
 arschkrebs.org, 1
 arsenal.ru, 1
 arsk1.com, 1
 arsplus.ru, 0
 arswb.men, 1
 art-auction.jp, 1
 art-et-culture.ch, 1
@@ -3900,23 +4095,25 @@ artspac.es, 1
 arturkohut.com, 1
 arturopinto.com.mx, 1
 arturrossa.de, 1
 arturszalak.com, 1
 artweby.cz, 1
 artworxbathrooms.com.au, 1
 arty.name, 1
 arubasunsetbeach.com, 1
+arunjoshua.com, 1
 arveron.ch, 1
 arvid.io, 1
 arviksa.co.uk, 1
 arvindhariharan.com, 1
 arvindhariharan.me, 1
 arvutiladu.ee, 1
 arxell.com, 1
+aryabusines.com, 1
 aryalaroca.de, 1
 aryan-nation.com, 1
 aryasenna.net, 1
 arzid.com, 1
 arzinfo.pw, 1
 as200753.com, 1
 as200753.net, 1
 as44222.net, 1
@@ -3947,16 +4144,17 @@ asenno.com, 1
 aserver.co, 1
 asexualitat.cat, 1
 asgapps.co.za, 1
 asge-handel.de, 1
 ashastalent.com, 1
 ashd1.goip.de, 1
 ashd2.goip.de, 1
 ashd3.goip.de, 1
+ashessin.com, 1
 ashleakunowski.com, 1
 ashleyadum.com, 1
 ashleyedisonuk.com, 1
 ashleyfoley.photography, 1
 ashleymadison.com, 1
 ashleythouret.com, 1
 ashlocklawgroup.com, 1
 ashmportfolio.com, 1
@@ -3970,29 +4168,32 @@ asian-industry.eu, 1
 asianodor.com, 1
 asianshops.net, 1
 asianspa.co.uk, 1
 asiba.com.au, 1
 asiesvenezuela.com, 1
 asiinc-tex.com, 1
 asile-colis.fr, 1
 asinetasima.com, 1
+asirigbakaute.com, 1
 asirviablog.com, 1
 asisee.co.il, 1
 asisee.photography, 1
 ask.fi, 1
 ask.pe, 1
 ask.stg.fedoraproject.org, 1
 ask1.org, 1
 askcaisse.com, 1
 askcascade.com, 1
+askeustache.com, 1
 askizzy.org.au, 1
 askkaren.gov, 1
 askmagicconch.com, 0
 askme24.de, 1
+asksatya.com, 1
 askv6.net, 1
 askvg.com, 1
 askwhy.cz, 1
 askwhy.eu, 1
 aslinfinity.com, 1
 asm-x.com, 0
 asmbsurvey.com, 1
 asmdz.com, 1
@@ -4048,16 +4249,17 @@ astec-informatica.com, 1
 astengox.com, 1
 astenotarili.online, 1
 astenretail.com, 1
 asthon.cn, 1
 astral-imperium.uk, 1
 astral.org.pl, 1
 astrath.net, 1
 astrea-voetbal-groningen.nl, 1
+astroalloys.com.au, 1
 astrology42.com, 1
 astroscopy.ch, 1
 astrosnail.pt.eu.org, 1
 astrovandalistas.cc, 1
 astural.org, 1
 astutikhonda.com, 1
 astutr.co, 1
 asuclassfinder.com, 1
@@ -4104,25 +4306,27 @@ atelierdesflammesnoires.fr, 1
 atelierfantazie.sk, 1
 atelierhsn.com, 1
 ateliernaruby.cz, 1
 ateliers-veronese-nantes.fr, 1
 atelierssud.ch, 1
 atelierssud.swiss, 1
 atencionbimbo.com, 0
 atendimentodelta.com.br, 1
+aterlectric.com, 1
 aterskapa-data.se, 1
 atg.soy, 1
 atgoetschel.ch, 1
 atgroup.gr, 1
 atgseed.co.uk, 1
 atgseed.uk, 1
 ath0.org, 0
 atheist-refugees.com, 1
 atheistfrontier.com, 1
+athekiu.com, 1
 athena-bartholdi.com, 1
 athena-garage.co.uk, 1
 athenadynamics.com, 1
 athenaneuro.com, 1
 atheoryofchange.com, 1
 atherosense.ga, 1
 athlin.de, 1
 atigerseye.com, 1
@@ -4146,22 +4350,24 @@ atlantis-kh.noip.me, 1
 atlantischild.hu, 1
 atlantishq.de, 1
 atlantiswaterproofing.com, 1
 atlas-5.site, 1
 atlas-heritage.com, 1
 atlas-staging.ml, 1
 atlasbrown.com, 1
 atlaschiropractic.org, 1
+atlascoffeeclub.com, 1
 atlascultural.com, 1
 atlasdev.nl, 1
 atlasone.us, 1
 atlassian.io, 1
 atlassignsandplaques.com, 1
 atletika.hu, 1
+atmalta.com, 1
 atmocdn.com, 1
 atnis.com, 1
 ato4sound.com, 1
 atolm.net, 1
 atom-china.org, 1
 atom.solutions, 1
 atom86.net, 1
 atombase.org, 1
@@ -4204,21 +4410,21 @@ atypicom.pt, 1
 atzenchefin.de, 1
 au-be.net, 1
 au2pb.net, 1
 au2pb.org, 1
 aubergegilly.ch, 1
 aubg.org, 1
 aubio.org, 1
 aubonmanger.fr, 1
+aucarresainteloi.com, 1
 aucielrose.com, 1
 aucklandcastles.co.uk, 1
 aucubin.de, 1
 audialbuquerqueparts.com, 1
-audiblox.co.za, 1
 audiense.com, 0
 audio-detector.com, 1
 audiobookboo.com, 1
 audiobookstudio.com, 1
 audiolibri.org, 1
 audiolot.com, 1
 audion.cc, 1
 audion.hr, 1
@@ -4249,16 +4455,17 @@ augmentable.de, 0
 augmented-portal.com, 1
 august-don.site, 1
 august.black, 1
 augustian-life.cz, 1
 augustiner-kantorei-erfurt.de, 1
 augustiner-kantorei.de, 1
 aukaraoke.su, 1
 aulaschrank.gq, 1
+aulasvirtualesperu.com, 1
 aulo.in, 0
 aumilieudumonde.gf, 1
 aunali1.com, 1
 auntie-eileens.com.au, 1
 auntmia.com, 1
 aupasdecourses.com, 1
 auplidespages.fr, 1
 aurelieburn.fr, 1
@@ -4370,16 +4577,17 @@ autorijschoolrichardschut.nl, 1
 autos-mertens.com, 1
 autoschadeschreuder.nl, 1
 autoscuola.roma.it, 1
 autosecurityfinance.com, 1
 autoshinka72.ru, 1
 autoshopsolutions.com, 1
 autoshun.org, 1
 autoskola.hr, 1
+autoskolaplzen.cz, 1
 autoskole.hr, 1
 autospurgo.it, 1
 autospurgo.milano.it, 1
 autostock.me, 1
 autostodulky.cz, 1
 autostop-occasions.be, 1
 autotechschool.com, 1
 autoteplo.org, 1
@@ -4430,16 +4638,17 @@ avedesk.org, 0
 aventurische-allianz.de, 1
 avenueeyecare.com, 1
 avepol.cz, 1
 avepol.eu, 1
 averageinspired.com, 1
 averam.net, 1
 averen.co.uk, 1
 avernis.de, 1
+avestawebbtjanst.se, 1
 avexon.com, 1
 avi9526.pp.ua, 1
 avia-krasnoyarsk.ru, 1
 avia-ufa.ru, 1
 aviapoisk.kz, 1
 aviationstrategies.aero, 1
 aviationstrategy.aero, 1
 avid.blue, 1
@@ -4469,17 +4678,16 @@ avsox.com, 1
 avspot.net, 1
 avticket.ru, 0
 avtobania.pro, 1
 avtoforex.ru, 1
 avtogara-isperih.com, 1
 avtomarket.ru, 1
 avtoveles.by, 1
 avtovokzaly.ru, 1
-avv.li, 1
 avvaterra.ch, 1
 avvcorda.com, 1
 avvocato.bologna.it, 1
 avxo.pw, 1
 awan.tech, 1
 awardplatform.com, 1
 awardsplatform.com, 1
 awaremi-tai.com, 1
@@ -4497,16 +4705,18 @@ awesomesit.es, 1
 awf0.xyz, 1
 awic.ca, 1
 awk.tw, 1
 awksolutions.com, 1
 awningcanopyus.com, 1
 awningsaboveus.com, 1
 awningsatlantaga.com, 1
 awomaninherprime.com, 1
+awplasticsurgery.com, 1
+awscloudrecipes.com, 1
 awsmdev.de, 1
 awsome-books.co.uk, 1
 awxg.com, 1
 awxg.eu.org, 1
 awxg.org, 1
 ax25.org, 1
 axchap.ir, 1
 axel-fischer.net, 1
@@ -4531,24 +4741,25 @@ axtux.tk, 1
 axxial.tk, 1
 ay-net.jp, 1
 ayahya.me, 1
 ayamchikchik.com, 1
 ayanomimi.com, 1
 aycomba.de, 1
 ayesh.me, 1
 ayesh.win, 1
+aying.love, 1
 ayj.solutions, 1
 aykutcevik.com, 1
 aylak.com, 1
 aylesburycastlehire.co.uk, 1
 aymerick.fr, 1
 aymericlagier.com, 1
 ayon.group, 1
-ayothemes.com, 1
+ayothemes.com, 0
 ayrohq.com, 1
 ayrshirebouncycastlehire.co.uk, 1
 ayumindev.net, 1
 ayurveda-mantry.com, 1
 ayurveda101.com, 0
 az-moga.bg, 1
 az-vinyl-boden.de, 1
 az.search.yahoo.com, 0
@@ -4622,16 +4833,17 @@ b5189.net, 1
 b5289.com, 1
 b5289.net, 1
 b5989.com, 1
 b5989.net, 1
 b61688.com, 1
 b64.club, 1
 b72.com, 1
 b72.net, 1
+b767.net, 1
 b8591.com, 1
 b8591.net, 1
 b8979.com, 1
 b8979.net, 1
 b9018.com, 1
 b9018.net, 1
 b9108.com, 1
 b9108.net, 1
@@ -4750,17 +4962,16 @@ backgroundchecks.online, 1
 backgroundz.net, 1
 backlogapp.io, 1
 backmountaingas.com, 1
 backpacken.org, 1
 backpacker.dating, 1
 backschues.com, 1
 backschues.de, 1
 backschues.net, 1
-backseatbandits.com, 1
 backsideverbier.ch, 1
 backterris.com, 1
 backtest.org, 1
 backup-kurumsal.com, 1
 backupcloud.ru, 1
 backupsinop.com.br, 1
 bacon-monitoring.org, 1
 baconismagic.ca, 1
@@ -4821,16 +5032,18 @@ bahnmagazine.de, 1
 baiduo.com, 1
 baifubao.com, 1
 baiker.info, 1
 baildonbouncycastles.co.uk, 1
 baildonhottubs.co.uk, 1
 baileebee.com, 1
 bailonga.com, 1
 bairdzhang.com, 1
+baitaplamvan.com, 1
+baitcon.com, 1
 baitulongbaycruises.com, 1
 baiyangliu.com, 1
 bajic.ch, 1
 baka-gamer.net, 1
 baka.network, 1
 baka.org.cn, 1
 baka.red, 1
 bakabt.info, 1
@@ -4876,26 +5089,28 @@ ballmerpeak.org, 1
 ballonsportclub-erlangen.de, 1
 ballotapi.com, 1
 ballothero.com, 1
 ballparkbuns.com, 0
 ballroom.info, 1
 balmofgilead.org.uk, 1
 balonmano.co, 1
 balslev.io, 1
+balter.com, 1
 balticmed.pl, 1
 balticnetworks.com, 1
 bamahammer.com, 1
 bambambaby.com.br, 1
 bambooforest.nl, 1
 bamboorelay.com, 1
 bambumania.com.br, 1
 bamily.rocks, 1
 bamtoki.com, 1
 bananavapes.com, 1
+bananice.moe, 1
 bananium.fr, 1
 banburybid.com, 1
 bancacrs.it, 1
 bancobai.ao, 1
 bancoctt.pt, 1
 bancor.network, 1
 bandagastrica.es, 1
 bandally.net, 1
@@ -4909,19 +5124,21 @@ bangkok-dark-night.com, 1
 bangkok.dating, 1
 bangkokcity.de, 1
 bangorfederal.com, 0
 bangridho.com, 1
 bangumi.co, 1
 bangyu.wang, 1
 banham.co.uk, 1
 banham.com, 1
+bani99.com, 1
 banjostringiz.com, 1
 bank, 1
 bank.simple.com, 0
+bankanswers.gov, 1
 bankbranchlocator.com, 1
 bankcardoffer.com, 1
 bankcircle.co.in, 1
 bankee.us, 1
 bankerbuch.de, 1
 bankersonline.com, 1
 banketbesteld.nl, 1
 bankfreeoffers.com, 1
@@ -4983,18 +5200,18 @@ bardiharborow.com, 1
 bardiharborow.tk, 1
 baresquare.com, 1
 baripedia.org, 1
 baris-sagdic.com, 1
 bariseau-mottrie.be, 1
 barisi.me, 1
 bariskaragoz.nl, 1
 baristador.com, 1
+bariumoxide.com, 1
 barkerjr.xyz, 1
-barlex.pl, 1
 barlotta.net, 1
 barnabycolby.io, 1
 barnel.com, 1
 barnfotografistockholm.se, 1
 barnrats.com, 1
 barpodsosnami.pl, 1
 barprive.com, 1
 barqo.co, 1
@@ -5027,17 +5244,16 @@ basculasconfiables.com, 1
 base-autonome-durable.com, 1
 baseballrampage.com, 1
 baseballsavings.com, 1
 baseballwarehouse.com, 1
 baseconvert.com, 1
 basedonline.nl, 1
 baselang.com, 1
 baseline.ba, 1
-basementdoctor.com, 1
 basementdoctornorthwest.com, 1
 basementfinishingohio.com, 1
 basementwaterproofingdesmoines.com, 1
 basercap.co.ke, 1
 baserverz.ga, 1
 bashc.at, 1
 bashing-battlecats.com, 1
 bashstreetband.co.uk, 1
@@ -5068,31 +5284,33 @@ bat909.net, 1
 bat9vip.com, 1
 bat9vip.net, 1
 batcave.tech, 1
 batch.com, 1
 batfoundry.com, 1
 bati-alu.fr, 1
 batiburrillo.net, 1
 batipresta.ch, 1
+batkave.net, 1
 batlab.ch, 1
 batolis.com, 1
 batook.org, 1
 batschu.de, 1
 batten.eu.org, 1
 batterystaple.pw, 1
 battle-game.com, 1
 battleboxx.com, 0
 battleofthegridiron.com, 1
 batvip9.net, 1
 bauer.network, 1
 bauernmarkt-fernitz.at, 1
 baugeldspezi.de, 1
 baugemeinschaftbernstein.de, 1
 baumannfabrice.com, 1
+baumkuchen-aus-dresden.de, 1
 baur.de, 1
 bausep.de, 1
 baustils.com, 1
 bauthier-occasions.be, 1
 bautied.de, 1
 bauunternehmen-herr.de, 1
 bauwens.cloud, 1
 bavartec.de, 1
@@ -5115,16 +5333,17 @@ bayportbotswana.com, 1
 bayportfinance.com, 1
 bayportghana.com, 1
 bayporttanzania.com, 1
 bayportuganda.com, 1
 bayportzambia.com, 1
 baytalebaa.com, 1
 baywatch.io, 1
 bayz.de, 1
+baza-gai.com.ua, 1
 bazaarbhaav.com, 1
 bazaarcompass.com, 1
 bazdell.com, 1
 bazos.at, 1
 bazos.cz, 1
 bazos.pl, 1
 bazos.sk, 1
 bazziergraphik.com, 1
@@ -5138,16 +5357,17 @@ bbinsure.com, 1
 bbka.org.uk, 1
 bbkaforum.co.uk, 1
 bbkworldwide.jp, 1
 bbld.de, 1
 bblove.me, 1
 bblsa.ch, 1
 bbnbb.de, 1
 bbnx.net, 1
+bbsec.xyz, 1
 bbswin9.cc, 1
 bbswin9.com, 1
 bbuio.com, 0
 bbw-wrestling.com, 1
 bbw.dating, 1
 bbwcs.co.uk, 1
 bbwfacesitting.us, 1
 bbwteens.org, 1
@@ -5244,16 +5464,17 @@ beauty-hippie-schmuck.de, 1
 beauty-italy.ru, 1
 beauty-yan-enterprise.com, 1
 beauty24.de, 1
 beautybear.dk, 1
 beautyby.tv, 1
 beautyevent.fr, 1
 beautykat.ru, 1
 beaverdamautos.com, 1
+beavertales.ca, 1
 bebef.de, 1
 bebes.uno, 1
 bebest.gov, 1
 bebetrotteur.com, 1
 bebout.domains, 1
 bebout.pw, 1
 beccajoshwedding.com, 1
 beckenhamcastles.co.uk, 1
@@ -5273,16 +5494,17 @@ bednar.co, 1
 bedouille.com, 1
 bedrijfsfotoreportages.nl, 1
 bedrijfshulpverleningfriesland.nl, 1
 bedrijfsportaal.nl, 1
 bedrocklinux.org, 1
 bedste10.dk, 1
 bee-creative.nl, 1
 bee-line.org.uk, 1
+bee-social.it, 1
 bee.clothing, 1
 bee.supply, 1
 bee.tools, 1
 beechwoodmetalworks.com, 1
 beehive.govt.nz, 1
 beehive42.com, 1
 beehive42.eu, 1
 beehive42.net, 1
@@ -5384,45 +5606,50 @@ bellavistaoutdoor.com, 1
 bellinghamdetailandglass.com, 1
 belloy.ch, 1
 belloy.net, 1
 bellthrogh.com, 1
 bellthrough.com, 1
 belly-button-piercings.com, 1
 bellyandbrain.amsterdam, 1
 belmontgoessolar.org, 1
+belos.at, 1
 belouga.org, 1
 belpbleibtbelp.ch, 1
 belt.black, 1
 belvoirbouncycastles.co.uk, 1
 belwederczykow.eu, 1
 bely-mishka.by, 1
+belyoung.com.br, 1
 bemcorp.de, 1
 bemindly.com, 1
 bemsoft.pl, 1
 ben-energy.com, 0
 ben-stock.de, 1
 ben.ninja, 1
 benabrams.it, 1
 benandsarah.life, 1
 benary.org, 1
+benbalter.com, 1
 benbozsa.ca, 1
 benburwell.com, 1
 benc.io, 1
 benceskorka.com, 1
 benchling.com, 1
 benchmarkmonument.com, 1
 benchstoolo.com, 1
 bencorby.com, 1
 bendemaree.com, 1
 bendigoland.com.au, 1
 bendix.co, 1
 bendyworks.com, 1
 beneathvt.com, 1
 benedict-balzer.de, 1
+benefitshub.io, 1
+benefitshub.xyz, 1
 beneri.se, 1
 benevisim.com, 1
 benevita.bio, 1
 benevita.life, 1
 benevita.live, 1
 benevita.organic, 1
 benewpro.com, 1
 benfairclough.com, 1
@@ -5476,19 +5703,22 @@ beoordelingen.be, 1
 bep.gov, 1
 bepenak.com, 1
 bephoenix.org.uk, 1
 bepsvpt.me, 1
 bequiia.com, 1
 beranovi.com, 1
 berasavocate.com, 1
 beraten-entwickeln-steuern.de, 1
+berati.tv, 1
 berdaguermontes.eu, 0
 berdu.id, 1
 beretech.fr, 1
+berg-freunde.at, 1
+berg-freunde.ch, 1
 bergenhave.nl, 1
 berger-chiro.com, 1
 bergevoet-fa.nl, 1
 bergfreunde.de, 1
 bergfreunde.dk, 1
 bergfreunde.es, 1
 bergfreunde.eu, 1
 bergfreunde.fi, 1
@@ -5582,17 +5812,16 @@ best-nursing-colleges.com, 1
 best-of-bounce.co.uk, 1
 best-pharmacy-schools.com, 1
 best-tickets.co.uk, 1
 best-trucking-schools.com, 1
 best-wallpaper.net, 1
 best-wedding-quotes.com, 1
 best10websitebuilders.com, 1
 best2pay.net, 1
-best66.me, 1
 bestattungen-kammerer.de, 1
 bestattungshaus-kammerer.de, 1
 bestautoinsurance.com, 1
 bestbatteriesonline.com, 1
 bestbefore.com, 1
 bestbestbitcoin.com, 1
 bestbrakes.com, 1
 bestbridal.top, 1
@@ -5613,17 +5842,16 @@ bestgifts4you.com, 1
 besthotsales.com, 1
 besti.it, 1
 bestiahosting.com, 1
 bestinductioncooktop.us, 1
 bestinshowing.com, 1
 bestinver.es, 0
 bestjumptrampolines.be, 1
 bestkenmoredentists.com, 1
-bestlashesandbrows.com, 1
 bestleftwild.com, 1
 bestmotherfucking.website, 1
 bestoffert.club, 1
 bestoliveoils.com, 1
 bestpal.eu, 1
 bestparking.xyz, 1
 bestpartyhire.com, 1
 bestperfumebrands.com, 1
@@ -5705,16 +5933,17 @@ beulen.pro, 1
 beuteugeu.com, 1
 bevedo.cz, 1
 beveiligingscamerawestland.nl, 1
 bevelpix.com, 1
 beverlyinternational.com, 1
 bevinco2020.com, 1
 bevinsco.org, 1
 bevnut.com, 1
+bewegigsruum.ch, 1
 bewegungsfluss.com, 0
 bewerbungsfibel.de, 1
 bewerbungsfoto-deinfoto.ch, 1
 bewertet.de, 1
 bewonderen.com, 1
 bexit-hosting.nl, 1
 bexit-security.eu, 1
 bexit-security.nl, 1
@@ -5739,35 +5968,38 @@ bez-energie.de, 1
 bezemkast.nl, 1
 bezoomnyville.com, 1
 bezpecnostsiti.cf, 1
 bezr.co.uk, 1
 bezzia.com, 1
 bf7088.com, 1
 bf7877.com, 1
 bfam.tv, 1
+bfcgermania88.de, 1
 bfem.gov, 1
 bfgcdn.com, 1
 bflix.tv, 1
+bfob.gg, 1
 bforb.sk, 1
 bfp-mail.de, 1
 bfpg.org, 1
 bfrailwayclub.cf, 1
 bft-media.com, 1
 bftbradio.com, 1
 bfw-online.de, 1
 bg-sexologia.com, 1
 bgbhsf.top, 1
 bgenlisted.com, 1
 bgeo.io, 1
 bgfashion.net, 1
 bgfoto.info, 1
 bghost.xyz, 1
 bgkoleda.bg, 1
 bglsingles.de, 1
+bgmn.me, 1
 bgp.ee, 1
 bgp.space, 1
 bgr34.cz, 1
 bgs-game.com, 1
 bgtgames.com, 1
 bgtoyou.com, 1
 bguidinger.com, 1
 bgwfans.com, 1
@@ -5785,16 +6017,17 @@ biaggeo.com, 1
 bianinapiccanovias.com, 1
 biano-ai.com, 1
 biasmath.es, 1
 biathloncup.ru, 1
 bibica.net, 1
 bible-maroc.com, 1
 bible.ru, 1
 bibleonline.ru, 1
+bibles.com.tw, 1
 biblethoughts.blog, 1
 bibliaon.com, 1
 biblio.wiki, 1
 biblioblog.fr, 1
 bibliomarkt.ch, 1
 biblionaut.net, 1
 biblioporn.com, 1
 bibliotekarien.se, 1
@@ -5809,16 +6042,19 @@ bicranial.io, 1
 bicycle-events.com, 1
 bicycleframeiz.com, 1
 biddl.com, 1
 biddle.co, 1
 bidman.cz, 1
 bidman.eu, 1
 bidu.com.br, 1
 bie.edu, 0
+bie08.com, 1
+bie35.com, 1
+bie79.com, 1
 biegal.ski, 1
 biegner-technik.de, 1
 biehl.tech, 1
 biehlsoft.info, 1
 bielefailed.de, 1
 bien-etre-sante.info, 1
 bienici.com, 1
 bienoubien.org, 1
@@ -5885,19 +6121,21 @@ bildiri.ci, 1
 bildkomponist.de, 1
 bildschirmflackern.de, 1
 biletru.net, 1
 biletyplus.by, 1
 biletyplus.com, 1
 biletyplus.ua, 1
 bilgo.com, 1
 bilibili.link, 1
+bilibili.red, 1
 bilimoe.com, 1
 bilke.org, 1
 billaud.eu.org, 1
+billfazz.com, 1
 billgoldstein.name, 1
 billhartzer.com, 1
 billiger-mietwagen.de, 1
 billigerfinder.de, 1
 billigpoker.dk, 1
 billin.net, 1
 billionaire365.com, 1
 billionairemailinglist.com, 0
@@ -6134,16 +6372,17 @@ bitmoe.com, 1
 bitmon.net, 1
 bitok.com, 1
 bitplay.space, 1
 bitpod.de, 1
 bitpoll.de, 1
 bitpoll.org, 1
 bitpumpe.net, 1
 bitref.com, 1
+bitrefill.com, 1
 bitrush.nl, 1
 bits-hr.de, 1
 bitsafe.com.my, 1
 bitsburg.ru, 1
 bitski.com, 1
 bitskins.co, 1
 bitskrieg.net, 1
 bitso.com, 1
@@ -6161,29 +6400,31 @@ bittylicious.com, 1
 bitvest.io, 1
 bitwarden.com, 1
 bitwolk.nl, 1
 bitwrought.net, 1
 bitxel.com.co, 1
 bityes.org, 1
 biupay.com.br, 1
 biurokarier.edu.pl, 1
+bixbydevelopers.com, 1
 bixservice.com, 1
 biyou-homme.com, 1
 biz4x.com, 1
 bizbudding.com, 1
 bizcash.co.za, 1
 bizeau.ch, 1
 biznesonline.info, 1
 bizniskatalog.mk, 1
 biznpro.ru, 1
 bizstarter.cz, 1
 biztera.com, 1
 biztok.eu, 1
 biztouch.work, 1
+bizzdesign.cloud, 1
 bizzdesign.com, 1
 bizzi.tv, 1
 bjarnerest.de, 1
 bjl5689.com, 1
 bjl5689.net, 1
 bjmgeek.science, 1
 bjmun.cn, 1
 bjolanta.pl, 1
@@ -6194,16 +6435,17 @@ bjs.gov, 1
 bjsbouncycastles.com, 1
 bjtxl.cn, 1
 bk-wife.com, 1
 bkentertainments.co.uk, 1
 bkhpilates.co.uk, 1
 bkkposn.com, 1
 bklaindia.com, 1
 bkositspartytime.co.uk, 1
+bkt.to, 1
 bl00.se, 1
 bl4ckb0x.biz, 1
 bl4ckb0x.com, 1
 bl4ckb0x.de, 1
 bl4ckb0x.eu, 1
 bl4ckb0x.info, 1
 bl4ckb0x.net, 1
 bl4ckb0x.org, 1
@@ -6228,16 +6470,17 @@ blablacar.rs, 1
 blablacar.ru, 1
 black-gay-porn.biz, 1
 black-khat.com, 1
 black-mail.nl, 1
 black-pool.net, 1
 black-raven.fr, 1
 black.dating, 1
 black.host, 1
+black1ce.com, 1
 blackandpony.de, 1
 blackapron.com.br, 1
 blackbag.nl, 1
 blackbase.de, 1
 blackberrycentral.com, 1
 blackbird-whitebird.com, 1
 blackburn.link, 0
 blackcat.ca, 1
@@ -6274,16 +6517,17 @@ blackphoenix.de, 1
 blackpi.dedyn.io, 1
 blackroadphotography.de, 1
 blackscreen.me, 1
 blackscytheconsulting.com, 1
 blackseals.net, 1
 blacktown.eu, 1
 blackyau.cc, 1
 blackys-chamber.de, 1
+blaindalefarms.com, 1
 blaise.io, 1
 blakecoin.org, 1
 blakekhan.com, 1
 blakezone.com, 1
 blameomar.com, 1
 blancodent.com, 1
 blankersfamily.com, 1
 blanket.technology, 1
@@ -6314,31 +6558,32 @@ blendle.com, 1
 blendle.nl, 1
 blendr.com, 1
 blendstudios.com, 1
 blenheimears.com, 1
 blenneros.net, 0
 blessedguy.com, 1
 blewebprojects.com, 1
 blichmann.eu, 1
+blicy.net, 1
 blidz.com, 1
 blieque.co.uk, 1
 bliesekow.net, 1
 bliker.ga, 1
 blikk.no, 1
-blikund.swedbank.se, 1
 blindaryproduction.tk, 1
 blinder.com.co, 1
 blindpigandtheacorn.com, 1
 blinds-unlimited.com, 1
 bling9.com, 1
 bling999.cc, 1
 bling999.com, 1
 bling999.net, 1
 blingsparkleshine.com, 1
+blingwang.cn, 1
 blink-security.com, 1
 blinkenlight.co.uk, 1
 blinkenlight.com.au, 1
 blinking.link, 1
 blinkspeed.eu, 1
 blio.tk, 1
 blip.website, 1
 blissjoe.com, 1
@@ -6379,32 +6624,32 @@ blog.lookout.com, 0
 blogabout.ru, 1
 blogaid.net, 1
 blogarts.net, 1
 blogbooker.com, 1
 blogconcours.net, 1
 blogcuaviet.com, 1
 blogdelosjuguetes.com, 1
 blogdeyugioh.com, 1
+blogdimoda.com, 1
 blogdimotori.it, 1
 blogexpert.ca, 1
 bloggermumofthreeboys.com, 1
 blogging-life.com, 1
 bloggingwithchildren.com, 1
 bloggytalky.com, 1
 bloginbeeld.nl, 1
 bloglines.co.za, 1
 bloglogistics.com, 1
 blogom.at, 1
 blogpentrusuflet.ro, 1
 blogreen.org, 1
 blogsdna.com, 1
 blogthedayaway.com, 1
 blogtroterzy.pl, 1
-blok56.nl, 1
 blokmy.com, 1
 blood4pets.tk, 1
 bloodhunt.pl, 1
 bloodsports.org, 1
 bloody.pw, 1
 bloom-avenue.com, 1
 bloom.sh, 0
 bltc.co.uk, 1
@@ -6441,22 +6686,24 @@ bluemtnrentalmanagement.ca, 1
 bluenote9.com, 1
 blueoakart.com, 1
 blueoceantech.us, 1
 bluepearl.tk, 1
 blueperil.de, 1
 bluepoint.foundation, 1
 bluepoint.institute, 1
 bluepostbox.de, 1
+bluepromocode.com, 1
 bluerootsmarketing.com, 1
 blues-and-pictures.com, 1
 blueskycoverage.com, 1
 bluestardiabetes.com, 1
 bluesuncamping.com, 1
 bluesunhotels.com, 1
+blueswandaily.com, 1
 bluetexservice.com, 1
 bluewavewebdesign.com, 1
 bluex.im, 1
 bluex.info, 1
 bluex.net, 1
 bluex.org, 1
 blueyed.eu, 1
 blui.ml, 1
@@ -6636,59 +6883,64 @@ boof.com, 0
 boogaerdtmakelaars.nl, 1
 boogiebouncecastles.co.uk, 1
 book-in-hotel.com, 1
 booker.ly, 1
 bookingapp.be, 1
 bookingapp.nl, 1
 bookingready.com, 1
 bookingslog.com, 1
-bookingworldspeakers.com, 0
+bookingworldspeakers.com, 1
 bookluk.com, 1
 bookmein.in, 1
 bookourdjs.com, 1
 bookreport.ga, 1
 booksearch.jp, 1
 booksinthefridge.at, 1
 booksouthafrica.travel, 1
 booktracker-org.appspot.com, 1
 bookwitty.social, 1
+bookzaga.com, 1
 bool.be, 1
 boombv.com, 1
 boomersurf.com, 1
 boomshelf.com, 1
 boomshelf.org, 1
 boomvm.pw, 1
 boonbox.com, 1
 booox.biz, 1
 booox.cc, 1
 booox.info, 1
 booox.net, 1
 booox.org, 1
 booox.pw, 1
 boop.gq, 1
 boop.pro, 1
+booplab.com, 1
 booq.org, 1
 booquiz.com, 1
 boosinflatablegames.co.uk, 1
 boost.fyi, 1
 boost.ink, 1
 boostgame.win, 1
 booter.es, 1
+boothlabs.me, 1
 bootjp.me, 0
+bootsschule-weiss.de, 1
 boozinyan.com, 1
 bopera.co.uk, 1
 bopiweb.com, 1
 bopp.org, 1
 borahan.net, 1
 borchers-media.de, 1
 borchers.ninja, 1
 bordadoenpedreria.com, 1
 bordes.me, 1
 boredhackers.com, 1
+boreo.si, 1
 borgmestervangen.xyz, 1
 borgodigatteraia.it, 1
 boringsmith.com, 1
 boris64.net, 1
 borisbesemer.com, 1
 borisenko.by, 1
 borisschapira.com, 1
 borja.io, 1
@@ -6878,25 +7130,27 @@ boxpirates.to, 1
 boxvergelijker.nl, 1
 boxview.com, 1
 boyerassoc.com, 1
 boyfriendcookbook.com, 1
 boyhost.cn, 1
 boyinglanguage.com, 1
 boyntonobserver.org, 1
 boypoint.de, 1
+boysontech.com, 1
 boz.nl, 0
 bozdoz.com, 1
 bozit.com.au, 1
 bozosbouncycastles.co.uk, 1
 bpa.gov, 1
 bpadvisors.eu, 1
 bpastudies.org, 1
 bpo.ovh, 1
 bpol-forum.de, 1
+bps.vc, 1
 bqcp.net, 1
 bqp.io, 1
 bqr.ch, 1
 br.search.yahoo.com, 0
 br3in.nl, 0
 br7.ru, 1
 braams.nl, 1
 braathe.no, 1
@@ -6964,17 +7218,17 @@ brandontaylor-black.com, 1
 brandonwalker.me, 1
 brandrocket.dk, 1
 brandstead.com, 1
 brandtrapselfie.nl, 1
 brandweerfraneker.nl, 1
 brandweertrainingen.nl, 1
 brandweeruitgeest.nl, 1
 brank.as, 1
-branw.xyz, 1
+branw.xyz, 0
 brasal.ma, 1
 brasalcosmetics.com, 1
 brashear.me, 1
 brasildxn.com.br, 1
 brasileiro.ca, 1
 brasserie-mino.fr, 1
 brasspipedreams.org, 1
 bratislava-airport-taxi.com, 1
@@ -6998,16 +7252,17 @@ brazenfol.io, 1
 brazilian.dating, 1
 brazoriabar.org, 1
 brck.nl, 1
 brd.ro, 1
 breadandlife.org, 1
 breadofgod.org, 1
 breakingtech.it, 1
 breakpoint.at, 1
+breakwall.ml, 1
 breaky.de, 1
 breathedreamgo.com, 1
 breathingblanket.com, 1
 brecht.ch, 1
 breckle.com.ua, 1
 brecknell.biz, 1
 brecknell.com, 1
 brecknell.info, 1
@@ -7085,31 +7340,33 @@ brighouse-leisure.co.uk, 1
 brightday.bz, 1
 brightendofleasecleaning.com.au, 1
 brightfuturemadebyme.com, 1
 brightlifedirect.com, 1
 brightonbank.com, 1
 brightonbouncycastles.net, 1
 brightonchilli.org.uk, 1
 brightonzhang.com, 1
+brightside.com, 1
 brightworkcreative.com, 1
 brigidaarie.com, 1
 brigittebutt.tk, 1
 brilliantbouncyfun.co.uk, 1
 brilliantproductions.co.nz, 1
 brimspark.com, 1
 brimspark.systems, 1
 brinkhu.is, 1
 brinkmann.one, 1
 brio-shop.ch, 1
 brio-ukraine.store, 1
 brioukraine.store, 1
 brisbanelogistics.com.au, 1
 bristebein.com, 1
 bristolandwestonsuperbounce.com, 1
+britanniacateringyeovil.co.uk, 1
 britanniapandi.com, 1
 britelocate.com, 1
 britishbeef.com, 1
 britishbookmakers.co.uk, 1
 britishchronicles.com, 1
 britishgroupsg.com, 1
 britishmeat.com, 1
 britishpearl.com, 1
@@ -7246,16 +7503,17 @@ btcp.space, 1
 btcpop.co, 1
 btine.tk, 1
 btio.pw, 0
 btku.org, 1
 btnissanparts.com, 1
 btorrent.xyz, 1
 btrb.ml, 1
 btsapem.com, 1
+btshe.net, 1
 btsoft.eu, 1
 btsow.com, 0
 bttc.co.uk, 1
 btth.live, 1
 btth.pl, 1
 btth.tv, 1
 btth.xyz, 1
 bttorj45.com, 1
@@ -7319,67 +7577,72 @@ bugzil.la, 1
 bugzilla.mozilla.org, 1
 build.chromium.org, 1
 buildbox.io, 1
 buildbytes.com, 1
 buildfaith.ca, 1
 buildhoscaletraingi.com, 1
 buildingclouds.de, 1
 buildingcostestimators.co.uk, 1
+builditfl.com, 1
 builditsolutions.net, 1
 buildkite.com, 1
 buildmorebuslanes.com, 1
 buildplease.com, 1
 buildrightbuildingservicesltd.co.uk, 1
 buileo.com, 1
 builtory.my, 1
 builtvisible.com, 1
 builtwith.com, 1
 buissonchardin.fr, 1
 buka.jp, 1
 bukai.men, 1
+bukiskola.hu, 1
+bukivallalkozasok.hu, 1
 bukkenfan.jp, 1
+bukpcszerviz.hu, 1
 bul3seas.eu, 1
 bulario.com, 1
 bulario.net, 1
 bulbcompare.com, 1
 bulbgenie.com, 1
 buldogueingles.com.br, 1
 bulgarianwine.com, 1
 bulkcandystore.com, 1
 bulkingtime.com, 1
 bulkowespacerkowo.nl, 1
 bulktrade.de, 1
 bulktshirtsjohannesburg.co.za, 1
 bulkwholesalesweets.co.uk, 1
 bull.id.au, 1
-bulldog-hosting.de, 1
+bulldog-hosting.de, 0
 bulldoghire.co.uk, 1
 bulledair-savons.ch, 1
 bulletbabu.com, 0
 bulletpoint.cz, 1
 bullettags.com, 1
 bullpendaily.com, 1
 bullshitmail.nl, 1
 bullterrier.nu, 1
 bulmastife.com.br, 1
+bulwarkcrypto.com, 1
 bulwarkhost.com, 1
-bumarkamoda.com, 1
 bunadarbankinn.is, 1
 bunbun.be, 0
 bund-von-theramore.de, 1
 bundespolizei-forum.de, 1
 bungee.pw, 1
 bungee.systems, 1
 bungeetaco.com, 1
 bunkyo-life.com, 1
 bunny-rabbits.com, 1
 bunnycarenotes.com, 1
 bunnydiamond.de, 1
 bunnyvishal.com, 1
+bunq.love, 1
 bunzy.ca, 1
 bupropion.com, 1
 bupu.ml, 1
 buradangonder.com, 1
 burcevo.info, 1
 burfordbedandbreakfast.co.uk, 1
 burg-hohnstein.com, 1
 burgernet.nl, 1
@@ -7408,16 +7671,17 @@ burtrum.family, 1
 burtrum.me, 1
 burtrum.name, 1
 burtrum.org, 1
 burzcast.ro, 1
 burzmali.com, 1
 burzmedia.com, 1
 burzstudios.com, 1
 busanhs.bid, 1
+buscandolosmejores.com, 1
 buserror.cn, 1
 bushbaby.com, 1
 bushcraftfriends.com, 1
 busindre.com, 1
 business-garden.com, 1
 business.facebook.com, 0
 businessamongus.com, 1
 businesscentermarin.ch, 1
@@ -7430,16 +7694,17 @@ businessimmigration-eu.com, 1
 businessimmigration-eu.ru, 1
 businessloanconnection.org, 0
 businessmadeeasypodcast.com, 1
 businessmarketingblog.org, 1
 businessplanexperts.ca, 1
 businessradar.com.au, 1
 businesswebadmin.com, 1
 busit.be, 1
+busiteyiengelle.com, 1
 busold.ws, 1
 bustabit.com, 1
 bustadice.com, 1
 bustimes.org, 1
 bustup-tips.com, 1
 busuttil.org.uk, 1
 busybee360.com, 1
 busyon.cloud, 1
@@ -7449,16 +7714,17 @@ butikpris.se, 1
 butikvip.ru, 1
 butlerfm.dk, 1
 butt.repair, 1
 butteramotors.com, 1
 buttermilk.cf, 1
 buttonline.ch, 1
 buttonrun.com, 1
 buturyu.net, 1
+butzies.ddnss.org, 1
 buurtgenotencollectief.nl, 1
 buurtpreventiefraneker.nl, 1
 buxum-communication.ch, 1
 buy-out.jp, 1
 buybike.shop, 1
 buycarpet.shop, 1
 buycbd.store, 1
 buycook.shop, 1
@@ -7523,24 +7789,26 @@ byange.pro, 1
 byatte.com, 1
 bydisk.com, 0
 bye-bye.us, 1
 byeskille.no, 1
 bygningsregistrering.dk, 1
 byhe.me, 1
 byiu.info, 0
 byji.com, 1
+byjuschennai.com, 1
 byken.cn, 1
 bymark.co, 1
 bymike.co, 1
 bynder.com, 1
 bynet.cz, 1
 bynumlaw.net, 1
 bypass.kr, 1
 bypass.sh, 1
+bypetula.cz, 1
 byr.moe, 1
 byrko.cz, 1
 byrko.sk, 1
 byronkg.us, 1
 byrtz.de, 1
 bysb.net, 0
 bytanchan.com, 1
 byte-time.com, 1
@@ -7804,16 +8072,17 @@ campingskyhooks.com, 1
 campistry.net, 1
 campula.cz, 1
 campus-discounts.com, 1
 campus-finance.com, 1
 campusdrugprevention.gov, 1
 campuswire.com, 1
 campvana.com, 1
 campwabashi.org, 1
+camshowdir.com, 1
 camshowhub.com, 1
 camshowstorage.com, 1
 camshowverse.com, 1
 camsky.de, 0
 canada-tourisme.ch, 1
 canadabread.com, 0
 canadalife.de, 1
 canadasmotorcycle.ca, 1
@@ -7824,31 +8093,31 @@ canadianatheists.com, 1
 canadianchristianity.com, 0
 canadianoutdoorequipment.com, 1
 canadiantouristboard.com, 1
 canal-onanismo.org, 1
 canalsidehouse.be, 1
 canalsidehouse.com, 1
 canariculturacolor.com, 1
 canarymod.net, 1
+canberraoutletcentre.com.au, 1
 cancelmyprofile.com, 1
 cancerdata.nhs.uk, 1
 candaceplayforth.com, 1
 candelec.com, 1
 candeo-books.nl, 1
 candex.com, 1
 candguchocolat.com, 1
 candicecity.com, 1
 candidasa.com, 1
 candidaturedunprix.com, 1
 candlcastles.co.uk, 1
 cando.eu, 1
 candylion.rocks, 1
 candyout.com, 1
-canerkorkmaz.com, 1
 canfield.gov, 1
 cangelloplasticsurgery.com, 1
 cangku.in, 1
 cangku.moe, 0
 canglong.net, 1
 canhazip.com, 1
 canicaprice.com, 1
 canihavesome.coffee, 1
@@ -7961,25 +8230,47 @@ cardranking.jp, 1
 cardrecovery.fr, 1
 cardse.net, 1
 cardsolutionsbh.com.br, 1
 cardwars.hu, 1
 cardxl.be, 1
 cardxl.de, 1
 cardxl.fr, 1
 cardxl.nl, 1
+care-spot.biz, 1
+care-spot.com, 1
+care-spot.info, 1
+care-spot.mobi, 1
+care-spot.net, 1
+care-spot.org, 1
+care-spot.us, 1
 care4all.com, 1
 careeapp.com, 1
 career.support, 1
 careeroptionscoach.com, 1
 careerpower.co.in, 1
 careers.plus, 1
 carefour.nl, 1
 caremad.io, 1
 carepassport.com, 1
+carespot.biz, 1
+carespot.co, 1
+carespot.mobi, 1
+carespot.net, 1
+carespot.org, 1
+carespot.us, 1
+carespotexpress.com, 1
+carespotexpresshealthcare.com, 1
+carespottravelmedicine.com, 1
+carespottravelmedicine.mobi, 1
+carespoturgentcare.com, 1
+carespoturgentcare.info, 1
+carespoturgentcare.net, 1
+carespoturgentcare.org, 1
+carespoturgentcare.us, 1
 caretta.co.uk, 1
 careyshop.cn, 1
 carezone.com, 0
 carfinancehelp.com, 1
 carfraemill.co.uk, 1
 cargobay.net, 1
 cargomaps.com, 1
 cargorestraintsystems.com.au, 1
@@ -8078,41 +8369,44 @@ cartucce24.it, 1
 cartwrightrealestate.com, 1
 carun.us, 1
 carusorealestate.com, 1
 caryefurd.com, 1
 casa-app.de, 1
 casa-due-pur.com, 1
 casa-due-pur.de, 1
 casa-due.com, 1
+casa-laguna.net, 1
 casa-lunch-break.de, 1
 casa-lunchbreak.de, 1
 casa-mea-inteligenta.ro, 1
 casa-su.casa, 1
 casaanastasia.ro, 1
 casabouquet.com, 1
 casacameo.com, 0
 casacochecurro.com, 1
 casadasportasejanelas.com, 1
+casadopulpo.com, 1
 casalborgo.it, 1
 casalindamex.com, 1
 casalunchbreak.de, 1
 casamariposaspi.com, 1
 casasuara.com, 1
 casasuleletrodomesticos.com.br, 1
 casbia.info, 1
 casbuijs.nl, 1
-casburggraaf.com, 1
+casburggraaf.com, 0
 casc.cz, 1
 cascadesjobcorpscca.com, 1
 cascavelle.fr, 1
 cascavelle.nl, 1
 case-vacanza-salento.com, 1
 casecoverkeygi.com, 1
 casecurity.org, 1
+caseof.fr, 1
 caseplus-daem.de, 1
 caseycapitalpartners.com, 1
 cash-4x4.com, 1
 cashati.com, 1
 cashbook.co.tz, 1
 cashbot.cz, 1
 cashew3d.com, 1
 cashfazz.com, 1
@@ -8162,65 +8456,69 @@ castles-in-the-sky.co.uk, 1
 castles4kidz.com, 1
 castles4rascalsiow.co.uk, 1
 castlesrus-kent.com, 1
 castleswa.com.au, 1
 casualdesignsfurniture.com, 1
 casusgrillcaribbean.com, 1
 cat.net, 1
 cat73.org, 1
+cat93.com, 1
 catalog.beer, 1
 catalogobiblioteca.com, 1
 catalogoreina.com, 1
 catalogosvirtualesonline.com, 1
 catalyconv.com, 1
 catalyst-ecommerce.com, 0
 catalystapp.co, 1
 catbold.space, 1
 catbull.com, 1
 catburton.co.uk, 1
 catchers.cc, 1
 catchersgear.com, 1
 catchfotografie.nl, 1
 catchhimandkeephim.com, 1
 catchief.com, 1
+catchkol.com, 1
 catcontent.cloud, 1
 catcoxx.de, 1
 catdecor.ru, 1
 catenacondos.com, 1
 catering-xanadu.cz, 1
 catfooddispensersreviews.com, 1
 catgirl.pics, 1
 catgirl.science, 1
 catharinesomerville.com, 1
 catharisme.eu, 1
 catharisme.net, 1
 catharisme.org, 1
 catherinejf.com, 1
-catherinescastles.co.uk, 1
 catholics.dating, 1
 cathosa.nl, 1
 cathosting.org, 1
 cathy.guru, 1
 cathy.website, 1
 cathyfitzpatrick.com, 1
 cathyjf.ca, 1
 cathyjf.com, 1
 cathyjf.net, 1
 cathyjf.org, 1
 cathyjfitzpatrick.com, 1
 cativa.net, 1
 catl.st, 1
 catmoose.ca, 1
 catnet.dk, 0
 catnmeow.com, 1
+catram.org, 1
 catsmagic.pp.ua, 1
 cattivo.nl, 0
 catuniverse.org, 1
 catveteran.com, 1
+caudo.net, 1
+caudohay.com, 1
 caughtredhanded.co.nz, 1
 caulfieldeastapartments.com.au, 1
 caulfieldracecourseapartments.com.au, 1
 caulong-ao.net, 1
 cav.ac, 1
 cavac.at, 1
 cavalierkingcharlesspaniel.com.br, 1
 cave-reynard.ch, 1
@@ -8315,16 +8613,17 @@ cee.io, 1
 ceebee.com, 1
 cegfw.com, 1
 ceilingpac.org, 1
 cejhon.cz, 0
 celcomhomefibre.com.my, 1
 cele.bi, 1
 celebmasta.com, 1
 celebphotos.blog, 1
+celebphotos.club, 1
 celebrityhealthcritic.com, 1
 celebrityscope.net, 1
 celec.gob.ec, 0
 celectro-pro.com, 1
 celiendev.ch, 1
 celine-patisserie.fr, 1
 cellartracker.com, 1
 cellebrite.com, 1
@@ -8345,17 +8644,19 @@ cennelly.com, 1
 censurfridns.dk, 1
 censurfridns.nu, 1
 censys.io, 1
 centa-am.com, 1
 centaur.de, 1
 centennialradon.com, 1
 centennialseptic.com, 1
 centerpereezd.ru, 0
+centerperson.org, 1
 centio.bg, 1
+centos.cz, 1
 centos.pub, 1
 centos.tips, 1
 central4.me, 1
 centralbank.ae, 1
 centralebigmat.eu, 1
 centralegedimat.eu, 1
 centralfor.me, 1
 centrallead.net, 1
@@ -8366,22 +8667,23 @@ centralpoint.be, 0
 centralpoint.nl, 0
 centralstatecu.org, 1
 centralvoice.org, 1
 centrationgame.com, 1
 centredaccueil.fr, 1
 centreoeil.ch, 1
 centrobill.com, 1
 centrojovencuenca.es, 1
+centrolavoro.org, 1
 centromasterin.com, 1
 centroperugia.gr, 1
 centrosocialferrel.pt, 1
 centrumhodinek.cz, 1
 centruvechisv.ro, 1
-centrym.top, 1
+centsi.io, 1
 centum.no, 1
 centura.de, 1
 centurialeonina.com, 1
 centurioninfosec.com, 1
 centurioninfosec.com.sg, 1
 centurioninfosec.hk, 1
 centurioninfosec.sg, 1
 centurionunderground.com, 1
@@ -8431,17 +8733,16 @@ cesdb.com, 1
 cesipagano.com, 1
 ceskepivnesety.sk, 1
 ceskepivnisety.cz, 1
 ceso-saco.com, 1
 cesobaly.cz, 1
 cestlav.it, 1
 cestunmetier.ch, 1
 cetamol.com, 1
-cetangarana.com, 1
 ceu.edu, 0
 cevo.com.hr, 1
 ceyizlikelisleri.com, 1
 cf-ide.de, 1
 cf-tm.net, 1
 cfan.space, 1
 cfda.gov, 1
 cfdcre5.org, 1
@@ -8461,16 +8762,17 @@ cg-systems.hu, 1
 cg.al, 1
 cg.search.yahoo.com, 0
 cgal.org, 1
 cgan.de, 1
 cgan.pw, 1
 cgbassurances.ch, 1
 cgbilling.com, 1
 cgcookiemarkets.com, 1
+cgf-charcuterie.com, 1
 cgminc.net, 1
 cgnparts.com, 1
 cgpe.com, 1
 cgsmart.com, 1
 cgtx.us, 1
 cgurtner.ch, 1
 ch-laborit.fr, 1
 ch-sc.de, 1
@@ -8540,16 +8842,17 @@ chaospott.de, 1
 chaosriftgames.com, 1
 chaoswars.ddns.net, 1
 chaotichive.com, 1
 chaouby.com, 1
 chapelaria.tf, 1
 chapelfordbouncers.co.uk, 1
 chapiteauxduleman.fr, 1
 chaplain.co, 1
+chapstick.life, 1
 charakato.com, 1
 charbonnel.eu, 1
 charcoal-se.org, 1
 charcoalvenice.com, 1
 charge.co, 0
 chargedmonkey.com, 1
 chargejuice.com, 1
 chargify.com, 1
@@ -8626,18 +8929,16 @@ chattergalerie.eu, 1
 chattergallery.com, 1
 chattersworld.nl, 1
 chatu.io, 1
 chatu.me, 1
 chatucomputers.com, 1
 chatxp.com, 1
 chatxsingle.net, 1
 chatxtutti.com, 1
-chatzimanolis.com, 1
-chatzimanolis.gr, 1
 chauffage-budget.fr, 1
 chaurocks.com, 1
 chaussenot.net, 1
 chaverde.org, 1
 chavetaro.com, 1
 chazalet.fr, 1
 chazay.net, 0
 chbk.co, 1
@@ -8667,32 +8968,35 @@ cheapgoa.com, 1
 cheapiesystems.com, 1
 cheapssl.com.tr, 1
 cheapticket.in, 1
 cheapwritinghelp.com, 1
 cheapwritingservice.com, 1
 cheatengine.pro, 1
 chebwebb.com, 1
 check.torproject.org, 0
+checkandreportlive.com, 1
+checkblau.de, 1
 checkecert.nl, 1
 checkjelinkje.nl, 1
 checkmyessay.com, 1
 checkmyessays.com, 1
 checkmyip.com, 1
 checkmypsoriasis.com, 1
 checkout.google.com, 1
 checkpoint-tshirt.com, 1
 checkras.tk, 1
 checkrente.nl, 1
 checkspf.net, 1
 checktype.com, 1
 checkui.com, 1
 checkyourmath.com, 1
 checkyourprivilege.org, 1
 checkyourreps.org, 1
+checookies.com, 1
 checos.co.uk, 1
 cheddarpayments.com, 1
 cheekycharliessoftplay.co.uk, 1
 cheekymonkeysinflatables.co.uk, 1
 cheela.org, 1
 cheeseemergency.co.uk, 1
 cheesefusion.com, 1
 cheesypicsbooths.co.uk, 1
@@ -8733,41 +9037,43 @@ cherryonit.com, 1
 cherrywoodtech.com, 1
 chertseybouncycastles.co.uk, 1
 chesapeakebaychristmas.com, 1
 chess.com, 1
 chessboardao.com, 1
 chesscoders.com, 1
 chesskid.com, 1
 chesspoint.ch, 1
-chesterlestreetasc.co.uk, 1
+chesterlestreetasc.co.uk, 0
 chestnut.cf, 1
 chetwood.se, 1
 chevy37.com, 1
 chevymotor-occasions.be, 1
 chewey.de, 1
 chewey.org, 1
 chewingucand.com, 1
 chez-janine.de, 1
 chez-oim.org, 1
 chez.moe, 1
 chfr.search.yahoo.com, 0
 chhory.com, 1
 chhy.at, 1
+chiangmaimontessori.com, 1
 chiaraiuola.com, 0
 chiaramail.com, 1
 chiaseeds24.com, 1
 chiboard.co, 1
 chibr.eu, 1
 chic-leather.com, 1
 chicagoemergencyclosings.com, 1
 chicagolug.org, 1
 chicagostudentactivists.org, 1
 chicisimo.com, 1
 chicolawfirm.com, 1
+chicurrichi.com, 1
 chiemgauflirt.de, 1
 chif16.at, 1
 chikan-beacon.net, 1
 chikazawa.info, 1
 chikory.com, 1
 childcare.gov, 1
 childcounseling.org, 1
 childcustodylegalaid.org, 1
@@ -8840,17 +9146,16 @@ chocolatier-tristan.ch, 1
 chocolytech.info, 1
 chocotough.nl, 1
 chocoweb.net, 1
 choe.fi, 1
 choiceautoloan.com, 1
 chokladfantasi.net, 1
 chollima.pro, 1
 chon.io, 1
-chonghe.org, 1
 chook.as, 1
 choootto.net, 1
 choosemypc.net, 1
 chopperdesign.com, 1
 chopperforums.com, 1
 chorkley.co.uk, 1
 chorkley.com, 1
 chorkley.me, 1
@@ -8889,17 +9194,16 @@ chrisshort.net, 0
 chrissx.ga, 1
 christadelphiananswers.org, 1
 christadelphians.eu, 1
 christchurchbouncycastles.co.uk, 1
 christec.net, 1
 christensenplace.us, 1
 christerwaren.fi, 1
 christiaanconover.com, 1
-christian-fischer.pictures, 1
 christian-folini.ch, 1
 christian-gredig.de, 1
 christian-host.com, 1
 christian-liebel.com, 1
 christian-stadelmann.de, 1
 christianbargon.de, 0
 christiancleva.com, 1
 christiancoleman.info, 1
@@ -8942,37 +9246,41 @@ christtheredeemer.us, 1
 christwaycounseling.com, 1
 chrisupjohn.xyz, 1
 chrisvannooten.tk, 1
 chriswald.com, 1
 chriswarrick.com, 1
 chriswbarry.com, 1
 chriswells.io, 1
 chromaryu.net, 0
+chromaxa.com, 1
 chromcraft-revington.com, 1
 chrome, 1
 chrome-devtools-frontend.appspot.com, 1
 chrome.com, 1
 chrome.google.com, 1
 chromebookchart.com, 1
 chromebooksforwork.com, 1
+chromeworld.ru, 1
 chromiumbugs.appspot.com, 1
 chromiumcodereview.appspot.com, 1
+chromopho.be, 1
 chronic101.xyz, 1
 chroniclesofgeorge.com, 1
 chronology.no, 1
 chronoshop.cz, 1
 chrpaul.de, 1
 chrstn.eu, 1
 chrysanthos.net, 1
 chrystajewelry.com, 1
 chs.us, 0
 chsh.moe, 0
 chshouyu.com, 1
 chsterz.de, 1
+chtsi.uk, 1
 chuchote-moi.fr, 1
 chuck.ovh, 1
 chuill.com, 1
 chun.pro, 1
 chunche.net, 1
 chundelac.com, 1
 chunk.science, 1
 chupadelfrasco.com, 1
@@ -9009,16 +9317,17 @@ cielbleu.org, 1
 cielly.com, 1
 cierreperimetral.com, 1
 cifop-numerique.fr, 1
 ciftlikesintisi.com, 1
 cig-dem.com, 1
 cigar-cartel.com, 1
 cigarterminal.com, 0
 cigoteket.se, 1
+cihar.com, 1
 ciiex.co, 1
 cilloc.be, 1
 cima-idf.fr, 1
 cimbalino.org, 1
 cimballa.com, 1
 cimfax.com, 1
 cinafilm.com, 1
 cinay.pw, 1
@@ -9029,16 +9338,17 @@ cine.to, 1
 cinefilia.tk, 1
 cinefilzonen.se, 1
 cinefun.net, 1
 cinemaclub.co, 1
 cinemarxism.com, 1
 cinemasetfree.com, 1
 cinemysticism.com, 1
 cineplex.my, 1
+cinkciarz.pl, 1
 cinnabon.com, 1
 cinq-elements.com, 1
 cinq-elements.fr, 1
 cinq-elements.net, 1
 cinsects.de, 1
 cinteo.com, 1
 cio-ciso-interchange.org, 1
 cio-cisointerchange.org, 1
@@ -9073,16 +9383,17 @@ cirujanooral.com, 1
 cisa.gov, 1
 ciscodude.net, 0
 cisoaid.com, 1
 cisofy.com, 1
 cispeo.org, 1
 ciss.ltd, 1
 cisum-cycling.com, 1
 cisy.me, 1
+citas-adultas.com, 1
 citationgurus.com, 1
 citcuit.in, 1
 citfin.cz, 1
 cities.cl, 1
 citimarinestore.com, 1
 citizen-cam.de, 1
 citizensbankal.com, 1
 citizenscience.gov, 0
@@ -9156,16 +9467,17 @@ claimnote.com, 1
 clairegold.com, 1
 clairescastles.co.uk, 1
 clan-ww.com, 1
 clanebouncycastles.com, 1
 clangwarnings.com, 0
 clanrose.org.uk, 1
 clanwarz.com, 1
 clapping-rhymes.com, 1
+claraism.com, 1
 clarkeaward.com, 1
 clarkwinkelmann.com, 1
 clase3.tk, 1
 clash.lol, 1
 clashersrepublic.com, 1
 class.com.au, 1
 classdojo.com, 1
 classicalpilates.ca, 1
@@ -9186,16 +9498,17 @@ clawe.de, 1
 clawhammer.dk, 1
 clayandcottonkirkwood.com, 1
 claygregory.com, 1
 clayprints.com, 1
 claytoncondon.com, 1
 claytonstowing.com.au, 1
 clazzrooms.com, 1
 cldfile.com, 1
+cldinc.com, 1
 cldly.com, 1
 cleanapproachnw.com, 1
 cleanbrowsing.org, 1
 cleancode.club, 1
 cleandetroit.org, 1
 cleandogsnederland.nl, 1
 cleanfiles.us, 1
 cleanhouse2000.us, 1
@@ -9234,16 +9547,17 @@ clicheshishalounge.co.uk, 1
 click-licht.de, 1
 click2order.co.uk, 1
 click4web.com, 1
 clickclock.cc, 1
 clickenergy.com.au, 1
 clickingmad.com, 1
 clickphish.com, 1
 clicksaveandprint.com, 1
+clien.net, 1
 client.coach, 1
 clientboss.com, 1
 clientsecure.me, 1
 clifflu.net, 1
 climaencusco.com, 1
 climaprecio.es, 1
 climateinteractive.org, 1
 climatestew.com, 1
@@ -9316,17 +9630,22 @@ cloudlessdreams.com, 1
 cloudlight.biz, 1
 cloudnote.cc, 1
 cloudns.net, 1
 cloudoptimizedsmb.com, 1
 cloudoptimus.com, 1
 cloudpengu.in, 1
 cloudpipes.com, 1
 cloudse.co.uk, 1
+cloudsecurityalliance-europe.org, 1
+cloudsecurityalliance.com, 1
+cloudsecurityalliance.net, 1
 cloudsecurityalliance.org, 1
+cloudsecuritycongress.net, 1
+cloudsecuritycongress.org, 1
 cloudservice.io, 1
 cloudservices.nz, 1
 cloudsign.jp, 1
 cloudsocial.io, 1
 cloudspace-analytics.com, 1
 cloudspeedy.net, 1
 cloudspire.net, 1
 cloudteam.de, 1
@@ -9336,25 +9655,27 @@ cloudtskr.com, 1
 cloudup.com, 1
 cloudwarez.xyz, 1
 cloudwellmarketing.com, 1
 clouz.de, 1
 cloveros.ga, 1
 clownindeklas.nl, 1
 clownish.co.il, 1
 cloxy.com, 1
+cloze.com, 1
 clr3.com, 1
 clsfoundationrepairandwaterproofing.com, 1
 clsimage.com, 1
 clsoft.ch, 1
 clu-in.org, 1
 club-adulti.ro, 1
 club-climate.com, 1
 club-corsicana.de, 1
 club-creole.com, 1
+club-dieta.ru, 1
 club-duomo.com, 1
 club-is.ru, 1
 club-premiere.com, 1
 club-reduc.com, 1
 club-slow.jp, 1
 club-yy.com, 1
 club103.ch, 1
 clubcorsavenezuela.com, 1
@@ -9394,23 +9715,23 @@ cmgacheatcontrol.com, 1
 cmitao.com, 1
 cmlachapelle.ch, 1
 cmlancy.ch, 1
 cmlignon.ch, 1
 cmn-group.com, 1
 cmn-groupe.com, 1
 cmngroup.com, 1
 cmngroupe.com, 1
+cmov-plongeurs.fr, 1
 cmplainpalais.ch, 1
 cmrss.com, 1
 cms-weble.jp, 1
 cmskeyholding.co.uk, 1
 cmskeyholding.com, 1
 cmskh.co.uk, 1
-cmusical.es, 1
 cmv.gr, 1
 cmweller.com, 1
 cmylife.nl, 1
 cn.search.yahoo.com, 0
 cn8522.com, 1
 cna-aiic.ca, 1
 cna5.cc, 1
 cnam-idf.fr, 1
@@ -9462,16 +9783,17 @@ cocareonline.com, 1
 coccinellaskitchen.com, 1
 coccinellaskitchen.de, 1
 coccinellaskitchen.it, 1
 cocinoyo.com, 1
 cock.li, 1
 cockedey.in, 1
 cockerspanielamericano.com.br, 1
 cockerspanielingles.com.br, 1
+cockfile.com, 1
 cocktail-shaken.nl, 1
 cockybot.com, 1
 coco-cool.fr, 1
 coco-line.ch, 1
 cocoaheads.at, 0
 cocoamexico.com, 1
 cocodroid.com, 1
 coconutoil24.com, 1
@@ -9499,17 +9821,17 @@ codecommunity.io, 1
 codedelarouteenligne.fr, 1
 codedump.net, 1
 codeeclipse.com, 1
 codeferm.com, 1
 codefordus.de, 1
 codefordus.nrw, 1
 codefoundry.it, 0
 codehz.one, 1
-codein.ca, 1
+codein.ca, 0
 codeine.co.uk, 1
 codeit.guru, 1
 codeit.us, 1
 codejots.com, 1
 codejunkie.de, 0
 codeloop.pw, 1
 codemill.se, 1
 codemonster.eu, 1
@@ -9595,16 +9917,17 @@ coinbase.com, 1
 coinbit.trade, 1
 coincealed.com, 1
 coinchat.im, 1
 coincoele.com.br, 1
 coincoin.eu.org, 1
 coincolors.co, 1
 coindatabase.net, 1
 coindeal.com, 1
+coindesfilles.fr, 1
 coinessa.com, 1
 coinf.it, 1
 coinflux.com, 1
 coingate.com, 1
 coinjar-sandbox.com, 1
 coinlist.co, 0
 coinloan.io, 1
 coinmewallet.com, 1
@@ -9622,53 +9945,56 @@ colapsys.net, 1
 colarelli.ch, 1
 colasjourdain.fr, 1
 coldaddy.com, 1
 coldawn.com, 0
 coldcardwallet.com, 1
 coldfff.com, 0
 coldhak.ca, 1
 coldstreamcreekfarm.com, 1
+colectivointerconductual.com, 1
 colegiocierp.com.br, 1
 colemak.com, 1
 colengo.com, 1
 colf.online, 1
 colibris.xyz, 1
-colincampbell.me, 1
 colinchartier.com, 1
 colincogle.name, 1
 colinsnaith.co.uk, 1
 colinstark.ca, 1
 colisfrais.com, 1
+collab.ddnss.org, 1
 collabora-office.com, 1
 collabora.ca, 1
 collabora.co.kr, 1
 collabora.co.uk, 1
 collabora.com, 1
 collabora.kr, 1
 collabora.ninja, 1
 collabora.social, 1
 collabora.uk, 1
 collaboracloudsuite.com, 1
 collaboraoffice.co.uk, 1
 collaboraoffice.com, 1
+collaborativehealthpsychology.com, 1
 collabornation.net, 1
 collaction.hk, 1
 collada.org, 1
 collectdocs.com, 1
 collectfood.com, 1
 collectiblebeans.com, 1
 collectivesupply.com, 1
 collectorknives.net, 1
 collectorsystems.com, 1
 colleencornez.com, 1
 collegeconnexxions.com.au, 1
 collegenavigator.gov, 1
 collegepaperworld.com, 1
 collegeprospectsofcentralindiana.com, 1
+collegereligionandphilosophy.com, 1
 collegestationhomes.com, 1
 collinel-hossari.com, 1
 collinelhossari.com, 1
 collinklippel.com, 1
 collinmbarrett.com, 1
 collins.kg, 1
 colo-tech.com, 1
 cololi.moe, 1
@@ -9708,18 +10034,20 @@ combron.be, 1
 combron.co.uk, 1
 combron.com, 1
 combron.nl, 1
 comchezmeme.com, 1
 comcol.nl, 1
 comdotgame.com, 1
 comdurav.com, 1
 comeals.com, 1
+comedyhuis.nl, 1
 comefollowme2016.com, 1
 comeoishii.com, 1
+comercialdragon.com, 1
 comercialtpv.com, 1
 comercialtrading.eu, 1
 comerford.net, 1
 comestoarra.com, 1
 cometbot.cf, 1
 cometcache.com, 1
 cometonovascotia.ca, 1
 comevius.com, 1
@@ -9737,18 +10065,20 @@ comicspornoxxx.com, 1
 comicwiki.dk, 1
 comiq.io, 1
 comiteaintriathlon.fr, 1
 comm.cx, 1
 commania.co.kr, 1
 commco.nl, 1
 commechezvous.ch, 1
 commerce.gov, 1
+commercezen.com, 1
 commercial-academy.fr, 1
 commeunamour.com, 1
+commissaris-vraagbaak.nl, 1
 commissionagenda.com, 1
 commitsandrebases.com, 1
 common.io, 1
 commoncode.com.au, 1
 commoncode.io, 1
 commoncore4kids.com, 1
 commonspace.la, 1
 communityblog.fedoraproject.org, 1
@@ -9800,20 +10130,22 @@ completionist.me, 1
 complex-organization.com, 1
 complexart.ro, 1
 complexorganizations.com, 1
 compliance-management.ch, 1
 compliance-systeme.de, 1
 compliancedictionary.com, 1
 compliancerisksoftware.co.uk, 1
 complt.xyz, 1
+componentshop.co.uk, 1
 compostatebien.com.ar, 1
 compoundingrxusa.com, 1
 compraneta.com, 0
 compraporinternet.online, 1
+comprarefiereygana.com, 1
 comprarimpresoras-3d.com, 1
 compree.com, 1
 comprefitasadere.com.br, 1
 comprehensiveihc.com, 1
 compromised.com, 1
 compservice.in.ua, 1
 comptrollerofthecurrency.gov, 1
 comptu.com, 1
@@ -9832,16 +10164,17 @@ computerbase.de, 1
 computercamaccgi.com, 1
 computercraft.net, 1
 computeremergency.com.au, 0
 computerfreunde-barmbek.de, 1
 computerhilfe-feucht.de, 1
 computernetwerkwestland.nl, 1
 computerslotopschool.nl, 1
 computersystems.guru, 0
+computerwerk.org, 1
 computop.com, 1
 comtily.com, 1
 comunidadmontepinar.es, 1
 comvos.de, 1
 comw.cc, 1
 conalcorp.com, 1
 conatus.ai, 1
 conaudisa.com, 0
@@ -9853,16 +10186,17 @@ concerto.amsterdam, 1
 concertsenboite.fr, 1
 concertsto.com, 1
 conciliumnotaire.ca, 1
 conclave.global, 1
 concordsoftwareleasing.com, 1
 concretehermit.com, 0
 concretelevelingsystems.com, 1
 concreterepairatlanta.com, 1
+concreterepairconcreteraising.com, 1
 concursopublico.com.br, 1
 concursos.com.br, 1
 concursosabertos.com.br, 1
 concursuri.biz, 1
 condepenalba.com, 0
 condesaelectronics.com, 1
 condolencemessages.net, 1
 condominioweb.com, 1
@@ -9880,16 +10214,17 @@ conejovalleyoutdoorlighting.com, 1
 conexiontransporte.com, 1
 conference.dnsfor.me, 1
 confiancefoundation.org, 1
 confidential.network, 1
 config.schokokeks.org, 0
 confiwall.de, 1
 conformist.jp, 1
 confucio.cl, 1
+congafasdesol.com, 1
 congineer.com, 1
 congobunkering.com, 1
 conju.cat, 1
 conjugacao.com.br, 1
 conkret.ch, 1
 conkret.co.uk, 1
 conkret.de, 1
 conkret.eu, 1
@@ -9913,17 +10248,18 @@ connext.de, 1
 connictro.de, 1
 conniesacademy.com, 1
 connorhatch.com, 1
 connorsmith.co, 1
 connyduck.at, 1
 conociendosalama.com, 1
 conocimientosdigitales.com, 1
 conorboyd.info, 1
-conory.com, 1
+conory.com, 0
+conotoxia.com, 1
 conpath.net, 1
 conpins.nl, 1
 conrad-kostecki.de, 1
 conrad.am, 1
 conradkostecki.de, 1
 conradsautotransmissionrepair.com, 1
 conrail.blue, 1
 consagracionamariasantisima.org, 1
@@ -9931,27 +10267,29 @@ consciouschoices.net, 1
 consciousnesschange.com, 1
 consec-systems.de, 1
 consegnafioridomicilio.net, 1
 consejosdenutricion.com, 1
 consensoprivacy.it, 1
 conservados.com.br, 1
 conservatoriesincornwall.com, 1
 consideredgifts.com, 1
+consideryourways.net, 1
 consilium-vitae.ch, 1
 consiliumvitae.ch, 1
 consill.com, 1
 console.ninja, 1
 console.rest, 1
 consommateuraverti.com, 1
 consonare.de, 1
 conspiracyservers.com, 1
 constancechen.me, 1
 constant-rough.de, 1
 constares.de, 1
+constituenttracker.com, 1
 constitution.website, 1
 constructexpres.ro, 1
 constructieve.nl, 1
 construction-colleges.com, 1
 construction-student.co.uk, 1
 constructionjobs.com, 1
 constructive.men, 1
 consul.io, 1
@@ -9964,16 +10302,17 @@ consultoriadeseguranca.com.br, 1
 consultoriosodontologicos.com.br, 1
 consultpetkov.com, 1
 consulvation.com, 1
 consumeractionlawgroup.com, 1
 consumerfiles.com, 1
 consumersentinel.gov, 1
 consuwijzer.nl, 1
 contactsingapore.sg, 1
+containerspace.com.au, 1
 contaquanto.com.br, 1
 contemplativeeducation.org, 1
 content-api-dev.azurewebsites.net, 0
 contentcoms.co.uk, 1
 contentpass.net, 1
 contessa32experience.com, 1
 contextplatform.com, 1
 conti-profitlink.co.uk, 1
@@ -10069,17 +10408,16 @@ cordlessdog.com, 1
 core-concepts.de, 0
 core-networks.de, 1
 core.mx, 1
 core.org.pt, 1
 coreapm.com, 1
 coreapm.org, 1
 corecdn.org, 1
 corecodec.com, 1
-coredump.gr, 1
 coreless-stretchfilm.com, 1
 corelia.net, 1
 corepartners.com.ua, 1
 coresolutions.ca, 1
 coresos.com, 1
 coreum.ca, 1
 coreyjmahler.com, 1
 corgi.party, 1
@@ -10101,16 +10439,17 @@ cornodo.com, 1
 corona-academy.com, 1
 corona-renderer.cloud, 1
 corona-renderer.com, 1
 coropiacere.org, 1
 corourbano.es, 1
 corpfin.net, 1
 corpio.nl, 1
 corpkitnw.com, 1
+corpoepele.com.br, 1
 corpoflow.nl, 1
 corporacioninternacionallideres.org, 1
 corporateclash.net, 1
 corporatecomputingsolutions.com, 1
 corporateinfluencers.com, 1
 corporativoarval.info, 1
 corpsepaint.life, 1
 corpulant.coffee, 1
@@ -10125,30 +10464,32 @@ correcthorse.cf, 1
 correctiv.org, 1
 correiodovale.com.br, 1
 corrick.io, 1
 corrupted.io, 1
 corsa-b.uk, 1
 corscanplus.com, 1
 corsectra.com, 1
 corsihaccpsicurezzalavoro.it, 1
+corso-antincendio.org, 1
 cortexitrecruitment.com, 1
 cortexx.nl, 1
 cortis-consulting.ch, 1
 cortisolsupplement.com, 1
 corvax.kiev.ua, 1
 corvus.eu.org, 1
 coryadum.com, 1
 corytyburski.com, 1
 cosasque.com, 1
 cosciamoos.com, 1
 cosirex.com, 1
 coslinker.com, 1
 cosmechic.fr, 1
 cosmekaitori.jp, 1
+cosmetic-surgery-prices.co.uk, 1
 cosmeticappraisal.com, 1
 cosmeticasimple.com, 1
 cosmeticos-naturales.com, 1
 cosmeticosdelivery.com.br, 1
 cosmiatria.pe, 1
 cosmicnavigator.com, 1
 cosmodacollection.com, 1
 cosmofunnel.com, 1
@@ -10159,16 +10500,17 @@ cospol.ch, 1
 costa-rica-reisen.de, 1
 costablanca.villas, 1
 costablancavoorjou.com, 1
 costcoinsider.com, 1
 costellofc.co.uk, 1
 costinstefan.eu, 1
 costreportdata.com, 0
 costulessdirect.com, 1
+cote-chasse.com, 1
 coteries.com, 1
 cotoacc.com, 1
 cotonmusic.ch, 1
 cotta.dk, 1
 cotwe-ge.ch, 1
 cougar.dating, 1
 coumoul.fr, 1
 counselling.network, 1
@@ -10221,24 +10563,31 @@ cowo.group, 1
 coworking-luzern.ch, 1
 coxcapitalmanagement.com, 1
 coxxs.me, 1
 coxxs.moe, 1
 cozmaadrian.ro, 1
 cozo.me, 1
 cozyeggdesigns.com, 1
 cp-st-martin.be, 1
+cpahunt.com, 0
 cpaneltips.com, 1
 cpap.com, 1
 cpasperdu.com, 1
 cpbanq.com, 1
 cpbapremiocaduceo.com.ar, 1
 cpcheats.co, 1
 cpd-education.co.uk, 1
 cpe-colleg.de, 1
+cpe-registry.com, 1
+cpe-registry.net, 1
+cpe-registry.org, 1
+cperegistry.com, 1
+cperegistry.net, 1
+cperegistry.org, 1
 cphpvb.net, 1
 cplala.com, 1
 cplus.me, 1
 cplusplus.se, 1
 cppan.org, 1
 cppressinc.com, 1
 cpqcol.gov.co, 1
 cprheartcenter.com, 1
@@ -10301,16 +10650,17 @@ crawleybouncycastles.co.uk, 1
 crawlspaceandbasementsolutions.com, 1
 crazy-bulks.com, 1
 crazy-cat.net, 1
 crazy-coders.com, 1
 crazybulk.co.uk, 1
 crazybulk.com, 1
 crazybulk.de, 1
 crazybulk.fr, 1
+crazybulksteroids.com, 1
 crazycastles.ie, 1
 crazydomains.ae, 1
 crazydomains.co.nz, 1
 crazydomains.co.uk, 1
 crazydomains.com.au, 1
 crazydomains.in, 1
 crazymeeshu.com, 1
 crazynoisybizarre.town, 1
@@ -10326,20 +10676,22 @@ crea.me, 1
 creadstudy.com, 1
 crealogix-online.com, 1
 creamcastles.co.uk, 1
 creared.edu.co, 1
 create-ls.jp, 1
 createcos.com, 1
 createme.com.pl, 1
 createursdefilms.com, 1
+creaticworld.net, 1
 creatieven.com, 1
 creation-contemporaine.com, 1
 creations-edita.com, 1
 creative-wave.fr, 1
+creativeangles.in, 1
 creativebites.de, 1
 creativecaptiv.es, 1
 creativecommons.gr, 1
 creativecommons.org, 1
 creativecommonscatpictures.com, 1
 creativeconceptsvernon.com, 1
 creativedigital.co.nz, 1
 creativefolks.co.uk, 1
@@ -10357,22 +10709,22 @@ creativesurvey.com, 1
 creativeweb.biz, 1
 creativewolf.net, 1
 creativosonline.org, 1
 creatixx-network.de, 0
 creato.top, 1
 creators-design.com, 1
 creators.co, 1
 creators.direct, 1
+creatorswave.com, 1
 creatujoya.com, 1
 credential.eu, 1
 credex.bg, 1
 credigo.se, 1
 crediteo.pl, 1
-creditkarma.com, 1
 creditos-rapidos.com, 1
 creditozen.es, 1
 creditozen.mx, 1
 creditproautos.com, 0
 creditscoretalk.com, 1
 creditta.com, 1
 credittoken.io, 1
 creeks-coworking.com, 1
@@ -10430,16 +10782,17 @@ crm114d.com, 1
 crochetnerd.com, 1
 croeder.net, 1
 croisedanslemetro.com, 1
 croixblanche-haguenau.fr, 1
 cromefire.myds.me, 1
 cromosomax.com, 1
 cronberg.ch, 1
 croncron.io, 1
+cronenberg.cc, 1
 cronix.cc, 1
 cronologie.de, 1
 cronometer.com, 1
 crop-alert.com, 1
 cropdiagnosis.com, 1
 crosbug.com, 1
 crose.co.uk, 1
 cross-led-sign.com, 1
@@ -10505,21 +10858,23 @@ cryptocaseproject.com, 1
 cryptocon.org, 1
 cryptoegg.ca, 1
 cryptofan.org, 1
 cryptofrog.co, 1
 cryptography.ch, 1
 cryptography.io, 1
 cryptoguidemap.com, 1
 cryptoisnotacrime.org, 1
+cryptojacks.io, 1
 cryptojourney.com, 1
 cryptoki.fr, 1
 cryptolinc.com, 1
 cryptology.ch, 1
 cryptolosophy.org, 1
+cryptomail.nl, 1
 cryptomaniaks.com, 1
 cryptonom.org, 1
 cryptonym.com, 1
 cryptoparty.at, 1
 cryptoparty.dk, 1
 cryptoparty.tv, 1
 cryptopartynewcastle.org, 1
 cryptopartyutah.org, 1
@@ -10537,18 +10892,26 @@ crystalapp.ca, 1
 crystalchandelierservices.com, 1
 crystalgrid.net, 1
 crystaloscillat.com, 1
 crystalzoneshop.com, 1
 crystone.me, 1
 cryz.ru, 1
 cs-colorscreed-betongulve.dk, 1
 cs2016.ch, 1
+csa-library.org, 1
+csaapac.com, 1
+csaapac.org, 1
 csabg.org, 1
+csacongress.com, 1
 csacongress.org, 1
+csacongress.us, 1
+csadc.org, 1
+csasummit.net, 1
+csasummit.org, 1
 csbs.fr, 1
 csbuilder.io, 1
 csca.me, 1
 cscdn.net, 1
 csd-sevnica.si, 1
 csehnyelv.hu, 1
 csengle.de, 1
 csfcloud.com, 1
@@ -10566,31 +10929,33 @@ cshopify.com, 1
 cshub.nl, 1
 csi.lk, 1
 csilies.de, 1
 csinfo.us, 1
 csinterstargeneve.ch, 1
 cskentertainment.co.uk, 1
 csmainframe.com, 1
 csokolade.hu, 1
+csosa.gov, 1
 csovek-idomok.hu, 1
 csp.ch, 1
 cspeti.hu, 1
 cspvalidator.org, 1
 csrichter.com, 1
 csru.net, 1
 css.direct, 0
 css.net, 1
 cssai.eu, 1
 cssaunion.com, 1
 cstanley.net, 1
 cstb.ch, 1
 cstp-marketing.com, 1
 cstrong.nl, 1
 csu.st, 1
+csust.ac.cn, 1
 csuw.net, 1
 csvalpha.nl, 1
 cswarzone.com, 1
 ct.search.yahoo.com, 0
 ctc-transportation.com, 1
 ctcom-peru.com, 1
 ctcue.com, 1
 ctf.link, 1
@@ -10610,16 +10975,17 @@ ctpe.net, 1
 ctr.id, 1
 ctrl.blog, 1
 ctrld.me, 1
 cu247secure.ie, 1
 cub-bouncingcastles.co.uk, 1
 cube-cloud.com, 1
 cube.builders, 1
 cube.de, 1
+cube.la, 1
 cubebot.io, 1
 cubebuilders.net, 1
 cubecart-demo.co.uk, 1
 cubecart-hosting.co.uk, 1
 cubecraft.net, 1
 cubecraftcdn.com, 1
 cubecraftstore.com, 1
 cubecraftstore.net, 1
@@ -10672,16 +11038,17 @@ curamail.co.uk, 1
 curareldolordeespalda.com, 1
 curatedgeek.com, 1
 curbside.com, 1
 curia.fi, 1
 curieux.digital, 1
 curio-shiki.com, 1
 curiosity-driven.org, 1
 curiouspeddler.com, 1
+curlify.com, 1
 curlybracket.co.uk, 1
 currency-strength.com, 1
 currentlystreaming.com, 1
 currentlyusa.com, 1
 currentobserver.com, 1
 currynissanmaparts.com, 1
 cursos-trabajadores.net, 1
 cursos.com, 1
@@ -10742,22 +11109,24 @@ cvcoders.com, 1
 cve-le-carrousel.ch, 1
 cviip.ca, 1
 cviip.com, 1
 cvjd.me, 1
 cvl.ch, 1
 cvlibrary.co.uk, 1
 cvmu.jp, 1
 cvr.dk, 1
+cvtemplatemaster.com, 1
 cvursache.com, 1
 cvv.cn, 1
 cw-bw.de, 0
 cw.center, 1
 cwagner.me, 1
 cwbrtrust.ca, 1
+cwc.gov, 1
 cwgaming.co.uk, 1
 cwilson.ga, 1
 cwinfo.fi, 1
 cwmart.in, 1
 cwningen.cymru, 0
 cwrau.com, 1
 cwrau.de, 1
 cwrau.info, 1
@@ -10770,39 +11139,42 @@ cwrcoding.com, 1
 cxadd.com, 1
 cy.ax, 1
 cyanghost.com, 1
 cybbh.space, 1
 cyber-computer.club, 1
 cyber.cafe, 1
 cyber.je, 1
 cyberatlantis.com, 1
+cyberbot.info, 1
 cybercareers.gov, 1
-cybercloud.cc, 1
 cybercocoon.com, 1
 cybercrew.cc, 1
 cybercrime-forschung.de, 1
 cybercrime.gov, 1
+cybercymru.co.uk, 0
 cyberdos.de, 0
 cyberduck.io, 1
+cyberdyne.llc, 1
 cyberexplained.info, 1
 cybergates.org, 1
 cybergrx.com, 1
 cyberguerrilla.info, 1
 cyberguerrilla.org, 1
 cyberhipsters.nl, 1
 cyberianhusky.com, 1
 cyberkov.com, 1
 cyberlab.kiev.ua, 0
 cyberlegal.co, 1
 cyberlightapp.com, 1
 cybermeldpunt.nl, 1
 cyberogism.com, 1
 cyberoptic.de, 1
 cyberpeace.nl, 1
+cyberphaze.com, 1
 cyberpioneer.net, 0
 cyberpubonline.com, 1
 cyberregister.nl, 1
 cyberregister.org, 1
 cybersafesolutions.com, 1
 cybersantri.com, 1
 cyberscan.io, 1
 cybersecurity.nz, 1
@@ -10823,17 +11195,16 @@ cybertu.be, 1
 cyberwars.dk, 1
 cyberwire.nl, 1
 cyberxpert.nl, 1
 cybit.io, 1
 cybozu.cn, 1
 cybozu.com, 1
 cybozulive-dev.com, 1
 cybozulive.com, 1
-cybrary.it, 1
 cyclebeads.com, 1
 cyclehackluxembourgcity.lu, 1
 cycleluxembourg.lu, 1
 cyclinggoodso.com, 1
 cyclisjumper.gallery, 1
 cyclop-editorial.fr, 1
 cydetec.com, 1
 cyelint.com, 1
@@ -10907,16 +11278,19 @@ d3xt3r01.tk, 1
 d3xx3r.de, 1
 d42.no, 1
 d4done.com, 1
 d4rkdeagle.tk, 1
 d4wson.com, 1
 d4x.de, 1
 d66.nl, 1
 d6c5yfulmsbv6.cloudfront.net, 1
+d7211.com, 1
+d7215.com, 1
+d7216.com, 1
 d8.io, 1
 d88688.com, 1
 d88871.com, 1
 d88988.com, 1
 d8studio.net, 1
 da.hn, 1
 da42foripad.com, 1
 daallexx.eu, 1
@@ -10925,54 +11299,59 @@ dabblegoat.com, 1
 dabneydriveanimalhospital.com, 1
 dabuttonfactory.com, 1
 dachb0den.net, 1
 dachdecker-ranzenberger.de, 1
 dachdeckermeister-egon-weiss.de, 1
 dachtechnik-windschuettl.de, 1
 daciaforum.nl, 1
 daciamodellen.nl, 1
+daddybio.com, 1
 dado.fr, 1
 dado.me, 1
 dado.virtual.museum, 1
 dadons-laserdiscs.com, 1
 dadosch.de, 1
 dadrian.io, 0
 daduke.org, 1
 daemen.org, 1
 daemon.xin, 1
 daemwool.ch, 1
 daevel.fr, 1
 dafnik.me, 1
 dafont.com, 1
 dafricapress.com, 1
+dafyddcrosby.com, 1
 dag-hebergement.fr, 1
 dag-konsult.com, 1
 dagensannonser.se, 1
 dagmar2018.cz, 1
 dahlberg.cologne, 1
 dai.top, 1
+dai94.com, 1
 daigakujuken-plus.com, 1
 daikoz.com, 1
 dailybits.be, 1
 dailyblogged.com, 1
 dailyemailinboxing.com, 1
 dailyenglishchallenge.com, 1
 dailyhealthguard.com, 1
 dailykos.com, 1
 dailyrover.com, 1
 dailyroverr.com, 1
 dailytopix.com, 1
 dailyxenang.com, 1
 daintymeal.com, 1
+dair.se, 1
 dairyshrine.org, 1
 daisakuikeda.org, 1
 daisidaniels.co.uk, 1
 daisy-peanut.com, 1
 daisypeanut.com, 1
+daitouryu-jujutsu.com, 1
 daiweihu.com, 1
 daiyuu.jp, 1
 dajiadu.net, 1
 dak.org, 1
 daknob.net, 1
 daktarisys.com, 1
 daladubbeln.se, 1
 dalaran.city, 1
@@ -10995,20 +11374,20 @@ damedrogy.cz, 1
 damejidlo.cz, 1
 dameocio.com, 1
 damghaem.ir, 1
 damicris.ro, 1
 damienoreilly.org, 1
 daminiphysio.ca, 1
 damip.net, 1
 damirsystems.com, 1
+damjanovic.it, 1
 damjanovic.work, 1
 dammekens.be, 1
 damngoodpepper.com, 0
-damongant.de, 1
 damonline.dk, 1
 dampedia.com, 1
 dan-informacijske-varnosti.si, 1
 dan.me.uk, 1
 dan.org.nz, 1
 danaketh.com, 1
 danamica.dk, 1
 danandrum.com, 1
@@ -11017,16 +11396,18 @@ danbaldwinart.com, 1
 danburycampervans.co.uk, 1
 dance-colleges.com, 1
 danchen.org, 1
 dancingcubs.co.uk, 1
 dancingshiva.at, 0
 dandenongroadapartments.com.au, 1
 dandymrsb.com, 1
 daneandthepain.com, 1
+danfromit.co.uk, 1
+danfromit.com, 1
 dango.in, 1
 dangr.zone, 1
 danhalliday.com, 1
 danholloway.online, 1
 daniel-baumann.ch, 1
 daniel-cholewa.de, 1
 daniel-du.com, 1
 daniel-kulbe.de, 1
@@ -11088,16 +11469,17 @@ danminkevitch.com, 0
 danna-salary.com, 1
 dannhanks.com, 1
 dannicholas.net, 1
 danny-tittel.de, 1
 danny.fm, 1
 dannycairns.com, 1
 dannyrohde.de, 1
 dannystevens.co.uk, 1
+danonsecurity.com, 1
 danotage.tv, 1
 danoz.net, 1
 danpiel.net, 1
 dansa.com.co, 1
 dansage.co, 1
 danscomp.com, 1
 dansdiscounttools.com, 1
 danselibre.net, 1
@@ -11117,16 +11499,17 @@ danyabanya.com, 1
 danzac.com, 1
 dao.spb.su, 1
 daoro.net, 1
 daphne.informatik.uni-freiburg.de, 1
 dapim.co.il, 1
 daplie.com, 1
 dapps.earth, 1
 dappworld.com, 1
+dara-berlin.de, 1
 daracokorilo.com, 1
 daravk.ch, 1
 darbi.org, 1
 darbtech.net, 1
 darc-mak.de, 1
 darchoods.net, 0
 darcymarshall.com, 1
 dareyou.be, 1
@@ -11260,16 +11643,17 @@ dateno1.com, 1
 datenreiter.org, 1
 datenschutz-consult.de, 1
 datenschutz-individuell.de, 1
 datenschutzgrundverordnung.de, 1
 datenschutztag.org, 1
 datenschutzzentrum.de, 1
 datenwerkstatt.net, 1
 datewon.net, 0
+datingsite-vergelijken.website, 1
 datingticino.ch, 1
 datmancrm.com, 1
 dator-test.se, 1
 datorb.com, 1
 datorhjalp-stockholm.se, 1
 datorhjalptaby.se, 1
 datorservice-stockholm.se, 1
 datovyaudit.cz, 1
@@ -11278,16 +11662,17 @@ datumou-recipe.com, 1
 datumstudio.jp, 1
 daubecity.de, 1
 daubehosting.de, 1
 dave-pearce.com, 1
 daveaglick.com, 1
 davecardwell.com, 1
 davelynes.com, 1
 daveoc64.co.uk, 1
+daveops.net, 1
 davepage.me.uk, 1
 davepearce.com, 1
 daverandom.com, 1
 davescomputertips.com, 1
 davesharpe.com, 1
 davesinclair.com.au, 1
 davetempleton.com, 1
 davevelopment.net, 1
@@ -11296,29 +11681,31 @@ david-corry.com, 1
 david-hinschberger.me, 1
 david-jeffery.co.uk, 1
 david-pearce.com, 1
 david-reess.de, 1
 david-schiffmann.de, 1
 david.kitchen, 1
 davidadrian.org, 1
 davidandersson.se, 1
+davidandrewcoaching.com, 1
 davidbranco.me, 1
 davidbrito.tech, 1
 davidbuckell.com, 1
 davidcrx.net, 1
 daviddever.net, 1
 davidfetveit.com, 1
 davidforward.com, 1
 davidforward.net, 1
 davidfrancoeur.com, 1
 davidgouveia.net, 1
 davidgow.net, 1
 davidgrudl.com, 1
 davidhanle.com, 1
+davidkeane.com, 1
 davidkennardphotography.com, 1
 davidking.xyz, 1
 davidlamprea.com, 1
 davidlane.io, 1
 davidlillo.com, 1
 davidlyness.com, 1
 davidmcevoy.org.uk, 1
 davidmessenger.co.uk, 1
@@ -11358,37 +11745,45 @@ daycontactlens.com, 1
 daydream.team, 1
 daylight-dream.ee, 1
 daylightpirates.org, 1
 dayman.net, 1
 daymprove.life, 1
 dayofdays.be, 1
 days.one, 1
 daysoftheyear.com, 1
+dazz.it, 1
+dazzit.ca, 1
+dazzit.com, 1
+dazzit.net, 1
+dazzit.org, 1
+dazzit.xyz, 1
 db-sanity.com, 1
 db-works.nl, 1
 db.ci, 1
 dbapress.org, 1
 dbaron.org, 1
 dbas.cz, 1
 dbcom.ru, 1
 dbdc.us, 1
 dbentertainment.co.uk, 1
 dbgamestudio.com, 1
 dbjc.tk, 1
+dbjl.fr, 1
 dblcastles.co.uk, 1
 dbldub.net, 1
 dblx.io, 1
 dbmiller.org, 1
 dbmteam.com, 1
 dbmxpca.com, 1
 dborcard.com, 1
 dbox.ga, 1
 dbpkg.com, 1
 dbq.com, 1
+dbrand.com, 1
 dbrgn.ch, 1
 dbtsai.com, 1
 dc-elektro.com, 1
 dc-elektro.de, 1
 dc-elektro.eu, 1
 dc-occasies.be, 1
 dc-solution.de, 0
 dc1.com.br, 1
@@ -11406,16 +11801,17 @@ dckd.nl, 1
 dcl.re, 1
 dclaisse.fr, 1
 dcmediahosting.com, 1
 dcmt.co, 1
 dcpower.eu, 1
 dcrdev.com, 1
 dcw.io, 1
 dd.art.pl, 1
+dd7211.com, 1
 ddatsh.com, 1
 ddays2008.org, 1
 ddel.de, 1
 dden.ca, 1
 dden.website, 1
 dden.xyz, 1
 ddepot.us, 1
 ddfreedish.site, 0
@@ -11436,16 +11832,17 @@ de-gucci.com, 1
 de-mail.info, 1
 de-medici.nl, 1
 de-osopanda.com, 1
 de-rwa.de, 1
 de-servers.de, 1
 de-spil.be, 1
 de.search.yahoo.com, 0
 deadbeef.ninja, 1
+deadbyhost.com, 1
 deadc0de.re, 1
 deadinsi.de, 0
 deadmann.com, 1
 deadsoul.net, 0
 deaf.dating, 1
 deaf.eu.org, 1
 deai-life.biz, 1
 deaktualisierung.org, 0
@@ -11459,16 +11856,17 @@ dealbanana.de, 1
 dealbanana.fi, 1
 dealbanana.fr, 1
 dealbanana.it, 1
 dealbanana.se, 1
 dealcruiser.nl, 1
 dealerselectric.com, 1
 dealinflatables.co.uk, 1
 dealpass.no, 1
+dealspotr.com, 1
 deamuseum.org, 1
 deanbank.com, 1
 deanisa.ninja, 1
 deanjerkovich.com, 1
 deanmorgan.org, 1
 deano-s.co.uk, 1
 deanosplace.net, 1
 deanpearce.net, 1
@@ -11481,50 +11879,53 @@ dearnevalleybouncycastles.co.uk, 1
 deathofspring.com, 1
 deathy.ro, 1
 debarrasantony.com, 1
 debarrasasnieressurseine.com, 1
 debarrasboulognebillancourt.com, 1
 debarrasclichy.com, 1
 debarrascolombes.com, 1
 debarrasnanterre.com, 1
+debatereport.com, 1
 debbyefurd.com, 1
 debie-usedcars.be, 1
 debigare.com, 1
 debora-singkreis.de, 1
 deborahmarinelli.eu, 1
 debron-ot.nl, 1
 debrusoft.ch, 1
+debt.com, 1
 debtrecycling.com.au, 1
 debuemon.com, 1
 debuis.nl, 1
 decaffeinated.io, 1
 decalquai.ch, 1
 decay24.de, 1
 dechat.nl, 1
 decher.de, 1
 decidetreatment.org, 1
+decimatechnologies.eu, 1
 decis.fr, 1
 decisivetactics.com, 1
 deckbuilderamerica.com, 1
 declivitas.com, 1
 decoating.pl, 1
 decock-usedcars.be, 1
 decodeanddestroy.com, 1
 decompiled.de, 1
 decoora.com, 1
 decor-d.com, 1
+decor-live.ru, 1
 decoratingadvice.co.uk, 1
 decoratore.roma.it, 1
 decoratrix.com, 1
 decorauvent.ca, 1
 decorincasa.com.br, 1
 decormiernissanparts.com, 1
 decosoftware.com, 1
-decoyrouting.com, 1
 decrousaz-ceramique.ch, 1
 decrypto.net, 1
 decs.es, 1
 dede.ml, 1
 dedelta.net, 1
 dedg3.com, 1
 dedge.org, 1
 dedicatedtowomenobgyn.com, 1
@@ -11534,25 +11935,26 @@ deduijventil.nl, 1
 dee.pe, 1
 dee.su, 1
 deechtebakkers.nl, 1
 deegeeinflatables.co.uk, 1
 deejayevents.ro, 1
 deelmijnreis.nl, 1
 deeonix.eu, 1
 deep-chess.com, 1
+deep-labs.com, 1
 deep.club, 1
 deepaero.com, 1
 deeparamaraj.com, 1
 deepbluecrafting.co.uk, 1
 deepblueemail.com, 1
 deepcode.io, 1
 deepcreampie.com, 1
-deeperxh.com, 1
 deephill.com, 1
+deepinnov.com, 1
 deepinsight.io, 1
 deeps.cat, 1
 deeps.me, 1
 deepserve.info, 1
 deepsouthsounds.com, 1
 deepspace.dedyn.io, 1
 deepvalley.tech, 1
 deepwealth.institute, 1
@@ -11588,49 +11990,51 @@ deftig-und-fein.de, 1
 deftnerd.com, 1
 defuse.ca, 1
 defxing.net, 1
 degata.com, 1
 degeberg.com, 1
 degeberg.dk, 1
 degen-elektrotechnik.de, 1
 degestamptepot.nl, 1
-degosoft.nl, 1
 degoulet.net, 1
 degraafschapdierenartsen.nl, 1
 degracetechnologie.com, 1
+degrasboom.nl, 1
 degressif.com, 1
 dehopre.com, 1
 deidee.nl, 1
+dein-trueffel.de, 1
 deinballon.de, 1
 deinewebsite.de, 1
 deinfoto.ch, 1
 deinserverhost.de, 1
 deitti.net, 1
 dejandayoff.com, 1
+dejting-sidor.com, 1
 dejure.org, 1
 dejw.cz, 1
 dekasegi-kansai.com, 1
 dekasiba.com, 1
 dekeurslagers.nl, 1
 dekka.cz, 1
 dekkercreativedesign.nl, 1
 dekko.io, 1
 dekoh-shouyu.com, 1
 dekonix.ru, 1
 dekulk.nl, 1
 delahrzolder.nl, 1
 delandalucia.com, 1
 delbecqvo.be, 1
-delbrouck.ch, 1
 delcopa.gov, 1
+deleenheir.be, 1
 deleidscheflesch.nl, 1
 delfic.org, 1
-delfino.cr, 1
 delhionlinegifts.com, 1
+deli-tochigi.jp, 1
 deliacreates.com, 1
 deliandiver.org, 1
 deliberatedigital.com, 1
 deliciisanatoase.ro, 1
 deliciousmedia.co.uk, 1
 deliciousmedia.net, 1
 delicioustable.com, 1
 delid.cz, 1
@@ -11649,25 +12053,26 @@ delta23.de, 0
 deltaacademy.org, 1
 deltadata.ch, 1
 deltafinanceiro.com.br, 1
 deltanio.nl, 1
 deltaonlineguards.com, 1
 deltaservers.com.br, 1
 deltasigmachi.org, 1
 deltava.org, 1
+deltawolf.tk, 1
 demarle.ch, 1
 dementiapraecox.de, 1
 demeyere-usedcars.be, 1
 demfloro.ru, 1
+demijn.nl, 1
 demilletech.net, 1
 demiranda.com, 1
 demmer.one, 1
 demo.sb, 1
-demo.swedbank.se, 1
 demo9.ovh, 1
 democracychronicles.com, 1
 democracyineurope.eu, 1
 democraziaineuropa.eu, 1
 demolandia.net, 1
 demomanca.com, 1
 demoniak.ch, 1
 demonwav.com, 1
@@ -11678,16 +12083,17 @@ demuzere.be, 1
 demuzere.com, 1
 demuzere.eu, 1
 demuzere.net, 1
 demuzere.org, 1
 denabot.pw, 1
 denaehula.com, 1
 denardbrewing.com, 1
 denbkh.ru, 1
+dengchangdong.com, 1
 dengode.eu, 1
 denimtoday.com, 1
 denis-martinez.photos, 1
 denisewakeman.com, 1
 denistruffaut.fr, 0
 deniszczuk.pl, 1
 denizdesign.co.uk, 1
 denkubator.de, 1
@@ -11716,16 +12122,17 @@ depaco.com, 1
 depaddestoeltjes.be, 1
 depannage-traceur.fr, 1
 deparis.me, 1
 depeces.com, 1
 depechemode-live.com, 1
 depedncr.com, 1
 depedshs.com, 1
 depedtalks.com, 1
+depedtambayan.net, 1
 depedtayo.com, 1
 depedtayo.ph, 1
 depicus.com, 1
 depone.net, 1
 depot-leipzig.de, 1
 depotsquarekerrville.com, 1
 depotter-usedcars.be, 1
 deprecate.de, 1
@@ -11779,44 +12186,45 @@ derreichesack.com, 1
 dersix.com, 1
 dersoundhunter.de, 1
 derstulle.de, 1
 des-hommes-et-des-clous.com, 1
 desagaz.com, 1
 desarrollowp.com, 1
 descartes-finance.com, 1
 desec.io, 1
+desenfans.com, 1
 desertmedaesthetics.com, 1
 desertsounds.org, 1
 desgenst.ch, 1
 design-in-bad.eu, 1
 design-tooning.de, 1
 designanyware.com.br, 1
-designdevs.eu, 1
 designed-cybersecurity.com, 1
 designedbygeniuses.com, 1
 designedcybersecurity.com, 1
 designer-drug.com, 1
 designera.se, 1
 designhotel-kronjuwel.de, 1
 designsbyjanith.com, 1
 designsbykerrialee.co.uk, 1
 designskin.ch, 1
 designville.cz, 1
 designville.sk, 1
 desila.jp, 1
 deskdesign.nl, 1
 deskeen.fr, 1
+deskguide.info, 1
 desktopd.eu.org, 1
 desktopfx.net, 0
 deskture.com, 1
 deskvip.com, 1
 desmaakvanplanten.be, 1
 desmo.gg, 1
-desormiers.com, 1
+desormiers.com, 0
 despachomartinyasociados.com, 1
 despertadoronline.com.es, 1
 desplats.com.ar, 1
 despora.de, 0
 despotika.de, 1
 dessinemoilademocratie.ch, 1
 destech.nl, 1
 desterman.ru, 1
@@ -11867,16 +12275,17 @@ deutscheshoponline.com, 1
 deutschland-dsl.de, 1
 deux.solutions, 1
 deuxmetrescubes.fr, 1
 deuxsol.co, 1
 deuxsol.com, 1
 deuxsolutions.com, 1
 dev, 1
 dev-brandywineglobal.com, 1
+dev-greavesindia.pantheonsite.io, 1
 dev-gutools.co.uk, 1
 dev-pulse-mtn.pantheonsite.io, 1
 dev-sev-web.pantheonsite.io, 1
 dev-tek.de, 1
 devafterdark.com, 1
 devagency.fr, 1
 devalps.eu, 1
 devb.nl, 1
@@ -11903,16 +12312,17 @@ developmentsites.melbourne, 1
 develops.co.il, 1
 developyourelement.com, 1
 develux.com, 1
 develux.net, 1
 devh.de, 1
 devh.net, 1
 deviant.email, 1
 devillers-occasions.be, 1
+devils-point.de, 1
 devilshakerz.com, 1
 deviltraxxx.de, 1
 devinfo.net, 0
 devirc.net, 1
 deviser.wang, 1
 devisnow.fr, 1
 devkid.net, 1
 devkit.cc, 0
@@ -11996,16 +12406,17 @@ dhxxls.com, 1
 di2pra.com, 1
 di2pra.fr, 1
 dia-de.com, 1
 dia.com.br, 1
 diablovalleytech.com, 1
 diabolic.chat, 1
 diadorafitness.es, 1
 diadorafitness.it, 1
+diag.com.ua, 1
 diagnocentro.cl, 1
 diagnostix.org, 1
 dialapicnic.co.za, 1
 dialectic-og.com, 1
 dialoegue.com, 1
 diamante.ro, 1
 diamantovaburza.cz, 1
 diamond-hairstyle.dk, 1
@@ -12041,16 +12452,17 @@ dichvudangkygiayphep.com, 1
 dicionario.org, 1
 dicionariodegirias.com.br, 1
 dicionariodelatim.com.br, 1
 dicionariodenomesproprios.com.br, 1
 dicionariodesimbolos.com.br, 1
 dicionarioetimologico.com.br, 1
 dicionariofinanceiro.com, 1
 dicionariopopular.com, 1
+dicionarios.cc, 1
 dick.red, 1
 dickieslife.com, 1
 dickord.club, 1
 dickpics.ru, 1
 dicksakowicz.com, 1
 dicoding.com, 1
 dictionaryofnumbers.com, 1
 dictzone.com, 1
@@ -12061,16 +12473,17 @@ dideeducacion.com, 1
 didefamilia.com, 1
 didesalud.com, 1
 didierghez.com, 1
 didigotoffer.com, 1
 didikhari.web.id, 1
 die-bergfuehrer.de, 1
 die-besten-weisheiten.de, 1
 die-blahuts.de, 1
+die-bobbeloase.com, 1
 die-borts.ch, 1
 die-gruenen-teufel.de, 1
 die-partei-reutlingen.de, 1
 die-pizzabaeckerei.de, 1
 die-seide.de, 1
 die-sinlosen.de, 1
 die-speisekammer-reutlingen.de, 1
 diedrich.co, 1
@@ -12081,16 +12494,17 @@ diegerbers.de, 1
 diegobarrosmaia.com.br, 1
 diegogelin.com, 1
 diegorbaquero.com, 1
 diehl.io, 1
 diekperaiwseis.gr, 1
 diem-project.org, 1
 diemattels.at, 1
 dienchaninstitute.com, 1
+diendorfer.space, 1
 dienstplan.cc, 1
 dienstplan.one, 1
 dierabenmutti.de, 1
 dierenartsdeconinck.be, 1
 dieselanimals.lt, 1
 dieselgalleri.com, 1
 dieser.me, 1
 diesteppenreiter.de, 1
@@ -12129,22 +12543,24 @@ digimedia.cd, 0
 digioccumss.ddns.net, 1
 digipitch.com, 1
 digired.ro, 1
 digital-coach.it, 0
 digital-compounds.com, 1
 digital-eastside.de, 1
 digital-liberal.ch, 1
 digital-muscle.com.au, 1
+digital-sculpture.org, 1
 digital.gov, 1
 digital.govt.nz, 1
 digital1st.co.uk, 1
 digital2web.com, 0
 digitalarchitecture.com, 1
 digitalbitbox.com, 1
+digitalblood.eu, 1
 digitalbox.jp, 0
 digitalcash.cf, 1
 digitalcitizen.life, 1
 digitalcitizen.ro, 1
 digitalcloud.ovh, 1
 digitalcraftmarketing.co.uk, 1
 digitalcreationclass.com, 1
 digitaldashboard.gov, 1
@@ -12248,16 +12664,17 @@ dirba.io, 1
 direct-sel.com, 1
 direct365.es, 1
 directebanking.com, 1
 directelectricalltd.co.uk, 1
 directlinkfunding.co.uk, 1
 directme.ga, 1
 directnews.be, 1
 directorioz.com, 1
+directoryhub.io, 1
 directreal.sk, 1
 directspa.fr, 1
 directtwo.solutions, 1
 directtwosolutions.org, 0
 direktvermarktung-schmitzberger.at, 1
 direwolfsoftware.ca, 1
 dirk-scheele.de, 1
 dirk-weise.de, 1
@@ -12276,16 +12693,17 @@ disadattamentolavorativo.it, 1
 disanteimpianti.com, 1
 disc.uz, 1
 discarica.bari.it, 1
 discarica.bologna.it, 1
 discarica.it, 1
 discarica.roma.it, 1
 dischempharmacie.com, 1
 disciples.io, 1
+disciplesmakingdisciples.ca, 1
 disciplina.io, 1
 disco-crazy-world.de, 1
 discofitta.com, 1
 disconformity.net, 1
 discord-chan.net, 1
 discord.gg, 1
 discord4j.com, 1
 discordapp.com, 1
@@ -12302,16 +12720,17 @@ discoverhealthage.com, 0
 discoveringdocker.com, 1
 discoverthreejs.com, 1
 discoveryaima.com, 1
 discoveryballoon.org, 1
 discoveryottawa.ca, 1
 discoveryrom.org, 1
 discreet-condooms.nl, 1
 discrypt.ca, 1
+discus-communications.dk, 1
 dise-online.de, 1
 disinclined.org, 1
 disinfesta.it, 1
 disinfestando.info, 1
 disinfestatori.com, 1
 disinfestazione.brescia.it, 1
 disinfestazione.torino.it, 1
 disinfestazione.venezia.it, 1
@@ -12355,16 +12774,17 @@ dissidence.ovh, 1
 dissident.host, 1
 dist-it.com, 1
 dist.torproject.org, 0
 disti.com, 1
 distiduffer.org, 1
 distillery.com, 1
 distinctivephotography.com.au, 1
 distinguishedprisoner.com, 1
+distribuidoraplus.com, 1
 distribuidorveterinario.es, 1
 distrilogservices.com, 1
 distro.fr, 1
 ditch.ch, 1
 ditelbat.com, 1
 diti.me, 1
 ditisabc.nl, 1
 div.im, 1
@@ -12372,30 +12792,30 @@ diva.nl, 1
 divari.nl, 1
 divcoder.com, 1
 dive-japan.com, 1
 divedowntown.com, 1
 divegearexpress.com, 1
 divegearexpress.net, 1
 diveidc.com, 1
 diveplan.org, 1
-divergenz.org, 1
 diversifiedproduct.com, 1
 diversityflags.com, 1
 diversityflags.com.au, 1
 diversityflags.nz, 1
 divi-experte.de, 1
+dividendz.net, 1
 divinasaiamodas.com.br, 1
 divinegames.studio, 1
 divinemercyparishvld.com, 1
 divinemercyparishvlds.com, 1
 diving.photo, 1
 divingwithnic.com, 1
+divisuite.com, 1
 divorcelawyersformen.com, 1
-divorciosmurcia.com, 1
 diwei.vip, 1
 dixi.fi, 1
 dixibox.com, 1
 dixmag.com, 1
 diybook.at, 1
 diycc.org, 1
 diymediahome.org, 1
 diyosun.com, 1
@@ -12437,16 +12857,17 @@ dkstage.com, 1
 dkwedding.gr, 1
 dl.google.com, 1
 dlabouncycastlehire.co.uk, 1
 dlaspania.pl, 1
 dlbouncers.co.uk, 1
 dlcwilson.com, 1
 dlde.ru, 1
 dldl.fr, 1
+dleger.space, 1
 dlfsymposium.nl, 1
 dlg.im, 1
 dlitz.net, 1
 dll4free.com, 1
 dlld.com, 1
 dlouwrink.nl, 1
 dlrsp.org, 1
 dlscomputers.com.au, 1
@@ -12464,29 +12885,33 @@ dmailshop.ro, 1
 dmarc.dk, 1
 dmatrix.xyz, 1
 dmd.lv, 1
 dmdd.org.uk, 1
 dmess.ru, 1
 dmfd.net, 1
 dmi.es, 1
 dmitry.sh, 1
+dmix.ca, 1
+dmk-realestate.com, 1
 dmlogic.com, 1
 dmmkenya.co.ke, 1
 dmmultionderhoud.nl, 1
 dmparish.com, 1
 dmschilderwerken.nl, 1
 dmwall.cn, 1
 dmx.xyz, 1
 dmxledlights.com, 1
 dn3s.me, 1
 dn42.us, 1
 dna.li, 1
 dnacloud.pl, 1
 dnakids.co.uk, 1
+dnalounge.com, 1
+dnapizza.com, 1
 dnc.org.nz, 1
 dndtools.net, 1
 dne.lu, 1
 dnfc.rocks, 1
 dnlr.tech, 1
 dnmaze.com, 1
 dnmlab.it, 1
 dnplegal.com, 1
@@ -12520,16 +12945,17 @@ do67.net, 1
 dobraprace.cz, 1
 dobrev.family, 1
 dobrisan.ro, 1
 dobsnet.net, 1
 doc.python.org, 1
 doc.to, 0
 doc8643.com, 1
 docabo.ch, 1
+docassure.de, 1
 docbox.ch, 1
 doceamoraviverbem.com, 1
 docemeldoces.com, 1
 dochimera.com, 1
 dochitaceahlau.ro, 1
 dockerbook.com, 0
 dockerm.com, 1
 dockerup.net, 1
@@ -12545,16 +12971,17 @@ docsoc.org.uk, 1
 doctabaila.com, 1
 doctafit.com, 1
 doctor-locks.co.uk, 1
 doctor.dating, 1
 doctorbini.com, 1
 doctorfox.co.uk, 1
 doctorsonmaps.com, 1
 doctorwho.cz, 1
+doctorxdentist.com, 1
 docubox.info, 1
 docucopies.com, 1
 docudanang.com.vn, 1
 documaniatv.com, 1
 documentations-sociales.com, 1
 docusearch.com, 1
 dodds.cc, 1
 dodomu.ddns.net, 1
@@ -12573,16 +13000,17 @@ dogcratereview.info, 1
 doge.me, 1
 doge.town, 1
 dogear.ch, 1
 dogfi.sh, 1
 dogft.com, 1
 doggedbyirs.com, 1
 doggroomingcourse.com, 1
 dogmap.jp, 1
+dogodki.today, 1
 dogoo.com, 1
 dogpawstudio.com, 1
 dogprograms.net, 1
 dogrescuegreece.nl, 1
 dohanews.co, 1
 doihavetoputonpants.com, 1
 doitauto.de, 1
 dojifish.space, 1
@@ -12623,30 +13051,30 @@ domains.autos, 1
 domains.boats, 1
 domains.google.com, 1
 domains.homes, 1
 domains.motorcycles, 1
 domains.yachts, 1
 domainsilk.com, 1
 domainspeicher.one, 1
 domainstaff.com, 1
-domainwatch.me, 1
 domakidis.com, 1
 domaxpoker.com, 1
 domeconseil.fr, 1
 domein-direct.nl, 0
 domen-reg.ru, 1
 domenic.me, 1
 domenicam.com, 1
 domesticcleaners.co.uk, 1
 domfee.com, 1
 domhaase.me, 1
 domian.cz, 1
 dominationgame.co.uk, 1
 dominicself.co.uk, 1
+dominik-bergmann.de, 1
 dominik-schlueter.de, 1
 dominikaner-vechta.de, 1
 dominikkulaga.pl, 1
 dominioanimal.com.br, 1
 dominionregistries.domains, 1
 dominique-haas.fr, 0
 dominoknihy.cz, 1
 dominomatrix.com, 1
@@ -12678,16 +13106,17 @@ domytermpaper.com, 1
 domythesis.net, 1
 domyzitrka.cz, 1
 donabeneko.jp, 1
 donaldm.co.uk, 1
 donateaday.net, 1
 donboscogroep.nl, 1
 donfelino.tk, 0
 dongjingre.net, 1
+dongthucvat.com, 1
 dongxuwang.com, 1
 donjusto.nl, 1
 donkennedyandsons.com, 1
 donkeytrekkingkefalonia.com, 1
 donmaldeamores.com, 1
 donnaandscottmcelweerealestate.com, 1
 donnacha.blog, 1
 donnachie.net, 1
@@ -12813,34 +13242,33 @@ doujin-domain.cz, 1
 doujin.nagoya, 1
 doujinshi.info, 1
 doujinspot.com, 1
 dounats.com, 1
 douzer.de, 1
 douzer.industries, 1
 dovenzorgmalawi.nl, 1
 dovro.de, 1
-dowell.media, 1
-dowellconsulting.com, 1
 dowhatmakegood.de, 1
 dowling.nz, 1
 downloadaja.com, 1
 downloadgamemods.com, 1
 downloadgram.com, 1
 downloadhindimovie.com, 1
 downloadhindimovie.net, 1
 downloadhindimovies.net, 1
 downloads.zdnet.com, 1
 downloadsoftwaregratisan.com, 1
 downrightcute.com, 1
 downtimerobot.com, 1
 downtimerobot.nl, 1
 downtownautospecialists.com, 1
 downtownvernon.com, 1
 dox-box.eu, 1
+doxal.ro, 1
 doyoucheck.com, 0
 doyouedc.com, 1
 doyoulyft.com, 1
 doyoutax.com, 1
 doypacky.cz, 1
 doze-cloud.tech, 1
 dozecloud.com, 1
 dp.cx, 1
@@ -12872,16 +13300,20 @@ dr2dr.ca, 1
 draadloze-noodstop.nl, 1
 drabadir.com, 1
 drabbin.com, 1
 drabim.org, 1
 drach.xyz, 1
 drachenleder.de, 1
 dracisvet.cz, 1
 dracon.es, 1
+dracoon.cloud, 1
+dracoon.com, 1
+dracoon.de, 1
+dracoon.team, 1
 dracox.com, 1
 draftguru.com.au, 1
 drafton.com, 1
 drageeparadise.fr, 1
 dragfiles.com, 1
 draghetti.it, 1
 draghive.asia, 1
 draghive.ca, 1
@@ -12945,17 +13377,16 @@ dreadd.org, 1
 dreamaholic.club, 1
 dreamcreator108.com, 1
 dreamday-with-dreamcar.de, 1
 dreamdivers.com, 1
 dreamersgiftshopec.com, 1
 dreamhack.com, 1
 dreamhostremixer.com, 1
 dreaming.solutions, 1
-dreamkitchenbath.com, 1
 dreamlandmagic.com, 1
 dreamlinehost.com, 0
 dreamlordpress.it, 1
 dreamlux.cz, 1
 dreamlux.sk, 1
 dreammaker-nw.com, 1
 dreammakerremodelil.com, 1
 dreammakerutah.com, 1
@@ -12993,17 +13424,19 @@ drew.red, 1
 drewapianostudio.com, 1
 dreweryinc.com, 1
 drewsilcock.co.uk, 1
 dreyfussplasticsurgery.com, 1
 drezzy.it, 1
 drfranciscofonseca.com.br, 1
 drfrey.ch, 1
 drgdrp.com, 1
+drgn.li, 1
 drgn.no, 1
+drgrace.ca, 1
 drhathazi.hu, 1
 drheibel.com, 1
 drhoseyni.com, 1
 driesjtuver.nl, 1
 driessoftsec.tk, 1
 driftdude.nl, 1
 driftingruby.com, 1
 drighes.com, 1
@@ -13056,16 +13489,17 @@ droidandy.com, 1
 droidapp.nl, 1
 droidgyan.com, 1
 droidhere.com, 1
 droidim.com, 0
 droidwave.com, 1
 droidwiki.de, 1
 drone-it.net, 1
 dronebl.org, 1
+droneland.nl, 1
 dronepit.dk, 1
 droni.cz, 1
 dronnet.com, 0
 dronografia.es, 1
 dronova-art.ru, 1
 droomhuis-in-zuid-holland-kopen.nl, 1
 drop.com, 1
 dropbox.com, 1
@@ -13117,16 +13551,18 @@ drydrydry.com, 1
 dryerventcleaningarlington.com, 1
 dryerventcleaningcarrollton.com, 1
 dryjersey.com, 1
 drywallresponse.gov, 1
 ds67.de, 1
 dsancomics.com, 1
 dsanraffleshangbai.xyz, 1
 dsayce.com, 1
+dsble.de, 1
+dsbutler.de, 1
 dschwarzachtaler.de, 1
 dsdalismerkezi.com, 1
 dsebastien.net, 1
 dsektionen.se, 0
 dsgarms.com, 1
 dsgholsters.com, 1
 dsgnet.hu, 1
 dsgvo.name, 1
@@ -13157,16 +13593,17 @@ dtg-fonds.de, 1
 dtg-fonds.net, 1
 dtk-vom-chausseehaus.de, 1
 dtnx.net, 1
 dtoweb.be, 1
 dtp-mstdn.jp, 0
 dtpak.cz, 1
 dtuaarsfest.dk, 1
 dtx.sk, 1
+du-alex.ru, 1
 dualascent.com, 1
 dualias.xyz, 0
 duan.li, 1
 dub.cz, 1
 dubai-company.ae, 1
 dubaieveningsafari.com, 1
 dubaosheng.com, 1
 dubbingkursus.dk, 1
@@ -13177,16 +13614,17 @@ dubrovskiy.net, 1
 dubrovskiy.pro, 1
 dubtrack.fm, 1
 ducalendars.com, 1
 duch.cloud, 1
 duchyoffeann.com, 1
 ducius.net, 1
 duckbase.com, 1
 duckblade.com, 1
+duckcorp.org, 1
 duckduck.horse, 1
 duckduckstart.com, 1
 duckeight.win, 1
 duckinc.net, 1
 duckyubuntu.tk, 1
 duct.me, 1
 dudesunderwear.com.br, 0
 due-diligence-security.com, 1
@@ -13263,21 +13701,23 @@ duroterm.ro, 1
 durys.be, 1
 dushu.cat, 1
 dusmomente.com, 1
 dusnan.com, 1
 dustplanet.de, 1
 dustri.org, 1
 dustycloth.com, 1
 dustygroove.com, 1
+dustyro.se, 1
 dustyspokesbnb.ca, 1
+dustywilson.com, 1
 dutch.desi, 1
 dutch1.nl, 1
 dutchdare.nl, 1
-dutchessuganda.com, 1
+dutchfoodie.nl, 1
 dutchforkrunners.com, 1
 dutchrank.nl, 1
 dutchwanderers.nl, 1
 dutchweballiance.nl, 1
 duval.paris, 1
 dv189.com, 1
 dvbris.co.uk, 1
 dvbris.com, 1
@@ -13308,17 +13748,16 @@ dxgl.org, 1
 dxm.no-ip.biz, 1
 dybuster.at, 1
 dybuster.ch, 1
 dybuster.com, 1
 dybuster.de, 1
 dybuster.es, 1
 dybuster.it, 1
 dybuster.se, 1
-dycoa.com, 1
 dyeager.org, 1
 dyktig.as, 1
 dyktig.no, 1
 dylanboudro.com, 1
 dylancl.cf, 1
 dylankatz.com, 1
 dylanknoll.ca, 1
 dylanspcrepairs.com, 1
@@ -13360,16 +13799,17 @@ dynastycrate.com, 1
 dynastyduel.com, 1
 dynastyfan.com, 1
 dynastygoal.com, 1
 dynastylocker.com, 1
 dynastyredline.com, 1
 dynastyredzone.com, 1
 dyncdn.me, 1
 dynn.be, 1
+dynocc.xyz, 1
 dynorphin.com, 1
 dynorphins.com, 1
 dynts.pro, 1
 dynx.pl, 1
 dyrenesverden.no, 1
 dyrkar.com, 1
 dyrstad.net, 1
 dyscalculia-blog.com, 1
@@ -13407,16 +13847,17 @@ e-lambre.com, 1
 e-learningbs.com, 1
 e-lifetechnology.com, 1
 e-mak.eu, 1
 e-migration.ch, 1
 e-ptn.com, 1
 e-speak24.pl, 1
 e-standardstore.org, 1
 e-surveillant.nl, 1
+e-sushi.net, 1
 e-sw.co.jp, 1
 e-teachers.me, 1
 e-tech-solution.com, 1
 e-tech-solution.net, 1
 e-techsolution.com, 1
 e-techsolutions.net, 1
 e-tmf.org, 1
 e-tonery.cz, 1
@@ -13446,16 +13887,17 @@ e5tv.hu, 1
 e64.com, 1
 e6e.io, 1
 e6ex.com, 1
 e7d.io, 1
 e7fun.net, 1
 e965.ru, 1
 e9a.at, 1
 ea2drocks.com, 1
+eac.gov, 1
 eacero.com, 1
 ead-italia.it, 1
 eagle-yard.de, 1
 eagle.net, 1
 eagleindustriesltd.com, 1
 eaglemessaging.com, 1
 eagleridgecampground.com, 1
 eaglesecurity.com, 1
@@ -13497,37 +13939,37 @@ eastsideroofingcontractor.com, 1
 easy-factures.fr, 1
 easy-rpg.org, 0
 easy2bathe.co.uk, 1
 easyadsnbanners.tk, 0
 easycoding.org, 1
 easyconstat.com, 1
 easycontentplan.com, 1
 easycosmetic.ch, 1
-easycup.com, 0
 easydumpsterrental.com, 1
 easyeigo.com, 1
 easyfiles.ch, 1
 easyhaul.com, 1
 easymun.com, 1
 easyocm.hu, 1
 easyoutdoor.nl, 1
 easypay.bg, 1
+easypayments.pro, 1
 easyproperty.com, 1
 easypv.ch, 1
 easyqr.codes, 1
 easyreal.ru, 1
 easyroad.fr, 1
 easyslide.be, 1
 easyssl.com.cn, 1
 easystore.co, 1
 easytechguides.com, 1
 easytechsecurity.com, 1
 easyweenies.com, 1
-eat-mine.ml, 1
+eat-mine.ml, 0
 eat-sleep-code.com, 1
 eat-the-world.ch, 1
 eatery.co.il, 1
 eatfitoutlet.com.br, 1
 eatmebudapest.hu, 1
 eaton-works.com, 1
 eatry.io, 1
 eats.soy, 1
@@ -13542,17 +13984,17 @@ eb7.jp, 1
 ebanking.indovinabank.com.vn, 1
 ebankingabersicher.ch, 1
 ebankingbutsecure.ch, 1
 ebankingentoutesecurite.ch, 1
 ebankingmasicuro.ch, 1
 ebas.ch, 1
 ebataw.com, 1
 ebayinc.com, 1
-ebaymotorssucks.com, 0
+ebaymotorssucks.com, 1
 ebene-bpo.com, 1
 ebenezersbarnandgrill.com, 1
 ebenvloedaanleggen.nl, 1
 ebermannstadt.de, 0
 eberwe.in, 1
 ebest.co.jp, 1
 ebiebievidence.com, 1
 ebiografia.com, 1
@@ -13579,16 +14021,17 @@ ecardoo.org, 1
 ecchidreams.com, 1
 ecclesia-koeln.de, 1
 ecco-verde.com, 0
 eccoviasolutions.com, 1
 eccux.com, 1
 ecdn.cz, 1
 ecelembrou.ovh, 1
 ecfunstalls.com, 1
+echarity.ae, 1
 echatta.net, 1
 echatta.org, 1
 echi.pw, 1
 echidna-rocktools.eu, 1
 echo-security.co, 1
 echo.cc, 1
 echoanalytics.com, 1
 echobridgepartners.com, 1
@@ -13662,16 +14105,17 @@ ecosoftconsult.com, 1
 ecosound.ch, 1
 ecostruxureit.com, 1
 ecosystem.atlassian.net, 1
 ecosystemmanager-uat1.azurewebsites.net, 1
 ecotaxi2airport.com, 1
 ecoterramedia.com, 1
 ecotur.org, 1
 ecovision.com.br, 1
+ecp.ae, 1
 ecpannualmeeting.com, 1
 ecrandouble.ch, 1
 ectora.com, 1
 ecuinformacion.com, 1
 ecupcafe.com, 0
 ecuteam.com, 1
 ecxforum.com, 1
 ed.gs, 1
@@ -13799,17 +14243,16 @@ eewna.org, 1
 eez.ee, 1
 ef-georgia.org, 1
 ef.gy, 1
 efa-football.com, 1
 efaas.nl, 1
 efag.com, 1
 efcross.com, 1
 efeen.nl, 1
-eff-bee-eye.de, 1
 eff.org, 1
 effdocs.com, 1
 effe.ch, 1
 effective-altruist.com, 1
 effectivecoffee.com, 1
 effectiveosgi.com, 1
 effectivepapers.com, 1
 effero.net, 1
@@ -13914,17 +14357,17 @@ einrichtwerk.de, 1
 einrichtwerk.shop, 1
 einsatzstellenverwaltung.de, 1
 einsatzstiefel.info, 1
 einser.com, 1
 einsteinathome.org, 1
 einsteincapital.ca, 1
 eintageinzug.de, 1
 eintragsservice24.de, 1
-eioperator.com, 1
+eioperator.com, 0
 eipione.com, 1
 eirastudios.co.uk, 0
 eirb.fr, 1
 eisaev.ru, 1
 eiskratzer-bedrucken.de, 1
 eit-web.de, 0
 eitler.cx, 1
 eiyoushi-shigoto.com, 1
@@ -13948,26 +14391,28 @@ ekobudisantoso.net, 1
 ekodevices.com, 1
 ekokontakt.cz, 1
 ekonbenefits.com, 1
 ekong366.com, 1
 ekostecki.de, 1
 ekostrateg.com, 1
 ekpyroticfrood.net, 1
 ekrana.info, 1
+ekranos.me, 1
 eksisozluk.com, 1
 ekuatorial.com, 1
 ekyu.moe, 1
 ekz-crosstour.ch, 1
 ekzarta.ru, 1
 ekzcrosstour.ch, 1
 el-cell.com, 1
 el-hossari.com, 1
 el-news.de, 1
 eladgames.com, 1
+eladlak-ingatlan.com, 1
 elagplus.com, 1
 elainerock.com, 1
 elaon.de, 1
 elars.de, 1
 elarvee.xyz, 1
 elaxy-online.de, 1
 elb500ttl.nl, 1
 elbaal.gov, 1
@@ -14024,16 +14469,17 @@ electricdosvientos.com, 1
 electricfencealberton.co.za, 1
 electricfencebenoni.co.za, 1
 electricfencingballito.co.za, 1
 electricgatemotorgermiston.co.za, 1
 electricgatemotorrandburg.co.za, 1
 electricgatemotorskemptonpark.co.za, 1
 electricgatemotorsroodepoort.co.za, 1
 electrichiddenhills.com, 1
+electrician-umhlangaridge.co.za, 1
 electricianagoura.com, 1
 electricianagourahills.com, 1
 electriciancalabasas.com, 1
 electriciancamarillo.com, 1
 electricianconejovalley.com, 1
 electriciandosvientos.com, 1
 electricianhiddenhills.com, 1
 electriciankemptonpark24-7.co.za, 1
@@ -14111,16 +14557,17 @@ elenatranslations.nl, 1
 elenorsmadness.org, 1
 elephants.net, 1
 elephpant.cz, 1
 elepover.com, 1
 elerizoentintado.es, 1
 eletesstilus.hu, 1
 eletor.com, 1
 eletor.pl, 1
+eletrochape.com.br, 1
 elettricista-roma.it, 1
 elettricista-roma.org, 1
 eleusis-zur-verschwiegenheit.de, 1
 elevateandprosper.com, 1
 elevator.ee, 1
 elevatoraptitudetest.com, 1
 elexel.ru, 1
 elexprimidor.com, 1
@@ -14137,17 +14584,16 @@ elhamadimi.com, 1
 elhorizontal.com, 1
 elhossari.com, 1
 elia.cloud, 1
 elian-art.de, 1
 elias-nicolas.com, 1
 eliaskordelakos.com, 1
 elibom.com, 1
 elie.net, 1
-elielaloum.com, 1
 elifesciences.org, 1
 eligibilis.com, 1
 eligible.com, 1
 eligibleapi.com, 1
 eligrey.com, 1
 elijahgrey.com, 1
 eliminercellulite.com, 1
 eline168.com, 1
@@ -14160,16 +14606,17 @@ elisabeth-kostecki.de, 1
 elisabeth-strunz.de, 1
 elisabethkostecki.de, 1
 elisabethrene.com, 1
 elisechristie.com, 1
 elite-porno.ru, 1
 elite12.de, 1
 elitebouncingfun.com, 1
 elitegameservers.net, 1
+elitel.nl, 1
 elitenutritionoficial.com, 1
 elixi.re, 1
 elixir.bzh, 1
 eliyah.co.il, 1
 elizabethbuitrago.com, 1
 elizabethgreenfield.com, 1
 elizabethrominski.com, 1
 eljef.me, 1
@@ -14188,16 +14635,17 @@ elliriehl.at, 1
 ellisamusements.co.uk, 1
 ellisleisure.co.uk, 1
 ellsinger.me, 1
 elmermx.ch, 1
 elnan.do, 1
 elo-forum.org, 1
 elo.fyi, 1
 elodieclerc.ch, 1
+elodrias.de, 1
 eloge.se, 1
 elohellp.com, 0
 elonaspitze.de, 1
 elonbase.com, 1
 elonm.ru, 1
 elosrah.com, 1
 elosuite.com, 1
 eloxt.com, 1
@@ -14292,30 +14740,32 @@ emil.click, 1
 emilecourriel.com, 1
 emiliendevos.be, 1
 emilio.media, 1
 emilong.com, 1
 emilreimann.de, 1
 emils-1910.de, 1
 emils-chemnitz.de, 1
 emils1910.de, 1
+emilstahl.com, 1
 emilstahl.dk, 1
 emilvarga.com, 1
 emily.moe, 1
 emilyjohnson.ga, 1
 eminhuseynov.com, 1
 emirabiz.com, 0
 emirichardson.com, 1
 emisia.com, 1
 emivauthey.com, 1
 emkanrecords.com, 1
 emkei.cz, 1
 emkrivoy.com, 1
 emma-o.com, 1
 emma.ca, 1
+emma.ly, 1
 emmababy420.com, 1
 emmagraystore.com, 1
 emmanuelle-et-julien.ch, 1
 emmehair.com, 1
 emobilityforum.org, 1
 emoji.bzh, 0
 emolafarm.com, 1
 emond-usedcars.net, 1
@@ -14359,16 +14809,17 @@ en4u.org, 1
 enaah.de, 1
 enalean.com, 1
 enamae.net, 1
 enbecom.net, 1
 encfs.win, 1
 encircleapp.com, 1
 encnet.de, 1
 encode.host, 1
+encodecloud.net, 1
 encoderx.uk, 1
 encore.io, 0
 encouragemarketing.com, 1
 encredible.de, 0
 encredible.org, 0
 encretplomb.ch, 1
 encrypt.org.uk, 1
 encryptallthethings.net, 1
@@ -14418,28 +14869,30 @@ energyled.com.br, 1
 energystar.gov, 1
 enersaveapp.org, 1
 enersec.co.uk, 1
 enet-navigator.de, 1
 enfantsdelarue.ch, 1
 enfield-kitchens.co.uk, 1
 enflow.nl, 1
 enfu.se, 1
+enganches.es, 1
 engarde.net, 1
 engaugetools.com, 1
 engelke-optik.de, 1
 engelundlicht.ch, 1
 engelwerbung.com, 1
 engg.ca, 1
 engie-laadpalen.nl, 1
 engiedev.net, 1
 enginepit.com, 1
 enginsight.com, 1
 enginx.cn, 1
 enginx.net, 1
+engl-server.de, 1
 engl-systems.de, 1
 englishbulgaria.net, 1
 englishcast.com.br, 1
 englishdirectory.de, 1
 englishforums.com, 1
 englishlol.com, 1
 englishphonopass.com, 1
 englishstudio.com, 1
@@ -14466,16 +14919,17 @@ ennea-mediation.fr, 1
 enness.co.uk, 1
 ennori.jp, 1
 enomada.net, 1
 enoou.com, 1
 enord.fr, 1
 enorekcah.com, 1
 enot32.ru, 1
 enotecastore.it, 1
+enotefile.com, 1
 enpalmademallorca.info, 1
 enpasenerji.com.tr, 1
 enquos.com, 1
 enrich.email, 1
 enriquepiraces.com, 1
 enrollapp.com, 1
 ensage.io, 1
 enscosupply.com, 1
@@ -14492,16 +14946,17 @@ ent-london.com, 1
 entabe.jp, 1
 entactogen.com, 1
 entactogens.com, 1
 entaurus.com, 1
 enteente.com, 1
 entercenter.ru, 1
 enterprisey.enterprises, 1
 entersoftsecurity.com, 1
+entersynapse.com, 1
 entheogens.com, 1
 enthusiaformazione.com, 1
 entradaweb.cl, 1
 entrainr.com, 1
 entrecieletpierres.com, 1
 entreprise-toiture-clement.fr, 1
 entropia.de, 0
 entrusted.io, 1
@@ -14509,16 +14964,17 @@ entryboss.cc, 1
 entrypoint.sh, 1
 entwickler.land, 1
 enuchi.jp, 1
 envant.co.uk, 1
 enveloppenopmaat.nl, 1
 envescent.com, 1
 enviatufoto.com, 1
 enviaya.com.mx, 1
+enviro-umweltservice.de, 1
 environment.ai, 1
 environmental-colleges.com, 1
 environmentkirklees.org, 1
 enviroprobasements.com, 1
 envirotech.com.au, 1
 envoie.moi, 1
 envoyez.moi, 1
 eocservices.co.uk, 1
@@ -14555,16 +15011,17 @@ epicpages.com, 1
 epicsecure.de, 1
 epicsoft.de, 0
 epicvistas.com, 1
 epicvistas.de, 1
 epicwalnutcreek.com, 1
 epidauros.be, 1
 epigrafes-led-farmakeia.gr, 1
 epilis.gr, 1
+epinesdeparadis.com, 1
 epiphanyofourlordchurch.com, 1
 epiphyte.network, 1
 episkevh-plaketas.gr, 1
 epistas.com, 1
 epistas.de, 1
 epitesz.co, 1
 epiteugma.com, 1
 epizentrum.work, 1
@@ -14665,17 +15122,19 @@ erikserver2.tk, 1
 erikseth.de, 1
 erikwalther.eu, 1
 erinaceinae.com, 1
 eriner.me, 1
 erinn.io, 1
 erisrenee.com, 1
 erixschueler.de, 1
 erkaelderbarenaaben.dk, 1
+erlebnisarchaeologie-bayern.de, 1
 ernest.ly, 1
+ernsteisprung.ch, 1
 ero.ink, 1
 eroimatome.com, 1
 eromon.net, 1
 eron.info, 1
 eroticforce.com, 1
 erp-band.ru, 1
 erp.band, 1
 erpax.com, 1
@@ -14900,17 +15359,16 @@ espiritugay.com, 1
 esport-battlefield.com, 1
 esports-network.de, 1
 espower.com.sg, 1
 espritrait.com, 1
 esquirou-trieves.fr, 1
 esrhd.com, 1
 esrinfo.com, 1
 esrs.gov, 1
-ess-cert.ru, 1
 essayace.co.uk, 1
 essayads.com, 1
 essaybrand.com, 1
 essaychecker.com, 1
 essaydirectory.com, 1
 essayforsale.net, 1
 essayforum.com, 1
 essayhave.com, 1
@@ -14942,21 +15400,23 @@ estafallando.es, 1
 estafallando.mx, 1
 estaleiro.org, 1
 estate360.co.tz, 1
 estateczech-eu.ru, 1
 estcequejailaflemme.fr, 0
 estcequonmetenprodaujourdhui.info, 1
 esteam.se, 1
 estedafah.com, 1
+estefan.dyndns.org, 1
 esterilizacion-perros.es, 1
 estetista.net, 1
 estherlew.is, 1
 esthesoleil.jp, 1
 estoic.net, 1
+estonia.net, 1
 estoniantrade.ee, 1
 estonoentraenelexamen.com, 1
 estoppels.com, 1
 estoqueinformatica.com.br, 1
 estrietoit.com, 0
 estudiarparaser.com, 1
 estudio21pattern.com, 0
 estudiserradal.com, 1
@@ -14987,33 +15447,36 @@ etech-solution.com, 1
 etech-solution.net, 1
 etech-solutions.com, 1
 etechsolution.net, 1
 eteesheet.com, 1
 etelej.com, 0
 eternal-warriors.de, 1
 eternalabyss.int.eu.org, 1
 eternalflame.cn, 1
+eternalflame.info, 1
 eternalsymbols.com, 0
 eternit.roma.it, 1
 etfacta.com, 1
 eth-faucet.net, 1
 eth0.nl, 1
 etha.nz, 1
 ethack.org, 1
 ethaligan.fr, 1
 ethan.pm, 1
+ethanchin.com, 1
 ethanjones.me, 1
 ethanlew.is, 1
 ether.school, 1
 ethercalc.com, 1
 ethercalc.org, 1
 etherderbies.com, 1
 ethergeist.de, 0
 etherium.org, 1
+etherpad.fr, 1
 etherpad.nl, 1
 ethers.news, 1
 ethicaldata.co.uk, 1
 ethicalpolitics.org, 1
 ethicaltek.com, 1
 ethicsburg.gov, 1
 ethika.com, 1
 ethiobaba.com, 1
@@ -15100,16 +15563,17 @@ europeancupinline.eu, 1
 europeanpreppers.com, 1
 europeantimberconnectors.ca, 1
 europeantransportmanagement.com, 1
 europeanwineresource.com, 1
 europeos.es, 1
 europetravelservice.co.uk, 1
 europop.com, 1
 eurora.de, 1
+eurorecambios24.com, 1
 euroscot.de, 1
 euroshop.or.at, 1
 euroskano.nl, 1
 eurostrategy.vn.ua, 1
 eurotime.ua, 1
 eurotramp.com, 1
 eurotravelstar.eu, 1
 eurousa.us, 1
@@ -15124,16 +15588,17 @@ ev-zertifikate.de, 1
 eva-select.com, 1
 eva.cz, 1
 evaartinger.de, 1
 evafojtova.cz, 1
 evailoil.ee, 1
 evailoil.eu, 1
 evalesc.com, 1
 evamachkova.cz, 1
+evamathil.de, 1
 evamira.com, 1
 evanfiddes.com, 1
 evangelicalmagazine.com, 1
 evangelosm.com, 1
 evanreev.es, 1
 evansdesignstudio.com, 1
 evansville-wy.gov, 1
 evantage.org, 1
@@ -15187,17 +15652,17 @@ everydaygary.com, 1
 everydaywot.com, 1
 everydaywp.com, 1
 everyex.com, 1
 everyfad.com, 1
 everygayporn.com, 0
 everymove.org, 1
 everything-everywhere.com, 1
 everythingaccess.com, 1
-everythingstech.com, 1
+everythingstech.com, 0
 everythinq.com, 1
 everytrycounts.gov, 1
 everywhere.cloud, 1
 eveshaiwu.com, 1
 eveshamglass.co.uk, 1
 eveswell.com, 1
 evexia.xyz, 1
 evidence-based.review, 1
@@ -15233,17 +15698,16 @@ evoting.ch, 1
 evrial.com, 1
 evrica.me, 1
 evromandie.ch, 1
 evrotrust.com, 1
 evstatus.com, 1
 evtasima.name.tr, 1
 evtripping.com, 1
 evtscan.io, 1
-ewaipiotr.pl, 1
 ewanm89.co.uk, 1
 ewanm89.com, 1
 ewanm89.uk, 1
 ewe2.ninja, 1
 ewhitehat.com, 1
 ewie.name, 1
 ewizmo.com, 1
 ewok.io, 1
@@ -15252,16 +15716,17 @@ ewout.io, 1
 ewsfeed.com, 1
 ewtl.es, 1
 ewuchuan.com, 1
 ewus.de, 1
 ewycena.pl, 1
 ex-deli.jp, 1
 exactlyinfinite.com, 1
 exactphilosophy.net, 1
+exadime.net, 1
 exagoni.com.au, 1
 exagoni.com.my, 1
 examedge.com, 1
 examenpilotos.com, 0
 exampleessays.com, 1
 examplesu.com, 1
 examsmate.in, 1
 exaplac.com, 1
@@ -15302,16 +15767,17 @@ exgaywatch.com, 1
 exgen.io, 1
 exhalespa.com, 1
 exhibityour.com, 1
 exiahost.com, 1
 exit9wineandliquor.com, 1
 exitooutdoor.com, 1
 exmart.ng, 1
 exmoe.com, 1
+exnovin.co, 1
 exocen.com, 1
 exon.io, 1
 exordiumconcepts.com, 1
 exoscale.ch, 1
 exoscale.com, 1
 exoten-spezialist.de, 1
 exoticads.com, 1
 exousiakaidunamis.pw, 1
@@ -15340,33 +15806,36 @@ exploflex.com.br, 1
 exploit-db.com, 1
 exploit.cz, 1
 exploit.party, 1
 exploit.ph, 1
 exploited.cz, 1
 exploitit.com.au, 1
 exploodo.rocks, 1
 exploravacations.in, 1
+explorebigideas.com, 1
 exploremonero.com, 1
 exploringenderby.com, 1
+expmind.co.in, 1
 expo-america.ru, 1
 expo-asia.ru, 1
 expo-europe.ru, 1
 expo-larionov.org, 1
 exponentialnews.net, 1
 expoort.co.uk, 1
 expoort.com, 1
 expoort.com.br, 1
 expoort.es, 1
 expoort.fr, 1
 expoort.it, 1
 expopodium.com, 1
 exporta.cz, 1
 express-shina.ru, 1
 express-vpn.com, 1
+express1040.com, 1
 expressemotion.net, 1
 expresshosting.org, 1
 expressmarket.ru, 1
 expresstinte.de, 1
 expressvpn.com, 1
 expresswins.co.uk, 1
 expxkcd.com, 1
 exs.lv, 1
@@ -15416,16 +15885,17 @@ exvs.org, 1
 exxo.tk, 1
 exyplis.com, 1
 eyasc.nl, 1
 eydesignguidelines.com, 1
 eye-encounters.com, 1
 eyeandfire.com, 1
 eyecandy.gr, 1
 eyeglasses.com, 0
+eyejobs.com.au, 1
 eyelashconcept.com, 1
 eyenote.gov, 1
 eyeonid.com, 1
 eyep.me, 1
 eyes-berg.ch, 1
 eyes-berg.com, 1
 eyesandearsrescue.org, 1
 eynio.com, 1
@@ -15436,17 +15906,16 @@ eytosh.net, 1
 eyyit.com, 0
 eyyubyilmaz.com, 1
 ez3d.eu, 1
 ezakazivanje.rs, 1
 ezdog.press, 1
 ezequiel-garzon.net, 1
 ezesec.com, 1
 ezgif.com, 1
-ezhik-din.ru, 1
 eznfe.com, 1
 ezorgportaal.nl, 1
 ezpzdelivery.com, 1
 eztvtorrent.com, 1
 ezwritingservice.com, 1
 ezzhole.net, 1
 f-be.com, 1
 f-droid.org, 1
@@ -15505,16 +15974,19 @@ fabrica360.com, 1
 fabriceleroux.com, 1
 fabriziocavaliere.it, 1
 fabriziorocca.com, 1
 fabriziorocca.it, 1
 fabrysociety.org, 1
 fabse.net, 1
 fabulouslyyouthfulskin.com, 1
 fabulouslyyouthfulskineyeserum.com, 1
+facai666.cc, 1
+facai888.cc, 1
+facarospauls.com, 1
 faccess.it, 1
 facciadastile.it, 1
 face-mania.com, 1
 facealacrise.fr, 1
 facebattle.com, 1
 facebook-atom.appspot.com, 1
 facebook.ax, 1
 facebook.com, 0
@@ -15523,16 +15995,17 @@ facebylouise.co.uk, 1
 facekungfu.com, 1
 facepainting.gr, 1
 facepalmsecurity.com, 1
 facepunch.org, 1
 facerepo.com, 1
 faceresources.org, 1
 facesnf.com, 1
 fach-journalist.de, 1
+fachmann-umzuege.de, 1
 fachschaftslisten.at, 1
 fachschaftslisten.org, 1
 facialexercising.com, 1
 facil.services, 0
 facilities.fr, 1
 facilitiessurvey.org, 1
 facilitrak.com, 1
 facility-service-muenchen.de, 1
@@ -15592,16 +16065,17 @@ fairviewmotel-simcoe.com, 1
 fairydust.space, 1
 faithcentercogop.net, 1
 faithgrowth.com, 1
 faithindemocracy.eu, 0
 faithleaks.org, 1
 faithmissionaries.com, 1
 faithwatch.org, 1
 fakeapple.nl, 1
+fakeduckpond.com, 1
 fakerli.com, 1
 fakti.bg, 1
 faktotum.tech, 1
 fakturi.com, 1
 fakturoid.cz, 1
 falaeapp.org, 1
 falaowang.com, 1
 falbros.com, 1
@@ -15644,23 +16118,23 @@ familie-kruithof.nl, 1
 familie-kupschke.de, 1
 familie-leu.ch, 1
 familie-mischak.de, 1
 familie-monka.de, 1
 familie-poeppinghaus.de, 1
 familie-remke.de, 1
 familieholme.de, 1
 familiekiekjes.nl, 1
+familiereimann.com, 1
 familjenfrodlund.se, 1
 familjenm.se, 1
 familylawhotline.org, 1
 familyparties.co.uk, 1
 familyreal.ru, 1
 familytreehq.com, 1
-familyworld.gr, 1
 famososnaweb.com, 1
 famousbirthdays.com, 1
 famoushostels.com, 1
 famvangelder.nl, 1
 famvsomeren.nl, 1
 fan.gov, 1
 fanactu.com, 1
 fanatical.com, 1
@@ -15688,16 +16162,17 @@ fantasycastles.co.uk, 1
 fantasycdn.com, 1
 fantasydrop.com, 1
 fantasyescortsbirmingham.co.uk, 1
 fantasymina.de, 1
 fantasypartyhire.com.au, 1
 fantasyprojections.com, 1
 fantasyspectrum.com, 1
 fantopia.club, 1
+fantraxhq.com, 1
 fanvoice.com, 1
 fanyina.cn, 1
 fanyina.com, 1
 fanyue123.tk, 1
 fanz.pro, 1
 fanzlive.com, 1
 fap.no, 1
 fapplepie.com, 1
@@ -15776,16 +16251,17 @@ fastbackmbm.be, 1
 fastblit.com, 1
 fastcash.com.br, 1
 fastcomcorp.com, 1
 fastconfirm.com, 1
 fastcp.top, 1
 fastest-hosting.co.uk, 1
 fastforwardsociety.nl, 1
 fastforwardthemes.com, 1
+fastinviter.com, 1
 fastlike.co, 1
 fastmail.com, 0
 fastonline.ro, 1
 fastpresence.com, 1
 fastrevision.com, 1
 fastvistorias.com.br, 1
 fastworx.com, 1
 faszienrollen-info.de, 0
@@ -15815,16 +16291,17 @@ fbcdn.net, 1
 fbcfairburn.com, 1
 fbcopy.com, 1
 fbf.gov, 1
 fbi.gov, 1
 fbigame.com, 1
 fbiic.gov, 1
 fbijobs.gov, 1
 fbo.gov, 1
+fbrief.org, 1
 fbsbx.com, 1
 fbtholdings.com, 1
 fburl.com, 1
 fc.media, 1
 fca-tools.com, 1
 fcapartsdb.com, 1
 fcburk.de, 1
 fccarbon.com, 1
@@ -15862,30 +16339,32 @@ feb.gov, 1
 fedbizopps.gov, 1
 fedcenter.gov, 1
 federalinvestments.gov, 1
 federaljobs.gov, 1
 federalreserve.gov, 1
 federalreserveconsumerhelp.gov, 1
 federatedbank.com, 1
 federicomigliavacca.it, 1
+federicoparty.it, 1
 fedinvest.gov, 1
 fedjobs.gov, 1
 fedn.it, 1
 fedorahosted.org, 1
 fedoramagazine.org, 1
 fedorapeople.org, 1
 fedoraproject.org, 1
 fedpartnership.gov, 1
 fedramp.gov, 0
 fedrtc.org, 1
 fedshirevets.gov, 1
 fedux.com.ar, 1
 fedvan.com, 1
 feedbin.com, 0
+feedermarket.net, 1
 feedfall.com, 1
 feedhq.org, 1
 feedkovacs.hu, 1
 feedough.com, 1
 feedstringer.com, 1
 feedthefuture.gov, 1
 feeeei.com, 1
 feegg.com.br, 1
@@ -15911,27 +16390,29 @@ fehnladen.de, 1
 feigling.net, 0
 feildel.fr, 1
 feilen.de, 1
 feirlane.org, 0
 feisbed.com, 1
 feisim.com, 1
 feisim.org, 1
 feistyduck.com, 1
+feixiang.eu.org, 1
 fejes.house, 1
 feld.design, 1
 feld.saarland, 1
 feldhousen.com, 1
 feldmann-stachelscheid.de, 1
 felett.es, 1
 felger-times.fr, 1
 feli.games, 1
 felicifia.org, 1
 felinepc.com, 1
 felistirnavia.sk, 1
+felix-hirner.de, 1
 felixaufreisen.de, 1
 felixbarta.de, 1
 felixcrux.com, 1
 felixgenicio.com, 1
 felixkauer.de, 1
 felixqu.com, 1
 felixsanz.com, 1
 felixseele.de, 1
@@ -16064,16 +16545,17 @@ ficus.io, 1
 fid-elite.ch, 1
 fid.to, 1
 fidanza.eu, 1
 fidelapp.com, 1
 fidelis-it.ch, 1
 fidelis-it.net, 1
 fidhouriet.ch, 1
 fiduciaire-ratio.ch, 1
+fidufinance.com, 1
 fieldwork-paysage.com, 0
 fierlafijn.net, 1
 fierman.eu, 0
 fierman.net, 0
 fierman.us, 0
 fierscleaning.nl, 1
 fiery.me, 1
 fiestagenial.com, 1
@@ -16118,23 +16600,23 @@ filetransfer.one, 1
 filezilla-project.org, 1
 filezilla.cn, 1
 filhin.es, 1
 filhodohomem.com, 1
 filhomes.ph, 1
 filidorwiese.nl, 1
 filiio.com, 1
 filingsmadeeasy.com, 1
-filiosoft.cloud, 1
 filip-prochazka.com, 0
 filippo.io, 1
 filipsebesta.com, 1
 filleritemsindia.com, 1
 fillo.sk, 1
 film-colleges.com, 1
+film-op-tv.nl, 1
 film-storyboards.fr, 1
 film-tutorial.com, 1
 filmatiporno.xxx, 1
 filme-onlines.com, 1
 filmers.net, 1
 filmesonline.online, 1
 filmitis.com, 1
 filmovizija.mk, 1
@@ -16150,28 +16632,31 @@ fimsquad.com, 1
 finagosolo.com, 1
 final-expense-quotes.com, 1
 finalprice.net, 1
 finalrewind.org, 1
 finalx.nl, 1
 finance-colleges.com, 1
 financejobs.ch, 1
 financepark.ch, 1
+financewithcromulent.com, 1
 financniexperti.sk, 1
 finansa.no, 1
 finanstilsynet.dk, 1
 finch.am, 1
 finchi.de, 1
 finchnest.co.uk, 1
 find-job-in.com, 1
 find-mba.com, 1
 findapinball.com, 1
 findcarspecs.com, 1
+findelahistoria.com, 1
 findhoustonseniorcare.com, 1
 findingkorea.com, 1
+findingtheuniverse.com, 1
 finditez.com, 1
 findmybottleshop.com.au, 1
 findmynudes.com, 1
 findoon.de, 1
 findrejsepartner.dk, 1
 findstorenearme.ca, 1
 findstorenearme.co.uk, 1
 findstorenearme.us, 1
@@ -16179,29 +16664,33 @@ findthatnude.com, 1
 findthere.net, 1
 findyour.diet, 1
 findyourtrainer.com, 1
 findyourvoice.ca, 1
 fine-services.paris, 1
 finecocoin.io, 0
 finecraft.cc, 1
 finefriends.nl, 1
+finefriends.social, 1
+finefriendsapp.com, 1
 finelovedolls.com, 1
 finenet.com.tw, 1
 finesoon.net, 1
 finevegashomes.com, 1
 finewineonline.com, 1
 finfev.de, 1
 finflix.net, 1
 finform.ch, 1
 fingerscrossed.style, 1
 fini-de-jouer.ch, 1
 finisron.in, 1
 finkelstein.fr, 1
 finkmartin.com, 1
+finlandcook.online, 1
+finlandcook.top, 1
 finn.io, 1
 finnclass.cz, 1
 finneas.net, 1
 finnwea.com, 1
 finpt.com, 0
 finsprings.org, 1
 finstererlebnis.de, 1
 fintandunleavy.com, 0
@@ -16305,16 +16794,17 @@ fitseven.ru, 1
 fittelo.cz, 1
 fitzsim.org, 1
 fiuxy.bz, 1
 fiuxy.co, 1
 fiuxy.me, 1
 fiuxy.org, 1
 fiveboosts.xyz, 1
 fivethirtyeight.com, 1
+fiveyearsahead.com, 1
 fix-the-timeline.com, 1
 fix-the-timeline.org, 1
 fixatom.com, 1
 fixed.supply, 1
 fixel.express, 1
 fixforce.nl, 1
 fixhotsauce.com, 1
 fixingscrews.co.uk, 1
@@ -16406,16 +16896,17 @@ fleximaal.com, 1
 fleximal.com, 1
 fleximus.org, 0
 flexinvesting.fi, 1
 flexport.com, 1
 flexstart.me, 1
 flextrack.dk, 1
 flextribly.xyz, 1
 fliacuello.com.ar, 1
+flibusta.appspot.com, 1
 flickcritter.com, 1
 flieger-funk-runde.de, 1
 fliesen-waldschmidt.de, 1
 flight.school, 1
 flightdeckfriend.com, 1
 flightmedx.com, 1
 flightschoolbooking.com, 1
 flightschoolcandidates.gov, 1
@@ -16493,17 +16984,16 @@ flowair24.ru, 1
 flowcom.de, 1
 flowcount.xyz, 1
 flowersbylegacy.com, 1
 flowinvoice.com, 1
 flowreader.com, 1
 flox.io, 1
 flra.gov, 1
 flucky.xyz, 1
-flue-ducting.co.uk, 1
 fluffycloud.de, 1
 fluggesellschaft.de, 1
 flugplatz-edvc.de, 1
 fluhrers.de, 1
 fluidmeterusa.com, 1
 fluids.ac.uk, 1
 fluitbeurt.nl, 1
 flumble.nl, 1
@@ -16546,16 +17036,17 @@ flytoadventures.com, 1
 fm-cdn.de, 1
 fm.ie, 1
 fmapplication.com, 1
 fmarchal.fr, 1
 fmc.gov, 1
 fmdance.cl, 1
 fminsight.net, 1
 fmodoux.biz, 1
+fmstr.ml, 1
 fmussatmd.com, 1
 fnanen.net, 1
 fnb-griffinonline.com, 1
 fnbnokomis.com, 1
 fndout.com, 1
 fnh-expert.net, 1
 fnkr.net, 1
 fnof.ch, 1
@@ -16591,29 +17082,31 @@ foljeton.dk, 1
 folk.as, 1
 folkadelic.de, 1
 follandviolins.com, 1
 followback.net, 1
 follower98.ir, 1
 followerrocket.com, 1
 followersya.com, 1
 followings-live.com, 1
+followmystaff.com, 1
 followthatpage.com, 1
 followthedog.co.uk, 1
 foluomeng.net, 1
 folv.es, 1
 folwark.krakow.pl, 1
 folwarkwiazy.pl, 1
 fomopop.com, 1
 fondationwiggli.ch, 1
 fondsdiscountbroker.de, 1
 fondy.eu, 1
 fondy.ua, 1
 foneo.com, 1
 fonga.ch, 1
+fono.jp, 1
 fonolo.com, 1
 fonseguin.ca, 1
 font-converter.net, 1
 fonte-trading.com, 1
 fontein.de, 1
 fontlibrary.org, 1
 fonts4free.net, 1
 foo, 1
@@ -16637,27 +17130,33 @@ foorack.com, 1
 fooster.io, 1
 foot.fr, 1
 footagecrate.com, 1
 football.de, 1
 footballforum.de, 1
 footloose.co.uk, 1
 for.care, 1
 foray-jero.me, 1
+forbidden-mods.de, 1
 forbiddenhistory.info, 1
 forbusiness.ca, 1
 forcamp.ga, 1
 forcelink.eu, 1
 forcelinkamerica.com, 1
 forcelinkamerica.nl, 1
 forces.army, 1
 forcewave.com, 1
 ford-shop.by, 1
+ford.com.au, 1
+ford.com.br, 1
+ford.com.cn, 1
+ford.mx, 1
 fordlibrarymuseum.gov, 1
 fordshop.by, 0
+fordsync.com, 1
 foreachcode.com, 1
 forecastcity.com, 1
 foreclosureattorneyhouston.com, 1
 forefrontcloud.com, 1
 foregroundweb.com, 1
 foreign-language-colleges.com, 1
 forellenpark.com, 1
 forento.be, 1
@@ -16707,16 +17206,17 @@ forsakringsarkivet.se, 1
 forschbach-janssen.de, 1
 forsec.nl, 1
 forstbetrieb-hennecke.de, 1
 forstprodukte.de, 1
 forsyththeatre.com, 1
 fort.eu, 1
 forteggz.nl, 1
 fortesanshop.it, 1
+fortestecnologia.com.br, 1
 fortknox.cz, 1
 fortnine.ca, 1
 fortnitemagic.ga, 1
 fortoglethorpega.gov, 1
 fortran.io, 1
 fortress.no, 1
 fortress.sk, 1
 fortuna-apotheke-lahnstein.de, 1
@@ -16736,16 +17236,17 @@ foryourhealthybody.com, 1
 fosaudit.com, 1
 foscamcanada.com, 1
 fosdem.org, 1
 foshanshequ.com, 0
 fossewayflowers.co.uk, 1
 fossewayflowers.com, 1
 fossforward.com, 1
 fossilfreeyale.org, 1
+fosterpark.ca, 1
 fotella.com, 1
 fotikpro.ru, 1
 foto-janvanaefst.nl, 1
 foto-leistenschneider.de, 1
 foto-leitner.com, 1
 foto-leitner.de, 1
 foto-robitsch.at, 1
 foto-roma.ru, 1
@@ -16774,16 +17275,17 @@ foundationrepairnebraska.com, 1
 foundationspecialisteast.com, 1
 foundationspecialistmi.com, 1
 foundchurch.co.uk, 1
 foundsounds.me, 1
 fourashesgolfcentre.co.uk, 1
 fourashesgolfcentre.com, 1
 fourashesgolfcentre.uk, 1
 fourdesignstudio.com, 0
+fournarisopenday.com, 1
 foutrelis.com, 1
 fowlervwparts.com, 1
 fowlsmurf.net, 1
 fox.my, 0
 foxbnc.co.uk, 1
 foxdev.co, 1
 foxes.no, 1
 foxesare.sexy, 1
@@ -16808,29 +17310,27 @@ fpsclasico.de, 1
 fpt-technojapan.com, 1
 fptravelling.com, 0
 fpvr.org, 1
 fpy.cz, 1
 fr.search.yahoo.com, 0
 fr33tux.org, 1
 frack.nl, 1
 fracreazioni.it, 1
-fraesentest.de, 1
 fragmentspuren.de, 1
 fragrances.bg, 1
 fragstore.net, 1
 fraho.eu, 1
 framapiaf.org, 1
 framboise314.fr, 1
 framedpaws.com, 1
 framezdakkapellen.nl, 1
 fran.cr, 1
 francescopalazzo.com, 1
 francescopandolfibalbi.it, 1
-francescoservida.ch, 1
 francetraceur.fr, 1
 franchini.email, 1
 franchini.engineer, 1
 francis.tokyo, 1
 francisli.net, 0
 franckgirard.net, 1
 franckyz.com, 1
 francois-gaillard.fr, 1
@@ -16863,34 +17363,37 @@ frankslaughterinsurance.com, 1
 frankwei.xyz, 1
 frankyan.com, 1
 frantic1048.com, 1
 frantorregrosa.me, 1
 franz-vatter.de, 1
 franz.beer, 1
 franziska-pascal.de, 1
 franzknoll.de, 1
+franzt.de, 0
 franzt.ovh, 1
 frappant.cc, 1
 fraselab.ru, 1
 frasesconemocion.com, 1
 frasesdodia.com, 1
 frasesparaface.com.br, 1
 frasesytarjetas.com, 1
 frasys.net, 1
 frattaroli.org, 1
 frau-inge.de, 1
+frau-pusteblu.me, 1
 frau-sucht-bauer.de, 1
 fraudmarc.com, 1
 frauenarzt-niendorf.de, 1
 frauenarzt-zinke.de, 1
 frauenlob.rocks, 1
 fraurichter.net, 1
 fraye.net, 1
 frbracch.it, 1
+frc.gov, 1
 frccsgo.tk, 1
 frdl.ch, 1
 freaksites.dk, 1
 freaksports.com.au, 1
 freakyawesome.agency, 1
 freakyawesome.art, 1
 freakyawesome.band, 1
 freakyawesome.business, 1
@@ -16937,17 +17440,16 @@ freebetoffers.co.uk, 1
 freebies.id, 1
 freeblog.me, 1
 freebookmakersbetsandbonuses.com.au, 1
 freeboson.org, 1
 freebus.org, 1
 freecam2cam.site, 1
 freecloud.at, 1
 freecookies.nl, 1
-freecycleusa.com, 1
 freedev.cz, 1
 freedom.nl, 1
 freedom.press, 1
 freedom35.org, 1
 freedomfinance.se, 1
 freedomflotilla.org, 1
 freedomfrontier.tk, 1
 freedomkiaparts.com, 1
@@ -16980,16 +17482,17 @@ freelifer.jp, 1
 freelo.cz, 1
 freelysurf.cf, 1
 freemania.eu, 1
 freemania.nl, 1
 freemanlogistics.com, 1
 freemanning.de, 1
 freemans.com, 1
 freemedforms.com, 1
+freeministryresources.org, 1
 freemomhugs.org, 1
 freemyipod.org, 1
 freend.me, 0
 freenetproject.org, 1
 freeonplate.com, 1
 freepnglogos.com, 1
 freepoints.us, 1
 freepublicprofile.com, 1
@@ -17004,16 +17507,17 @@ freesnowden.is, 1
 freesoft-board.to, 1
 freesoftlab.com, 1
 freesolitaire.win, 1
 freesourcestl.org, 1
 freespace.info, 1
 freesquare.net, 1
 freessl.tech, 1
 freesslcertificate.me, 1
+freetaxusa.com, 1
 freethetv.ie, 1
 freetsa.org, 1
 freeweibo.com, 1
 freewoodfactory.com, 1
 freeyourmusic.com, 1
 freezion.com, 1
 frei.social, 1
 freie-software.net, 1
@@ -17082,16 +17586,17 @@ friet.org, 1
 frietbesteld.nl, 1
 friezy.ru, 1
 frigi.ch, 1
 frigolit.net, 1
 frillip.com, 1
 fringeintravel.com, 1
 frinkiac.com, 1
 frino.de, 1
+friplay.host, 1
 frippz.se, 1
 friss.com, 1
 fritzrepair.com, 1
 frizo.com, 1
 frly.de, 1
 frnco.uk, 1
 frob.nl, 1
 frodriguez.xyz, 1
@@ -17108,17 +17613,16 @@ frolova.org, 1
 from-the-net.com, 1
 fromix.de, 1
 fromlemaytoz.com, 1
 fromscratch.rocks, 1
 fromthesoutherncross.com, 1
 fronteers.nl, 0
 frontier-ad.co.jp, 1
 frontier.bet, 1
-frontierdiscount.com, 1
 frontiers.nl, 1
 frontline.cloud, 1
 frontlinemessenger.com, 1
 fropky.com, 1
 frostprotection.co.uk, 1
 frostwarning.com, 1
 frosty-gaming.xyz, 1
 frostysummers.com, 1
@@ -17140,16 +17644,17 @@ frtrains.com, 1
 fruchthof24.de, 1
 fruchtikus.net, 1
 fruend-hausgeraeteshop.de, 1
 frugalfamilyhome.com, 1
 frugalmechanic.com, 1
 frugro.be, 1
 fruition.co.jp, 1
 fruitscale.com, 1
+fruityten.co.uk, 1
 frusky.de, 1
 frusky.net, 1
 fruttini.de, 1
 frydrychit.cz, 1
 fs-community.nl, 0
 fs-fitness.eu, 1
 fs-g.org, 1
 fs-maistadt.de, 1
@@ -17162,30 +17667,32 @@ fsbturton.com, 1
 fsck.cz, 1
 fsck.jp, 1
 fsckd.com, 1
 fscott.de, 1
 fsdress.com, 1
 fsfi.is, 1
 fsfxpackages.com, 1
 fsg.one, 1
+fsgeek.ca, 1
 fsj4u.ch, 1
 fsk.fo, 1
 fsky.info, 1
 fsm2016.org, 1
 fsps.ch, 1
 fsrs.gov, 1
 fsstyle.com, 1
 fstatic.io, 1
 fsty.uk, 1
 fsvt.ch, 1
 ft.com, 0
 ftang.de, 1
 ftc.gov, 0
 ftcefile.gov, 1
+ftdev.in, 1
 ftf.agency, 1
 ftgho.com, 1
 fthat.link, 1
 ftng.se, 1
 ftptest.net, 1
 ftrsecure.com, 1
 ftv.re, 1
 fu-li88.com, 1
@@ -17305,17 +17812,19 @@ furkot.es, 1
 furkot.fr, 1
 furkot.it, 1
 furkot.pl, 1
 furlan.co, 1
 furlog.it, 1
 furnfurs.com, 1
 furnishedproperty.com.au, 1
 furnitureconcept.co.uk, 1
+furries-united.de, 1
 furry.agency, 1
+furry.bot, 1
 furry.cat, 1
 furry.dk, 1
 furrybot.me, 1
 furrytech.network, 1
 furrytf.club, 1
 furryyiff.site, 1
 fursuitbutts.com, 1
 fusa-miyamoto.jp, 1
@@ -17415,41 +17924,44 @@ g0man.com, 1
 g1.ie, 1
 g10e.ch, 1
 g1jeu.com, 1
 g1s.cc, 1
 g2links.com, 1
 g2pla.net, 1
 g2ship.com, 1
 g2soft.net, 1
+g3circuit.com, 1
 g3d.ro, 1
 g3dev.ch, 1
 g3rv4.com, 1
 g4w.co, 1
 g5.gov, 1
 g6666g.tk, 1
 g8energysolutions.co.uk, 1
 gaasuper6.com, 1
 gaaz.fr, 1
 gabe565.com, 1
 gabeb1920.com, 1
 gabecook.com, 1
-gabemack.com, 1
 gabethebabetv.com, 1
 gabinetpsychoterapii.krakow.pl, 1
 gabiocs.com, 1
 gabriel.to, 1
 gabriele-kluge.de, 1
 gabriele.tips, 1
+gabrielkoo.com, 1
 gabrielsimonet.ch, 1
 gabrielsteens.nl, 1
 gachimuchi.ru, 1
 gachiyase.com, 1
 gachter.name, 1
 gadabit.pl, 1
+gadget-tips.com, 1
+gadgetadvisor.com, 1
 gadgethacks.com, 1
 gadse.games, 1
 gae123.com, 1
 gaengler.com, 1
 gaest.com, 1
 gaestehaus-monika.com, 1
 gaetanosonline.com, 1
 gafachi.com, 1
@@ -17459,26 +17971,25 @@ gafunds.com, 1
 gagliarducci.it, 1
 gagne.tk, 1
 gagnerplusdargent.info, 1
 gagniard.org, 1
 gagor.pl, 1
 gagygnole.ch, 1
 gaiavanderzeyp.com, 1
 gaichon.com, 1
+gailbartist.com, 1
 gailfellowsphotography.com, 1
 gaines-sodiamex.fr, 1
 gaio-automobiles.fr, 1
 gaireg.de, 1
 gaiserik.com, 0
 gajas18.com, 1
 gakkainavi-epsilon.jp, 1
 gakkainavi-epsilon.net, 1
-gakkainavi.jp, 1
-gakkainavi.net, 1
 gaku-architect.com, 1
 gala.kiev.ua, 0
 galabau-maurmann.de, 1
 galacg.me, 1
 galactic-crew.org, 1
 galak.ch, 1
 galanight.cz, 1
 galaxy.edu.pe, 1
@@ -17498,30 +18009,32 @@ galinas-blog.de, 1
 galinos.gr, 1
 galle.cz, 1
 gallerify.eu, 1
 galletasgabi.com.mx, 0
 galleyfoods.com, 1
 gallicrooster.com, 1
 gallifreyapp.co.uk, 1
 gallifreypermaculture.com.au, 1
+gallmeyer-consulting.com, 1
 gallun-shop.com, 1
+galoserver.org, 1
 gam3rs.de, 1
 gamberorosso.menu, 1
 gambetti.fr, 1
 gambit.pro, 1
 gambitboard.com, 1
 gambitnash.co.uk, 1
 gambitnash.com, 1
 gambitprint.com, 1
 gamblerhealing.com, 1
 gamblersgaming.eu, 1
 game-files.net, 0
 game-gentle.com, 1
-game-topic.ru, 1
+game-topic.ru, 0
 game4less.com, 1
 game7.de, 1
 game88city.com, 1
 game88city.net, 1
 gameanalytics.com, 1
 gameblabla.nl, 1
 gamebrott.com, 1
 gamecard-shop.nl, 1
@@ -17586,16 +18099,18 @@ ganaenergia.com, 1
 ganasoku.net, 1
 gancedo.com.es, 1
 gandalfservice.com, 1
 gandalfthefeline.com, 1
 gandc.co, 0
 gandgliquors.com, 1
 ganggalbichler.at, 1
 gangnam-club.com, 1
+gangnamavenue.com, 1
+gangnamcool.com, 1
 gansleit.com, 0
 ganyouxuan.com, 1
 ganztagplus.de, 1
 gao.ci, 1
 gao.rocks, 1
 gaojianli.me, 1
 gaojianli.tk, 1
 gaon.network, 1
@@ -17603,18 +18118,20 @@ gaos.org, 1
 gapdirect.com, 1
 gapfa.org, 1
 gaphag.ddns.net, 1
 gar-nich.net, 0
 garage-door.pro, 1
 garage-leone.com, 1
 garage-meynard.com, 1
 garagedejan.ch, 1
+garagedoorrepairingsanjose.com, 1
 garageenginuity.com, 1
 garagegoossens.be, 1
+garagelink.jp, 1
 garagemhermetica.org, 1
 garagevanhulle-used.be, 1
 garanteasy.com, 1
 garantieabschluss.de, 0
 garbage-juice.com, 1
 garbomuffin.com, 1
 garciagerman.com, 1
 garda-see.mobi, 1
@@ -17664,21 +18181,21 @@ gatewaybridal.com, 1
 gatewaybronco.com, 1
 gatilagata.com.br, 1
 gatomix.net, 1
 gauche.com, 1
 gaudeamus-folklor.cz, 1
 gaudere.co.jp, 1
 gaurl.ga, 1
 gaussianwaves.com, 1
-gautham.pro, 1
 gauthier.dk, 1
 gautvedt.no, 1
 gavin.sh, 1
 gavins.stream, 1
+gaw.sh, 1
 gay-jays.com, 1
 gay-sissies.com, 1
 gayauthors.org, 1
 gaycc.cc, 1
 gayforgenji.com, 1
 gaygeeks.de, 1
 gayhotti.es, 1
 gaymerconnect.net, 1
@@ -17708,16 +18225,17 @@ gcbit.dk, 1
 gcfadvisors.com, 1
 gcgeeks.com.au, 1
 gcguild.net, 1
 gchq.wtf, 1
 gcoded.de, 1
 gcodetools.com, 1
 gcs-ventures.com, 1
 gcsepod.com, 1
+gd88.cc, 1
 gdax.com, 1
 gdb-tutorial.net, 1
 gdevpenze.ru, 1
 gdgrzeszow.pl, 1
 gdhzcgs.com, 1
 gdiary.net, 1
 gdngs.de, 1
 gdoce.es, 1
@@ -17727,16 +18245,17 @@ gdv.me, 1
 gdz-otvety.com, 1
 gdz-spishy.com, 1
 gdz.tv, 1
 ge1.me, 0
 ge3k.net, 0
 gear-acquisition-syndrome.community, 1
 gear4you.shop, 1
 gearallnews.com, 1
+gearbot.rocks, 1
 gearboxhero.com, 1
 gearev.net, 1
 gearfinder.nl, 1
 gearset.com, 1
 geaskb.nl, 1
 geass.xyz, 1
 geba-online.de, 1
 gebn.co.uk, 1
@@ -17755,22 +18274,24 @@ gee.is, 1
 geecrat.com, 1
 geek-hub.de, 1
 geek.ch, 1
 geekabit.nl, 1
 geekandi.com, 1
 geekariom.com, 1
 geekbundle.org, 0
 geekclubbooks.com, 1
+geekeffect.co.uk, 1
 geeklair.net, 1
 geeklan.co.uk, 1
 geekles.net, 1
 geeknik.com, 1
 geekpad.com, 1
 geeks.berlin, 1
+geeks.one, 0
 geekshirts.cz, 1
 geektopia.es, 1
 geekwhack.org, 1
 geekwithabudget.com, 1
 geekwu.org, 1
 geekystudios.us, 1
 geekz.sk, 1
 geekzone.co.nz, 1
@@ -17782,16 +18303,17 @@ geertswei.nl, 1
 gegeco.ch, 1
 geh.li, 1
 gehaowu.com, 1
 gehas-wein-shop.de, 1
 gehirn.co.jp, 1
 gehirn.jp, 1
 gehopft.de, 1
 gehreslaw.com, 1
+gehrke.cloud, 1
 gehrke.in, 1
 gehrke.nrw, 1
 gehsicht.de, 1
 geigenbauer.in, 0
 geigr.de, 1
 geiser-family.ch, 1
 geisser-elektronikdata.de, 1
 geitenijs.com, 1
@@ -17828,16 +18350,17 @@ genehightower.com, 1
 genehome.com.au, 1
 genemesservwparts.com, 1
 generace-id.org, 1
 generador-electrico.com, 1
 general-anaesthesia.com, 1
 general-anaesthetics.com, 1
 general-anesthesia.com, 1
 general-insurance.tk, 1
+general-plast.com, 1
 generali-worldwide.com, 1
 generalinsuranceservices.com, 1
 generationgoat.com, 1
 generationnext.pl, 1
 generationsweldom.com, 1
 generator.creditcard, 1
 generic.cx, 1
 genesiseureka.com, 1
@@ -17847,16 +18370,17 @@ genesysmi.com, 1
 genetargetsolutions.com.au, 1
 genetidyne.com, 1
 genevachauffeur.com, 1
 geneve-naturisme.ch, 1
 geneve.guide, 1
 genevoise-entretien.ch, 1
 genfaerd.dk, 1
 genia-life.de, 1
+geniofinanciero.org, 1
 geniush.ovh, 1
 geniushost.in, 1
 geniusteacher.in, 1
 geniuszone.biz, 1
 genocidediary.org, 1
 genodeftest.de, 1
 genome.gov, 1
 genomequestlive.com, 1
@@ -17940,16 +18464,17 @@ gerritcodereview.com, 1
 gers-authentique.com, 1
 gerwinvanderkamp.nl, 1
 ges-bo.de, 1
 geschenkly.de, 1
 geschichtscheck.de, 1
 geschmacksache.online, 1
 geschwinder.net, 1
 gesica.cloud, 1
+gesnex.com, 1
 gessettirotti.it, 1
 gestorehotel.com, 1
 gestormensajeria.com, 1
 gesundheitmassage.com, 1
 gesundheitswelt24.de, 1
 get-asterisk.ru, 1
 get-erp.ru, 1
 get-it-live.com, 1
@@ -18045,21 +18570,21 @@ gevelreinigingtiel.nl, 1
 geyduschek.be, 1
 gf-franken.de, 1
 gf5fcalc.com, 1
 gfahnen.de, 1
 gfast.ru, 1
 gfcleisure.co.uk, 1
 gfe.li, 1
 gfe.link, 1
+gfedating.com, 1
 gfelite.de, 1
 gfestival.fo, 1
 gfk-kunststoff-luebben.de, 1
 gflame.de, 1
-gflclan.ru, 1
 gfms.ru, 1
 gfnetfun.cf, 1
 gforce.ninja, 1
 gfoss.eu, 1
 gfoss.gr, 1
 gfournier.ca, 1
 gfw.moe, 1
 gfxbench.com, 1
@@ -18078,16 +18603,17 @@ ggss.cf, 1
 ggx.us, 1
 gh16.com.ar, 1
 gha.st, 1
 ghaglund.se, 1
 ghettonetflix.de, 1
 ghfip.com.au, 1
 ghini.com, 1
 ghislainphu.fr, 1
+ghost-legion.com, 1
 ghostblog.info, 0
 ghostcir.com, 1
 ghou.me, 1
 ghowell.io, 1
 ghrelinblocker.info, 1
 ghrelinblocker.org, 1
 ghuntley.com, 0
 giac.org, 1
@@ -18138,32 +18664,31 @@ gigis-pizzeria.de, 1
 gigis.cloud, 1
 gigiscloud.servebeer.com, 1
 giglink.club, 1
 gigolodavid.be, 1
 gigseekr.com, 1
 gigtroll.eu, 1
 gijsbertus.com, 1
 gijswesterman.nl, 1
-gilangcp.com, 1
+gilangcp.com, 0
 gileadpac.com, 1
 gilescountytn.gov, 1
 gilium.com, 1
 gillesdesnoyers.com, 1
 gillesmorelle.com, 1
 gillfamily.de, 1
 gillmanandsoame.co.uk, 1
 gillyscastles.co.uk, 1
 gilmoreid.com.au, 1
 gilmourluna.com, 1
 gilnet.be, 1
 gimme.money, 1
 gina-architektur.design, 1
 ginabaum.com, 1
-ginacat.de, 1
 gingersutton.com, 1
 ginionusedcars.be, 1
 ginja.co.th, 1
 ginnegappen.nl, 1
 ginniemae.gov, 1
 gino-gelati.de, 1
 ginza-luce.net, 1
 ginza-viola.com, 1
@@ -18219,16 +18744,17 @@ givastar.com, 1
 give2charity.co, 1
 give2charityapp.com, 1
 giveattheoffice.org, 0
 giveaways.ph, 1
 giveme.online, 1
 given2.com, 1
 givesunlight.com, 1
 givingnexus.org, 0
+givingtools.com, 1
 givip.eu, 1
 gix.net.pl, 1
 gixtools.co.uk, 1
 gixtools.com, 1
 gixtools.net, 1
 gixtools.uk, 1
 gizmo.ovh, 1
 gj-bochum.de, 1
@@ -18251,16 +18777,17 @@ glamguru.world, 1
 glamour4you.de, 1
 glamourdaze.com, 1
 glasdon.com, 1
 glasen-hardt.de, 1
 glasfaser-im-hanseviertel.de, 1
 glasgestaltung.biz, 1
 glasner.photo, 1
 glaspe.com, 1
+glass-mag.eu, 1
 glass.google.com, 1
 glasschmuck-millefiori.de, 1
 glassexpertswa.com, 1
 glassrainbowtrust.org.je, 1
 glassrom.pw, 1
 glasweld.com, 1
 glavsudexpertiza.ru, 1
 glazedmag.fr, 1
@@ -18275,17 +18802,16 @@ glencarbide.com, 1
 glencoveny.gov, 1
 glendarraghbouncycastles.co.uk, 1
 glenhuntlyapartments.com.au, 1
 glenshere.com, 1
 glevolution.com, 1
 glidingshop.cz, 1
 glidingshop.de, 1
 glidingshop.eu, 1
-glittersjabloon.nl, 1
 glitzerstuecke.de, 1
 glloq.org, 1
 glnpo.gov, 1
 glob-coin.com, 1
 global-adult-webcams.com, 1
 global-lights.ma, 1
 global-office.com, 1
 global-village.koeln, 1
@@ -18296,29 +18822,31 @@ globalgivingtime.com, 1
 globalgovernancewatch.org, 1
 globalhealth.gov, 1
 globalhorses.de, 1
 globalipaction.ch, 1
 globalisierung-fakten.de, 1
 globalitac.com, 1
 globalityinvestment.com, 1
 globalmoneyapp.com, 1
+globalno.me, 1
 globalnomadvintage.com, 1
 globalonetechnology.com, 1
 globalperspectivescanada.com, 1
 globalresearchcouncil.org, 1
 globalresistancecorporation.com, 1
 globaltennis.ca, 1
 globalventil.com, 1
 globalvisions-events.ch, 1
 globalvisions-events.com, 1
 globcoin.io, 1
 globelink-group.com, 1
 globuli-info.de, 1
 gloca