Merge mozilla-central to mozilla-inbound. a=merge on a CLOSED TREE
authorAndreea Pavel <apavel@mozilla.com>
Tue, 10 Apr 2018 00:58:54 +0300
changeset 779622 b86fa87d995a07da5039d689e08640559118c460
parent 779621 28328eb3e63f8e5cc923dc07e2f2049ee06dbc99 (current diff)
parent 779502 83de58ddda2057f1cb949537f6b111e3b115ea3d (diff)
child 779623 48d0890ec465e34ea0a591a77bfe7a668d5d181a
push id105824
push usernnethercote@mozilla.com
push dateTue, 10 Apr 2018 09:55:33 +0000
reviewersmerge
milestone61.0a1
Merge mozilla-central to mozilla-inbound. a=merge on a CLOSED TREE
browser/components/extensions/parent/ext-browser.js
modules/libpref/init/all.js
testing/talos/talos/tests/devtools/addon/content/pages/custom/inspector/generate-inspector-index-html.js
--- a/Makefile.in
+++ b/Makefile.in
@@ -153,17 +153,17 @@ endif
 tup:
 	$(call BUILDSTATUS,TIERS $(if $(MOZ_ARTIFACT_BUILDS),artifact )tup)
 ifdef MOZ_ARTIFACT_BUILDS
 	$(call BUILDSTATUS,TIER_START artifact)
 	$(MAKE) recurse_artifact
 	$(call BUILDSTATUS,TIER_FINISH artifact)
 endif
 	$(call BUILDSTATUS,TIER_START tup)
-	@$(TUP) $(if $(MOZ_AUTOMATION),--quiet) $(if $(findstring s,$(filter-out --%,$(MAKEFLAGS))),,--verbose)
+	@$(TUP) $(if $(MOZ_AUTOMATION),--quiet) $(if $(findstring s,$(filter-out --%,$(MAKEFLAGS))),,--verbose) $(topobjdir)
 	$(call BUILDSTATUS,TIER_FINISH tup)
 
 .PHONY: $(addprefix install-,$(install_manifests))
 $(addprefix install-,$(install_manifests)): install-%: $(install_manifest_depends)
 ifneq (,$(filter FasterMake+RecursiveMake,$(BUILD_BACKENDS)))
 	@# If we're using the hybrid FasterMake/RecursiveMake backend, we want
 	@# to ensure the FasterMake end doesn't have install manifests for the
 	@# same directory, because that would blow up
--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -1,10 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
-<blocklist lastupdate="1522103097333" xmlns="http://www.mozilla.org/2006/addons-blocklist">
+<blocklist lastupdate="1523286321447" 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"/>
@@ -2230,16 +2230,20 @@
     <emItem blockID="547037f2-97ae-435a-863c-efd7532668cd" id="{44685ba6-68b3-4895-879e-4efa29dfb578}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="baf7f735-d6b6-410a-8cc8-25c60f7c57e2" id="adbeaver@adbeaver.org">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="1"/>
     </emItem>
+    <emItem blockID="36f97298-8bef-4372-a548-eb829413bee9" id="/(__TEMPLATE__APPLICATION__@ruta-mapa\.com)|(application-3@findizer\.fr)|(application2@allo-pages\.fr)|(application2@bilan-imc\.fr)|(application2@lettres\.net)|(application2@search-maps-finder\.com)|(application-imcpeso@imc-peso\.com)|(application-meuimc@meu-imc\.com)|(application-us2@factorlove)|(application-us@misterdirections)|(application-us@yummmi\.es)|(application@amiouze\.fr)|(application@astrolignes\.com)|(application@blotyn\.com)|(application@bmi-result\.com)|(application@bmi-tw\.com)|(application@calcolo-bmi\.com)|(application@cartes-itineraires\.com)|(application@convertisseur\.pro)|(application@de-findizer\.fr)|(application@de-super-rezepte\.com)|(application@dermabeauty\.fr)|(application@dev\.squel\.v2)|(application@eu-my-drivingdirections\.com)|(application@fr-allo-pages\.fr)|(application@fr-catizz\.com)|(application@fr-mr-traduction\.com)|(application@good-recettes\.com)|(application@horaires\.voyage)|(application@imc-calcular\.com)|(application@imc-peso\.com)|(application@it-mio-percorso\.com)|(application@iti-maps\.fr)|(application@itineraire\.info)|(application@lbc-search\.com)|(application@les-pages\.com)|(application@lovincalculator\.com)|(application@lovintest\.com)|(application@masowe\.com)|(application@matchs\.direct)|(application@mein-bmi\.com)|(application@mes-resultats\.com)|(application@mestaf\.com)|(application@meu-imc\.com)|(application@mon-calcul-imc\.fr)|(application@mon-juste-poids\.com)|(application@mon-trajet\.com)|(application@my-drivingdirections\.com)|(application@people-show\.com)|(application@plans-reduc\.fr)|(application@point-meteo\.fr)|(application@poulixo\.com)|(application@quipage\.fr)|(application@quizdeamor\.com)|(application@quizdoamor\.com)|(application@quotient-retraite\.fr)|(application@recettes\.net)|(application@routenplaner-karten\.com)|(application@ruta-mapa\.com)|(application@satellite\.dev\.squel\.v2)|(application@search-bilan-imc\.fr)|(application@search-maps-finder\.com)|(application@slimness\.fr)|(application@start-bmi\.com)|(application@tests-moi\.com)|(application@tousmesjeux\.fr)|(application@toutlannuaire\.fr)|(application@tuto-diy\.com)|(application@ubersetzung-app\.com)|(application@uk-cookyummy\.com)|(application@uk-howlogin\.me)|(application@uk-myloap\.com)|(application@voyagevoyage\.co)|(application@wikimot\.fr)|(application@www\.plans-reduc\.fr)|(application@yummmi\.es)|(application@yummmies\.be)|(application@yummmies\.ch)|(application@yummmies\.fr)|(application@yummmies\.lu)|(application@zikplay\.fr)|(applicationY@search-maps-finder\.com)|(cmesapps@findizer\.fr)|(findizer-shopping@jetpack)|(\{8aaebb36-1488-4022-b7ec-29b790d12c17\})/">
+      <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/components/extensions/ExtensionPopups.jsm
+++ b/browser/components/extensions/ExtensionPopups.jsm
@@ -124,16 +124,17 @@ class BasePopup {
       }
 
       let {panel} = this;
       if (panel) {
         panel.removeEventListener("popuppositioned", this, {capture: true});
       }
       if (panel && panel.id !== REMOTE_PANEL_ID) {
         panel.style.removeProperty("--arrowpanel-background");
+        panel.style.removeProperty("--arrowpanel-border-color");
         panel.removeAttribute("remote");
       }
 
       this.browser = null;
       this.stack = null;
       this.viewNode = null;
     });
   }
@@ -350,19 +351,29 @@ class BasePopup {
       this.browser.style.height = `${height}px`;
       this.browser.style.minHeight = `${height}px`;
     }
 
     let event = new this.window.CustomEvent("WebExtPopupResized", {detail});
     this.browser.dispatchEvent(event);
   }
 
-  setBackground(background = "") {
-    if (background) {
-      this.panel.style.setProperty("--arrowpanel-background", background);
+  setBackground(background) {
+    // Panels inherit the applied theme (light, dark, etc) and there is a high
+    // likelihood that most extension authors will not have tested with a dark theme.
+    // If they have not set a background-color, we force it to white to ensure visibility
+    // of the extension content. Passing `null` should be treated the same as no argument,
+    // which is why we can't use default parameters here.
+    if (!background) {
+      background = "#fff";
+    }
+    this.panel.style.setProperty("--arrowpanel-background", background);
+    if (background == "#fff") {
+      // Set a usable default color that work with the default background-color.
+      this.panel.style.setProperty("--arrowpanel-border-color", "hsla(210,4%,10%,.05)");
     }
     this.background = background;
   }
 }
 
 /**
  * A map of active popups for a given browser window.
  *
--- a/browser/components/extensions/child/ext-devtools-network.js
+++ b/browser/components/extensions/child/ext-devtools-network.js
@@ -28,29 +28,33 @@ class ChildNetworkResponseLoader {
   }
 }
 
 this.devtools_network = class extends ExtensionAPI {
   getAPI(context) {
     return {
       devtools: {
         network: {
-          onRequestFinished: new EventManager(context, "devtools.network.onRequestFinished", fire => {
-            let onFinished = (data) => {
-              const loader = new ChildNetworkResponseLoader(context, data.requestId);
-              const harEntry = {...data.harEntry, ...loader.api()};
-              const result = Cu.cloneInto(harEntry, context.cloneScope, {
-                cloneFunctions: true,
-              });
-              fire.asyncWithoutClone(result);
-            };
+          onRequestFinished: new EventManager({
+            context,
+            name: "devtools.network.onRequestFinished",
+            register: fire => {
+              let onFinished = (data) => {
+                const loader = new ChildNetworkResponseLoader(context, data.requestId);
+                const harEntry = {...data.harEntry, ...loader.api()};
+                const result = Cu.cloneInto(harEntry, context.cloneScope, {
+                  cloneFunctions: true,
+                });
+                fire.asyncWithoutClone(result);
+              };
 
-            let parent = context.childManager.getParentEvent("devtools.network.onRequestFinished");
-            parent.addListener(onFinished);
-            return () => {
-              parent.removeListener(onFinished);
-            };
+              let parent = context.childManager.getParentEvent("devtools.network.onRequestFinished");
+              parent.addListener(onFinished);
+              return () => {
+                parent.removeListener(onFinished);
+              };
+            },
           }).api(),
         },
       },
     };
   }
 };
--- a/browser/components/extensions/child/ext-devtools-panels.js
+++ b/browser/components/extensions/child/ext-devtools-panels.js
@@ -89,37 +89,43 @@ class ChildDevToolsPanel extends Extensi
   }
 
   onParentPanelHidden() {
     this.emit("hidden");
   }
 
   api() {
     return {
-      onShown: new EventManager(
-        this.context, "devtoolsPanel.onShown", fire => {
+      onShown: new EventManager({
+        context: this.context,
+        name: "devtoolsPanel.onShown",
+        register: fire => {
           const listener = (eventName, panelContentWindow) => {
             fire.asyncWithoutClone(panelContentWindow);
           };
           this.on("shown", listener);
           return () => {
             this.off("shown", listener);
           };
-        }).api(),
+        },
+      }).api(),
 
-      onHidden: new EventManager(
-        this.context, "devtoolsPanel.onHidden", fire => {
+      onHidden: new EventManager({
+        context: this.context,
+        name: "devtoolsPanel.onHidden",
+        register: fire => {
           const listener = () => {
             fire.async();
           };
           this.on("hidden", listener);
           return () => {
             this.off("hidden", listener);
           };
-        }).api(),
+        },
+      }).api(),
 
       // TODO(rpl): onSearch event and createStatusBarButton method
     };
   }
 
   close() {
     this.mm.removeMessageListener("Extension:DevToolsPanelShown", this);
     this.mm.removeMessageListener("Extension:DevToolsPanelHidden", this);
@@ -184,37 +190,43 @@ class ChildDevToolsInspectorSidebar exte
   onParentSidebarHidden() {
     this.emit("hidden");
   }
 
   api() {
     const {context, id} = this;
 
     return {
-      onShown: new EventManager(
-        context, "devtoolsInspectorSidebar.onShown", fire => {
+      onShown: new EventManager({
+        context,
+        name: "devtoolsInspectorSidebar.onShown",
+        register: fire => {
           const listener = (eventName, panelContentWindow) => {
             fire.asyncWithoutClone(panelContentWindow);
           };
           this.on("shown", listener);
           return () => {
             this.off("shown", listener);
           };
-        }).api(),
+        },
+      }).api(),
 
-      onHidden: new EventManager(
-        context, "devtoolsInspectorSidebar.onHidden", fire => {
+      onHidden: new EventManager({
+        context,
+        name: "devtoolsInspectorSidebar.onHidden",
+        register: fire => {
           const listener = () => {
             fire.async();
           };
           this.on("hidden", listener);
           return () => {
             this.off("hidden", listener);
           };
-        }).api(),
+        },
+      }).api(),
 
       setObject(jsonObject, rootTitle) {
         return context.cloneScope.Promise.resolve().then(() => {
           return context.childManager.callParentAsyncFunction(
             "devtools.panels.elements.Sidebar.setObject",
             [id, jsonObject, rootTitle]
           );
         });
@@ -274,23 +286,26 @@ this.devtools_panels = class extends Ext
                                                     context.cloneScope,
                                                     {cloneFunctions: true});
               return devtoolsPanelAPI;
             });
           },
           get themeName() {
             return themeChangeObserver.themeName;
           },
-          onThemeChanged: new EventManager(
-            context, "devtools.panels.onThemeChanged", fire => {
+          onThemeChanged: new EventManager({
+            context,
+            name: "devtools.panels.onThemeChanged",
+            register: fire => {
               const listener = (eventName, themeName) => {
                 fire.async(themeName);
               };
               themeChangeObserver.on("themeChanged", listener);
               return () => {
                 themeChangeObserver.off("themeChanged", listener);
               };
-            }).api(),
+            },
+          }).api(),
         },
       },
     };
   }
 };
--- a/browser/components/extensions/child/ext-menus.js
+++ b/browser/components/extensions/child/ext-menus.js
@@ -154,27 +154,31 @@ this.menusInternal = class extends Exten
         },
 
         removeAll() {
           onClickedProp.deleteAllListenersFromExtension();
 
           return context.childManager.callParentAsyncFunction("menusInternal.removeAll", []);
         },
 
-        onClicked: new EventManager(context, "menus.onClicked", fire => {
-          let listener = (info, tab) => {
-            withHandlingUserInput(context.contentWindow,
-                                  () => fire.sync(info, tab));
-          };
+        onClicked: new EventManager({
+          context,
+          name: "menus.onClicked",
+          register: fire => {
+            let listener = (info, tab) => {
+              withHandlingUserInput(context.contentWindow,
+                                    () => fire.sync(info, tab));
+            };
 
-          let event = context.childManager.getParentEvent("menusInternal.onClicked");
-          event.addListener(listener);
-          return () => {
-            event.removeListener(listener);
-          };
+            let event = context.childManager.getParentEvent("menusInternal.onClicked");
+            event.addListener(listener);
+            return () => {
+              event.removeListener(listener);
+            };
+          },
         }).api(),
       },
     };
 
     const result = {};
     if (context.extension.hasPermission("menus")) {
       result.menus = api.menus;
     }
--- a/browser/components/extensions/child/ext-omnibox.js
+++ b/browser/components/extensions/child/ext-omnibox.js
@@ -1,26 +1,30 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 "use strict";
 
 this.omnibox = class extends ExtensionAPI {
   getAPI(context) {
     return {
       omnibox: {
-        onInputChanged: new EventManager(context, "omnibox.onInputChanged", fire => {
-          let listener = (text, id) => {
-            fire.asyncWithoutClone(text, suggestions => {
-              context.childManager.callParentFunctionNoReturn("omnibox.addSuggestions", [
-                id,
-                suggestions,
-              ]);
-            });
-          };
-          context.childManager.getParentEvent("omnibox.onInputChanged").addListener(listener);
-          return () => {
-            context.childManager.getParentEvent("omnibox.onInputChanged").removeListener(listener);
-          };
+        onInputChanged: new EventManager({
+          context,
+          name: "omnibox.onInputChanged",
+          register: fire => {
+            let listener = (text, id) => {
+              fire.asyncWithoutClone(text, suggestions => {
+                context.childManager.callParentFunctionNoReturn("omnibox.addSuggestions", [
+                  id,
+                  suggestions,
+                ]);
+              });
+            };
+            context.childManager.getParentEvent("omnibox.onInputChanged").addListener(listener);
+            return () => {
+              context.childManager.getParentEvent("omnibox.onInputChanged").removeListener(listener);
+            };
+          },
         }).api(),
       },
     };
   }
 };
--- a/browser/components/extensions/parent/.eslintrc.js
+++ b/browser/components/extensions/parent/.eslintrc.js
@@ -2,17 +2,16 @@
 
 module.exports = {
   "extends": "../../../../toolkit/components/extensions/parent/.eslintrc.js",
 
   "globals": {
     "Tab": true,
     "TabContext": true,
     "Window": true,
-    "WindowEventManager": true,
     "actionContextMenu": true,
     "browserActionFor": true,
     "getContainerForCookieStoreId": true,
     "getDevToolsTargetForContext": true,
     "getInspectedWindowFront": true,
     "getTargetTabIdForToolbox": true,
     "getToolboxEvalOptions": true,
     "isContainerCookieStoreId": true,
--- a/browser/components/extensions/parent/ext-bookmarks.js
+++ b/browser/components/extensions/parent/ext-bookmarks.js
@@ -324,63 +324,79 @@ this.bookmarks = class extends Extension
           try {
             return PlacesUtils.bookmarks.remove(info)
               .catch(error => Promise.reject({message: error.message}));
           } catch (e) {
             return Promise.reject({message: `Invalid bookmark: ${JSON.stringify(info)}`});
           }
         },
 
-        onCreated: new EventManager(context, "bookmarks.onCreated", fire => {
-          let listener = (event, bookmark) => {
-            fire.sync(bookmark.id, bookmark);
-          };
+        onCreated: new EventManager({
+          context,
+          name: "bookmarks.onCreated",
+          register: fire => {
+            let listener = (event, bookmark) => {
+              fire.sync(bookmark.id, bookmark);
+            };
 
-          observer.on("created", listener);
-          incrementListeners();
-          return () => {
-            observer.off("created", listener);
-            decrementListeners();
-          };
+            observer.on("created", listener);
+            incrementListeners();
+            return () => {
+              observer.off("created", listener);
+              decrementListeners();
+            };
+          },
         }).api(),
 
-        onRemoved: new EventManager(context, "bookmarks.onRemoved", fire => {
-          let listener = (event, data) => {
-            fire.sync(data.guid, data.info);
-          };
+        onRemoved: new EventManager({
+          context,
+          name: "bookmarks.onRemoved",
+          register: fire => {
+            let listener = (event, data) => {
+              fire.sync(data.guid, data.info);
+            };
 
-          observer.on("removed", listener);
-          incrementListeners();
-          return () => {
-            observer.off("removed", listener);
-            decrementListeners();
-          };
+            observer.on("removed", listener);
+            incrementListeners();
+            return () => {
+              observer.off("removed", listener);
+              decrementListeners();
+            };
+          },
         }).api(),
 
-        onChanged: new EventManager(context, "bookmarks.onChanged", fire => {
-          let listener = (event, data) => {
-            fire.sync(data.guid, data.info);
-          };
+        onChanged: new EventManager({
+          context,
+          name: "bookmarks.onChanged",
+          register: fire => {
+            let listener = (event, data) => {
+              fire.sync(data.guid, data.info);
+            };
 
-          observer.on("changed", listener);
-          incrementListeners();
-          return () => {
-            observer.off("changed", listener);
-            decrementListeners();
-          };
+            observer.on("changed", listener);
+            incrementListeners();
+            return () => {
+              observer.off("changed", listener);
+              decrementListeners();
+            };
+          },
         }).api(),
 
-        onMoved: new EventManager(context, "bookmarks.onMoved", fire => {
-          let listener = (event, data) => {
-            fire.sync(data.guid, data.info);
-          };
+        onMoved: new EventManager({
+          context,
+          name: "bookmarks.onMoved",
+          register: fire => {
+            let listener = (event, data) => {
+              fire.sync(data.guid, data.info);
+            };
 
-          observer.on("moved", listener);
-          incrementListeners();
-          return () => {
-            observer.off("moved", listener);
-            decrementListeners();
-          };
+            observer.on("moved", listener);
+            incrementListeners();
+            return () => {
+              observer.off("moved", listener);
+              decrementListeners();
+            };
+          },
         }).api(),
       },
     };
   }
 };
--- a/browser/components/extensions/parent/ext-browser.js
+++ b/browser/components/extensions/parent/ext-browser.js
@@ -164,44 +164,16 @@ class WindowTracker extends WindowTracke
    *        Will return the topmost "normal" (i.e., not popup) window.
    *        @readonly
    */
   get topNormalWindow() {
     return RecentWindow.getMostRecentBrowserWindow({allowPopups: false});
   }
 }
 
-/**
- * An event manager API provider which listens for a DOM event in any browser
- * window, and calls the given listener function whenever an event is received.
- * That listener function receives a `fire` object, which it can use to dispatch
- * events to the extension, and a DOM event object.
- *
- * @param {BaseContext} context
- *        The extension context which the event manager belongs to.
- * @param {string} name
- *        The API name of the event manager, e.g.,"runtime.onMessage".
- * @param {string} event
- *        The name of the DOM event to listen for.
- * @param {function} listener
- *        The listener function to call when a DOM event is received.
- */
-global.WindowEventManager = class extends EventManager {
-  constructor(context, name, event, listener) {
-    super(context, name, fire => {
-      let listener2 = listener.bind(null, fire);
-
-      windowTracker.addListener(event, listener2);
-      return () => {
-        windowTracker.removeListener(event, listener2);
-      };
-    });
-  }
-};
-
 class TabTracker extends TabTrackerBase {
   constructor() {
     super();
 
     this._tabs = new WeakMap();
     this._browsers = new WeakMap();
     this._tabIds = new Map();
     this._nextId = 1;
--- a/browser/components/extensions/parent/ext-browserAction.js
+++ b/browser/components/extensions/parent/ext-browserAction.js
@@ -579,25 +579,30 @@ this.browserAction = class extends Exten
       if (tabId !== null) {
         return tabTracker.getTab(tabId);
       }
       return null;
     }
 
     return {
       browserAction: {
-        onClicked: new InputEventManager(context, "browserAction.onClicked", fire => {
-          let listener = (event, browser) => {
-            context.withPendingBrowser(browser, () =>
-              fire.sync(tabManager.convert(tabTracker.activeTab)));
-          };
-          browserAction.on("click", listener);
-          return () => {
-            browserAction.off("click", listener);
-          };
+        onClicked: new EventManager({
+          context,
+          name: "browserAction.onClicked",
+          inputHandling: true,
+          register: fire => {
+            let listener = (event, browser) => {
+              context.withPendingBrowser(browser, () =>
+                fire.sync(tabManager.convert(tabTracker.activeTab)));
+            };
+            browserAction.on("click", listener);
+            return () => {
+              browserAction.off("click", listener);
+            };
+          },
         }).api(),
 
         enable: function(tabId) {
           let tab = getTab(tabId);
           browserAction.setProperty(tab, "enabled", true);
         },
 
         disable: function(tabId) {
--- a/browser/components/extensions/parent/ext-commands.js
+++ b/browser/components/extensions/parent/ext-commands.js
@@ -359,21 +359,25 @@ this.commands = class extends ExtensionA
             "commands", name, extension.id);
 
           if (storedCommand && storedCommand.value) {
             commands.set(name, {...manifestCommands.get(name)});
             ExtensionSettingsStore.removeSetting(extension.id, "commands", name);
             this.registerKeys(commands);
           }
         },
-        onCommand: new EventManager(context, "commands.onCommand", fire => {
-          let listener = (eventName, commandName) => {
-            fire.async(commandName);
-          };
-          this.on("command", listener);
-          return () => {
-            this.off("command", listener);
-          };
+        onCommand: new EventManager({
+          context,
+          name: "commands.onCommand",
+          register: fire => {
+            let listener = (eventName, commandName) => {
+              fire.async(commandName);
+            };
+            this.on("command", listener);
+            return () => {
+              this.off("command", listener);
+            };
+          },
         }).api(),
       },
     };
   }
 };
--- a/browser/components/extensions/parent/ext-devtools-network.js
+++ b/browser/components/extensions/parent/ext-devtools-network.js
@@ -10,47 +10,55 @@ var {
   ExtensionError,
 } = ExtensionUtils;
 
 this.devtools_network = class extends ExtensionAPI {
   getAPI(context) {
     return {
       devtools: {
         network: {
-          onNavigated: new EventManager(context, "devtools.onNavigated", fire => {
-            let listener = data => {
-              fire.async(data.url);
-            };
+          onNavigated: new EventManager({
+            context,
+            name: "devtools.onNavigated",
+            register: fire => {
+              let listener = data => {
+                fire.async(data.url);
+              };
 
-            let targetPromise = getDevToolsTargetForContext(context);
-            targetPromise.then(target => {
-              target.on("navigate", listener);
-            });
-            return () => {
+              let targetPromise = getDevToolsTargetForContext(context);
               targetPromise.then(target => {
-                target.off("navigate", listener);
+                target.on("navigate", listener);
               });
-            };
+              return () => {
+                targetPromise.then(target => {
+                  target.off("navigate", listener);
+                });
+              };
+            },
           }).api(),
 
           getHAR: function() {
             return context.devToolsToolbox.getHARFromNetMonitor();
           },
 
-          onRequestFinished: new EventManager(context, "devtools.network.onRequestFinished", fire => {
-            const listener = (data) => {
-              fire.async(data);
-            };
+          onRequestFinished: new EventManager({
+            context,
+            name: "devtools.network.onRequestFinished",
+            register: fire => {
+              const listener = (data) => {
+                fire.async(data);
+              };
 
-            const toolbox = context.devToolsToolbox;
-            toolbox.addRequestFinishedListener(listener);
+              const toolbox = context.devToolsToolbox;
+              toolbox.addRequestFinishedListener(listener);
 
-            return () => {
-              toolbox.removeRequestFinishedListener(listener);
-            };
+              return () => {
+                toolbox.removeRequestFinishedListener(listener);
+              };
+            },
           }).api(),
 
           // The following method is used internally to allow the request API
           // piece that is running in the child process to ask the parent process
           // to fetch response content from the back-end.
           Request: {
             async getContent(requestId) {
               return context.devToolsToolbox.fetchResponseContent(requestId)
--- a/browser/components/extensions/parent/ext-devtools-panels.js
+++ b/browser/components/extensions/parent/ext-devtools-panels.js
@@ -520,26 +520,29 @@ this.devtools_panels = class extends Ext
     function newBasePanelId() {
       return `${context.extension.id}-${context.contextId}-${nextPanelId++}`;
     }
 
     return {
       devtools: {
         panels: {
           elements: {
-            onSelectionChanged: new EventManager(
-              context, "devtools.panels.elements.onSelectionChanged", fire => {
+            onSelectionChanged: new EventManager({
+              context,
+              name: "devtools.panels.elements.onSelectionChanged",
+              register: fire => {
                 const listener = (eventName) => {
                   fire.async();
                 };
                 toolboxSelectionObserver.on("selectionChanged", listener);
                 return () => {
                   toolboxSelectionObserver.off("selectionChanged", listener);
                 };
-              }).api(),
+              },
+            }).api(),
             createSidebarPane(title) {
               const id = `devtools-inspector-sidebar-${makeWidgetId(newBasePanelId())}`;
 
               const parentSidebar = new ParentDevToolsInspectorSidebar(context, {title, id});
               sidebarsById.set(id, parentSidebar);
 
               context.callOnClose({
                 close() {
--- a/browser/components/extensions/parent/ext-geckoProfiler.js
+++ b/browser/components/extensions/parent/ext-geckoProfiler.js
@@ -468,18 +468,22 @@ this.geckoProfiler = class extends Exten
               // directory, or if dump_syms.exe doesn't exist in the object directory, or if
               // dump_syms.exe failed for other reasons.
             }
           }
 
           throw new Error(`Ran out of options to get symbols from library ${debugName} ${breakpadId}.`);
         },
 
-        onRunning: new EventManager(context, "geckoProfiler.onRunning", fire => {
-          isRunningObserver.addObserver(fire.async);
-          return () => {
-            isRunningObserver.removeObserver(fire.async);
-          };
+        onRunning: new EventManager({
+          context,
+          name: "geckoProfiler.onRunning",
+          register: fire => {
+            isRunningObserver.addObserver(fire.async);
+            return () => {
+              isRunningObserver.removeObserver(fire.async);
+            };
+          },
         }).api(),
       },
     };
   }
 };
--- a/browser/components/extensions/parent/ext-history.js
+++ b/browser/components/extensions/parent/ext-history.js
@@ -215,44 +215,56 @@ this.history = class extends ExtensionAP
 
           let historyQuery = PlacesUtils.history.getNewQuery();
           historyQuery.uri = Services.io.newURI(url);
           let queryResult = PlacesUtils.history.executeQuery(historyQuery, options).root;
           let results = convertNavHistoryContainerResultNode(queryResult, convertNodeToVisitItem);
           return Promise.resolve(results);
         },
 
-        onVisited: new EventManager(context, "history.onVisited", fire => {
-          let listener = (event, data) => {
-            fire.sync(data);
-          };
+        onVisited: new EventManager({
+          context,
+          name: "history.onVisited",
+          register: fire => {
+            let listener = (event, data) => {
+              fire.sync(data);
+            };
 
-          getHistoryObserver().on("visited", listener);
-          return () => {
-            getHistoryObserver().off("visited", listener);
-          };
+            getHistoryObserver().on("visited", listener);
+            return () => {
+              getHistoryObserver().off("visited", listener);
+            };
+          },
         }).api(),
 
-        onVisitRemoved: new EventManager(context, "history.onVisitRemoved", fire => {
-          let listener = (event, data) => {
-            fire.sync(data);
-          };
+        onVisitRemoved: new EventManager({
+          context,
+          name: "history.onVisitRemoved",
+          register: fire => {
+            let listener = (event, data) => {
+              fire.sync(data);
+            };
 
-          getHistoryObserver().on("visitRemoved", listener);
-          return () => {
-            getHistoryObserver().off("visitRemoved", listener);
-          };
+            getHistoryObserver().on("visitRemoved", listener);
+            return () => {
+              getHistoryObserver().off("visitRemoved", listener);
+            };
+          },
         }).api(),
 
-        onTitleChanged: new EventManager(context, "history.onTitleChanged", fire => {
-          let listener = (event, data) => {
-            fire.sync(data);
-          };
+        onTitleChanged: new EventManager({
+          context,
+          name: "history.onTitleChanged",
+          register: fire => {
+            let listener = (event, data) => {
+              fire.sync(data);
+            };
 
-          getHistoryObserver().on("titleChanged", listener);
-          return () => {
-            getHistoryObserver().off("titleChanged", listener);
-          };
+            getHistoryObserver().on("titleChanged", listener);
+            return () => {
+              getHistoryObserver().off("titleChanged", listener);
+            };
+          },
         }).api(),
       },
     };
   }
 };
--- a/browser/components/extensions/parent/ext-menus.js
+++ b/browser/components/extensions/parent/ext-menus.js
@@ -808,50 +808,58 @@ this.menusInternal = class extends Exten
   getAPI(context) {
     let {extension} = context;
 
     const menus = {
       refresh() {
         gMenuBuilder.rebuildMenu(extension);
       },
 
-      onShown: new EventManager(context, "menus.onShown", fire => {
-        let listener = (event, menuIds, contextData) => {
-          let info = {
-            menuIds,
-            contexts: Array.from(getMenuContexts(contextData)),
-          };
+      onShown: new EventManager({
+        context,
+        name: "menus.onShown",
+        register: fire => {
+          let listener = (event, menuIds, contextData) => {
+            let info = {
+              menuIds,
+              contexts: Array.from(getMenuContexts(contextData)),
+            };
 
-          // The menus.onShown event is fired before the user has consciously
-          // interacted with an extension, so we require permissions before
-          // exposing sensitive contextual data.
-          let includeSensitiveData =
+            // The menus.onShown event is fired before the user has consciously
+            // interacted with an extension, so we require permissions before
+            // exposing sensitive contextual data.
+            let includeSensitiveData =
             extension.tabManager.hasActiveTabPermission(contextData.tab) ||
             extension.whiteListedHosts.matches(contextData.inFrame ? contextData.frameUrl : contextData.pageUrl);
 
-          addMenuEventInfo(info, contextData, includeSensitiveData);
+            addMenuEventInfo(info, contextData, includeSensitiveData);
 
-          let tab = extension.tabManager.convert(contextData.tab);
-          fire.sync(info, tab);
-        };
-        gOnShownSubscribers.add(extension);
-        extension.on("webext-menu-shown", listener);
-        return () => {
-          gOnShownSubscribers.delete(extension);
-          extension.off("webext-menu-shown", listener);
-        };
+            let tab = extension.tabManager.convert(contextData.tab);
+            fire.sync(info, tab);
+          };
+          gOnShownSubscribers.add(extension);
+          extension.on("webext-menu-shown", listener);
+          return () => {
+            gOnShownSubscribers.delete(extension);
+            extension.off("webext-menu-shown", listener);
+          };
+        },
       }).api(),
-      onHidden: new EventManager(context, "menus.onHidden", fire => {
-        let listener = () => {
-          fire.sync();
-        };
-        extension.on("webext-menu-hidden", listener);
-        return () => {
-          extension.off("webext-menu-hidden", listener);
-        };
+      onHidden: new EventManager({
+        context,
+        name: "menus.onHidden",
+        register: fire => {
+          let listener = () => {
+            fire.sync();
+          };
+          extension.on("webext-menu-hidden", listener);
+          return () => {
+            extension.off("webext-menu-hidden", listener);
+          };
+        },
       }).api(),
     };
 
     return {
       contextMenus: menus,
       menus,
       menusInternal: {
         create: function(createProperties) {
@@ -878,25 +886,29 @@ this.menusInternal = class extends Exten
 
         removeAll: function() {
           let root = gRootItems.get(extension);
           if (root) {
             root.remove();
           }
         },
 
-        onClicked: new EventManager(context, "menusInternal.onClicked", fire => {
-          let listener = (event, info, nativeTab) => {
-            let {linkedBrowser} = nativeTab || tabTracker.activeTab;
-            let tab = nativeTab && extension.tabManager.convert(nativeTab);
-            context.withPendingBrowser(linkedBrowser,
-                                       () => fire.sync(info, tab));
-          };
+        onClicked: new EventManager({
+          context,
+          name: "menusInternal.onClicked",
+          register: fire => {
+            let listener = (event, info, nativeTab) => {
+              let {linkedBrowser} = nativeTab || tabTracker.activeTab;
+              let tab = nativeTab && extension.tabManager.convert(nativeTab);
+              context.withPendingBrowser(linkedBrowser,
+                                         () => fire.sync(info, tab));
+            };
 
-          extension.on("webext-menu-menuitem-click", listener);
-          return () => {
-            extension.off("webext-menu-menuitem-click", listener);
-          };
+            extension.on("webext-menu-menuitem-click", listener);
+            return () => {
+              extension.off("webext-menu-menuitem-click", listener);
+            };
+          },
         }).api(),
       },
     };
   }
 };
--- a/browser/components/extensions/parent/ext-omnibox.js
+++ b/browser/components/extensions/parent/ext-omnibox.js
@@ -32,61 +32,77 @@ this.omnibox = class extends ExtensionAP
           try {
             // This will throw if the keyword failed to register.
             ExtensionSearchHandler.setDefaultSuggestion(this.keyword, suggestion);
           } catch (e) {
             return Promise.reject(e.message);
           }
         },
 
-        onInputStarted: new EventManager(context, "omnibox.onInputStarted", fire => {
-          let listener = (eventName) => {
-            fire.sync();
-          };
-          extension.on(ExtensionSearchHandler.MSG_INPUT_STARTED, listener);
-          return () => {
-            extension.off(ExtensionSearchHandler.MSG_INPUT_STARTED, listener);
-          };
+        onInputStarted: new EventManager({
+          context,
+          name: "omnibox.onInputStarted",
+          register: fire => {
+            let listener = (eventName) => {
+              fire.sync();
+            };
+            extension.on(ExtensionSearchHandler.MSG_INPUT_STARTED, listener);
+            return () => {
+              extension.off(ExtensionSearchHandler.MSG_INPUT_STARTED, listener);
+            };
+          },
         }).api(),
 
-        onInputCancelled: new EventManager(context, "omnibox.onInputCancelled", fire => {
-          let listener = (eventName) => {
-            fire.sync();
-          };
-          extension.on(ExtensionSearchHandler.MSG_INPUT_CANCELLED, listener);
-          return () => {
-            extension.off(ExtensionSearchHandler.MSG_INPUT_CANCELLED, listener);
-          };
+        onInputCancelled: new EventManager({
+          context,
+          name: "omnibox.onInputCancelled",
+          register: fire => {
+            let listener = (eventName) => {
+              fire.sync();
+            };
+            extension.on(ExtensionSearchHandler.MSG_INPUT_CANCELLED, listener);
+            return () => {
+              extension.off(ExtensionSearchHandler.MSG_INPUT_CANCELLED, listener);
+            };
+          },
         }).api(),
 
-        onInputEntered: new EventManager(context, "omnibox.onInputEntered", fire => {
-          let listener = (eventName, text, disposition) => {
-            fire.sync(text, disposition);
-          };
-          extension.on(ExtensionSearchHandler.MSG_INPUT_ENTERED, listener);
-          return () => {
-            extension.off(ExtensionSearchHandler.MSG_INPUT_ENTERED, listener);
-          };
+        onInputEntered: new EventManager({
+          context,
+          name: "omnibox.onInputEntered",
+          register: fire => {
+            let listener = (eventName, text, disposition) => {
+              fire.sync(text, disposition);
+            };
+            extension.on(ExtensionSearchHandler.MSG_INPUT_ENTERED, listener);
+            return () => {
+              extension.off(ExtensionSearchHandler.MSG_INPUT_ENTERED, listener);
+            };
+          },
         }).api(),
 
         // Internal APIs.
         addSuggestions: (id, suggestions) => {
           try {
             ExtensionSearchHandler.addSuggestions(this.keyword, id, suggestions);
           } catch (e) {
             // Silently fail because the extension developer can not know for sure if the user
             // has already invalidated the callback when asynchronously providing suggestions.
           }
         },
 
-        onInputChanged: new EventManager(context, "omnibox.onInputChanged", fire => {
-          let listener = (eventName, text, id) => {
-            fire.sync(text, id);
-          };
-          extension.on(ExtensionSearchHandler.MSG_INPUT_CHANGED, listener);
-          return () => {
-            extension.off(ExtensionSearchHandler.MSG_INPUT_CHANGED, listener);
-          };
+        onInputChanged: new EventManager({
+          context,
+          name: "omnibox.onInputChanged",
+          register: fire => {
+            let listener = (eventName, text, id) => {
+              fire.sync(text, id);
+            };
+            extension.on(ExtensionSearchHandler.MSG_INPUT_CHANGED, listener);
+            return () => {
+              extension.off(ExtensionSearchHandler.MSG_INPUT_CHANGED, listener);
+            };
+          },
         }).api(),
       },
     };
   }
 };
--- a/browser/components/extensions/parent/ext-pageAction.js
+++ b/browser/components/extensions/parent/ext-pageAction.js
@@ -341,26 +341,31 @@ this.pageAction = class extends Extensio
   getAPI(context) {
     let {extension} = context;
 
     const {tabManager} = extension;
     const pageAction = this;
 
     return {
       pageAction: {
-        onClicked: new InputEventManager(context, "pageAction.onClicked", fire => {
-          let listener = (evt, tab) => {
-            context.withPendingBrowser(tab.linkedBrowser, () =>
-              fire.sync(tabManager.convert(tab)));
-          };
+        onClicked: new EventManager({
+          context,
+          name: "pageAction.onClicked",
+          inputHandling: true,
+          register: fire => {
+            let listener = (evt, tab) => {
+              context.withPendingBrowser(tab.linkedBrowser, () =>
+                fire.sync(tabManager.convert(tab)));
+            };
 
-          pageAction.on("click", listener);
-          return () => {
-            pageAction.off("click", listener);
-          };
+            pageAction.on("click", listener);
+            return () => {
+              pageAction.off("click", listener);
+            };
+          },
         }).api(),
 
         show(tabId) {
           let tab = tabTracker.getTab(tabId);
           pageAction.setProperty(tab, "show", true);
         },
 
         hide(tabId) {
--- a/browser/components/extensions/parent/ext-sessions.js
+++ b/browser/components/extensions/parent/ext-sessions.js
@@ -199,22 +199,26 @@ this.sessions = class extends ExtensionA
 
         removeWindowValue(windowId, key) {
           let {win, encodedKey} =
             getWindowParams(extension.id, key, windowId, context);
 
           SessionStore.deleteWindowValue(win, encodedKey);
         },
 
-        onChanged: new EventManager(context, "sessions.onChanged", fire => {
-          let observer = () => {
-            fire.async();
-          };
+        onChanged: new EventManager({
+          context,
+          name: "sessions.onChanged",
+          register: fire => {
+            let observer = () => {
+              fire.async();
+            };
 
-          Services.obs.addObserver(observer, SS_ON_CLOSED_OBJECTS_CHANGED);
-          return () => {
-            Services.obs.removeObserver(observer, SS_ON_CLOSED_OBJECTS_CHANGED);
-          };
+            Services.obs.addObserver(observer, SS_ON_CLOSED_OBJECTS_CHANGED);
+            return () => {
+              Services.obs.removeObserver(observer, SS_ON_CLOSED_OBJECTS_CHANGED);
+            };
+          },
         }).api(),
       },
     };
   }
 };
--- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js
@@ -105,17 +105,17 @@ const allProperties = new Set([
   "pinned",
   "sharingState",
   "status",
   "title",
 ]);
 const restricted = new Set(["url", "favIconUrl", "title"]);
 
 class TabsUpdateFilterEventManager extends EventManager {
-  constructor(context, eventName) {
+  constructor(context) {
     let {extension} = context;
     let {tabManager} = extension;
 
     let register = (fire, filterProps) => {
       let filter = {...filterProps};
       if (filter.urls) {
         filter.urls = new MatchPatternSet(filter.urls);
       }
@@ -281,17 +281,21 @@ class TabsUpdateFilterEventManager exten
         }
 
         if (filter.properties.has("isarticle")) {
           tabTracker.off("tab-isarticle", isArticleChangeListener);
         }
       };
     };
 
-    super(context, eventName, register);
+    super({
+      context,
+      name: "tabs.onUpdated",
+      register,
+    });
   }
 
   addListener(callback, filter) {
     let {extension} = this.context;
     if (filter && filter.urls &&
         (!extension.hasPermission("tabs") && !extension.hasPermission("activeTab"))) {
       Cu.reportError("Url filtering in tabs.onUpdated requires \"tabs\" or \"activeTab\" permission.");
       return false;
@@ -333,136 +337,168 @@ this.tabs = class extends ExtensionAPI {
 
       await tabListener.awaitTabReady(tab.nativeTab);
 
       return tab;
     }
 
     let self = {
       tabs: {
-        onActivated: new EventManager(context, "tabs.onActivated", fire => {
-          let listener = (eventName, event) => {
-            fire.async(event);
-          };
+        onActivated: new EventManager({
+          context,
+          name: "tabs.onActivated",
+          register: fire => {
+            let listener = (eventName, event) => {
+              fire.async(event);
+            };
 
-          tabTracker.on("tab-activated", listener);
-          return () => {
-            tabTracker.off("tab-activated", listener);
-          };
+            tabTracker.on("tab-activated", listener);
+            return () => {
+              tabTracker.off("tab-activated", listener);
+            };
+          },
         }).api(),
 
-        onCreated: new EventManager(context, "tabs.onCreated", fire => {
-          let listener = (eventName, event) => {
-            fire.async(tabManager.convert(event.nativeTab, event.currentTab));
-          };
+        onCreated: new EventManager({
+          context,
+          name: "tabs.onCreated",
+          register: fire => {
+            let listener = (eventName, event) => {
+              fire.async(tabManager.convert(event.nativeTab, event.currentTab));
+            };
 
-          tabTracker.on("tab-created", listener);
-          return () => {
-            tabTracker.off("tab-created", listener);
-          };
+            tabTracker.on("tab-created", listener);
+            return () => {
+              tabTracker.off("tab-created", listener);
+            };
+          },
         }).api(),
 
         /**
          * Since multiple tabs currently can't be highlighted, onHighlighted
          * essentially acts an alias for self.tabs.onActivated but returns
          * the tabId in an array to match the API.
          * @see  https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/Tabs/onHighlighted
         */
-        onHighlighted: new EventManager(context, "tabs.onHighlighted", fire => {
-          let listener = (eventName, event) => {
-            fire.async({tabIds: [event.tabId], windowId: event.windowId});
-          };
+        onHighlighted: new EventManager({
+          context,
+          name: "tabs.onHighlighted",
+          register: fire => {
+            let listener = (eventName, event) => {
+              fire.async({tabIds: [event.tabId], windowId: event.windowId});
+            };
 
-          tabTracker.on("tab-activated", listener);
-          return () => {
-            tabTracker.off("tab-activated", listener);
-          };
+            tabTracker.on("tab-activated", listener);
+            return () => {
+              tabTracker.off("tab-activated", listener);
+            };
+          },
         }).api(),
 
-        onAttached: new EventManager(context, "tabs.onAttached", fire => {
-          let listener = (eventName, event) => {
-            fire.async(event.tabId, {newWindowId: event.newWindowId, newPosition: event.newPosition});
-          };
+        onAttached: new EventManager({
+          context,
+          name: "tabs.onAttached",
+          register: fire => {
+            let listener = (eventName, event) => {
+              fire.async(event.tabId, {newWindowId: event.newWindowId, newPosition: event.newPosition});
+            };
 
-          tabTracker.on("tab-attached", listener);
-          return () => {
-            tabTracker.off("tab-attached", listener);
-          };
+            tabTracker.on("tab-attached", listener);
+            return () => {
+              tabTracker.off("tab-attached", listener);
+            };
+          },
         }).api(),
 
-        onDetached: new EventManager(context, "tabs.onDetached", fire => {
-          let listener = (eventName, event) => {
-            fire.async(event.tabId, {oldWindowId: event.oldWindowId, oldPosition: event.oldPosition});
-          };
+        onDetached: new EventManager({
+          context,
+          name: "tabs.onDetached",
+          register: fire => {
+            let listener = (eventName, event) => {
+              fire.async(event.tabId, {oldWindowId: event.oldWindowId, oldPosition: event.oldPosition});
+            };
 
-          tabTracker.on("tab-detached", listener);
-          return () => {
-            tabTracker.off("tab-detached", listener);
-          };
-        }).api(),
-
-        onRemoved: new EventManager(context, "tabs.onRemoved", fire => {
-          let listener = (eventName, event) => {
-            fire.async(event.tabId, {windowId: event.windowId, isWindowClosing: event.isWindowClosing});
-          };
-
-          tabTracker.on("tab-removed", listener);
-          return () => {
-            tabTracker.off("tab-removed", listener);
-          };
+            tabTracker.on("tab-detached", listener);
+            return () => {
+              tabTracker.off("tab-detached", listener);
+            };
+          },
         }).api(),
 
-        onReplaced: new EventManager(context, "tabs.onReplaced", fire => {
-          return () => {};
+        onRemoved: new EventManager({
+          context,
+          name: "tabs.onRemoved",
+          register: fire => {
+            let listener = (eventName, event) => {
+              fire.async(event.tabId, {windowId: event.windowId, isWindowClosing: event.isWindowClosing});
+            };
+
+            tabTracker.on("tab-removed", listener);
+            return () => {
+              tabTracker.off("tab-removed", listener);
+            };
+          },
+        }).api(),
+
+        onReplaced: new EventManager({
+          context,
+          name: "tabs.onReplaced",
+          register: fire => {
+            return () => {};
+          },
         }).api(),
 
-        onMoved: new EventManager(context, "tabs.onMoved", fire => {
-          // There are certain circumstances where we need to ignore a move event.
-          //
-          // Namely, the first time the tab is moved after it's created, we need
-          // to report the final position as the initial position in the tab's
-          // onAttached or onCreated event. This is because most tabs are inserted
-          // in a temporary location and then moved after the TabOpen event fires,
-          // which generates a TabOpen event followed by a TabMove event, which
-          // does not match the contract of our API.
-          let ignoreNextMove = new WeakSet();
+        onMoved: new EventManager({
+          context,
+          name: "tabs.onMoved",
+          register: fire => {
+            // There are certain circumstances where we need to ignore a move event.
+            //
+            // Namely, the first time the tab is moved after it's created, we need
+            // to report the final position as the initial position in the tab's
+            // onAttached or onCreated event. This is because most tabs are inserted
+            // in a temporary location and then moved after the TabOpen event fires,
+            // which generates a TabOpen event followed by a TabMove event, which
+            // does not match the contract of our API.
+            let ignoreNextMove = new WeakSet();
 
-          let openListener = event => {
-            ignoreNextMove.add(event.target);
-            // Remove the tab from the set on the next tick, since it will already
-            // have been moved by then.
-            Promise.resolve().then(() => {
-              ignoreNextMove.delete(event.target);
-            });
-          };
+            let openListener = event => {
+              ignoreNextMove.add(event.target);
+              // Remove the tab from the set on the next tick, since it will already
+              // have been moved by then.
+              Promise.resolve().then(() => {
+                ignoreNextMove.delete(event.target);
+              });
+            };
 
-          let moveListener = event => {
-            let nativeTab = event.originalTarget;
+            let moveListener = event => {
+              let nativeTab = event.originalTarget;
 
-            if (ignoreNextMove.has(nativeTab)) {
-              ignoreNextMove.delete(nativeTab);
-              return;
-            }
+              if (ignoreNextMove.has(nativeTab)) {
+                ignoreNextMove.delete(nativeTab);
+                return;
+              }
 
-            fire.async(tabTracker.getId(nativeTab), {
-              windowId: windowTracker.getId(nativeTab.ownerGlobal),
-              fromIndex: event.detail,
-              toIndex: nativeTab._tPos,
-            });
-          };
+              fire.async(tabTracker.getId(nativeTab), {
+                windowId: windowTracker.getId(nativeTab.ownerGlobal),
+                fromIndex: event.detail,
+                toIndex: nativeTab._tPos,
+              });
+            };
 
-          windowTracker.addListener("TabMove", moveListener);
-          windowTracker.addListener("TabOpen", openListener);
-          return () => {
-            windowTracker.removeListener("TabMove", moveListener);
-            windowTracker.removeListener("TabOpen", openListener);
-          };
+            windowTracker.addListener("TabMove", moveListener);
+            windowTracker.addListener("TabOpen", openListener);
+            return () => {
+              windowTracker.removeListener("TabMove", moveListener);
+              windowTracker.removeListener("TabOpen", openListener);
+            };
+          },
         }).api(),
 
-        onUpdated: new TabsUpdateFilterEventManager(context, "tabs.onUpdated").api(),
+        onUpdated: new TabsUpdateFilterEventManager(context).api(),
 
         create(createProperties) {
           return new Promise((resolve, reject) => {
             let window = createProperties.windowId !== null ?
               windowTracker.getWindow(createProperties.windowId, context) :
               windowTracker.topNormalWindow;
 
             if (!window.gBrowser) {
@@ -891,85 +927,89 @@ this.tabs = class extends ExtensionAPI {
           let currentSettings = this._getZoomSettings(tabTracker.getId(nativeTab));
 
           if (!Object.keys(settings).every(key => settings[key] === currentSettings[key])) {
             return Promise.reject(`Unsupported zoom settings: ${JSON.stringify(settings)}`);
           }
           return Promise.resolve();
         },
 
-        onZoomChange: new EventManager(context, "tabs.onZoomChange", fire => {
-          let getZoomLevel = browser => {
-            let {ZoomManager} = browser.ownerGlobal;
+        onZoomChange: new EventManager({
+          context,
+          name: "tabs.onZoomChange",
+          register: fire => {
+            let getZoomLevel = browser => {
+              let {ZoomManager} = browser.ownerGlobal;
 
-            return ZoomManager.getZoomForBrowser(browser);
-          };
-
-          // Stores the last known zoom level for each tab's browser.
-          // WeakMap[<browser> -> number]
-          let zoomLevels = new WeakMap();
+              return ZoomManager.getZoomForBrowser(browser);
+            };
 
-          // Store the zoom level for all existing tabs.
-          for (let window of windowTracker.browserWindows()) {
-            for (let nativeTab of window.gBrowser.tabs) {
-              let browser = nativeTab.linkedBrowser;
-              zoomLevels.set(browser, getZoomLevel(browser));
-            }
-          }
+            // Stores the last known zoom level for each tab's browser.
+            // WeakMap[<browser> -> number]
+            let zoomLevels = new WeakMap();
 
-          let tabCreated = (eventName, event) => {
-            let browser = event.nativeTab.linkedBrowser;
-            zoomLevels.set(browser, getZoomLevel(browser));
-          };
-
-
-          let zoomListener = event => {
-            let browser = event.originalTarget;
-
-            // For non-remote browsers, this event is dispatched on the document
-            // rather than on the <browser>.
-            if (browser instanceof Ci.nsIDOMDocument) {
-              browser = browser.docShell.chromeEventHandler;
+            // Store the zoom level for all existing tabs.
+            for (let window of windowTracker.browserWindows()) {
+              for (let nativeTab of window.gBrowser.tabs) {
+                let browser = nativeTab.linkedBrowser;
+                zoomLevels.set(browser, getZoomLevel(browser));
+              }
             }
 
-            let {gBrowser} = browser.ownerGlobal;
-            let nativeTab = gBrowser.getTabForBrowser(browser);
-            if (!nativeTab) {
-              // We only care about zoom events in the top-level browser of a tab.
-              return;
-            }
+            let tabCreated = (eventName, event) => {
+              let browser = event.nativeTab.linkedBrowser;
+              zoomLevels.set(browser, getZoomLevel(browser));
+            };
+
+
+            let zoomListener = event => {
+              let browser = event.originalTarget;
 
-            let oldZoomFactor = zoomLevels.get(browser);
-            let newZoomFactor = getZoomLevel(browser);
+              // For non-remote browsers, this event is dispatched on the document
+              // rather than on the <browser>.
+              if (browser instanceof Ci.nsIDOMDocument) {
+                browser = browser.docShell.chromeEventHandler;
+              }
 
-            if (oldZoomFactor != newZoomFactor) {
-              zoomLevels.set(browser, newZoomFactor);
+              let {gBrowser} = browser.ownerGlobal;
+              let nativeTab = gBrowser.getTabForBrowser(browser);
+              if (!nativeTab) {
+                // We only care about zoom events in the top-level browser of a tab.
+                return;
+              }
+
+              let oldZoomFactor = zoomLevels.get(browser);
+              let newZoomFactor = getZoomLevel(browser);
 
-              let tabId = tabTracker.getId(nativeTab);
-              fire.async({
-                tabId,
-                oldZoomFactor,
-                newZoomFactor,
-                zoomSettings: self.tabs._getZoomSettings(tabId),
-              });
-            }
-          };
+              if (oldZoomFactor != newZoomFactor) {
+                zoomLevels.set(browser, newZoomFactor);
+
+                let tabId = tabTracker.getId(nativeTab);
+                fire.async({
+                  tabId,
+                  oldZoomFactor,
+                  newZoomFactor,
+                  zoomSettings: self.tabs._getZoomSettings(tabId),
+                });
+              }
+            };
 
-          tabTracker.on("tab-attached", tabCreated);
-          tabTracker.on("tab-created", tabCreated);
+            tabTracker.on("tab-attached", tabCreated);
+            tabTracker.on("tab-created", tabCreated);
 
-          windowTracker.addListener("FullZoomChange", zoomListener);
-          windowTracker.addListener("TextZoomChange", zoomListener);
-          return () => {
-            tabTracker.off("tab-attached", tabCreated);
-            tabTracker.off("tab-created", tabCreated);
+            windowTracker.addListener("FullZoomChange", zoomListener);
+            windowTracker.addListener("TextZoomChange", zoomListener);
+            return () => {
+              tabTracker.off("tab-attached", tabCreated);
+              tabTracker.off("tab-created", tabCreated);
 
-            windowTracker.removeListener("FullZoomChange", zoomListener);
-            windowTracker.removeListener("TextZoomChange", zoomListener);
-          };
+              windowTracker.removeListener("FullZoomChange", zoomListener);
+              windowTracker.removeListener("TextZoomChange", zoomListener);
+            };
+          },
         }).api(),
 
         print() {
           let activeTab = getTabOrActive(null);
           let {PrintUtils} = activeTab.ownerGlobal;
 
           PrintUtils.printWindow(activeTab.linkedBrowser.outerWindowID, activeTab.linkedBrowser);
         },
--- a/browser/components/extensions/parent/ext-windows.js
+++ b/browser/components/extensions/parent/ext-windows.js
@@ -11,56 +11,88 @@ ChromeUtils.defineModuleGetter(this, "Pr
 var {
   promiseObserved,
 } = ExtensionUtils;
 
 const onXULFrameLoaderCreated = ({target}) => {
   target.messageManager.sendAsyncMessage("AllowScriptsToClose", {});
 };
 
+/**
+ * An event manager API provider which listens for a DOM event in any browser
+ * window, and calls the given listener function whenever an event is received.
+ * That listener function receives a `fire` object, which it can use to dispatch
+ * events to the extension, and a DOM event object.
+ *
+ * @param {BaseContext} context
+ *        The extension context which the event manager belongs to.
+ * @param {string} name
+ *        The API name of the event manager, e.g.,"runtime.onMessage".
+ * @param {string} event
+ *        The name of the DOM event to listen for.
+ * @param {function} listener
+ *        The listener function to call when a DOM event is received.
+ *
+ * @returns {object} An injectable api for the new event.
+ */
+function WindowEventManager(context, name, event, listener) {
+  let register = fire => {
+    let listener2 = listener.bind(null, fire);
+
+    windowTracker.addListener(event, listener2);
+    return () => {
+      windowTracker.removeListener(event, listener2);
+    };
+  };
+
+  return new EventManager({context, name, register}).api();
+}
+
 this.windows = class extends ExtensionAPI {
   getAPI(context) {
     let {extension} = context;
 
     const {windowManager} = extension;
 
     return {
       windows: {
-        onCreated:
-        new WindowEventManager(context, "windows.onCreated", "domwindowopened", (fire, window) => {
+        onCreated: WindowEventManager(context, "windows.onCreated", "domwindowopened", (fire, window) => {
           fire.async(windowManager.convert(window));
-        }).api(),
+        }),
 
-        onRemoved:
-        new WindowEventManager(context, "windows.onRemoved", "domwindowclosed", (fire, window) => {
+        onRemoved: WindowEventManager(context, "windows.onRemoved", "domwindowclosed", (fire, window) => {
           fire.async(windowTracker.getId(window));
-        }).api(),
+        }),
 
-        onFocusChanged: new EventManager(context, "windows.onFocusChanged", fire => {
-          // Keep track of the last windowId used to fire an onFocusChanged event
-          let lastOnFocusChangedWindowId;
+        onFocusChanged: new EventManager({
+          context,
+          name: "windows.onFocusChanged",
+          register: fire => {
+            // Keep track of the last windowId used to fire an onFocusChanged event
+            let lastOnFocusChangedWindowId;
 
-          let listener = event => {
-            // Wait a tick to avoid firing a superfluous WINDOW_ID_NONE
-            // event when switching focus between two Firefox windows.
-            Promise.resolve().then(() => {
-              let window = Services.focus.activeWindow;
-              let windowId = window ? windowTracker.getId(window) : Window.WINDOW_ID_NONE;
-              if (windowId !== lastOnFocusChangedWindowId) {
-                fire.async(windowId);
-                lastOnFocusChangedWindowId = windowId;
-              }
-            });
-          };
-          windowTracker.addListener("focus", listener);
-          windowTracker.addListener("blur", listener);
-          return () => {
-            windowTracker.removeListener("focus", listener);
-            windowTracker.removeListener("blur", listener);
-          };
+            let listener = event => {
+              // Wait a tick to avoid firing a superfluous WINDOW_ID_NONE
+              // event when switching focus between two Firefox windows.
+              Promise.resolve().then(() => {
+                let window = Services.focus.activeWindow;
+                let windowId = window ? windowTracker.getId(window) : Window.WINDOW_ID_NONE;
+                if (windowId !== lastOnFocusChangedWindowId) {
+                  fire.async(windowId);
+                  lastOnFocusChangedWindowId = windowId;
+                }
+              });
+            };
+            windowTracker.addListener("focus", listener);
+            windowTracker.addListener("blur", listener);
+            return () => {
+              windowTracker.removeListener("focus", listener);
+              windowTracker.removeListener("blur", listener);
+            };
+          },
         }).api(),
 
         get: function(windowId, getInfo) {
           let window = windowTracker.getWindow(windowId, context);
           if (!window) {
             return Promise.reject({message: `Invalid window ID: ${windowId}`});
           }
           return Promise.resolve(windowManager.convert(window, getInfo));
--- a/browser/components/extensions/test/browser/browser_ext_popup_background.js
+++ b/browser/components/extensions/test/browser/browser_ext_popup_background.js
@@ -1,116 +1,125 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* eslint-disable mozilla/no-arbitrary-setTimeout */
 "use strict";
 
-add_task(async function testPopupBackground() {
-  let extension = ExtensionTestUtils.loadExtension({
-    background() {
-      browser.tabs.query({active: true, currentWindow: true}, tabs => {
-        browser.pageAction.show(tabs[0].id);
-      });
-    },
-
-    manifest: {
-      "browser_action": {
-        "default_popup": "popup.html",
-        "browser_style": false,
-      },
-
-      "page_action": {
-        "default_popup": "popup.html",
-        "browser_style": false,
-      },
-    },
+async function testPanel(browser, standAlone, initial_background) {
+  let panel = getPanelForNode(browser);
+  let arrowContent = document.getAnonymousElementByAttribute(panel, "class", "panel-arrowcontent");
+  let arrow = document.getAnonymousElementByAttribute(panel, "anonid", "arrow");
 
-    files: {
-      "popup.html": `<!DOCTYPE html>
-        <html>
-          <head>
-            <meta charset="utf-8">
-          </head>
-          <body style="width: 100px; height: 100px; background-color: green;">
-          </body>
-        </html>`,
-    },
-  });
-
-  await extension.startup();
-
-  async function testPanel(browser, standAlone) {
-    let panel = getPanelForNode(browser);
-    let arrowContent = document.getAnonymousElementByAttribute(panel, "class", "panel-arrowcontent");
-    let arrow = document.getAnonymousElementByAttribute(panel, "anonid", "arrow");
-
-    let checkArrow = (background = null) => {
-      if (background == null || !standAlone) {
-        ok(!arrow.style.hasOwnProperty("fill"), "Arrow fill should be the default one");
-        return;
-      }
-
-      is(getComputedStyle(arrowContent).backgroundColor, background, "Arrow content should have correct background");
-      is(getComputedStyle(arrow).fill, background, "Arrow should have correct background");
-    };
-
-    function getBackground(browser) {
-      return ContentTask.spawn(browser, null, async function() {
-        return content.getComputedStyle(content.document.body)
-                      .backgroundColor;
-      });
+  let checkArrow = (background = null) => {
+    if (background == null || !standAlone) {
+      ok(!arrow.style.hasOwnProperty("fill"), "Arrow fill should be the default one");
+      return;
     }
 
-    let setBackground = color => {
-      content.document.body.style.backgroundColor = color;
-    };
-
-    await new Promise(resolve => setTimeout(resolve, 100));
-
-    info("Test that initial background color is applied");
-
-    checkArrow(await getBackground(browser));
+    is(getComputedStyle(arrowContent).backgroundColor, background, "Arrow content should have correct background");
+    is(getComputedStyle(arrow).fill, background, "Arrow should have correct background");
+  };
 
-    info("Test that dynamically-changed background color is applied");
-
-    await alterContent(browser, setBackground, "black");
-
-    checkArrow(await getBackground(browser));
-
-    info("Test that non-opaque background color results in default styling");
-
-    await alterContent(browser, setBackground, "rgba(1, 2, 3, .9)");
-
-    checkArrow(null);
+  function getBackground(browser) {
+    return ContentTask.spawn(browser, null, async function() {
+      return content.getComputedStyle(content.document.body)
+                    .backgroundColor;
+    });
   }
 
-  {
-    info("Test stand-alone browserAction popup");
+  let setBackground = color => {
+    content.document.body.style.backgroundColor = color;
+  };
+
+  await new Promise(resolve => setTimeout(resolve, 100));
+
+  info("Test that initial background color is applied");
+  checkArrow(initial_background);
+
+  info("Test that dynamically-changed background color is applied");
+  await alterContent(browser, setBackground, "black");
+  checkArrow(await getBackground(browser));
+
+  info("Test that non-opaque background color results in default styling");
+  await alterContent(browser, setBackground, "rgba(1, 2, 3, .9)");
+  checkArrow(null);
+}
 
-    clickBrowserAction(extension);
-    let browser = await awaitExtensionPanel(extension);
-    await testPanel(browser, true);
-    await closeBrowserAction(extension);
-  }
+add_task(async function testPopupBackground() {
+  let testCases = [{
+    "browser_style": false,
+    "background": "background-color: green;",
+    "initial_background": "rgb(0, 128, 0)",
+  }, {
+    "browser_style": true,
+    // Use white here instead of transparent, because
+    // when no background is supplied we will fill
+    // with white by default.
+    "initial_background": "rgb(255, 255, 255)",
+  }];
+  for (let testCase of testCases) {
+    info(`Testing browser_style: ${testCase.browser_style} with background? ${!!testCase.background}`);
+    let extension = ExtensionTestUtils.loadExtension({
+      background() {
+        browser.tabs.query({active: true, currentWindow: true}, tabs => {
+          browser.pageAction.show(tabs[0].id);
+        });
+      },
 
-  {
-    info("Test menu panel browserAction popup");
-
-    let widget = getBrowserActionWidget(extension);
-    CustomizableUI.addWidgetToArea(widget.id, getCustomizableUIPanelID());
+      manifest: {
+        "browser_action": {
+          "default_popup": "popup.html",
+          "browser_style": testCase.browser_style,
+        },
 
-    clickBrowserAction(extension);
-    let browser = await awaitExtensionPanel(extension);
-    await testPanel(browser, false);
-    await closeBrowserAction(extension);
-  }
+        "page_action": {
+          "default_popup": "popup.html",
+          "browser_style": testCase.browser_style,
+        },
+      },
 
-  {
-    info("Test pageAction popup");
+      files: {
+        "popup.html": `<!DOCTYPE html>
+          <html>
+            <head>
+              <meta charset="utf-8">
+            </head>
+            <body style="width: 100px; height: 100px; ${testCase.background || ""}">
+            </body>
+          </html>`,
+      },
+    });
+
+    await extension.startup();
+
+    {
+      info("Test stand-alone browserAction popup");
 
-    clickPageAction(extension);
-    let browser = await awaitExtensionPanel(extension);
-    await testPanel(browser, true);
-    await closePageAction(extension);
+      clickBrowserAction(extension);
+      let browser = await awaitExtensionPanel(extension);
+      await testPanel(browser, true, testCase.initial_background);
+      await closeBrowserAction(extension);
+    }
+
+    {
+      info("Test menu panel browserAction popup");
+
+      let widget = getBrowserActionWidget(extension);
+      CustomizableUI.addWidgetToArea(widget.id, getCustomizableUIPanelID());
+
+      clickBrowserAction(extension);
+      let browser = await awaitExtensionPanel(extension);
+      await testPanel(browser, false, testCase.initial_background);
+      await closeBrowserAction(extension);
+    }
+
+    {
+      info("Test pageAction popup");
+
+      clickPageAction(extension);
+      let browser = await awaitExtensionPanel(extension);
+      await testPanel(browser, true, testCase.initial_background);
+      await closePageAction(extension);
+    }
+
+    await extension.unload();
   }
-
-  await extension.unload();
 });
--- a/browser/components/nsBrowserGlue.js
+++ b/browser/components/nsBrowserGlue.js
@@ -705,19 +705,19 @@ BrowserGlue.prototype = {
     });
     LightweightThemeManager.addBuiltInTheme({
       id: "firefox-compact-dark@mozilla.org",
       name: gBrowserBundle.GetStringFromName("darkTheme.name"),
       description: gBrowserBundle.GetStringFromName("darkTheme.description"),
       iconURL: "resource:///chrome/browser/content/browser/defaultthemes/dark.icon.svg",
       textcolor: "white",
       accentcolor: "black",
-      popup: "hsl(240, 5%, 5%)",
-      popup_text: "rgb(249, 249, 250)",
-      popup_border: "rgba(24, 26, 27, 0.14)",
+      popup: "#4a4a4f",
+      popup_text: "rgba(249, 249, 250, 0.8)",
+      popup_border: "#27272b",
       author: vendorShortName,
     });
 
     Normandy.init();
 
     // Initialize the default l10n resource sources for L10nRegistry.
     let locales = Services.locale.getPackagedLocales();
     const appSource = new FileSource("app", locales, "resource://app/localization/{locale}/");
--- a/browser/themes/shared/incontentprefs/siteDataSettings.css
+++ b/browser/themes/shared/incontentprefs/siteDataSettings.css
@@ -4,16 +4,21 @@
 
 /**
  * Site Data - Settings dialog
  */
 #sitesList {
   min-height: 20em;
 }
 
+/* Show selected items in high contrast mode. */
+#sitesList > richlistitem[selected] {
+  outline: 1px solid transparent;
+}
+
 #sitesList > richlistitem > hbox,
 .item-box > label {
   -moz-box-flex: 1;
 }
 
 .item-box {
   padding: 5px 8px;
   -moz-box-align: center;
--- a/devtools/client/framework/devtools.js
+++ b/devtools/client/framework/devtools.js
@@ -700,20 +700,11 @@ DevTools.prototype = {
    * Returns the array of the existing toolboxes.
    *
    * @return {Array<Toolbox>}
    *   An array of toolboxes.
    */
   getToolboxes() {
     return Array.from(this._toolboxes.values());
   },
-
-  /**
-   * Iterator that yields each of the toolboxes.
-   */
-  * [Symbol.iterator ]() {
-    for (let toolbox of this._toolboxes) {
-      yield toolbox;
-    }
-  }
 };
 
 const gDevTools = exports.gDevTools = new DevTools();
--- a/devtools/client/framework/gDevTools.jsm
+++ b/devtools/client/framework/gDevTools.jsm
@@ -88,21 +88,16 @@ let gDevToolsMethods = [
 this.gDevTools = {
   // Used by tests
   get _toolboxes() {
     return devtools._toolboxes;
   },
   get _tools() {
     return devtools._tools;
   },
-  * [Symbol.iterator ]() {
-    for (let toolbox of this._toolboxes) {
-      yield toolbox;
-    }
-  }
 };
 gDevToolsMethods.forEach(name => {
   this.gDevTools[name] = (...args) => {
     return devtools[name].apply(devtools, args);
   };
 });
 
 /**
--- a/devtools/client/shared/view-source.js
+++ b/devtools/client/shared/view-source.js
@@ -138,17 +138,17 @@ exports.viewSourceInScratchpad = async f
     if (!win.closed && win.Scratchpad.uniqueName === sourceURL) {
       win.focus();
       win.Scratchpad.editor.setCursor({ line: sourceLine, ch: 0 });
       return;
     }
   }
 
   // For scratchpads within toolbox
-  for (let [, toolbox] of gDevTools) {
+  for (let toolbox of gDevTools.getToolboxes()) {
     let scratchpadPanel = toolbox.getPanel("scratchpad");
     if (scratchpadPanel) {
       let { scratchpad } = scratchpadPanel;
       if (scratchpad.uniqueName === sourceURL) {
         toolbox.selectTool("scratchpad");
         toolbox.raise();
         scratchpad.editor.focus();
         scratchpad.editor.setCursor({ line: sourceLine, ch: 0 });
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -4283,16 +4283,26 @@ SourceListener::SetEnabledFor(TrackID aT
       MOZ_ASSERT(state.mOperationInProgress,
                  "It's our responsibility to reset the inProgress state");
 
       LOG(("SourceListener %p %s %s track %d - starting device operation",
            this, aEnable ? "enabling" : "disabling",
            aTrackID == kAudioTrack ? "audio" : "video",
            aTrackID));
 
+      if (mRemoved) {
+        // Listener was removed between timer resolving and this runnable.
+        return DeviceOperationPromise::CreateAndResolve(NS_ERROR_ABORT, __func__);
+      }
+
+      if (state.mStopped) {
+        // Source was stopped between timer resolving and this runnable.
+        return DeviceOperationPromise::CreateAndResolve(NS_ERROR_ABORT, __func__);
+      }
+
       state.mDeviceEnabled = aEnable;
 
       if (mWindowListener) {
         mWindowListener->ChromeAffectingStateChanged();
       }
 
       if (!state.mOffWhileDisabled) {
         // If the feature to turn a device off while disabled is itself disabled
--- a/gfx/layers/LayersTypes.h
+++ b/gfx/layers/LayersTypes.h
@@ -72,31 +72,25 @@ struct LayersId {
     return mId == aOther.mId;
   }
 
   bool operator!=(const LayersId& aOther) const
   {
     return !(*this == aOther);
   }
 
-  // Helper operators that allow this class to be used as a key in
+  // Helper struct that allow this class to be used as a key in
   // std::unordered_map like so:
-  //   std::unordered_map<LayersId, ValueType, LayersId::HashFn, LayersId::EqualFn> myMap;
+  //   std::unordered_map<LayersId, ValueType, LayersId::HashFn> myMap;
   struct HashFn {
     std::size_t operator()(const LayersId& aKey) const
     {
       return std::hash<uint64_t>{}(aKey.mId);
     }
   };
-  struct EqualFn {
-    bool operator()(const LayersId& lhs, const LayersId& rhs) const
-    {
-      return lhs.mId == rhs.mId;
-    }
-  };
 };
 
 enum class LayersBackend : int8_t {
   LAYERS_NONE = 0,
   LAYERS_BASIC,
   LAYERS_OPENGL,
   LAYERS_D3D11,
   LAYERS_CLIENT,
--- a/gfx/layers/apz/src/APZCTreeManager.h
+++ b/gfx/layers/apz/src/APZCTreeManager.h
@@ -774,18 +774,17 @@ private:
   class CheckerboardFlushObserver;
   friend class CheckerboardFlushObserver;
   RefPtr<CheckerboardFlushObserver> mFlushObserver;
 
   // Map from layers id to APZTestData. Accesses and mutations must be
   // protected by the mTestDataLock.
   std::unordered_map<LayersId,
                      UniquePtr<APZTestData>,
-                     LayersId::HashFn,
-                     LayersId::EqualFn> mTestData;
+                     LayersId::HashFn> mTestData;
   mutable mozilla::Mutex mTestDataLock;
 
   // This must only be touched on the controller thread.
   float mDPI;
 
 #if defined(MOZ_WIDGET_ANDROID)
 public:
   AndroidDynamicToolbarAnimator* GetAndroidDynamicToolbarAnimator();
--- a/gfx/layers/apz/src/FocusState.h
+++ b/gfx/layers/apz/src/FocusState.h
@@ -139,18 +139,17 @@ private:
 private:
   // All methods should hold this lock, since this class is accessed via both
   // the updater and controller threads.
   mutable Mutex mMutex;
 
   // The set of focus targets received indexed by their layer tree ID
   std::unordered_map<LayersId,
                      FocusTarget,
-                     LayersId::HashFn,
-                     LayersId::EqualFn> mFocusTree;
+                     LayersId::HashFn> mFocusTree;
 
   // The focus sequence number of the last potentially focus changing event
   // processed by APZ. This number starts at one and increases monotonically.
   // We don't worry about wrap around here because at a pace of 100 increments/sec,
   // it would take 5.85*10^9 years before we would wrap around. This number will
   // never be zero as that is used to catch uninitialized focus sequence numbers
   // on input events.
   uint64_t mLastAPZProcessedEvent;
--- a/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src/org/webrtc/videoengine/VideoCaptureAndroid.java
+++ b/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src/org/webrtc/videoengine/VideoCaptureAndroid.java
@@ -116,16 +116,19 @@ public class VideoCaptureAndroid impleme
       cameraThreadHandler = exchange(handlerExchanger, null);
     }
 
     final Exchanger<Boolean> result = new Exchanger<Boolean>();
     cameraThreadHandler.post(new Runnable() {
         @Override public void run() {
           boolean startResult =
             startCaptureOnCameraThread(width, height, min_mfps, max_mfps);
+          if (!startResult) {
+            Looper.myLooper().quit();
+          }
           exchange(result, startResult);
         }
       });
     boolean startResult = exchange(result, false); // |false| is a dummy value.
 
     if (!startResult) {
       // Starting failed on the camera thread. The looper has now quit and the
       // camera thread is dead.
@@ -311,16 +314,17 @@ public class VideoCaptureAndroid impleme
   // Called by native code.  Returns true when camera is known to be stopped.
   @WebRTCJNITarget
   private synchronized boolean stopCapture() {
     Log.d(TAG, "stopCapture");
     final Exchanger<Boolean> result = new Exchanger<Boolean>();
     cameraThreadHandler.post(new Runnable() {
         @Override public void run() {
           boolean stopResult = stopCaptureOnCameraThread();
+          Looper.myLooper().quit();
           exchange(result, stopResult);
         }
       });
     boolean status = exchange(result, false);  // |false| is a dummy value here.
     try {
       cameraThread.join();
     } catch (InterruptedException e) {
       throw new RuntimeException(e);
@@ -343,25 +347,23 @@ public class VideoCaptureAndroid impleme
       camera.setPreviewTexture(null);
       cameraSurfaceTexture = null;
       if (cameraGlTextures != null) {
         GLES20.glDeleteTextures(1, cameraGlTextures, 0);
         cameraGlTextures = null;
       }
       camera.release();
       camera = null;
-      Looper.myLooper().quit();
       return true;
     } catch (IOException e) {
       error = e;
     } catch (RuntimeException e) {
       error = e;
     }
     Log.e(TAG, "Failed to stop camera", error);
-    Looper.myLooper().quit();
     return false;
   }
 
   @WebRTCJNITarget
   private int getDeviceOrientation() {
     int orientation = 0;
     if (context != null) {
       WindowManager wm = (WindowManager) context.getSystemService(
--- a/media/webrtc/trunk/webrtc/modules/video_capture/android/video_capture_android.cc
+++ b/media/webrtc/trunk/webrtc/modules/video_capture/android/video_capture_android.cc
@@ -111,17 +111,20 @@ rtc::scoped_refptr<VideoCaptureModule> V
   }
   return implementation;
 }
 
 int32_t VideoCaptureAndroid::OnIncomingFrame(uint8_t* videoFrame,
                                              size_t videoFrameLength,
                                              int32_t degrees,
                                              int64_t captureTime) {
-  if (!_captureStarted)
+  // _captureStarted is written on the controlling thread in
+  // StartCapture/StopCapture. This is the camera thread.
+  // CaptureStarted() will access it under a lock.
+  if (!CaptureStarted())
     return 0;
 
   VideoRotation current_rotation =
       (degrees <= 45 || degrees > 315) ? kVideoRotation_0 :
       (degrees > 45 && degrees <= 135) ? kVideoRotation_90 :
       (degrees > 135 && degrees <= 225) ? kVideoRotation_180 :
       (degrees > 225 && degrees <= 315) ? kVideoRotation_270 :
       kVideoRotation_0;  // Impossible.
@@ -180,42 +183,51 @@ VideoCaptureAndroid::~VideoCaptureAndroi
     env->GetMethodID(g_java_capturer_class, "unlinkCapturer", "()V");
   env->CallVoidMethod(_jCapturer, j_unlink);
 
   env->DeleteGlobalRef(_jCapturer);
 }
 
 int32_t VideoCaptureAndroid::StartCapture(
     const VideoCaptureCapability& capability) {
-  CriticalSectionScoped cs(&_apiCs);
+  _apiCs.Enter();
   AttachThreadScoped ats(g_jvm_capture);
   JNIEnv* env = ats.env();
 
   if (_deviceInfo.GetBestMatchedCapability(
           _deviceUniqueId, capability, _captureCapability) < 0) {
     WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, -1,
                  "%s: GetBestMatchedCapability failed: %dx%d",
                  __FUNCTION__, capability.width, capability.height);
+    // Manual exit of critical section
+    _apiCs.Leave();
     return -1;
   }
 
   _captureDelay = _captureCapability.expectedCaptureDelay;
 
-  jmethodID j_start =
-      env->GetMethodID(g_java_capturer_class, "startCapture", "(IIII)Z");
-  assert(j_start);
+  int width = _captureCapability.width;
+  int height = _captureCapability.height;
   int min_mfps = 0;
   int max_mfps = 0;
   _deviceInfo.GetMFpsRange(_deviceUniqueId, _captureCapability.maxFPS,
                            &min_mfps, &max_mfps);
+
+  // Exit critical section to avoid blocking camera thread inside
+  // onIncomingFrame() call.
+  _apiCs.Leave();
+
+  jmethodID j_start =
+      env->GetMethodID(g_java_capturer_class, "startCapture", "(IIII)Z");
+  assert(j_start);
   bool started = env->CallBooleanMethod(_jCapturer, j_start,
-                                        _captureCapability.width,
-                                        _captureCapability.height,
+                                        width, height,
                                         min_mfps, max_mfps);
   if (started) {
+    CriticalSectionScoped cs(&_apiCs);
     _requestedCapability = capability;
     _captureStarted = true;
   }
   return started ? 0 : -1;
 }
 
 int32_t VideoCaptureAndroid::StopCapture() {
   _apiCs.Enter();
--- a/mobile/android/chrome/geckoview/GeckoViewSelectionActionContent.js
+++ b/mobile/android/chrome/geckoview/GeckoViewSelectionActionContent.js
@@ -25,21 +25,21 @@ class GeckoViewSelectionActionContent ex
     super(aModuleName, aMessageManager);
 
     this._seqNo = 0;
     this._isActive = false;
     this._previousMessage = {};
 
     this._actions = [{
       id: "org.mozilla.geckoview.CUT",
-      predicate: e => !e.collapsed && e.selectionEditable,
+      predicate: e => !e.collapsed && e.selectionEditable && !this._isPasswordField(e),
       perform: _ => this._domWindowUtils.sendContentCommandEvent("cut"),
     }, {
       id: "org.mozilla.geckoview.COPY",
-      predicate: e => !e.collapsed,
+      predicate: e => !e.collapsed && !this._isPasswordField(e),
       perform: _ => this._domWindowUtils.sendContentCommandEvent("copy"),
     }, {
       id: "org.mozilla.geckoview.PASTE",
       predicate: e => e.selectionEditable &&
                       Services.clipboard.hasDataMatchingFlavors(
                           ["text/unicode"], 1, Ci.nsIClipboard.kGlobalClipboard),
       perform: _ => this._domWindowUtils.sendContentCommandEvent("paste"),
     }, {
@@ -65,16 +65,28 @@ class GeckoViewSelectionActionContent ex
     }];
   }
 
   get _domWindowUtils() {
     return content.QueryInterface(Ci.nsIInterfaceRequestor)
                   .getInterface(Ci.nsIDOMWindowUtils);
   }
 
+  _isPasswordField(aEvent) {
+    if (!aEvent.selectionEditable) {
+      return false;
+    }
+
+    const win = aEvent.target.defaultView;
+    const focus = aEvent.target.activeElement;
+    return win && win.HTMLInputElement &&
+           focus instanceof win.HTMLInputElement &&
+           !focus.mozIsTextField(/* excludePassword */ true);
+  }
+
   _getSelectionController(aEvent) {
     if (aEvent.selectionEditable) {
       const focus = aEvent.target.activeElement;
       if (focus instanceof Ci.nsIDOMNSEditableElement && focus.editor) {
         return focus.editor.selectionController;
       }
     }
 
@@ -113,36 +125,35 @@ class GeckoViewSelectionActionContent ex
       }
     }
 
     return offset;
   }
 
   register() {
     debug("register");
-    addEventListener("mozcaretstatechanged", this);
+    addEventListener("mozcaretstatechanged", this, { mozSystemGroup: true });
   }
 
   unregister() {
     debug("unregister");
-    removeEventListener("mozcaretstatechanged", this);
+    removeEventListener("mozcaretstatechanged", this, { mozSystemGroup: true });
   }
 
   /**
    * Receive and act on AccessibleCarets caret state-change
    * (mozcaretstatechanged) events.
    */
   handleEvent(aEvent) {
     let reason = aEvent.reason;
 
     if (this._isActive && !aEvent.caretVisible) {
       // For mozcaretstatechanged, "visibilitychange" means the caret is hidden.
       reason = "visibilitychange";
-    } else if (this._isActive &&
-               !aEvent.collapsed &&
+    } else if (!aEvent.collapsed &&
                !aEvent.selectionVisible) {
       reason = "invisibleselection";
     } else if (aEvent.selectionEditable &&
                aEvent.collapsed &&
                reason !== "longpressonemptycontent" &&
                reason !== "taponcaret") {
       // Don't show selection actions when merely focusing on an editor or
       // repositioning the cursor. Wait until long press or the caret is tapped
@@ -156,23 +167,25 @@ class GeckoViewSelectionActionContent ex
          "releasecaret",
          "taponcaret",
          "updateposition"].includes(reason)) {
 
       const actions = this._actions.filter(
           action => action.predicate.call(this, aEvent));
 
       const offset = this._getFrameOffset(aEvent);
+      const password = this._isPasswordField(aEvent);
 
       const msg = {
         type: "GeckoView:ShowSelectionAction",
         seqNo: this._seqNo,
         collapsed: aEvent.collapsed,
         editable: aEvent.selectionEditable,
-        selection: aEvent.selectedTextContent,
+        password,
+        selection: password ? "" : aEvent.selectedTextContent,
         clientRect: !aEvent.boundingClientRect ? null : {
           left: aEvent.boundingClientRect.left + offset.left,
           top: aEvent.boundingClientRect.top + offset.top,
           right: aEvent.boundingClientRect.right + offset.left,
           bottom: aEvent.boundingClientRect.bottom + offset.top,
         },
         actions: actions.map(action => action.id),
       };
--- a/mobile/android/components/extensions/ext-browserAction.js
+++ b/mobile/android/components/extensions/ext-browserAction.js
@@ -151,24 +151,28 @@ this.browserAction = class extends Exten
       if (tabId !== null) {
         return tabTracker.getTab(tabId);
       }
       return null;
     }
 
     return {
       browserAction: {
-        onClicked: new EventManager(context, "browserAction.onClicked", fire => {
-          let listener = (event, tab) => {
-            fire.async(tabManager.convert(tab));
-          };
-          browserActionMap.get(extension).on("click", listener);
-          return () => {
-            browserActionMap.get(extension).off("click", listener);
-          };
+        onClicked: new EventManager({
+          context,
+          name: "browserAction.onClicked",
+          register: fire => {
+            let listener = (event, tab) => {
+              fire.async(tabManager.convert(tab));
+            };
+            browserActionMap.get(extension).on("click", listener);
+            return () => {
+              browserActionMap.get(extension).off("click", listener);
+            };
+          },
         }).api(),
 
         setTitle: function(details) {
           let {tabId, title} = details;
           let tab = getTab(tabId);
           browserActionMap.get(extension).setProperty(tab, "name", title);
         },
 
--- a/mobile/android/components/extensions/ext-pageAction.js
+++ b/mobile/android/components/extensions/ext-pageAction.js
@@ -227,24 +227,28 @@ this.pageAction = class extends Extensio
   getAPI(context) {
     const {extension} = context;
     const {tabManager} = extension;
 
     pageActionMap.get(extension).setContext(context);
 
     return {
       pageAction: {
-        onClicked: new EventManager(context, "pageAction.onClicked", fire => {
-          let listener = (event, tab) => {
-            fire.async(tabManager.convert(tab));
-          };
-          pageActionMap.get(extension).on("click", listener);
-          return () => {
-            pageActionMap.get(extension).off("click", listener);
-          };
+        onClicked: new EventManager({
+          context,
+          name: "pageAction.onClicked",
+          register: fire => {
+            let listener = (event, tab) => {
+              fire.async(tabManager.convert(tab));
+            };
+            pageActionMap.get(extension).on("click", listener);
+            return () => {
+              pageActionMap.get(extension).off("click", listener);
+            };
+          },
         }).api(),
 
         show(tabId) {
           let tab = tabTracker.getTab(tabId);
           return pageActionMap.get(extension).setProperty(tab, "show", true);
         },
 
         hide(tabId) {
--- a/mobile/android/components/extensions/ext-tabs.js
+++ b/mobile/android/components/extensions/ext-tabs.js
@@ -98,147 +98,167 @@ this.tabs = class extends ExtensionAPI {
 
       await tabListener.awaitTabReady(tab.nativeTab);
 
       return tab;
     }
 
     let self = {
       tabs: {
-        onActivated: new GlobalEventManager(context, "tabs.onActivated", "Tab:Selected", (fire, data) => {
+        onActivated: makeGlobalEvent(context, "tabs.onActivated", "Tab:Selected", (fire, data) => {
           let tab = tabManager.get(data.id);
 
           fire.async({tabId: tab.id, windowId: tab.windowId});
-        }).api(),
+        }),
 
-        onCreated: new EventManager(context, "tabs.onCreated", fire => {
-          let listener = (eventName, event) => {
-            fire.async(tabManager.convert(event.nativeTab));
-          };
+        onCreated: new EventManager({
+          context,
+          name: "tabs.onCreated",
+          register: fire => {
+            let listener = (eventName, event) => {
+              fire.async(tabManager.convert(event.nativeTab));
+            };
 
-          tabTracker.on("tab-created", listener);
-          return () => {
-            tabTracker.off("tab-created", listener);
-          };
+            tabTracker.on("tab-created", listener);
+            return () => {
+              tabTracker.off("tab-created", listener);
+            };
+          },
         }).api(),
 
         /**
          * Since multiple tabs currently can't be highlighted, onHighlighted
          * essentially acts an alias for self.tabs.onActivated but returns
          * the tabId in an array to match the API.
          * @see  https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/Tabs/onHighlighted
         */
-        onHighlighted: new GlobalEventManager(context, "tabs.onHighlighted", "Tab:Selected", (fire, data) => {
+        onHighlighted: makeGlobalEvent(context, "tabs.onHighlighted", "Tab:Selected", (fire, data) => {
           let tab = tabManager.get(data.id);
 
           fire.async({tabIds: [tab.id], windowId: tab.windowId});
+        }),
+
+        onAttached: new EventManager({
+          context,
+          name: "tabs.onAttached",
+          register: fire => { return () => {}; },
         }).api(),
 
-        onAttached: new EventManager(context, "tabs.onAttached", fire => {
-          return () => {};
-        }).api(),
-
-        onDetached: new EventManager(context, "tabs.onDetached", fire => {
-          return () => {};
+        onDetached: new EventManager({
+          context,
+          name: "tabs.onDetached",
+          register: fire => { return () => {}; },
         }).api(),
 
-        onRemoved: new EventManager(context, "tabs.onRemoved", fire => {
-          let listener = (eventName, event) => {
-            fire.async(event.tabId, {windowId: event.windowId, isWindowClosing: event.isWindowClosing});
-          };
+        onRemoved: new EventManager({
+          context,
+          name: "tabs.onRemoved",
+          register: fire => {
+            let listener = (eventName, event) => {
+              fire.async(event.tabId, {windowId: event.windowId, isWindowClosing: event.isWindowClosing});
+            };
 
-          tabTracker.on("tab-removed", listener);
-          return () => {
-            tabTracker.off("tab-removed", listener);
-          };
+            tabTracker.on("tab-removed", listener);
+            return () => {
+              tabTracker.off("tab-removed", listener);
+            };
+          },
         }).api(),
 
-        onReplaced: new EventManager(context, "tabs.onReplaced", fire => {
-          return () => {};
+        onReplaced: new EventManager({
+          context,
+          name: "tabs.onReplaced",
+          register: fire => { return () => {}; },
         }).api(),
 
-        onMoved: new EventManager(context, "tabs.onMoved", fire => {
-          return () => {};
+        onMoved: new EventManager({
+          context,
+          name: "tabs.onMoved",
+          register: fire => { return () => {}; },
         }).api(),
 
-        onUpdated: new EventManager(context, "tabs.onUpdated", fire => {
-          const restricted = ["url", "favIconUrl", "title"];
+        onUpdated: new EventManager({
+          context,
+          name: "tabs.onUpdated",
+          register: fire => {
+            const restricted = ["url", "favIconUrl", "title"];
 
-          function sanitize(extension, changeInfo) {
-            let result = {};
-            let nonempty = false;
-            for (let prop in changeInfo) {
-              if (extension.hasPermission("tabs") || !restricted.includes(prop)) {
-                nonempty = true;
-                result[prop] = changeInfo[prop];
+            function sanitize(extension, changeInfo) {
+              let result = {};
+              let nonempty = false;
+              for (let prop in changeInfo) {
+                if (extension.hasPermission("tabs") || !restricted.includes(prop)) {
+                  nonempty = true;
+                  result[prop] = changeInfo[prop];
+                }
               }
+              return [nonempty, result];
             }
-            return [nonempty, result];
-          }
 
-          let fireForTab = (tab, changed) => {
-            let [needed, changeInfo] = sanitize(extension, changed);
-            if (needed) {
-              fire.async(tab.id, changeInfo, tab.convert());
-            }
-          };
+            let fireForTab = (tab, changed) => {
+              let [needed, changeInfo] = sanitize(extension, changed);
+              if (needed) {
+                fire.async(tab.id, changeInfo, tab.convert());
+              }
+            };
 
-          let listener = event => {
-            let needed = [];
-            let nativeTab;
-            switch (event.type) {
-              case "DOMTitleChanged": {
-                let {BrowserApp} = getBrowserWindow(event.target.ownerGlobal);
+            let listener = event => {
+              let needed = [];
+              let nativeTab;
+              switch (event.type) {
+                case "DOMTitleChanged": {
+                  let {BrowserApp} = getBrowserWindow(event.target.ownerGlobal);
 
-                nativeTab = BrowserApp.getTabForWindow(event.target.ownerGlobal);
-                needed.push("title");
-                break;
+                  nativeTab = BrowserApp.getTabForWindow(event.target.ownerGlobal);
+                  needed.push("title");
+                  break;
+                }
+
+                case "DOMAudioPlaybackStarted":
+                case "DOMAudioPlaybackStopped": {
+                  let {BrowserApp} = event.target.ownerGlobal;
+                  nativeTab = BrowserApp.getTabForBrowser(event.originalTarget);
+                  needed.push("audible");
+                  break;
+                }
               }
 
-              case "DOMAudioPlaybackStarted":
-              case "DOMAudioPlaybackStopped": {
-                let {BrowserApp} = event.target.ownerGlobal;
-                nativeTab = BrowserApp.getTabForBrowser(event.originalTarget);
-                needed.push("audible");
-                break;
+              if (!nativeTab) {
+                return;
               }
-            }
-
-            if (!nativeTab) {
-              return;
-            }
 
-            let tab = tabManager.getWrapper(nativeTab);
-            let changeInfo = {};
-            for (let prop of needed) {
-              changeInfo[prop] = tab[prop];
-            }
-
-            fireForTab(tab, changeInfo);
-          };
-
-          let statusListener = ({browser, status, url}) => {
-            let {BrowserApp} = browser.ownerGlobal;
-            let nativeTab = BrowserApp.getTabForBrowser(browser);
-            if (nativeTab) {
-              let changed = {status};
-              if (url) {
-                changed.url = url;
+              let tab = tabManager.getWrapper(nativeTab);
+              let changeInfo = {};
+              for (let prop of needed) {
+                changeInfo[prop] = tab[prop];
               }
 
-              fireForTab(tabManager.wrapTab(nativeTab), changed);
-            }
-          };
+              fireForTab(tab, changeInfo);
+            };
+
+            let statusListener = ({browser, status, url}) => {
+              let {BrowserApp} = browser.ownerGlobal;
+              let nativeTab = BrowserApp.getTabForBrowser(browser);
+              if (nativeTab) {
+                let changed = {status};
+                if (url) {
+                  changed.url = url;
+                }
 
-          windowTracker.addListener("status", statusListener);
-          windowTracker.addListener("DOMTitleChanged", listener);
-          return () => {
-            windowTracker.removeListener("status", statusListener);
-            windowTracker.removeListener("DOMTitleChanged", listener);
-          };
+                fireForTab(tabManager.wrapTab(nativeTab), changed);
+              }
+            };
+
+            windowTracker.addListener("status", statusListener);
+            windowTracker.addListener("DOMTitleChanged", listener);
+            return () => {
+              windowTracker.removeListener("status", statusListener);
+              windowTracker.removeListener("DOMTitleChanged", listener);
+            };
+          },
         }).api(),
 
         async create(createProperties) {
           let window = createProperties.windowId !== null ?
             windowTracker.getWindow(createProperties.windowId, context) :
             windowTracker.topWindow;
 
           let {BrowserApp} = window;
--- a/mobile/android/components/extensions/ext-utils.js
+++ b/mobile/android/components/extensions/ext-utils.js
@@ -182,75 +182,51 @@ class WindowTracker extends WindowTracke
     if (wrapper) {
       wrapper.destroy();
       listeners.delete(listener);
     }
   }
 }
 
 /**
- * An event manager API provider which listens for an event in the Android
- * global EventDispatcher, and calls the given listener function whenever an event
- * is received. That listener function receives a `fire` object, which it can
- * use to dispatch events to the extension, and an object detailing the
- * EventDispatcher event that was received.
+ * Helper to create an event manager which listens for an event in the Android
+ * global EventDispatcher, and calls the given listener function whenever the
+ * event is received. That listener function receives a `fire` object,
+ * which it can use to dispatch events to the extension, and an object
+ * detailing the EventDispatcher event that was received.
  *
  * @param {BaseContext} context
  *        The extension context which the event manager belongs to.
  * @param {string} name
  *        The API name of the event manager, e.g.,"runtime.onMessage".
  * @param {string} event
  *        The name of the EventDispatcher event to listen for.
  * @param {function} listener
  *        The listener function to call when an EventDispatcher event is
  *        recieved.
+ *
+ * @returns {object} An injectable api for the new event.
  */
-global.GlobalEventManager = class extends EventManager {
-  constructor(context, name, event, listener) {
-    super(context, name, fire => {
+global.makeGlobalEvent = function makeGlobalEvent(context, name, event, listener) {
+  return new EventManager({
+    context,
+    name,
+    register: fire => {
       let listener2 = {
         onEvent(event, data, callback) {
           listener(fire, data);
         },
       };
 
       GlobalEventDispatcher.registerListener(listener2, [event]);
       return () => {
         GlobalEventDispatcher.unregisterListener(listener2, [event]);
       };
-    });
-  }
-};
-
-/**
- * An event manager API provider which listens for a DOM event in any browser
- * window, and calls the given listener function whenever an event is received.
- * That listener function receives a `fire` object, which it can use to dispatch
- * events to the extension, and a DOM event object.
- *
- * @param {BaseContext} context
- *        The extension context which the event manager belongs to.
- * @param {string} name
- *        The API name of the event manager, e.g.,"runtime.onMessage".
- * @param {string} event
- *        The name of the DOM event to listen for.
- * @param {function} listener
- *        The listener function to call when a DOM event is received.
- */
-global.WindowEventManager = class extends EventManager {
-  constructor(context, name, event, listener) {
-    super(context, name, fire => {
-      let listener2 = listener.bind(null, fire);
-
-      windowTracker.addListener(event, listener2);
-      return () => {
-        windowTracker.removeListener(event, listener2);
-      };
-    });
-  }
+    },
+  }).api();
 };
 
 class TabTracker extends TabTrackerBase {
   constructor() {
     super();
 
     // Keep track of the extension popup tab.
     this._extensionPopupTabWeak = null;
--- a/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/BaseSessionTest.kt
+++ b/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/BaseSessionTest.kt
@@ -39,16 +39,18 @@ open class BaseSessionTest(noErrorCollec
     fun <T> assertThat(reason: String, v: T, m: Matcher<T>) = sessionRule.assertThat(reason, v, m)
 
     init {
         if (!noErrorCollector) {
             sessionRule.errorCollector = errors
         }
     }
 
+    fun <T> forEachCall(vararg values: T): T = sessionRule.forEachCall(*values)
+
     fun GeckoSession.getTestBytes(path: String) =
             InstrumentationRegistry.getTargetContext().resources.assets
                     .open(path.removePrefix("/assets/")).readBytes()
 
     fun GeckoSession.loadTestPath(path: String) =
             this.loadUri(GeckoSessionTestRule.APK_URI_PREFIX + path.removePrefix("/"))
 
     inline fun GeckoSession.toParcel(lambda: (Parcel) -> Unit) {
--- a/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/ContentDelegateTest.kt
+++ b/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/ContentDelegateTest.kt
@@ -17,22 +17,21 @@ import org.junit.runner.RunWith
 
 @RunWith(AndroidJUnit4::class)
 @MediumTest
 class ContentDelegateTest : BaseSessionTest() {
 
     @Test fun titleChange() {
         sessionRule.session.loadTestPath(TITLE_CHANGE_HTML_PATH)
 
-        val titles = mutableListOf("Title1", "Title2")
         sessionRule.waitUntilCalled(object : Callbacks.ContentDelegate {
             @AssertCalled(count = 2)
             override fun onTitleChange(session: GeckoSession, title: String) {
                 assertThat("Title should match", title,
-                           equalTo(titles.removeAt(0)))
+                           equalTo(forEachCall("Title1", "Title2")))
             }
         })
     }
 
     @Test fun download() {
         sessionRule.session.loadTestPath(DOWNLOAD_HTML_PATH)
 
         sessionRule.waitUntilCalled(object : Callbacks.NavigationDelegate, Callbacks.ContentDelegate {
--- a/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/GeckoSessionTestRuleTest.kt
+++ b/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/GeckoSessionTestRuleTest.kt
@@ -240,17 +240,17 @@ class GeckoSessionTestRuleTest : BaseSes
         var counter = 0
 
         sessionRule.waitUntilCalled(object : Callbacks.ProgressDelegate {
             @AssertCalled(count = 2, order = intArrayOf(1, 2))
             override fun onPageStop(session: GeckoSession, success: Boolean) {
                 val info = sessionRule.currentCall
                 assertThat("Method info should be valid", info, notNullValue())
                 assertThat("Counter should be correct",
-                           info.counter, isOneOf(1, 2))
+                           info.counter, equalTo(forEachCall(1, 2)))
                 assertThat("Order should equal counter",
                            info.order, equalTo(info.counter))
                 counter++
             }
         })
 
         assertThat("Callback count should be correct", counter, equalTo(2))
     }
--- a/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/ProgressDelegateTest.kt
+++ b/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/ProgressDelegateTest.kt
@@ -89,26 +89,25 @@ class ProgressDelegateTest : BaseSession
         sessionRule.session.loadUri(INVALID_URI)
         sessionRule.session.loadTestPath(HELLO_HTML_PATH)
         sessionRule.waitForPageStops(2)
 
         sessionRule.forCallbacksDuringWait(object : Callbacks.ProgressDelegate {
             @AssertCalled(count = 2, order = intArrayOf(1, 3))
             override fun onPageStart(session: GeckoSession, url: String) {
                 assertThat("URL should match", url,
-                           endsWith(if (sessionRule.currentCall.counter == 1)
-                                        INVALID_URI else HELLO_HTML_PATH))
+                           endsWith(forEachCall(INVALID_URI, HELLO_HTML_PATH)))
             }
 
             @AssertCalled(count = 2, order = intArrayOf(2, 4))
             override fun onPageStop(session: GeckoSession, success: Boolean) {
                 // The first load is certain to fail because of interruption by the second load
                 // or by invalid domain name, whereas the second load is certain to succeed.
                 assertThat("Success flag should match", success,
-                           equalTo(sessionRule.currentCall.counter != 1))
+                           equalTo(forEachCall(false, true)))
             };
         })
     }
 
     @Test fun reload() {
         sessionRule.session.loadTestPath(HELLO_HTML_PATH)
         sessionRule.waitForPageStop()
 
--- a/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/rule/GeckoSessionTestRule.java
+++ b/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/rule/GeckoSessionTestRule.java
@@ -1262,18 +1262,19 @@ public class GeckoSessionTestRule extend
         }
 
         assertThat("Should have called one of " +
                    Arrays.toString(callback.getClass().getInterfaces()),
                    calledAny, equalTo(true));
     }
 
     /**
-     * Get information about the current call. Only valid during a {@link #forCallbacksDuringWait}
-     * callback.
+     * Get information about the current call. Only valid during a {@link
+     * #forCallbacksDuringWait}, {@link #delegateDuringNextWait}, or {@link
+     * #delegateUntilTestEnd} callback.
      *
      * @return Call information
      */
     public @NonNull CallInfo getCurrentCall() {
         assertThat("Should be in a method call", mCurrentMethodCall, notNullValue());
         return mCurrentMethodCall.getInfo();
     }
 
@@ -1407,9 +1408,27 @@ public class GeckoSessionTestRule extend
      * Create a new, closed session using the specified settings.
      *
      * @param settings Settings for the new session.
      * @return New session.
      */
     public GeckoSession createClosedSession(final GeckoSessionSettings settings) {
         return createSession(settings, /* open */ false);
     }
+
+    /**
+     * Return a value from the given array indexed by the current call counter. Only valid
+     * during a {@link #forCallbacksDuringWait}, {@link #delegateDuringNextWait}, or
+     * {@link #delegateUntilTestEnd} callback.
+     * <p><p>
+     * Asserts that {@code foo} is equal to {@code "bar"} during the first call and {@code
+     * "baz"} during the second call:
+     * <pre>{@code assertThat("Foo should match", foo, equalTo(forEachCall("bar",
+     * "baz")));}</pre>
+     *
+     * @param values Input array
+     * @return Value from input array indexed by the current call counter.
+     */
+    public <T> T forEachCall(T... values) {
+        assertThat("Should be in a method call", mCurrentMethodCall, notNullValue());
+        return values[Math.min(mCurrentMethodCall.getCurrentCount(), values.length) - 1];
+    }
 }
--- a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/BasicSelectionActionDelegate.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/BasicSelectionActionDelegate.java
@@ -128,16 +128,19 @@ public class BasicSelectionActionDelegat
 
     /**
      * Perform the specified action. Override to perform custom actions.
      *
      * @param id Action ID.
      * @return True if the action was performed.
      */
     protected boolean performAction(final String id) {
+        if (mResponse == null) {
+            return false;
+        }
         mResponse.respond(id);
 
         // Android behavior is to clear selection on copy.
         if (ACTION_COPY.equals(id)) {
             if (mUseFloatingToolbar) {
                 clearSelection();
             } else {
                 mActionMode.finish();
--- a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoSession.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoSession.java
@@ -1779,16 +1779,20 @@ public class GeckoSession extends LayerS
          * The selection is collapsed at a single position.
          */
         final int FLAG_IS_COLLAPSED = 1;
         /**
          * The selection is inside editable content such as an input element or
          * contentEditable node.
          */
         final int FLAG_IS_EDITABLE = 2;
+        /**
+         * The selection is inside a password field.
+         */
+        final int FLAG_IS_PASSWORD = 4;
 
         @StringDef({ACTION_CUT,
                     ACTION_COPY,
                     ACTION_DELETE,
                     ACTION_PASTE,
                     ACTION_SELECT_ALL,
                     ACTION_UNSELECT,
                     ACTION_COLLAPSE_TO_START,
@@ -1854,17 +1858,19 @@ public class GeckoSession extends LayerS
              * coordinates.
              */
             public final RectF clientRect;
 
             /* package */ Selection(final GeckoBundle bundle) {
                 flags = (bundle.getBoolean("collapsed") ?
                          SelectionActionDelegate.FLAG_IS_COLLAPSED : 0) |
                         (bundle.getBoolean("editable") ?
-                         SelectionActionDelegate.FLAG_IS_EDITABLE : 0);
+                         SelectionActionDelegate.FLAG_IS_EDITABLE : 0) |
+                        (bundle.getBoolean("password") ?
+                         SelectionActionDelegate.FLAG_IS_PASSWORD : 0);
                 text = bundle.getString("selection");
 
                 final GeckoBundle rectBundle = bundle.getBundle("clientRect");
                 if (rectBundle == null) {
                     clientRect = null;
                 } else {
                     clientRect = new RectF((float) rectBundle.getDouble("left"),
                                            (float) rectBundle.getDouble("top"),
--- a/mobile/android/modules/ActionBarHandler.jsm
+++ b/mobile/android/modules/ActionBarHandler.jsm
@@ -45,16 +45,18 @@ var ActionBarHandler = {
   _boundingClientRect: null, // Current selections boundingClientRect.
   _actionBarActions: null, // Most-recent set of actions sent to ActionBar.
 
   /**
    * Receive and act on AccessibleCarets caret state-change
    * (mozcaretstatechanged) events.
    */
   handleEvent: function(e) {
+    e.stopImmediatePropagation();
+
     // Close an open ActionBar, if carets no longer logically visible.
     if (this._selectionID && !e.caretVisible) {
       this._uninit(false);
       return;
     }
 
     if (!this._selectionID && e.collapsed) {
       switch (e.reason) {
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -1434,17 +1434,17 @@ pref("privacy.resistFingerprinting", fal
 // If you do set it, to work around some broken website, please file a bug with
 // information so we can understand why it is needed.
 pref("privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts", true);
 // A subset of Resist Fingerprinting protections focused specifically on timers for testing
 // This affects the Animation API, the performance APIs, Date.getTime, Event.timestamp,
 //   File.lastModified, audioContext.currentTime, canvas.captureStream.currentTime
 pref("privacy.reduceTimerPrecision", true);
 // Dynamically tune the resolution of the timer reduction for both of the two above prefs
-pref("privacy.resistFingerprinting.reduceTimerPrecision.microseconds", 100);
+pref("privacy.resistFingerprinting.reduceTimerPrecision.microseconds", 1000);
 // Enable jittering the clock one precision value forward
 pref("privacy.resistFingerprinting.reduceTimerPrecision.jitter", true);
 // Lower the priority of network loads for resources on the tracking protection list.
 // Note that this requires the privacy.trackingprotection.annotate_channels pref to be on in order to have any effect.
 #ifdef NIGHTLY_BUILD
 pref("privacy.trackingprotection.lower_network_priority", true);
 #else
 pref("privacy.trackingprotection.lower_network_priority", false);
@@ -5046,16 +5046,18 @@ pref("extensions.webextensions.remote", 
 // Whether or not the moz-extension resource loads are remoted. For debugging
 // purposes only. Setting this to false will break moz-extension URI loading
 // unless other process sandboxing and extension remoting prefs are changed.
 pref("extensions.webextensions.protocol.remote", true);
 
 // Disable tab hiding API by default.
 pref("extensions.webextensions.tabhide.enabled", false);
 
+pref("extensions.webextensions.background-delayed-startup", false);
+
 // Report Site Issue button
 pref("extensions.webcompat-reporter.newIssueEndpoint", "https://webcompat.com/issues/new");
 #if defined(MOZ_DEV_EDITION) || defined(NIGHTLY_BUILD)
 pref("extensions.webcompat-reporter.enabled", true);
 #else
 pref("extensions.webcompat-reporter.enabled", false);
 #endif
 
--- a/netwerk/dns/TRR.cpp
+++ b/netwerk/dns/TRR.cpp
@@ -431,16 +431,48 @@ static uint16_t get16bit(unsigned char *
 }
 
 static uint32_t get32bit(unsigned char *aData, int index)
 {
   return (aData[index] << 24) | (aData[index+1] << 16) |
     (aData[index+2] << 8) | aData[index+3];
 }
 
+nsresult
+TRR::PassQName(unsigned int &index)
+{
+  uint8_t length;
+  do {
+    if (mBodySize < (index + 1)) {
+      LOG(("TRR: PassQName:%d fail at index %d\n", __LINE__, index));
+      return NS_ERROR_ILLEGAL_VALUE;
+    }
+    length = static_cast<uint8_t>(mResponse[index]);
+    if ((length & 0xc0) == 0xc0) {
+      // name pointer, advance over it and be done
+      if (mBodySize < (index + 2)) {
+        return NS_ERROR_ILLEGAL_VALUE;
+      }
+      index += 2;
+      break;
+    }
+    if (length & 0xc0) {
+      LOG(("TRR: illegal label length byte (%x) at index %d\n", length, index));
+      return NS_ERROR_ILLEGAL_VALUE;
+    }
+    // pass label
+    if (mBodySize < (index + 1 + length)) {
+      LOG(("TRR: PassQName:%d fail at index %d\n", __LINE__, index));
+      return NS_ERROR_ILLEGAL_VALUE;
+    }
+    index += 1 + length;
+  } while (length);
+  return NS_OK;
+}
+
 //
 // DohDecode() collects the TTL and the IP addresses in the response
 //
 nsresult
 TRR::DohDecode()
 {
   // The response has a 12 byte header followed by the question (returned)
   // and then the answer. The answer section itself contains the name, type
@@ -453,16 +485,17 @@ TRR::DohDecode()
   // 0377 7777 0765 7861 6d70 6c65 0363 6f6d 0000 0100 01
   // the answer:
   // 03 7777 7707 6578 616d 706c 6503 636f 6d00 0001 0001
   // 0000 0080 0004 5db8 d822
 
   unsigned int index = 12;
   uint8_t length;
   nsAutoCString host;
+  nsresult rv;
 
   LOG(("doh decode %s %d bytes\n", mHost.get(), mBodySize));
 
   mCname.Truncate();
 
   if (mBodySize < 12 || mResponse[0] || mResponse[1]) {
     LOG(("TRR bad incoming DOH, eject!\n"));
     return NS_ERROR_ILLEGAL_VALUE;
@@ -501,44 +534,19 @@ TRR::DohDecode()
 
   // Figure out the number of answer records from ANCOUNT
   uint16_t answerRecords = get16bit(mResponse, 6);
 
   LOG(("TRR Decode: %d answer records (%u bytes body) %s index=%u\n",
        answerRecords, mBodySize, host.get(), index));
 
   while (answerRecords) {
-    if (mBodySize < (index + 1)) {
-      LOG(("TRR: Dohdecode:%d fail at index %d\n", __LINE__, index));
-      return NS_ERROR_ILLEGAL_VALUE;
-    }
-    length = static_cast<uint8_t>(mResponse[index]);
-    if ((length & 0xc0) == 0xc0) {
-      // name pointer, advance over it
-      if (mBodySize < (index + 2)) {
-        return NS_ERROR_ILLEGAL_VALUE;
-      }
-      index += 2;
-    } else if (length & 0xc0) {
-      // illegal length, bail out
-      LOG(("TRR: illegal label length byte (%x)\n", length));
-      return NS_ERROR_ILLEGAL_VALUE;
-    } else {
-      // iterate over host name in answer
-      do {
-        if (mBodySize < (index + 1)) {
-          return NS_ERROR_ILLEGAL_VALUE;
-        }
-        length = static_cast<uint8_t>(mResponse[index]);
-        if (mBodySize < (index + 1 + length)) {
-          LOG(("TRR: Dohdecode:%d fail at index %d\n", __LINE__, index));
-          return NS_ERROR_ILLEGAL_VALUE;
-        }
-        index += 1 + length;
-      } while (length);
+    rv = PassQName(index);
+    if (NS_FAILED(rv)) {
+      return rv;
     }
     // 16 bit TYPE
     if (mBodySize < (index + 2)) {
       LOG(("TRR: Dohdecode:%d fail at index %d\n", __LINE__, index + 2));
       return NS_ERROR_ILLEGAL_VALUE;
     }
     uint16_t TYPE = get16bit(mResponse, index);
 
@@ -585,17 +593,16 @@ TRR::DohDecode()
       return NS_ERROR_ILLEGAL_VALUE;
     }
 
     // RDATA
     // - A (TYPE 1):  4 bytes
     // - AAAA (TYPE 28): 16 bytes
     // - NS (TYPE 2): N bytes
 
-    nsresult rv;
     switch(TYPE) {
     case TRRTYPE_A:
       if (RDLENGTH != 4) {
         LOG(("TRR bad length for A (%u)\n", RDLENGTH));
         return NS_ERROR_UNEXPECTED;
       }
       rv = mDNS.Add(TTL, mResponse, index, RDLENGTH,
                     mAllowRFC1918);
@@ -681,43 +688,19 @@ TRR::DohDecode()
          TYPE, RDLENGTH, index, mBodySize));
     answerRecords--;
   }
 
   // NSCOUNT
   uint16_t nsRecords = get16bit(mResponse, 8);
   LOG(("TRR Decode: %d ns records (%u bytes body)\n", nsRecords, mBodySize));
   while (nsRecords) {
-    if (mBodySize < (index + 1)) {
-      return NS_ERROR_ILLEGAL_VALUE;
-    }
-    length = static_cast<uint8_t>(mResponse[index]);
-    if ((length & 0xc0) == 0xc0) {
-      // name pointer, advance over it
-      if (mBodySize < (index + 2)) {
-        return NS_ERROR_ILLEGAL_VALUE;
-      }
-      index += 2;
-    } else if (length & 0xc0) {
-      // illegal length, bail out
-      LOG(("TRR: illegal label length byte (%x)\n", length));
-      return NS_ERROR_ILLEGAL_VALUE;
-    } else {
-      // iterate over host name in answer
-      do {
-        if (mBodySize < (index + 1)) {
-          return NS_ERROR_ILLEGAL_VALUE;
-        }
-        length = static_cast<uint8_t>(mResponse[index]);
-        if (mBodySize < (index + 1 + length)) {
-          return NS_ERROR_ILLEGAL_VALUE;
-        }
-        index += 1 + length;
-        LOG(("TRR: move over %d bytes\n", 1 + length));
-      } while (length);
+    rv = PassQName(index);
+    if (NS_FAILED(rv)) {
+      return rv;
     }
 
     if (mBodySize < (index + 8)) {
       return NS_ERROR_ILLEGAL_VALUE;
     }
     index += 2; // type
     index += 2; // class
     index += 4; // ttl
@@ -736,43 +719,19 @@ TRR::DohDecode()
     nsRecords--;
   }
 
   // additional resource records
   uint16_t arRecords = get16bit(mResponse, 10);
   LOG(("TRR Decode: %d additional resource records (%u bytes body)\n",
        arRecords, mBodySize));
   while (arRecords) {
-    if (mBodySize < (index + 1)) {
-      return NS_ERROR_ILLEGAL_VALUE;
-    }
-    length = static_cast<uint8_t>(mResponse[index]);
-    if ((length & 0xc0) == 0xc0) {
-      // name pointer, advance over it
-      if (mBodySize < (index + 2)) {
-        return NS_ERROR_ILLEGAL_VALUE;
-      }
-      index += 2;
-    } else if (length & 0xc0) {
-      // illegal length, bail out
-      LOG(("TRR: illegal label length byte (%x)\n", length));
-      return NS_ERROR_ILLEGAL_VALUE;
-    } else {
-      // iterate over host name in answer
-      do {
-        if (mBodySize < (index + 1)) {
-          return NS_ERROR_ILLEGAL_VALUE;
-        }
-        length = static_cast<uint8_t>(mResponse[index]);
-        if (mBodySize < (index + 1 + length)) {
-          return NS_ERROR_ILLEGAL_VALUE;
-        }
-        index += 1 + length;
-        LOG(("TRR: move over %d bytes\n", 1 + length));
-      } while (length);
+    rv = PassQName(index);
+    if (NS_FAILED(rv)) {
+      return rv;
     }
 
     if (mBodySize < (index + 8)) {
       return NS_ERROR_ILLEGAL_VALUE;
     }
     index += 2; // type
     index += 2; // class
     index += 4; // ttl
--- a/netwerk/dns/TRR.h
+++ b/netwerk/dns/TRR.h
@@ -137,16 +137,17 @@ public:
   nsCString mHost;
   RefPtr<nsHostRecord> mRec;
   RefPtr<AHostResolver> mHostResolver;
 
 private:
   ~TRR() = default;
   nsresult SendHTTPRequest();
   nsresult DohEncode(nsCString &target);
+  nsresult PassQName(unsigned int &index);
   nsresult DohDecode();
   nsresult ReturnData();
   nsresult FailData();
   nsresult DohDecodeQuery(const nsCString &query,
                           nsCString &host, enum TrrType &type);
   nsresult ReceivePush(nsIHttpChannel *pushed, nsHostRecord *pushedRec);
   nsresult On200Response();
 
--- a/python/mozbuild/mozbuild/backend/tup.py
+++ b/python/mozbuild/mozbuild/backend/tup.py
@@ -235,72 +235,78 @@ class TupOnly(CommonBackend, PartialBack
         ]
         return cmd
 
     def _lib_paths(self, objdir, libs):
         return [mozpath.relpath(mozpath.join(l.objdir, l.import_name), objdir)
                 for l in libs]
 
     def _gen_shared_library(self, backend_file):
-        if backend_file.shared_lib.name == 'libxul.so':
+        shlib = backend_file.shared_lib
+        if shlib.name == 'libxul.so':
             # This will fail to link currently due to missing rust symbols.
             return
 
-        if backend_file.shared_lib.cxx_link:
+        if shlib.cxx_link:
             mkshlib = (
                 [backend_file.environment.substs['CXX']] +
                 backend_file.local_flags['CXX_LDFLAGS']
             )
         else:
             mkshlib = (
                 [backend_file.environment.substs['CC']] +
                 backend_file.local_flags['C_LDFLAGS']
             )
 
         mkshlib += (
             backend_file.environment.substs['DSO_PIC_CFLAGS'] +
             [backend_file.environment.substs['DSO_LDOPTS']] +
-            ['-Wl,-h,%s' % backend_file.shared_lib.soname] +
-            ['-o', backend_file.shared_lib.lib_name]
+            ['-Wl,-h,%s' % shlib.soname] +
+            ['-o', shlib.lib_name]
         )
 
-        objs, _, shared_libs, os_libs, static_libs = self._expand_libs(backend_file.shared_lib)
+        objs, _, shared_libs, os_libs, static_libs = self._expand_libs(shlib)
         static_libs = self._lib_paths(backend_file.objdir, static_libs)
         shared_libs = self._lib_paths(backend_file.objdir, shared_libs)
 
-        list_file_name = '%s.list' % backend_file.shared_lib.name.replace('.', '_')
+        list_file_name = '%s.list' % shlib.name.replace('.', '_')
         list_file = self._make_list_file(backend_file.objdir, objs, list_file_name)
 
         inputs = objs + static_libs + shared_libs
         if any(i.endswith('libxul.so') for i in inputs):
             # Don't attempt to link anything that depends on libxul.
             return
 
         symbols_file = []
-        if backend_file.shared_lib.symbols_file:
-            inputs.append(backend_file.shared_lib.symbols_file)
+        if shlib.symbols_file:
+            inputs.append(shlib.symbols_file)
             # TODO: Assumes GNU LD
-            symbols_file = ['-Wl,--version-script,%s' % backend_file.shared_lib.symbols_file]
+            symbols_file = ['-Wl,--version-script,%s' % shlib.symbols_file]
 
         cmd = (
             mkshlib +
             [list_file] +
             backend_file.local_flags['LDFLAGS'] +
             static_libs +
             shared_libs +
             symbols_file +
             [backend_file.environment.substs['OS_LIBS']] +
             os_libs
         )
         backend_file.rule(
             cmd=cmd,
             inputs=inputs,
-            outputs=[backend_file.shared_lib.lib_name],
+            outputs=[shlib.lib_name],
             display='LINK %o'
         )
+        backend_file.symlink_rule(mozpath.join(backend_file.objdir,
+                                               shlib.lib_name),
+                                  output=mozpath.join(self.environment.topobjdir,
+                                                      shlib.install_target,
+                                                      shlib.lib_name))
 
 
     def _gen_program(self, backend_file):
         cc_or_cxx = 'CXX' if backend_file.program.cxx_link else 'CC'
         objs, _, shared_libs, os_libs, static_libs = self._expand_libs(backend_file.program)
         static_libs = self._lib_paths(backend_file.objdir, static_libs)
         shared_libs = self._lib_paths(backend_file.objdir, shared_libs)
 
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1158,9 +1158,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 = 485;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1531686800288000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1531773471822000);
--- a/security/manager/ssl/nsSTSPreloadList.errors
+++ b/security/manager/ssl/nsSTSPreloadList.errors
@@ -17,47 +17,45 @@ 1001.best: could not connect to host
 100onrainkajino.com: could not connect to host
 135vv.com: could not connect to host
 13826145000.com: could not connect to host
 16164f.com: could not connect to host
 166166.com: could not connect to host
 1888zr.com: could not connect to host
 1912x.com: could not connect to host
 1921958389.rsc.cdn77.org: could not connect to host
-1day1ac.red: could not connect to host
 1er-secours.ch: could not connect to host
 1gsoft.com: could not connect to host
 1nian.vip: could not connect to host
 1q365a.com: could not connect to host
 2.wtf: could not connect to host
 249cq.com: could not connect to host
 256k.me: could not connect to host
 2b3b.com: could not connect to host
 2bitout.com: could not connect to host
 2fl.me: could not connect to host
 330.net: could not connect to host
 360ds.co.in: could not connect to host
 379700.com: could not connect to host
+3839.ca: could not connect to host
 38888msc.com: could not connect to host
 38blog.com: could not connect to host
 3dm.audio: could not connect to host
 3vlnaeet.cz: could not connect to host
 404.guide: could not connect to host
 41844.de: could not connect to host
 42t.ru: could not connect to host
 439191.com: could not connect to host
 440hz-radio.de: could not connect to host
 47tech.com: could not connect to host
 4baby.com.br: could not connect to host
 4d2.xyz: could not connect to host
-4host.ch: could not connect to host
 4loc.us: could not connect to host
 4web-hosting.com: could not connect to host
 5000yz.com: could not connect to host
-517vpn.cn: could not connect to host
 52kb.net: could not connect to host
 52kb1.com: could not connect to host
 52neptune.com: could not connect to host
 56877.com: could not connect to host
 5w5.la: could not connect to host
 6542277.com: could not connect to host
 6548855.com: could not connect to host
 6548877.com: could not connect to host
@@ -73,17 +71,16 @@ 8887999.com: could not connect to host
 88laohu.cc: could not connect to host
 88laohu.com: could not connect to host
 8ackprotect.com: could not connect to host
 8ballbombom.uk: could not connect to host
 8t88.biz: could not connect to host
 91-freedom.com: could not connect to host
 99buffets.com: could not connect to host
 9ss6.com: could not connect to host
-9yw.me: could not connect to host
 a-intel.com: could not connect to host
 a-ix.net: could not connect to host
 aariefhaafiz.com: could not connect to host
 aaron.xin: could not connect to host
 abi-fvs.de: could not connect to host
 abigailstark.com: could not connect to host
 abloop.com: could not connect to host
 abolition.co: could not connect to host
@@ -125,18 +122,16 @@ agent-grow.com: could not connect to hos
 agingstop.net: could not connect to host
 agoravm.tk: could not connect to host
 agowa.eu: could not connect to host
 agowa338.de: could not connect to host
 agrilinks.org: could not connect to host
 ahelos.tk: could not connect to host
 ahkubiak.ovh: could not connect to host
 ahlz.sk: could not connect to host
-aid-web.ch: could not connect to host
-aijsk.com: could not connect to host
 aikenorganics.com: could not connect to host
 aim-consultants.com: could not connect to host
 aimrom.org: could not connect to host
 ajetaci.cz: could not connect to host
 akiba-server.info: could not connect to host
 akita-stream.com: could not connect to host
 akoch.net: could not connect to host
 akoww.de: could not connect to host
@@ -144,17 +139,16 @@ akritikos.info: could not connect to hos
 akul.co.in: could not connect to host
 al-f.net: could not connect to host
 alasta.info: could not connect to host
 alauda-home.de: could not connect to host
 albertify.xyz: could not connect to host
 alcatraz.online: could not connect to host
 aldred.cloud: could not connect to host
 aleax.me: could not connect to host
-alela.fr: could not connect to host
 alexandernorth.ch: could not connect to host
 alexey-shamara.ru: could not connect to host
 alexhaydock.co.uk: could not connect to host
 alexismeza.dk: could not connect to host
 alexmol.tk: could not connect to host
 algarmatic-automatismos.pt: could not connect to host
 alibababee.com: could not connect to host
 alignrs.com: could not connect to host
@@ -163,26 +157,24 @@ alldm.ru: could not connect to host
 alloutatl.com: could not connect to host
 allscammers.exposed: could not connect to host
 allthingsfpl.com: could not connect to host
 alocato.com: could not connect to host
 alphabrock.cn: could not connect to host
 alphahunks.com: could not connect to host
 altahrim.net: could not connect to host
 altered.network: could not connect to host
-altoneum.com: could not connect to host
-alwaysonssl.com: could not connect to host
+alternativet.party: could not connect to host
 amdouglas.uk: could not connect to host
 ameho.me: could not connect to host
 americandistribuidora.com: could not connect to host
 americkykongres.cz: could not connect to host
 amilum.org: could not connect to host
 amua.fr: could not connect to host
 amunoz.org: could not connect to host
-anadoluefessk.org: could not connect to host
 analyzemyfriends.com: could not connect to host
 anassiriphotography.com: could not connect to host
 anastasia-shamara.ru: could not connect to host
 ancientcraft.eu: could not connect to host
 andreas-kluge.eu: could not connect to host
 andreaskluge.eu: could not connect to host
 andrei-coman.com: could not connect to host
 andrewdaws.co: could not connect to host
@@ -215,17 +207,16 @@ aquireceitas.com: could not connect to h
 arawaza.biz: could not connect to host
 arckr.com: could not connect to host
 area3.org: could not connect to host
 arenlor.com: could not connect to host
 arenlor.info: could not connect to host
 arenns.com: could not connect to host
 arent.kz: could not connect to host
 arenzanaphotography.com: could not connect to host
-argh.io: could not connect to host
 arksan.com.tr: could not connect to host
 armazemdaminiatura.com.br: could not connect to host
 armenians.online: could not connect to host
 arnesolutions.com: could not connect to host
 arresttracker.com: could not connect to host
 arrivedconsulting.com: could not connect to host
 arsenal.ru: could not connect to host
 arsk1.com: could not connect to host
@@ -274,35 +265,33 @@ avonlearningcampus.com: could not connec
 avso.pw: could not connect to host
 avxo.pw: could not connect to host
 awan.tech: could not connect to host
 awei.pub: could not connect to host
 awf0.xyz: could not connect to host
 awxg.eu.org: could not connect to host
 axel-fischer.science: could not connect to host
 axxial.tk: could not connect to host
-ayrohq.com: could not connect to host
 b9winner.com: could not connect to host
 babelfisch.eu: could not connect to host
 babystep.tv: could not connect to host
 bacimg.com: could not connect to host
 badbee.cc: could not connect to host
 bairdzhang.com: could not connect to host
-bakabt.info: could not connect to host
 balonmano.co: could not connect to host
 bandally.net: could not connect to host
 bandarifamily.com: could not connect to host
-bankcircle.co.in: could not connect to host
 bannisbierblog.de: could not connect to host
 bardiharborow.tk: could not connect to host
 bargainmovingcompany.com: could not connect to host
 barracuda.blog: could not connect to host
 basculasconfiables.com: could not connect to host
 bashc.at: could not connect to host
 batfoundry.com: could not connect to host
+baychimo.com: could not connect to host
 bbb1991.me: could not connect to host
 bbdos.ru: could not connect to host
 bbwteens.org: could not connect to host
 bcradio.org: could not connect to host
 bdikaros-network.net: could not connect to host
 bdsmxxxpics.com: could not connect to host
 beamitapp.com: could not connect to host
 beasel.biz: could not connect to host
@@ -389,17 +378,16 @@ blueblou.com: could not connect to host
 blumen-garage.de: could not connect to host
 blunderify.se: could not connect to host
 bm-i.ch: could not connect to host
 bodybuilding.events: could not connect to host
 boilesen.com: could not connect to host
 bolivarfm.com.ve: could not connect to host
 bomberus.de: could not connect to host
 bombsquad.studio: could not connect to host
-bonita.com.br: could not connect to host
 bonobo.cz: could not connect to host
 bookreport.ga: could not connect to host
 booter.es: could not connect to host
 boozinyan.com: could not connect to host
 bopera.co.uk: could not connect to host
 borchers-media.de: could not connect to host
 borisbesemer.com: could not connect to host
 boxdevigneron.fr: could not connect to host
@@ -425,37 +413,35 @@ bsktweetup.info: could not connect to ho
 bslim-e-boutique.com: could not connect to host
 bsquared.org: could not connect to host
 bsuess.de: could not connect to host
 btcp.space: could not connect to host
 buenotour.ru: could not connect to host
 buffalodrinkinggame.beer: could not connect to host
 bugsmashed.com: could not connect to host
 bugtrack.co.uk: could not connect to host
-builditsolutions.net: could not connect to host
 buka.jp: could not connect to host
-bull.id.au: could not connect to host
 bulletbabu.com: could not connect to host
 bunadarbankinn.is: could not connect to host
 bupu.ml: could not connect to host
+burr.is: could not connect to host
 businessamongus.com: could not connect to host
 businessetmarketing.com: could not connect to host
 businessfurs.info: could not connect to host
 businesshub.cz: could not connect to host
 businessmodeler.se: could not connect to host
 buyharpoon.com: could not connect to host
 buyingsellingflorida.com: could not connect to host
 buyshoe.org: could not connect to host
 buywood.shop: could not connect to host
 bvexplained.co.uk: could not connect to host
 bxdev.me: could not connect to host
 by1898.com: could not connect to host
 byji.com: could not connect to host
 bypass.kr: could not connect to host
-byronprivaterehab.com.au: could not connect to host
 byteshift.ca: could not connect to host
 bytesunlimited.com: could not connect to host
 byvshie.com: could not connect to host
 c2o2.xyz: could not connect to host
 cafechesscourt.com: could not connect to host
 cafesg.net: could not connect to host
 caipai.fm: could not connect to host
 cairnterrier.com.br: could not connect to host
@@ -504,22 +490,22 @@ championnat-romand-cuisiniers-amateurs.c
 channellife.asia: could not connect to host
 chaouby.com: could not connect to host
 charge.co: could not connect to host
 charmyadesara.com: could not connect to host
 chatnbook.com: could not connect to host
 chatsworthelectrical.com: could not connect to host
 cheah.xyz: could not connect to host
 cheesefusion.com: could not connect to host
+chellame.fr: could not connect to host
 chez-janine.de: could not connect to host
 chicorycom.net: could not connect to host
 chikory.com: could not connect to host
 china-line.org: could not connect to host
 chinternet.xyz: could not connect to host
-chksite.com: could not connect to host
 chloe.re: could not connect to host
 chocolat-suisse.ch: could not connect to host
 chorkley.me: could not connect to host
 chrisebert.net: could not connect to host
 christianhoffmann.info: could not connect to host
 christianpusch.de: could not connect to host
 christiansayswords.com: could not connect to host
 christophersole.com: could not connect to host
@@ -542,16 +528,17 @@ clic-music.com: could not connect to hos
 clickclock.cc: could not connect to host
 clickomobile.com: could not connect to host
 clintonbloodworth.com: could not connect to host
 clochix.net: could not connect to host
 closingholding.com: could not connect to host
 cloudberlin.goip.de: could not connect to host
 cloudbleed.info: could not connect to host
 cloudimproved.com: could not connect to host
+cloudimprovedtest.com: could not connect to host
 cloudwarez.xyz: could not connect to host
 clownish.co.il: could not connect to host
 clubmate.rocks: could not connect to host
 clycat.ru: could not connect to host
 cmcc.network: could not connect to host
 cmpr.es: could not connect to host
 cmrss.com: could not connect to host
 cms-weble.jp: could not connect to host
@@ -575,17 +562,16 @@ codewiz.xyz: could not connect to host
 cogumelosmagicos.org: could not connect to host
 colarelli.ch: could not connect to host
 colleencornez.com: could not connect to host
 collins.kg: could not connect to host
 colo-tech.com: could not connect to host
 colorectalcompounding.com: could not connect to host
 com-in.de: could not connect to host
 com.cc: could not connect to host
-comalia.com: could not connect to host
 comiq.io: could not connect to host
 compeuphoria.com: could not connect to host
 complex-organization.com: could not connect to host
 complt.xyz: could not connect to host
 comprehensiveihc.com: could not connect to host
 conception.sk: could not connect to host
 conejovalleyelectrical.com: could not connect to host
 conkret.in: could not connect to host
@@ -604,16 +590,17 @@ cotta.dk: could not connect to host
 coumoul.fr: could not connect to host
 cpaneltips.com: could not connect to host
 crackpfer.de: could not connect to host
 crackslut.eu: could not connect to host
 craftination.net: could not connect to host
 craftydev.design: could not connect to host
 crashsec.com: could not connect to host
 creativecommonscatpictures.com: could not connect to host
+creato.top: could not connect to host
 credential.eu: could not connect to host
 creditreporttips.net: could not connect to host
 crip-usk.ba: could not connect to host
 cristianhares.com: could not connect to host
 criticalaim.com: could not connect to host
 crow.tw: could not connect to host
 crox.co: could not connect to host
 cryptoisnotacrime.org: could not connect to host
@@ -661,17 +648,16 @@ darrenellis.xyz: could not connect to ho
 darrienworth.com: could not connect to host
 daryl.moe: could not connect to host
 dashboard.yt: could not connect to host
 data-detox.com: could not connect to host
 datamatic.ru: could not connect to host
 datastream.re: could not connect to host
 datengrab.ws: could not connect to host
 dateno1.com: could not connect to host
-datenschutzhelden.org: could not connect to host
 datorb.com: could not connect to host
 daverandom.com: could not connect to host
 davidgreig.uk: could not connect to host
 davidscherzer.at: could not connect to host
 davidstuff.net: could not connect to host
 davros.eu: could not connect to host
 davros.ru: could not connect to host
 dawnson.is: could not connect to host
@@ -762,17 +748,16 @@ dojin.nagoya: could not connect to host
 dolarcanadense.com.br: could not connect to host
 dolphin-hosting.com: could not connect to host
 domengrad.ru: could not connect to host
 domfee.com: could not connect to host
 dongkexue.com: could not connect to host
 donotspellitgav.in: could not connect to host
 doopdidoop.com: could not connect to host
 dostavkakurierom.ru: could not connect to host
-dougferris.id.au: could not connect to host
 doujin.nagoya: could not connect to host
 doyoulyft.com: could not connect to host
 doze-cloud.tech: could not connect to host
 dperson.net: could not connect to host
 draghive.net: could not connect to host
 dragonwork.me: could not connect to host
 drakfot.se: could not connect to host
 dreamaholic.club: could not connect to host
@@ -795,36 +780,38 @@ dujsq.top: could not connect to host
 duo.money: could not connect to host
 durangoenergyllc.com: could not connect to host
 dwnld.me: could not connect to host
 dynamic-networks.be: could not connect to host
 e-mak.eu: could not connect to host
 e-wishlist.net: could not connect to host
 eagle-yard.de: could not connect to host
 eagleridgecampground.com: could not connect to host
+eapestudioweb.com: could not connect to host
 earth-people.org: could not connect to host
 eatfitoutlet.com.br: could not connect to host
-ebonyriddle.com: could not connect to host
 ebrowz.com: could not connect to host
 eccux.com: could not connect to host
 ectora.com: could not connect to host
 edgecustomersportal.com: could not connect to host
 educatoys.com.br: could not connect to host
 eductf.org: could not connect to host
 eduif.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
 eeb98.com: could not connect to host
 eeetrust.org: could not connect to host
 eenekorea.com: could not connect to host
 eez.ee: could not connect to host
 effectiveosgi.com: could not connect to host
+ehertz.uk: could not connect to host
 ehrlichesbier.de: could not connect to host
 ehuber.info: could not connect to host
 einhorn.space: could not connect to host
 einsatzstiefel.info: could not connect to host
 einsteinathome.org: could not connect to host
+ejgconsultancy.co.uk: could not connect to host
 ekobudisantoso.net: could not connect to host
 ekong366.com: could not connect to host
 electricalcontrolpanels.co.uk: could not connect to host
 electricianumhlangarocks.co.za: could not connect to host
 electronicafacil.net: could not connect to host
 elenorsmadness.org: could not connect to host
 eletesstilus.hu: could not connect to host
 elevateandprosper.com: could not connect to host
@@ -838,17 +825,16 @@ emaily.eu: could not connect to host
 emavok.eu: could not connect to host
 embellir-aroma.com: could not connect to host
 embellir-kyujin.com: could not connect to host
 embracethedarkness.co.uk: could not connect to host
 eminhuseynov.com: could not connect to host
 emmehair.com: could not connect to host
 emperor.blog: could not connect to host
 empire24.co: could not connect to host
-endofnet.org: could not connect to host
 endohaus.us: could not connect to host
 endspamwith.us: could not connect to host
 enoou.com: could not connect to host
 enpalmademallorca.info: could not connect to host
 enskat.de: could not connect to host
 enskatson-sippe.de: could not connect to host
 entaurus.com: could not connect to host
 envelope.co.nz: could not connect to host
@@ -857,36 +843,38 @@ er-music.com: could not connect to host
 erad.fr: could not connect to host
 erclab.kr: could not connect to host
 erethon.com: could not connect to host
 ericloud.tk: could not connect to host
 ericwie.se: could not connect to host
 erigrid.eu: could not connect to host
 erspro.net: could not connect to host
 es888999.com: could not connect to host
+esaborit.ddns.net: could not connect to host
 esoterik.link: could not connect to host
 essentialoilsimports.com: could not connect to host
 esseriumani.com: could not connect to host
 essplusmed.org: could not connect to host
 etenendrinken.nu: could not connect to host
 ethanfaust.com: could not connect to host
-etincelle.ml: could not connect to host
 etzi.myds.me: could not connect to host
 euexia.fr: could not connect to host
 eung.ga: could not connect to host
 euph.eu: could not connect to host
 eurostrategy.vn.ua: could not connect to host
 evankurniawan.com: could not connect to host
 evasioncreole.com: could not connect to host
 eventaro.com: could not connect to host
 eventmake.es: could not connect to host
 everyarti.st: could not connect to host
+everybodyhertz.co.uk: could not connect to host
 everygayporn.com: could not connect to host
 eveshaiwu.com: could not connect to host
 eworksmedia.com: could not connect to host
+exceed.global: could not connect to host
 exceptionalservices.us: could not connect to host
 exo.do: could not connect to host
 exteriorservices.io: could not connect to host
 extratorrent.fyi: could not connect to host
 extratorrent.red: could not connect to host
 extratorrent.world: could not connect to host
 eytosh.net: could not connect to host
 f1bigpicture.com: could not connect to host
@@ -895,17 +883,16 @@ faber.org.ru: could not connect to host
 fabian-kluge.de: could not connect to host
 fabienbaker.com: could not connect to host
 fabulouslyyouthfulskin.com: could not connect to host
 fabulouslyyouthfulskineyeserum.com: could not connect to host
 facebook.ax: could not connect to host
 facesnf.com: could not connect to host
 facilitrak.com: could not connect to host
 factureenlinea.com: could not connect to host
-faeriecakes.be: could not connect to host
 fafatiger.com: could not connect to host
 faithwatch.org: could not connect to host
 fakti.bg: could not connect to host
 falkus.net: could not connect to host
 fallenangeldrinks.eu: could not connect to host
 famer.me: could not connect to host
 fameuxhosting.co.uk: could not connect to host
 familie-leu.ch: could not connect to host
@@ -919,16 +906,17 @@ feac.us: could not connect to host
 fed51.com: could not connect to host
 fedn.it: could not connect to host
 feedstringer.com: could not connect to host
 feirlane.org: could not connect to host
 feisbed.com: could not connect to host
 feist.io: could not connect to host
 felger-times.fr: could not connect to host
 fengyadi.com: could not connect to host
+fensterbau-mutscheller.de: could not connect to host
 feras-alhajjaji.com: could not connect to host
 fetclips.se: could not connect to host
 feudaltactics.com: could not connect to host
 fhsseniormens.club: could not connect to host
 ficklenote.net: could not connect to host
 fierman.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
 fierman.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
 fierman.us: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
@@ -947,28 +935,28 @@ fix-the-timeline.com: could not connect 
 fix-the-timeline.org: could not connect to host
 fixmyglitch.com: could not connect to host
 fixthetimeline.com: could not connect to host
 fixthetimeline.org: could not connect to host
 flam.io: could not connect to host
 flamingcow.tv: could not connect to host
 flemingtonaudiparts.com: could not connect to host
 flexinvesting.fi: could not connect to host
+floriantanner.ch: could not connect to host
 floth.at: could not connect to host
 flugplatz-edvc.de: could not connect to host
 flyingdoggy.net: could not connect to host
 fmovies.life: could not connect to host
 focalforest.com: could not connect to host
 fognini-depablo.eu: could not connect to host
 foodserve.in: could not connect to host
 forcamp.ga: could not connect to host
 foreverssl.com: could not connect to host
 forsyththeatre.com: could not connect to host
 fortuna-loessnitz.de: could not connect to host
-forum-bonn.de: could not connect to host
 fossewayflowers.co.uk: could not connect to host
 fossewayflowers.com: could not connect to host
 foudufafa.de: could not connect to host
 foxyslut.com: could not connect to host
 fragnic.com: could not connect to host
 frank.fyi: could not connect to host
 franklinhua.com: could not connect to host
 franzt.ovh: could not connect to host
@@ -981,26 +969,26 @@ freedomvote.nl: could not connect to hos
 freejidi.com: could not connect to host
 freelansir.com: could not connect to host
 freesitemapgenerator.com: could not connect to host
 freesounding.ru: could not connect to host
 freshcode.nl: could not connect to host
 frickelboxx.de: could not connect to host
 frickenate.com: could not connect to host
 friedhelm-wolf.de: could not connect to host
+friller.com.au: could not connect to host
 frodriguez.xyz: could not connect to host
 frolov.net: could not connect to host
 fromix.de: could not connect to host
 fromlemaytoz.com: could not connect to host
 frosty-gaming.xyz: could not connect to host
 frp-roleplay.de: could not connect to host
 fsfi.is: could not connect to host
 ftgho.com: could not connect to host
 fuchsy.com: could not connect to host
-fuckav.ru: could not connect to host
 fuckcf.cf: could not connect to host
 fugle.de: could not connect to host
 fuitedeau.ch: could not connect to host
 fukuko.biz: could not connect to host
 fukuko.xyz: could not connect to host
 fun9.cc: could not connect to host
 fun99.cc: could not connect to host
 funksteckdosen24.de: could not connect to host
@@ -1025,17 +1013,16 @@ gametium.es: could not connect to host
 gamhealth.net: could not connect to host
 garage-door.pro: could not connect to host
 gasbarkenora.com: could not connect to host
 gashalot.com: could not connect to host
 gasnews.net: could not connect to host
 gautham.pro: could not connect to host
 gay-jays.com: could not connect to host
 gaygeeks.de: could not connect to host
-gaysexpositions.guide: could not connect to host
 gc.net: could not connect to host
 gdevpenze.ru: could not connect to host
 gdhzcgs.com: could not connect to host
 gdz-otvety.com: could not connect to host
 ge1.me: could not connect to host
 gear-acquisition-syndrome.community: could not connect to host
 geeks.berlin: could not connect to host
 gehrke.nrw: could not connect to host
@@ -1062,31 +1049,28 @@ getgeek.pl: could not connect to host
 getyou.onl: could not connect to host
 getyourphix.tk: could not connect to host
 gevaulug.fr: could not connect to host
 gfoss.gr: could not connect to host
 gglks.com: could not connect to host
 ggss.cf: could not connect to host
 gh16.com.ar: could not connect to host
 gifzilla.net: could not connect to host
-gigime.com: could not connect to host
 gina-architektur.design: could not connect to host
 girlsnet.work: could not connect to host
 git.co: could not connect to host
-gitstuff.tk: could not connect to host
 gix.net.pl: could not connect to host
 glenavy.tk: could not connect to host
 globalelite.black: could not connect to host
 globalnewsdaily.cf: could not connect to host
 globaltennis.ca: could not connect to host
 globalvisions-events.ch: could not connect to host
 glutenfreelife.co.nz: could not connect to host
 gmanukyan.com: could not connect to host
 gnom.me: could not connect to host
-gnosticjade.net: could not connect to host
 goanalyse.co.uk: could not connect to host
 godrealms.com: could not connect to host
 goiaspropaganda.com.br: could not connect to host
 goldfelt.com: could not connect to host
 gongjuhao.com: could not connect to host
 goodyearsotn.co.uk: could not connect to host
 google.ax: could not connect to host
 goranrango.ch: could not connect to host
@@ -1118,17 +1102,16 @@ guildgearscore.cf: could not connect to 
 guinea-pig.co: could not connect to host
 gunhunter.com: could not connect to host
 gus.moe: could not connect to host
 gvchannel.xyz: could not connect to host
 gwrtech.com: could not connect to host
 gxgx.org: could not connect to host
 gzitech.net: could not connect to host
 gzpblog.com: could not connect to host
-h001.ru: could not connect to host
 h2cdn.cloud: could not connect to host
 h3artbl33d.nl: could not connect to host
 habeo.si: could not connect to host
 hack.cz: could not connect to host
 hackbubble.me: could not connect to host
 hacker.deals: could not connect to host
 hackmeplz.com: could not connect to host
 hakugin.me: could not connect to host
@@ -1186,24 +1169,26 @@ hfu.io: could not connect to host
 hg881.com: could not connect to host
 hialatv.com: could not connect to host
 hideout.agency: could not connect to host
 hill.selfip.net: could not connect to host
 hingle.me: could not connect to host
 hintermeier-rae.at: could not connect to host
 hiphop.ren: could not connect to host
 hirte-digital.de: could not connect to host
+hisnet.de: could not connect to host
 history.pe: could not connect to host
 hjes.com.ve: could not connect to host
 hoffens.se: could not connect to host
 hohm.in: could not connect to host
 holidayincotswolds.co.uk: could not connect to host
 holowaty.me: could not connect to host
 homa.website: could not connect to host
 home-cloud.online: could not connect to host
+homecoming.city: could not connect to host
 homesfordinner.ca: could not connect to host
 homoglyph.net: could not connect to host
 honeytracks.com: could not connect to host
 hoodoo.io: could not connect to host
 hoodoo.tech: could not connect to host
 hopglass.eu: could not connect to host
 hopglass.net: could not connect to host
 horvathd.eu: could not connect to host
@@ -1224,27 +1209,25 @@ hudingyuan.cn: could not connect to host
 huirongis.me: could not connect to host
 huiser.nl: could not connect to host
 hukaloh.com: could not connect to host
 hukkatavara.com: could not connect to host
 hunger.im: could not connect to host
 huongquynh.com: could not connect to host
 huwjones.me: could not connect to host
 huzurmetal.net: could not connect to host
-hvdbox.de: could not connect to host
 hydrante.ch: could not connect to host
 hyper-matrix.org: could not connect to host
 hypotheques24.ch: could not connect to host
 hyvive.com: could not connect to host
 hzh.pub: could not connect to host
 i-stats.net: could not connect to host
 i4m1k0su.com: could not connect to host
 i95.me: could not connect to host
 iadttaveras.com: could not connect to host
-iain.tech: could not connect to host
 iamsoareyou.se: could not connect to host
 ianmoriarty.com.au: could not connect to host
 ibox.ovh: could not connect to host
 ibron.co: could not connect to host
 ibsafrica.co.za: could not connect to host
 ibsglobal.co.za: could not connect to host
 icebound.win: could not connect to host
 iceloch.com: could not connect to host
@@ -1258,25 +1241,23 @@ idiopolis.org: could not connect to host
 idol-bikes.ru: could not connect to host
 idsafe.co.za: could not connect to host
 idtechnowizard.com: could not connect to host
 iemb.cf: could not connect to host
 ifan.ch: could not connect to host
 ifcfg.me: could not connect to host
 ifxnet.com: could not connect to host
 igamingforums.com: could not connect to host
-igd.chat: could not connect to host
 ihatethissh.it: could not connect to host
 iideaz.org: could not connect to host
 ikenmeyer.com: could not connect to host
 ikenmeyer.eu: could not connect to host
 ikzoekeengoedkopeauto.nl: could not connect to host
 ileat.com: could not connect to host
 ilya.pp.ua: could not connect to host
-ima-tourcoing.fr: could not connect to host
 imaginarymakings.me: could not connect to host
 img.ovh: could not connect to host
 imgencrypt.com: could not connect to host
 imgul.net: could not connect to host
 imlinan.cn: could not connect to host
 imlinan.info: could not connect to host
 imlinan.net: could not connect to host
 immersionwealth.com: could not connect to host
@@ -1320,18 +1301,19 @@ iodu.re: could not connect to host
 ionc.ca: could not connect to host
 ioover.net: could not connect to host
 ip.or.at: could not connect to host
 ipcfg.me: could not connect to host
 iphonechina.net: could not connect to host
 iplog.info: could not connect to host
 ipnetworking.net: could not connect to host
 irinkeby.nu: could not connect to host
+iris-insa.com: could not connect to host
 isisfighters.info: could not connect to host
-isntall.us: could not connect to host
+islief.com: could not connect to host
 isoroc-nidzica.pl: could not connect to host
 isscouncil.com: could not connect to host
 isslshop.com: could not connect to host
 isthefieldcontrolsystemdown.com: could not connect to host
 istherrienstillcoach.com: could not connect to host
 it-adminio.ru: could not connect to host
 itad.top: could not connect to host
 itnews-bg.com: could not connect to host
@@ -1354,17 +1336,16 @@ jaksel.id: could not connect to host
 jamesevans.is: could not connect to host
 jamesheald.com: could not connect to host
 janheidler.dynv6.net: could not connect to host
 janssen.fm: could not connect to host
 japan4you.org: could not connect to host
 jaredfraser.com: could not connect to host
 jasonwindholz.com: could not connect to host
 javascriptlab.fr: could not connect to host
-jawn.ca: could not connect to host
 jazzinutrecht.info: could not connect to host
 jbbd.fr: could not connect to host
 jccars-occasions.be: could not connect to host
 jccrew.org: could not connect to host
 jean-remy.ch: could not connect to host
 jecho.cn: could not connect to host
 jeffersonregan.org: could not connect to host
 jeffhuxley.com: could not connect to host
@@ -1386,17 +1367,16 @@ jonfor.net: could not connect to host
 jooto.com: could not connect to host
 jpod.cc: could not connect to host
 jsjyhzy.cc: could not connect to host
 juliaoantiguidades.com.br: could not connect to host
 juliawebber.co.za: could not connect to host
 juliohernandezgt.com: could not connect to host
 jumbopan.com: could not connect to host
 jumbopan.net: could not connect to host
-jurisprudent.by: could not connect to host
 jurko.cz: could not connect to host
 jurriaan.ninja: could not connect to host
 just-pools.co.za: could not connect to host
 justinharrison.ca: could not connect to host
 justzz.xyz: could not connect to host
 juventusmania1897.com: could not connect to host
 jwolt-lx.com: could not connect to host
 kaika-facilitymanagement.de: could not connect to host
@@ -1410,22 +1390,24 @@ kancolle.me: could not connect to host
 kanganer.com: could not connect to host
 kangzaber.com: could not connect to host
 kanzakiranko.jp: could not connect to host
 kapo.info: could not connect to host
 kapseli.net: could not connect to host
 kartacha.com: could not connect to host
 karuneshjohri.com: could not connect to host
 kat.al: could not connect to host
+kati0.com: could not connect to host
 katyusha.net: could not connect to host
 kawaiiku.com: could not connect to host
 kawaiiku.de: could not connect to host
 kaydan.io: could not connect to host
 kayipmurekkep.com: could not connect to host
 kearney.io: could not connect to host
+keithws.net: could not connect to host
 kellyandantony.com: could not connect to host
 kelm.me: could not connect to host
 kennynet.co.uk: could not connect to host
 kenyons.info: could not connect to host
 kermadec.com: could not connect to host
 keshausconsulting.com: could not connect to host
 kevindekoninck.com: could not connect to host
 kevinfoley.cc: could not connect to host
@@ -1434,16 +1416,18 @@ kevinpirnie.com: could not connect to ho
 keyserver.sexy: could not connect to host
 keystoneok.com: could not connect to host
 kgb.us: could not connect to host
 kiapps.ovh: could not connect to host
 kidbacker.com: could not connect to host
 kieranweightman.me: could not connect to host
 kievradio.com: could not connect to host
 kikuzuki.org: could not connect to host
+killerrobots.com: could not connect to host
+kinderjugendfreizeitverein.de: could not connect to host
 kinepolis-studio.ga: could not connect to host
 kineto.space: could not connect to host
 kingbird.me: could not connect to host
 kingclass.cn: could not connect to host
 kingpincages.com: could not connect to host
 kingtecservices.com: could not connect to host
 kinomoto.me: could not connect to host
 kinomoto.ovh: could not connect to host
@@ -1469,18 +1453,16 @@ koppelvlak.net: could not connect to hos
 korni22.org: could not connect to host
 kotitesti.fi: could not connect to host
 kotorimusic.ga: could not connect to host
 kozmik.co: could not connect to host
 kpvpn.com: could not connect to host
 krampus-fischamend.at: could not connect to host
 kriegskindernothilfe.de: could not connect to host
 kriptosec.com: could not connect to host
-kroon.email: could not connect to host
-kruin.net: could not connect to host
 ktube.yt: could not connect to host
 kubusadvocaten.nl: could not connect to host
 kuko-crews.org: could not connect to host
 kuwago.io: could not connect to host
 kwikmed.eu: could not connect to host
 kwipi.com: could not connect to host
 kyberna.xyz: could not connect to host
 kyle.place: could not connect to host
@@ -1497,54 +1479,50 @@ lacasa.fr: could not connect to host
 lacasabelucci.com: could not connect to host
 lacasseroy.com: could not connect to host
 ladylikeit.com: could not connect to host
 laforetenchantee.ch: could not connect to host
 lafr4nc3.xyz: could not connect to host
 lakehavasucityhomebuyerscredit.com: could not connect to host
 lakehavasuhomebuyercredit.com: could not connect to host
 lakehavasuhouserentals.com: could not connect to host
-lakehavasuhouses.com: could not connect to host
 landell.ml: could not connect to host
 langendorf-ernaehrung-training.de: could not connect to host
 lannainnovation.com: could not connect to host
 lanonfire.com: could not connect to host
 laozhu.me: could not connect to host
 larondinedisinfestazione.com: could not connect to host
 latamarissiere.eu: could not connect to host
 lateliercantaldeco.fr: could not connect to host
 lathamlabs.com: could not connect to host
 lathamlabs.net: could not connect to host
 lathamlabs.org: could not connect to host
-laubacher.io: could not connect to host
 lazerus.net: could not connect to host
 lazulu.com: could not connect to host
 lbarrios.es: could not connect to host
 lbrlh.tk: could not connect to host
 lbrli.tk: could not connect to host
 lbrls.tk: could not connect to host
 lclarkpdx.com: could not connect to host
 lcti.biz: could not connect to host
-ldc.com.br: could not connect to host
 leadbox.cz: could not connect to host
 leaderoftheresistance.com: could not connect to host
 leaderoftheresistance.net: could not connect to host
 leaks.directory: could not connect to host
 leanclub.org: could not connect to host
 leandre.cn: could not connect to host
 lebal.se: could not connect to host
 leebiblestudycentre.net: could not connect to host
 leebiblestudycentre.org: could not connect to host
 leefindlow.com: could not connect to host
 leelou.wedding: could not connect to host
 leerkotte.eu: could not connect to host
 legal.farm: could not connect to host
 legaltip.eu: could not connect to host
 leonardcamacho.me: could not connect to host
-leonhooijer.nl: could not connect to host
 lerlivros.online: could not connect to host
 lescomptoirsdepierrot.com: could not connect to host
 lesdouceursdeliyana.com: could not connect to host
 lesh.eu: could not connect to host
 lesjardinsdemathieu.net: could not connect to host
 letsgetintouch.com: could not connect to host
 lettland-firma.com: could not connect to host
 leveredge.net: could not connect to host
@@ -1584,22 +1562,24 @@ lmrcouncil.gov: could not connect to hos
 loanstreet.be: could not connect to host
 lobosdomain.ddns.net: could not connect to host
 lobosdomain.no-ip.info: could not connect to host
 locker3.com: could not connect to host
 logcat.info: could not connect to host
 logic8.ml: could not connect to host
 logimagine.com: could not connect to host
 lojavirtualfct.com.br: could not connect to host
+loli.world: could not connect to host
 lolicon.info: could not connect to host
 lookasik.eu: could not connect to host
 loopower.com: could not connect to host
 loperetti.ch: could not connect to host
 loqyu.co: could not connect to host
 losebellyfat.pro: could not connect to host
+lotuscloud.de: could not connect to host
 love4taylor.eu.org: could not connect to host
 loveandloyalty.se: could not connect to host
 lowt.us: could not connect to host
 loyaltech.ch: could not connect to host
 lstma.com: could not connect to host
 lszj.com: could not connect to host
 ltransferts.com: could not connect to host
 lubot.net: could not connect to host
@@ -1615,23 +1595,20 @@ luminancy.com: could not connect to host
 luom.net: could not connect to host
 lzqii.cn: could not connect to host
 m-generator.com: could not connect to host
 m-kleinert.de: could not connect to host
 m4570.xyz: could not connect to host
 m4g.ru: could not connect to host
 maartenterpstra.xyz: could not connect to host
 maaya.jp: could not connect to host
-macandtonic.com: could not connect to host
 madeintucson.org: could not connect to host
 mader.jp: could not connect to host
 madnetwork.org: could not connect to host
 maelstrom.ninja: could not connect to host
-mafia.network: could not connect to host
-magicball.co: could not connect to host
 magnacumlaude.co: could not connect to host
 maik-mahlow.de: could not connect to host
 mail4geek.com: could not connect to host
 mailon.ga: could not connect to host
 makeit-so.de: could not connect to host
 makeuplove.nl: could not connect to host
 makeurbiz.com: could not connect to host
 malamutedoalasca.com.br: could not connect to host
@@ -1654,22 +1631,24 @@ markllego.com: could not connect to host
 marko-fenster24.de: could not connect to host
 markrego.com: could not connect to host
 martin-mattel.com: could not connect to host
 martins.im: could not connect to host
 marxist.party: could not connect to host
 masto.io: could not connect to host
 mastodon.expert: could not connect to host
 mastodon.my: could not connect to host
+mastodon.org.uk: could not connect to host
 mat99.dk: could not connect to host
 matarrosabierzo.com: could not connect to host
 mathijskingma.nl: could not connect to host
 matlabjo.ir: could not connect to host
 matrix.ac: could not connect to host
 mattia98.org: could not connect to host
+maxibanki.ovh: could not connect to host
 maxpl0it.com: could not connect to host
 maxtruxa.com: could not connect to host
 maybeul.com: could not connect to host
 maynardnetworks.com: could not connect to host
 mazternet.ru: could not connect to host
 mazurlabs.tk: could not connect to host
 mb-is.info: could not connect to host
 mbdrogenbos-usedcars.be: could not connect to host
@@ -1681,17 +1660,16 @@ mcideas.tk: could not connect to host
 mcjackk77.com: could not connect to host
 mckinley1.com: could not connect to host
 mcsa-usa.org: could not connect to host
 mcsnovatamabayan.com: could not connect to host
 me-dc.com: could not connect to host
 meathealth.com: could not connect to host
 mecanicadom.com: could not connect to host
 mediadandy.com: could not connect to host
-mediadex.be: could not connect to host
 medicinskavranje.edu.rs: could not connect to host
 mediter-simplement.com: could not connect to host
 mediweed.tk: could not connect to host
 medy-me.com: could not connect to host
 megadrol.com: could not connect to host
 meizufans.eu: could not connect to host
 melenchatsmelenchiens.fr: could not connect to host
 melhorproduto.com.br: could not connect to host
@@ -1744,16 +1722,17 @@ mkfs.fr: could not connect to host
 mkp-deutschland.de: could not connect to host
 mkplay.io: could not connect to host
 mkw.st: could not connect to host
 mmilog.hu: could not connect to host
 mmstick.tk: could not connect to host
 mnec.io: could not connect to host
 mneeb.de: could not connect to host
 mobile.eti.br: could not connect to host
+mobilemalin.com: could not connect to host
 mobileritelushi.com: could not connect to host
 mobilux.lv: could not connect to host
 mobmp4.co: could not connect to host
 mobmp4.com: could not connect to host
 mobmp4.info: could not connect to host
 mochoko.com: could not connect to host
 modded-minecraft-server-list.com: could not connect to host
 modernibytovytextil.cz: could not connect to host
@@ -1789,18 +1768,20 @@ mozzilla.cz: could not connect to host
 mpserver12.org: could not connect to host
 mrafrohead.com: could not connect to host
 mrizzio.com: could not connect to host
 mrliu.me: could not connect to host
 mrnh.tk: could not connect to host
 mruganiepodspacja.pl: could not connect to host
 msgallery.tk: could not connect to host
 msz-fotografie.de: could not connect to host
+mtd.ovh: could not connect to host
 mtirc.co: could not connect to host
 mtn.cc: could not connect to host
+muchohentai.com: could not connect to host
 muga.space: could not connect to host
 muj-svet.cz: could not connect to host
 multivpn.cn.com: could not connect to host
 multivpn.com.ua: could not connect to host
 multivpn.fr: could not connect to host
 munduch.cz: could not connect to host
 murraycoin.org: could not connect to host
 murraycolin.org: could not connect to host
@@ -1871,25 +1852,24 @@ next-taxi.ru: could not connect to host
 nexusbyte.de: could not connect to host
 nexusconnectinternational.eu: could not connect to host
 nexuscorporation.in: could not connect to host
 nfluence.org: could not connect to host
 ngiemboon.net: could not connect to host
 nginxyii.tk: could not connect to host
 ngocuong.net: could not connect to host
 nienfun.com: could not connect to host
-nikklassen.ca: could not connect to host
 nikksno.io: could not connect to host
 nikobradshaw.com: could not connect to host
 nikolasbradshaw.com: could not connect to host
 nimidam.com: could not connect to host
-ninreiei.jp: could not connect to host
 niouininon.eu: could not connect to host
 nirada.info: could not connect to host
 nishikino-maki.com: could not connect to host
+nishisbma.com: could not connect to host
 nkadvertising.online: could not connect to host
 nkp-media.de: could not connect to host
 nodelab-it.de: could not connect to host
 nodeselect.com: could not connect to host
 noelblog.ga: could not connect to host
 noisebridge.social: could not connect to host
 nolimits.net.nz: could not connect to host
 nonemu.ninja: could not connect to host
@@ -1900,31 +1880,35 @@ note7forever.com: could not connect to h
 notesforpebble.com: could not connect to host
 notevencode.com: could not connect to host
 novascan.net: could not connect to host
 novfishing.ru: could not connect to host
 nowremindme.com: could not connect to host
 nsbfalconacademy.org: could not connect to host
 nsdev.cn: could not connect to host
 nsmail.cn: could not connect to host
+nu-pogodi.net: could not connect to host
 nudel.ninja: could not connect to host
 nyanpasu.tv: could not connect to host
 oaksbloom.com: could not connect to host
 oasis-conference.org.nz: could not connect to host
 obdolbacca.ru: could not connect to host
 oberam.de: could not connect to host
 oberhof.co: could not connect to host
 observatory.se: could not connect to host
 ocapic.com: could not connect to host
 ocsr.nl: could not connect to host
 octo.im: could not connect to host
 oducs.org: could not connect to host
 off-the-clock.us: could not connect to host
 offgames.pro: could not connect to host
 office-ruru.com: could not connect to host
+ohlmeier.com: could not connect to host
+ohlmeier.net: could not connect to host
+ohlmeier.org: could not connect to host
 ohnemusik.com: could not connect to host
 oinky.ddns.net: could not connect to host
 oklahomamoversassociation.org: could not connect to host
 oklahomanotepro.com: could not connect to host
 oldandyounglesbians.us: could not connect to host
 oldtimer-trifft-flugplatz.de: could not connect to host
 oliverfaircliff.com: could not connect to host
 oliverspringer.eu: could not connect to host
@@ -1934,17 +1918,16 @@ onionsburg.com: could not connect to hos
 onsennuie.fr: could not connect to host
 onsite4u.de: could not connect to host
 onstud.com: could not connect to host
 onwie.com: could not connect to host
 onwie.fr: could not connect to host
 ooeste.com: could not connect to host
 openclub24.ru: could not connect to host
 openconnect.com.au: could not connect to host
-openvz.org: could not connect to host
 opinion8td.com: could not connect to host
 orangekey.tk: could not connect to host
 oranges.tokyo: could not connect to host
 oricejoc.com: could not connect to host
 oscarmashauri.com: could not connect to host
 oscillation-services.fr: could not connect to host
 oscsdp.cz: could not connect to host
 oshinagaki.jp: could not connect to host
@@ -1963,16 +1946,17 @@ pacoda.de: could not connect to host
 pactf-flag-4boxdpa21ogonzkcrs9p.com: could not connect to host
 paichai.space: could not connect to host
 painosso.org: could not connect to host
 paio2-rec.com: could not connect to host
 paio2.com: could not connect to host
 palationtrade.com: could not connect to host
 panascais.io: could not connect to host
 pandapsy.com: could not connect to host
+parakranov.ru: could not connect to host
 pardnoy.com: could not connect to host
 parkingpoint.co.uk: could not connect to host
 pasteros.io: could not connect to host
 pastie.se: could not connect to host
 patrickbusch.net: could not connect to host
 patrickneuro.de: could not connect to host
 paulshir.com: could not connect to host
 paulshir.is: could not connect to host
@@ -1981,17 +1965,16 @@ pavelstriz.cz: could not connect to host
 pay.ubuntu.com: could not connect to host
 paymon.tj: could not connect to host
 paypod.org: could not connect to host
 pbraunschdash.com: could not connect to host
 pbscreens.com: could not connect to host
 pbytes.com: could not connect to host
 pcvirusclear.com: could not connect to host
 pear2pear.de: could not connect to host
-pedrosaurus.com: could not connect to host
 peerless.ae: could not connect to host
 peirong.me: could not connect to host
 pemagrid.org: could not connect to host
 pengisatelier.net: could not connect to host
 persjrp.ca: could not connect to host
 persoform.ch: could not connect to host
 pesto.video: could not connect to host
 petlife.od.ua: could not connect to host
@@ -2031,17 +2014,16 @@ please-deny.me: could not connect to hos
 pleaseuseansnisupportedbrowser.ml: could not connect to host
 plussizereviews.com: could not connect to host
 pmbremer.de: could not connect to host
 pmklaassen.com: could not connect to host
 pogs.us: could not connect to host
 pointworksacademy.com: could not connect to host
 polit-it.pro: could not connect to host
 polit.im: could not connect to host
-poneytelecom.org: could not connect to host
 pookl.com: could not connect to host
 poolinstallers.co.za: could not connect to host
 popkins.cf: could not connect to host
 popkins.ga: could not connect to host
 popkins.gq: could not connect to host
 popkins.tk: could not connect to host
 pornblog.org: could not connect to host
 porschen.fr: could not connect to host
@@ -2059,17 +2041,16 @@ povesham.tk: could not connect to host
 powerentertainment.tv: could not connect to host
 powershellmagic.com: could not connect to host
 poy-tech.com: could not connect to host
 ppoozl.com: could not connect to host
 precedecaritas.com.br: could not connect to host
 prekladysanca.cz: could not connect to host
 prestigerepairs.com.au: could not connect to host
 prettytunesapp.com: could not connect to host
-priceholic.com: could not connect to host
 prifo.se: could not connect to host
 princessbackpack.de: could not connect to host
 printsos.com: could not connect to host
 prism-communication.com: could not connect to host
 privacyforjournalists.org.au: could not connect to host
 privacymanatee.com: could not connect to host
 privcloud.org: could not connect to host
 privilegevisa.fr: could not connect to host
@@ -2111,16 +2092,17 @@ pugilares.com.pl: could not connect to h
 puhe.se: could not connect to host
 puikheid.nl: could not connect to host
 punkdns.top: could not connect to host
 purrfectcams.com: could not connect to host
 purrfectmembersclub.com: could not connect to host
 pwdgen.net: could not connect to host
 pwntr.com: could not connect to host
 pyjiaoyi.cf: could not connect to host
+pysays.net: could not connect to host
 pythia.nz: could not connect to host
 pyzlnar.com: could not connect to host
 qforum.org: could not connect to host
 qikan.net: could not connect to host
 qnatek.org: could not connect to host
 qoqo.us: could not connect to host
 qqj.net: could not connect to host
 qqvips.com: could not connect to host
@@ -2130,18 +2112,18 @@ quikpay.com.au: could not connect to hos
 r-cut.fr: could not connect to host
 r0t.co: could not connect to host
 racasdecachorro.org: could not connect to host
 rackblue.com: could not connect to host
 radaravia.ru: could not connect to host
 radiocomsaocarlos.com.br: could not connect to host
 radiopolarniki.spb.ru: could not connect to host
 radtke.bayern: could not connect to host
-rahamasin.eu: could not connect to host
 rainbin.com: could not connect to host
+ramov.com: could not connect to host
 ranos.org: could not connect to host
 rapidemobile.com: could not connect to host
 rapidflow.io: could not connect to host
 raven.dog: could not connect to host
 ravengergaming.net: could not connect to host
 ravse.dk: could not connect to host
 raycarruthersphotography.co.uk: could not connect to host
 rb-china.net: could not connect to host
@@ -2151,33 +2133,33 @@ rcx.io: could not connect to host
 rdfz.tech: could not connect to host
 re-wilding.com: could not connect to host
 reaiaer.com: could not connect to host
 real-bits.com: could not connect to host
 real-compare.com: could not connect to host
 realcli.com: could not connect to host
 realnewhomes.com: could not connect to host
 realwoo.com: could not connect to host
-rechtenliteratuurleiden.nl: could not connect to host
 recon-networks.com: could not connect to host
 reeson.at: could not connect to host
 reeson.de: could not connect to host
 reeson.info: could not connect to host
 reeson.org: could not connect to host
 reevu.net: could not connect to host
 reflecton.io: could not connect to host
 refreshingserum.com: could not connect to host
 regalpaintingfdl.com: could not connect to host
 regendevices.eu: could not connect to host
 regio-salland.nl: could not connect to host
 regsec.com: could not connect to host
 reignsphere.net: could not connect to host
 reismil.ch: could not connect to host
 relatic.net: could not connect to host
 relsak.cz: could not connect to host
+rentbrowser.com: could not connect to host
 report-incident.de: could not connect to host
 reposaarenkuva.fi: could not connect to host
 reputationweaver.com: could not connect to host
 reqognize.com: could not connect to host
 research.md: could not connect to host
 resoundpro.ca: could not connect to host
 restaurantesimonetti.com.br: could not connect to host
 restioson.me: could not connect to host
@@ -2192,28 +2174,25 @@ rga.sh: could not connect to host
 ribopierre.fr: could not connect to host
 riceglue.com: could not connect to host
 richardb.me: could not connect to host
 richardcrosby.co.uk: could not connect to host
 richeza.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
 rickmartensen.nl: could not connect to host
 ridingoklahoma.com: could not connect to host
 righteousendeavour.com: could not connect to host
-ritzlux.com.tw: could not connect to host
 riversideauto.net: could not connect to host
 riverstyxgame.com: could not connect to host
 rob.uk.com: could not connect to host
-robbertt.com: could not connect to host
 robertabittle.com: could not connect to host
 robi-net.it: could not connect to host
 robinvdmarkt.nl: could not connect to host
 robomonkey.org: could not connect to host
 robust.ga: could not connect to host
 rodehutskors.net: could not connect to host
-rofrank.space: could not connect to host
 rolandszabo.com: could not connect to host
 romanticschemermovie.com: could not connect to host
 romanticvillas.com.au: could not connect to host
 rondreis-planner.nl: could not connect to host
 ronghexx.com: could not connect to host
 rool.me: could not connect to host
 roolevoi.ru: could not connect to host
 room2d.com: could not connect to host
@@ -2222,18 +2201,18 @@ rospa100.com: could not connect to host
 rotterdamjazz.info: could not connect to host
 royzez.com: could not connect to host
 rozalisbengal.ro: could not connect to host
 rozalynne-dawn.ga: could not connect to host
 rpasafrica.com: could not connect to host
 rro.rs: could not connect to host
 rs-devdemo.host: could not connect to host
 rsldb.com: could not connect to host
-rsm-intern.de: could not connect to host
 rtc.fun: could not connect to host
+ruanmi.de: could not connect to host
 rubbix.net: could not connect to host
 rubendv.be: could not connect to host
 ruflay.ru: could not connect to host
 ruhr3.de: could not connect to host
 rukhaiyar.com: could not connect to host
 run-forrest.run: could not connect to host
 runcarina.com: could not connect to host
 rundumcolumn.xyz: could not connect to host
@@ -2242,16 +2221,17 @@ ruurdboomsma.nl: could not connect to ho
 rzegroup.com: could not connect to host
 s0923.com: could not connect to host
 s16e.no: could not connect to host
 s3n.se: could not connect to host
 s44.eu: could not connect to host
 sadiejanehair.com: could not connect to host
 safedevice.net: could not connect to host
 saferedirectlink.com: could not connect to host
+safeui.com: could not connect to host
 sagemontchurch.org: could not connect to host
 saintw.com: could not connect to host
 salaervergleich.com: could not connect to host
 sallysubs.com: could not connect to host
 salverainha.org: could not connect to host
 salzamt.tk: could not connect to host
 samaritan.tech: could not connect to host
 sammyjohnson.com: could not connect to host
@@ -2265,33 +2245,33 @@ sarindia.com: could not connect to host
 sarindia.de: could not connect to host
 sarkisozleri.us: could not connect to host
 sarndipity.com: could not connect to host
 sativatunja.com: could not connect to host
 savecashindia.com: could not connect to host
 savethedogfishfoundation.org: could not connect to host
 savingbytes.com: could not connect to host
 saxol-group.com: could not connect to host
-sb.im: could not connect to host
 sbm.cloud: could not connect to host
 scalaire.fr: could not connect to host
 schaafenstrasse.koeln: could not connect to host
 schmidttulskie.de: could not connect to host
 schnapke.name: could not connect to host
 schul-bar.de: could not connect to host
 scib.tk: could not connect to host
 sciencemonster.co.uk: could not connect to host
 scintillating.stream: could not connect to host
 scitopia.me: could not connect to host
 scm-2017.org: could not connect to host
 scottainslie.me.uk: could not connect to host
 scriptgates.ru: could not connect to host
 scripthost.org: could not connect to host
 scriptjunkie.us: could not connect to host
 scruffymen.com: could not connect to host
+scrumbleship.com: could not connect to host
 sctm.at: could not connect to host
 seanationals.org: could not connect to host
 seankilgarriff.com: could not connect to host
 searx.pw: could not connect to host
 sebi.cf: could not connect to host
 secitem.de: could not connect to host
 sectest.ml: could not connect to host
 secure-automotive-cloud.com: could not connect to host
@@ -2317,16 +2297,17 @@ seomen.biz: could not connect to host
 seoscribe.net: could not connect to host
 servecrypt.com: could not connect to host
 servecrypt.ru: could not connect to host
 server.pk: could not connect to host
 serverlauget.no: could not connect to host
 servfefe.com: could not connect to host
 seryovpn.com: could not connect to host
 sesha.co.za: could not connect to host
+sessionslogning.dk: could not connect to host
 sexshopfacil.com.br: could not connect to host
 sgtsnookums.net: could not connect to host
 sh4y.com: could not connect to host
 shadiku.com: could not connect to host
 shadowplus.net: could not connect to host
 shadowrocket.net: could not connect to host
 shadowsocks.software: could not connect to host
 shaitan.eu: could not connect to host
@@ -2337,17 +2318,17 @@ sharpe-practice.co.uk: could not connect
 sharvey.ca: could not connect to host
 shavingks.com: could not connect to host
 shentengtu.idv.tw: could not connect to host
 sheying.tm: could not connect to host
 shh.sh: could not connect to host
 shibainu.com.br: could not connect to host
 shinko-osaka.jp: could not connect to host
 shirakaba-cc.com: could not connect to host
-shirtsdelivered.com: could not connect to host
+shiroki-k.net: could not connect to host
 shockercityservices.com: could not connect to host
 shootpooloklahoma.com: could not connect to host
 shred.ch: could not connect to host
 shredoptics.ch: could not connect to host
 shtorku.com: could not connect to host
 shurita.org: could not connect to host
 shuzicai.cn: could not connect to host
 shymeck.pw: could not connect to host
@@ -2384,17 +2365,16 @@ slaps.be: could not connect to host
 slash64.co.uk: could not connect to host
 slash64.uk: could not connect to host
 slatemc.fun: could not connect to host
 sliceone.com: could not connect to host
 slytech.ch: could not connect to host
 smallchat.nl: could not connect to host
 smallplanet.ch: could not connect to host
 smartbiz.vn: could not connect to host
-smdavis.us: could not connect to host
 sml.lc: could not connect to host
 smuhelper.cn: could not connect to host
 sneed.company: could not connect to host
 snowdy.eu: could not connect to host
 soboleva-pr.com.ua: could not connect to host
 soci.ml: could not connect to host
 socialworkout.com: could not connect to host
 socialworkout.net: could not connect to host
@@ -2448,17 +2428,16 @@ statgram.me: could not connect to host
 static-assets.io: could not connect to host
 static.hosting: could not connect to host
 staticisnoise.com: could not connect to host
 statusbot.io: could not connect to host
 staxflax.tk: could not connect to host
 steelrhino.co: could not connect to host
 steffi-in-australien.com: could not connect to host
 stevengoodpaster.com: could not connect to host
-stevenz.science: could not connect to host
 stickswag.cf: could not connect to host
 stiger.me: could not connect to host
 stilettomoda.com.br: could not connect to host
 stnl.de: could not connect to host
 stoianlawfirm.com: could not connect to host
 stonefusion.org.uk: could not connect to host
 stonemanbrasil.com.br: could not connect to host
 stopakwardhandshakes.org: could not connect to host
@@ -2575,16 +2554,17 @@ thelostyankee.com: could not connect to 
 thenrdhrd.nl: could not connect to host
 theoverfly.co: could not connect to host
 theposhfudgecompany.co.uk: could not connect to host
 theprincegame.com: could not connect to host
 theprivacysolution.com: could not connect to host
 thequillmagazine.org: could not connect to host
 thermique.ch: could not connect to host
 thesehighsandlows.com: could not connect to host
+thesled.net: could not connect to host
 thevacweb.com: could not connect to host
 thevoid.one: could not connect to host
 thezero.org: could not connect to host
 thinkcash.nl: could not connect to host
 thismumdoesntknowbest.com: could not connect to host
 threatcentral.io: could not connect to host
 thunderfield-boat.co.uk: could not connect to host
 tianxicaipiao.com: could not connect to host
@@ -2678,16 +2658,17 @@ tysye.ca: could not connect to host
 tzwe.com: could not connect to host
 ubalert.com: could not connect to host
 ubicv.com: could not connect to host
 ueba1085.jp: could not connect to host
 uesociedadlimitada.com: could not connect to host
 ueu.me: could not connect to host
 ugcdn.com: could not connect to host
 ulalau.com: could not connect to host
+umsapi.com: could not connect to host
 unefuite.ch: could not connect to host
 unhu.fr: could not connect to host
 uni2share.com: could not connect to host
 unicorn.li: could not connect to host
 upani.net: could not connect to host
 uploadbro.com: could not connect to host
 upmchealthsecurity.us: could not connect to host
 upr.com.ua: could not connect to host
@@ -2711,16 +2692,17 @@ vanderstraeten.dynv6.net: could not conn
 vanessabalibridal.com: could not connect to host
 vapemania.eu: could not connect to host
 varela-electricite.fr: could not connect to host
 variablyconstant.com: could not connect to host
 vayaport.com: could not connect to host
 vbazile.com: could not connect to host
 vconcept.ch: could not connect to host
 vconcept.me: could not connect to host
+vdrpro.com: could not connect to host
 vectro.me: could not connect to host
 vekenz.com: could not connect to host
 velasense.com: could not connect to host
 velen.io: could not connect to host
 venicecomputerrepair.com: could not connect to host
 venicefloridawebsitedesign.com: could not connect to host
 venturavwparts.com: could not connect to host
 verdeandco.co.uk: could not connect to host
@@ -2732,23 +2714,22 @@ videorullen.se: could not connect to hos
 vikasbabyworld.de: could not connect to host
 viladochurrasco.com.br: could not connect to host
 vilaydin.com: could not connect to host
 villainsclothing.com.au: could not connect to host
 villasenor.online: could not connect to host
 vimeosucks.nyc: could not connect to host
 vinesauce.info: could not connect to host
 vinetalk.net: could not connect to host
-vinogradovka.com: could not connect to host
 vipnettikasinoklubi.com: could not connect to host
+virvum.ch: could not connect to host
 visiongamestudios.com: could not connect to host
 visionthroughknowledge.com: could not connect to host
 visiontree-beta.eu: could not connect to host
 visiontree.eu: could not connect to host
-visistruct.com: could not connect to host
 vitalamin.at: could not connect to host
 vitalamin.ch: could not connect to host
 vitapingu.de: could not connect to host
 vkino.com: could not connect to host
 vldkn.net: could not connect to host
 vleij.family: could not connect to host
 vlogge.com: could not connect to host
 vlvvl.com: could not connect to host
@@ -2870,17 +2851,16 @@ wuchipc.com: could not connect to host
 wumbo.kiwi: could not connect to host
 wvw698.com: could not connect to host
 wwjd.dynu.net: could not connect to host
 www-68277.com: could not connect to host
 www-8887999.com: could not connect to host
 www.history.pe: could not connect to host
 www.simbolo.co.uk: could not connect to host
 wyzwaniemilosci.com: could not connect to host
-xatr0z.org: could not connect to host
 xbc.nz: could not connect to host
 xeonlab.com: could not connect to host
 xeonlab.de: could not connect to host
 xia100.xyz: could not connect to host
 xiamenshipbuilding.com: could not connect to host
 xianguocy.com: could not connect to host
 xiazhanjian.com: could not connect to host
 xing.ml: could not connect to host
@@ -2941,35 +2921,35 @@ yobbelwobbel.de: could not connect to ho
 yobst.tk: could not connect to host
 yoga.is-an-engineer.com: could not connect to host
 yolo-csgo.com: could not connect to host
 yoticonnections.com: could not connect to host
 yotilabs.com: could not connect to host
 yourself.today: could not connect to host
 yourznc.com: could not connect to host
 yousite.by: could not connect to host
-yoyoost.duckdns.org: could not connect to host
 ythyth.com: could not connect to host
 yude.ml: could not connect to host
 yugege.cf: could not connect to host
 yum.beer: could not connect to host
 yum0.cn: could not connect to host
+yuna.love: could not connect to host
 yurinet.org: could not connect to host
 yux.fr: could not connect to host
 z-coder.com: could not connect to host
 z0rro.net: could not connect to host
 zachbolinger.com: could not connect to host
 zaem.tv: could not connect to host
+zalan.do: could not connect to host
 zalohovaniburian.cz: could not connect to host
 zaoext.com: could not connect to host
 zbchen.com: could not connect to host
 zbp.at: could not connect to host
 zby.io: could not connect to host
 zehdenick-bleibt-bunt.de: could not connect to host
-zeitzer-turngala.de: could not connect to host
 zeloz.xyz: could not connect to host
 zenghx.tk: could not connect to host
 zero-sum.xyz: could not connect to host
 zero-x-baadf00d.com: could not connect to host
 zerocool.io: could not connect to host
 zerosource.net: could not connect to host
 zhangfangzhou.com: could not connect to host
 zhangsir.net: could not connect to host
@@ -3137,17 +3117,17 @@ 555fl.com: max-age too low: 129600
 56ct.com: could not connect to host
 57aromas.com: did not receive HSTS header
 5piecesofadvice.com: could not connect to host
 605508.cc: could not connect to host
 605508.com: could not connect to host
 60ych.net: did not receive HSTS header
 6120.eu: did not receive HSTS header
 64616e.xyz: could not connect to host
-660011.com: could not connect to host
+660011.com: max-age too low: 0
 69square.com: could not connect to host
 721av.com: max-age too low: 2592000
 7777av.co: could not connect to host
 7f-wgg.cf: could not connect to host
 7kovrikov.ru: did not receive HSTS header
 7thheavenrestaurant.com: could not connect to host
 8.net.co: could not connect to host
 808.lv: did not receive HSTS header
@@ -3165,17 +3145,17 @@ 90smthng.com: could not connect to host
 9118b.com: could not connect to host
 911911.pw: could not connect to host
 915ers.com: did not receive HSTS header
 922.be: could not connect to host
 92bmh.com: did not receive HSTS header
 94cs.cn: did not receive HSTS header
 960news.ca: could not connect to host
 9651678.ru: could not connect to host
-99511.fi: could not connect to host
+99511.fi: did not receive HSTS header
 9iwan.net: did not receive HSTS header
 9jadirect.com: could not connect to host
 9point6.com: could not connect to host
 9tolife.be: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
 a-plus.space: could not connect to host
 a-rickroll-n.pw: could not connect to host
 a-theme.com: could not connect to host
 a1-autopartsglasgow.com: did not receive HSTS header
@@ -3211,17 +3191,16 @@ absinthium.ch: could not connect to host
 abt.de: did not receive HSTS header
 abtom.de: did not receive HSTS header
 abury.fr: did not receive HSTS header
 abury.me: did not receive HSTS header
 ac.milan.it: did not receive HSTS header
 acabadosboston.com: could not connect to host
 academialowcost.com.br: did not receive HSTS header
 academicenterprise.org: could not connect to host
-academy4.net: did not receive HSTS header
 acadianapatios.com: did not receive HSTS header
 acai51.net: could not connect to host
 acbc.ie: max-age too low: 0
 accelerole.com: did not receive HSTS header
 accelight.co.jp: did not receive HSTS header
 accelight.jp: did not receive HSTS header
 access-sofia.org: did not receive HSTS header
 accommodation-berry.com.au: max-age too low: 300
@@ -3371,16 +3350,17 @@ alertaenlinea.gov: did not receive HSTS 
 alessandroz.pro: could not connect to host
 alethearose.com: did not receive HSTS header
 alexandre.sh: did not receive HSTS header
 alexbaker.org: did not receive HSTS header
 alexdodge.ca: did not receive HSTS header
 alexfisherhealth.com.au: did not receive HSTS header
 alexkidd.de: did not receive HSTS header
 alexperry.io: did not receive HSTS header
+alexyang.me: did not receive HSTS header
 alfa24.pro: could not connect to host
 alfredxing.com: did not receive HSTS header
 alistairpialek.com: max-age too low: 86400
 alittlebitcheeky.com: did not receive HSTS header
 aljmz.com: could not connect to host
 alkami.com: max-age too low: 0
 alkamitech.com: max-age too low: 0
 all-subtitles.com: could not connect to host
@@ -3430,17 +3410,16 @@ amavis.org: did not receive HSTS header
 amazing-gaming.fr: could not connect to host
 amazingbouncycastles.co.uk: did not receive HSTS header
 amazingfloridagulfhomes.com: did not receive HSTS header
 amcvega.com: did not receive HSTS header
 amerhd.com: could not connect to host
 american-truck-simulator.de: could not connect to host
 american-truck-simulator.net: could not connect to host
 americanbio.com: did not receive HSTS header
-americanoutlawjeepparts.com: did not receive HSTS header
 americansforcommunitydevelopment.org: did not receive HSTS header
 americansportsinstitute.org: did not receive HSTS header
 americanworkwear.nl: did not receive HSTS header
 amicsdelbus.com: did not receive HSTS header
 amigogeek.net: could not connect to host
 amilx.com: could not connect to host
 amilx.org: could not connect to host
 amimoto-ami.com: max-age too low: 3153600
@@ -3456,17 +3435,17 @@ amri.nl: did not receive HSTS header
 anabol.nl: could not connect to host
 anacruz.es: did not receive HSTS header
 anadoluefessporkulubu.org: could not connect to host
 anagra.ms: could not connect to host
 analytic-s.ml: could not connect to host
 analyticsinmotion.net: could not connect to host
 anchorinmarinainc.com: did not receive HSTS header
 ancientkarma.com: could not connect to host
-andere-gedanken.net: max-age too low: 10
+andere-gedanken.net: could not connect to host
 anderslind.dk: could not connect to host
 andre-ballensiefen.de: did not receive HSTS header
 andreagobetti.com: did not receive HSTS header
 andreasanti.net: did not receive HSTS header
 andreasbreitenlohner.de: max-age too low: 600000
 andreasfritz-fotografie.de: could not connect to host
 andreastoneman.com: could not connect to host
 andreigec.net: did not receive HSTS header
@@ -3485,17 +3464,17 @@ androoz.se: could not connect to host
 andyclark.io: could not connect to host
 andycraftz.eu: did not receive HSTS header
 andymartin.cc: could not connect to host
 andyuk.org: could not connect to host
 anfsanchezo.co: could not connect to host
 anfsanchezo.me: could not connect to host
 angeloroberto.ch: did not receive HSTS header
 anghami.com: did not receive HSTS header
-anglesya.win: could not connect to host
+anglesya.win: did not receive HSTS header
 anglictinatabor.cz: could not connect to host
 angryroute.com: could not connect to host
 animal-nature-human.com: did not receive HSTS header
 animalnet.de: max-age too low: 7776000
 anime1video.tk: could not connect to host
 animeday.ml: could not connect to host
 animesfusion.com.br: could not connect to host
 animurecs.com: could not connect to host
@@ -3586,17 +3565,17 @@ aquilalab.com: could not connect to host
 arabdigitalexpression.org: did not receive HSTS header
 aradulconteaza.ro: could not connect to host
 aran.me.uk: could not connect to host
 arboineuropa.nl: did not receive HSTS header
 arbu.eu: max-age too low: 2419200
 arcbit.io: did not receive HSTS header
 archii.ca: did not receive HSTS header
 architecte-interieur.be: did not receive HSTS header
-ardao.me: did not receive HSTS header
+ardao.me: could not connect to host
 ardorlabs.se: could not connect to host
 arewedubstepyet.com: did not receive HSTS header
 areyouever.me: could not connect to host
 argama-nature.com: did not receive HSTS header
 argennon.xyz: could not connect to host
 arguggi.co.uk: could not connect to host
 ariacreations.net: did not receive HSTS header
 arislight.com: did not receive HSTS header
@@ -3628,17 +3607,17 @@ artartefatos.com.br: could not connect t
 artegusto.ru: did not receive HSTS header
 artemicroway.com.br: could not connect to host
 artesupra.com: did not receive HSTS header
 arthan.me: could not connect to host
 artifex21.com: could not connect to host
 artifex21.fr: could not connect to host
 artiming.com: could not connect to host
 artisavotins.com: could not connect to host
-artisphere.ch: did not receive HSTS header
+artisphere.ch: could not connect to host
 artistnetwork.nl: did not receive HSTS header
 artsinthevalley.net.au: did not receive HSTS header
 artyland.ru: did not receive HSTS header
 arvamus.eu: could not connect to host
 arzaroth.com: did not receive HSTS header
 as.se: could not connect to host
 as9178.net: could not connect to host
 asahikoji.net: could not connect to host
@@ -3800,16 +3779,17 @@ baito-j.jp: did not receive HSTS header
 bakaweb.fr: could not connect to host
 bakhansen.com: did not receive HSTS header
 bakingstone.com: could not connect to host
 bakkerdesignandbuild.com: did not receive HSTS header
 balatoni-nyar.hu: did not receive HSTS header
 balcan-underground.net: could not connect to host
 baldwinkoo.com: could not connect to host
 baleares.party: could not connect to host
+balidesignshop.com.br: did not receive HSTS header
 balihai.com: did not receive HSTS header
 balloonphp.com: could not connect to host
 ballparkbuns.com: max-age too low: 86400
 balnearionaturaspa.com: did not receive HSTS header
 bambooforest.nl: could not connect to host
 bambumania.com.br: could not connect to host
 bananabandy.com: could not connect to host
 banbanchs.com: could not connect to host
@@ -4121,16 +4101,17 @@ bogosity.se: could not connect to host
 bohaishibei.com: did not receive HSTS header
 bohan.life: could not connect to host
 boiadeirodeberna.com: could not connect to host
 bokeyy.com: could not connect to host
 boltdata.io: could not connect to host
 bolwerk.com.br: did not receive HSTS header
 bonapp.restaurant: could not connect to host
 boneko.de: could not connect to host
+bonibuty.com: max-age too low: 2592000
 bonigo.de: did not receive HSTS header
 bonitabrazilian.co.nz: did not receive HSTS header
 bonnin.fr: did not receive HSTS header
 bonop.com: did not receive HSTS header
 bonta.one: did not receive HSTS header
 bonus-flexi.com: did not receive HSTS header
 book-of-ra.de: did not receive HSTS header
 bookcelerator.com: did not receive HSTS header
@@ -4251,17 +4232,17 @@ built.by: did not receive HSTS header
 bukatv.cz: could not connect to host
 bulgarien.guide: could not connect to host
 bulkbuy.tech: could not connect to host
 bullbits.com: max-age too low: 0
 bulletpoint.cz: could not connect to host
 bullterrier.me: could not connect to host
 bulmafox.com: could not connect to host
 bumshow.ru: could not connect to host
-bunaken.asia: did not receive HSTS header
+bunaken.asia: could not connect to host
 bunbomenu.de: could not connect to host
 bunsenlabs.org: max-age too low: 2592000
 buonventosbt.eu: did not receive HSTS header
 bureaubolster.nl: did not receive HSTS header
 bureaugravity.com: did not receive HSTS header
 burian-server.cz: could not connect to host
 burlesquemakeup.com: did not receive HSTS header
 burningcrash.de: max-age too low: 600000
@@ -4287,17 +4268,17 @@ buybaby.eu: could not connect to host
 buyfox.de: did not receive HSTS header
 buynowdepot.com: did not receive HSTS header
 buzzconcert.com: did not receive HSTS header
 buzztelco.com.au: did not receive HSTS header
 bw81.xyz: could not connect to host
 bwear4all.de: could not connect to host
 bx-web.com: did not receive HSTS header
 by4cqb.cn: could not connect to host
-by77.com: did not receive HSTS header
+by77.com: could not connect to host
 by777.com: did not receive HSTS header
 bynumlaw.net: did not receive HSTS header
 bypassed.bid: could not connect to host
 bypassed.cc: could not connect to host
 bypassed.club: could not connect to host
 bypassed.date: could not connect to host
 bypassed.download: could not connect to host
 bypassed.faith: could not connect to host
@@ -4405,16 +4386,17 @@ casc.cz: did not receive HSTS header
 casedi.org: max-age too low: 0
 casefall.com: could not connect to host
 cash-pos.com: could not connect to host
 cashless.fr: did not receive HSTS header
 cashmyphone.ch: could not connect to host
 casinolegal.pt: did not receive HSTS header
 casinostest.com: could not connect to host
 casioshop.eu: did not receive HSTS header
+casjay.cloud: did not receive HSTS header
 casjay.us: could not connect to host
 casovi.cf: could not connect to host
 castagnonavocats.com: did not receive HSTS header
 cata.ga: could not connect to host
 catalin.pw: could not connect to host
 catarsisvr.com: could not connect to host
 catchers.cc: did not receive HSTS header
 catinmay.com: did not receive HSTS header
@@ -4439,17 +4421,16 @@ cdreporting.co.uk: did not receive HSTS 
 cdt.org: did not receive HSTS header
 ce-agentur.de: did not receive HSTS header
 cecilwalker.com.au: did not receive HSTS header
 celeirorural.com.br: did not receive HSTS header
 celina-reads.de: could not connect to host
 cellsites.nz: could not connect to host
 centennialrewards.com: did not receive HSTS header
 centerforpolicy.org: did not receive HSTS header
-centralcountiesservices.org: did not receive HSTS header
 centralpoint.be: did not receive HSTS header
 centralpoint.nl: did not receive HSTS header
 centralvacsunlimited.net: did not receive HSTS header
 centralync.com: could not connect to host
 centrepoint-community.com: could not connect to host
 centrolavoro.org: did not receive HSTS header
 centsforchange.net: could not connect to host
 ceresia.ch: could not connect to host
@@ -4486,17 +4467,17 @@ chaoswebs.net: did not receive HSTS head
 charityclear.com: did not receive HSTS header
 charitystreet.co.uk: could not connect to host
 charlestonsecuritysystems.net: did not receive HSTS header
 charliemcneive.com: could not connect to host
 charlimarie.com: did not receive HSTS header
 charlipopkids.com.au: could not connect to host
 charnleyhouse.co.uk: did not receive HSTS header
 charp.eu: could not connect to host
-chartstoffarm.de: max-age too low: 10
+chartstoffarm.de: could not connect to host
 chaska.co.za: did not receive HSTS header
 chat-porc.eu: did not receive HSTS header
 chatbot.me: did not receive HSTS header
 chateauconstellation.ch: did not receive HSTS header
 chatup.cf: could not connect to host
 chaulootz.com: did not receive HSTS header
 chcemvediet.sk: max-age too low: 1555200
 cheapdns.org: could not connect to host
@@ -4644,17 +4625,17 @@ clywedogmaths.co.uk: could not connect t
 cmc-versand.de: did not receive HSTS header
 cmci.dk: did not receive HSTS header
 cmsbattle.com: could not connect to host
 cmscafe.ru: did not receive HSTS header
 cmso-cal.com: could not connect to host
 cncn.us: could not connect to host
 cnrd.me: did not receive HSTS header
 co-driversphoto.se: could not connect to host
-coach-sportif.paris: did not receive HSTS header
+coach-sportif.paris: could not connect to host
 coachingconsultancy.com: did not receive HSTS header
 cobrax.net: could not connect to host
 coccolebenessere.it: did not receive HSTS header
 cocker.cc: max-age too low: 7776000
 cocktailfuture.fr: could not connect to host
 cocolovesdaddy.com: could not connect to host
 codabix.com: did not receive HSTS header
 codabix.de: could not connect to host
@@ -4710,17 +4691,16 @@ comico.info: did not receive HSTS header
 comicrelief.com: did not receive HSTS header
 comicspines.com: could not connect to host
 comitesaustria.at: could not connect to host
 comiteshopping.com: could not connect to host
 commencepayments.com: did not receive HSTS header
 commerciallocker.com: did not receive HSTS header
 commercialplanet.eu: could not connect to host
 commune-preuilly.fr: did not receive HSTS header
-community-cupboard.org: did not receive HSTS header
 comocurarlashemorroides.org: could not connect to host
 comocurarlashemorroidesya.com: did not receive HSTS header
 comotalk.com: could not connect to host
 compalytics.com: could not connect to host
 comparamejor.com: did not receive HSTS header
 compareandrecycle.co.uk: did not receive HSTS header
 comparejewelleryprices.co.uk: could not connect to host
 comparetravelinsurance.com.au: did not receive HSTS header
@@ -4764,17 +4744,16 @@ controleer-maar-een-ander.nl: did not re
 convergemagazine.com: did not receive HSTS header
 convert.zone: did not receive HSTS header
 cooink.net: could not connect to host
 coolaj86.com: did not receive HSTS header
 coolbutbroken.com: did not receive HSTS header
 coolchevy.org.ua: did not receive HSTS header
 coole-meister.de: could not connect to host
 coolkidsbouncycastles.co.uk: did not receive HSTS header
-coolvox.com: did not receive HSTS header
 coonelnel.net: did not receive HSTS header
 cooxa.com: did not receive HSTS header
 copshop.com.br: could not connect to host
 cor-ser.es: could not connect to host
 coralproject.net: did not receive HSTS header
 coralrosado.com.br: did not receive HSTS header
 coramcdaniel.com: did not receive HSTS header
 corderoscleaning.com: did not receive HSTS header
@@ -4793,16 +4772,17 @@ corozanu.ro: did not receive HSTS header
 corpoatletico.com.br: could not connect to host
 corporateencryption.com: could not connect to host
 corporatesubscriptions.com.au: did not receive HSTS header
 correctpaardbatterijnietje.nl: did not receive HSTS header
 corruption-mc.net: could not connect to host
 corruption-rsps.net: could not connect to host
 corruption-server.net: could not connect to host
 cosmoluziluminacion.com: did not receive HSTS header
+costa-rica-reisen.de: did not receive HSTS header
 costow.club: could not connect to host
 coughlan.de: did not receive HSTS header
 count.sh: could not connect to host
 couponcodeq.com: could not connect to host
 couponcodesme.com: did not receive HSTS header
 couragewhispers.ca: could not connect to host
 coursdeprogrammation.com: could not connect to host
 course.pp.ua: did not receive HSTS header
@@ -4917,19 +4897,19 @@ customd.com: did not receive HSTS header
 cutelariafiveladeouro.com.br: did not receive HSTS header
 cutorrent.com: could not connect to host
 cuvva.insure: did not receive HSTS header
 cvjm-memmingen.de: did not receive HSTS header
 cvtparking.co.uk: did not receive HSTS header
 cwage.com: could not connect to host
 cwrcoding.com: did not receive HSTS header
 cyanogenmod.xxx: could not connect to host
-cyber-perikarp.eu: did not receive HSTS header
+cyber-perikarp.eu: could not connect to host
 cybercecurity.com: did not receive HSTS header
-cyberdos.de: could not connect to host
+cyberdos.de: did not receive HSTS header
 cyberlab.kiev.ua: did not receive HSTS header
 cyberlab.team: did not receive HSTS header
 cyberprey.com: did not receive HSTS header
 cyberpunk.ca: could not connect to host
 cybersafesolutions.com: did not receive HSTS header
 cybershambles.com: could not connect to host
 cyclingjunkies.com: could not connect to host
 cydia-search.io: could not connect to host
@@ -4990,17 +4970,16 @@ darkhole.cn: did not receive HSTS header
 darkkeepers.dk: max-age too low: 172800
 darknebula.space: could not connect to host
 darknode.in: did not receive HSTS header
 darkpony.ru: could not connect to host
 darksideof.it: could not connect to host
 darkspacelab.com: did not receive HSTS header
 darkstance.org: could not connect to host
 darktree.in: could not connect to host
-darlastudio66.com: did not receive HSTS header
 das-tyrol.at: did not receive HSTS header
 dash-board.jp: did not receive HSTS header
 dash.rocks: did not receive HSTS header
 dashburst.com: did not receive HSTS header
 dashnimorad.com: did not receive HSTS header
 data-abundance.com: could not connect to host
 data.haus: could not connect to host
 data.qld.gov.au: did not receive HSTS header
@@ -5286,17 +5265,16 @@ dorkfarm.com: did not receive HSTS heade
 dormebebe.com.br: could not connect to host
 dosenbierrepublik.com: did not receive HSTS header
 dot42.no: could not connect to host
 dotadata.me: could not connect to host
 dotbrick.co.th: did not receive HSTS header
 dotspaperie.com: could not connect to host
 doublethink.online: could not connect to host
 doubleyummy.uk: did not receive HSTS header
-douglasstafford.com: did not receive HSTS header
 dovecotadmin.org: could not connect to host
 doveholesband.co.uk: did not receive HSTS header
 dovetailnow.com: could not connect to host
 dowc.org: did not receive HSTS header
 download.jitsi.org: did not receive HSTS header
 downsouthweddings.com.au: could not connect to host
 doxcelerate.com: max-age too low: 69
 dps.srl: did not receive HSTS header
@@ -5364,20 +5342,19 @@ dudesunderwear.com.br: could not connect
 duelysthub.com: could not connect to host
 dukec.me: did not receive HSTS header
 dukefox.com: did not receive HSTS header
 duks.com.br: did not receive HSTS header
 dullsir.com: could not connect to host
 dunashoes.com: could not connect to host
 dune.io: could not connect to host
 dunea.nl: did not receive HSTS header
-duole30.com: did not receive HSTS header
+duole30.com: could not connect to host
 duongpho.com: did not receive HSTS header
 duskopy.top: could not connect to host
-dutchessuganda.com: did not receive HSTS header
 dutchrank.com: did not receive HSTS header
 dutyfreeonboard.com: did not receive HSTS header
 duuu.ch: could not connect to host
 duyao.de: max-age too low: 86400
 dv189.com: did not receive HSTS header
 dycem-ns.com: did not receive HSTS header
 dycontrol.de: could not connect to host
 dylanscott.com.au: did not receive HSTS header
@@ -5423,30 +5400,27 @@ ebp2p.com: did not receive HSTS header
 ebpglobal.com: did not receive HSTS header
 ebraph.com: could not connect to host
 ecake.in: did not receive HSTS header
 ecc-kaufbeuren.de: could not connect to host
 ecchidreams.com: did not receive HSTS header
 ecfs.link: could not connect to host
 ecg.fr: could not connect to host
 echipstore.com: did not receive HSTS header
-echoteam.gq: did not receive HSTS header
 eckro.com: did not receive HSTS header
-ecoheatcool.co.uk: did not receive HSTS header
 ecole-en-danger.fr: could not connect to host
 ecole-maternelle-saint-joseph.be: could not connect to host
 ecolesrec.ch: did not receive HSTS header
 ecology-21.ru: did not receive HSTS header
 ecomlane.com: could not connect to host
 ecomparemo.com: did not receive HSTS header
 economy.st: could not connect to host
 ecorus.eu: did not receive HSTS header
 ecotruck-pooling.com: did not receive HSTS header
 ecrimex.net: did not receive HSTS header
-ecupcafe.com: did not receive HSTS header
 ed-matters.org: did not receive HSTS header
 edati.lv: could not connect to host
 edcphenix.tk: could not connect to host
 eddmixpanel.com: could not connect to host
 eddyn.net: did not receive HSTS header
 edelblack.ch: could not connect to host
 edelsteincosmetic.com: did not receive HSTS header
 eden-mobility.co.uk: did not receive HSTS header
@@ -5608,23 +5582,47 @@ enumify.com: could not connect to host
 enviapresentes.com.br: could not connect to host
 envygeeks.com: could not connect to host
 eol34.com: could not connect to host
 eoldb.org: could not connect to host
 epanurse.com: could not connect to host
 ephry.com: could not connect to host
 epicmc.games: could not connect to host
 epitesz.co: did not receive HSTS header
+epos-distributor.co.uk: did not receive HSTS header
+eposbirmingham.co.uk: did not receive HSTS header
+eposbrighton.co.uk: did not receive HSTS header
+eposbristol.co.uk: did not receive HSTS header
+eposcardiff.co.uk: did not receive HSTS header
+eposcloud.net: did not receive HSTS header
+eposkent.co.uk: did not receive HSTS header
+eposleeds.co.uk: did not receive HSTS header
+eposleicester.co.uk: did not receive HSTS header
+eposliverpool.co.uk: did not receive HSTS header
+eposlondon.co.uk: did not receive HSTS header
+eposmidlands.co.uk: did not receive HSTS header
+eposnewport.co.uk: did not receive HSTS header
+eposnottingham.co.uk: did not receive HSTS header
+eposreading.co.uk: did not receive HSTS header
+eposreview.co.uk: did not receive HSTS header
+epossheffield.co.uk: did not receive HSTS header
+epossurrey.co.uk: did not receive HSTS header
+epossussex.co.uk: did not receive HSTS header
+eposswansea.co.uk: did not receive HSTS header
+epossystems.co.uk: did not receive HSTS header
+eposwales.co.uk: did not receive HSTS header
+eposyork.co.uk: did not receive HSTS header
 epoxate.com: could not connect to host
 eq8.net.au: could not connect to host
 eqib.nl: did not receive HSTS header
 eqim.me: could not connect to host
 equate.net.au: did not receive HSTS header
 equatetechnologies.com.au: did not receive HSTS header
 equilibre-yoga-jennifer-will.com: could not connect to host
+equippers.de: did not receive HSTS header
 equitee.co: did not receive HSTS header
 equityflows.com: did not receive HSTS header
 erawanarifnugroho.com: did not receive HSTS header
 eressea.xyz: could not connect to host
 ergorium.com: max-age too low: 0
 ergorium.eu: max-age too low: 0
 ericbond.net: could not connect to host
 erichalv.com: could not connect to host
@@ -5664,17 +5662,16 @@ espacemontmorency.com: did not receive H
 especificosba.com.mx: could not connect to host
 espo.com.ua: did not receive HSTS header
 espra.com: could not connect to host
 esquonic.com: could not connect to host
 essenzialeenxovais.com.br: could not connect to host
 essexghosthunters.co.uk: did not receive HSTS header
 estaciona.guru: could not connect to host
 estebanborges.com: did not receive HSTS header
-estespr.com: did not receive HSTS header
 estilosapeca.com: could not connect to host
 estland.guide: could not connect to host
 et-buchholz.de: could not connect to host
 et180.com: could not connect to host
 etangs-magazine.com: could not connect to host
 etaoinwu.tk: could not connect to host
 etdonline.co.uk: did not receive HSTS header
 eteapparel.com: did not receive HSTS header
@@ -5745,18 +5742,17 @@ expowerhps.com: did not receive HSTS hea
 expressfinance.co.za: did not receive HSTS header
 extramoney.cash: did not receive HSTS header
 extrathemeshowcase.net: could not connect to host
 extratorrentlive.xyz: could not connect to host
 extratorrents.tech: could not connect to host
 extreemhost.nl: did not receive HSTS header
 extremenetworking.net: could not connect to host
 exy.pw: could not connect to host
-eyasc.nl: could not connect to host
-eye-carat.com: did not receive HSTS header
+eye-carat.com: could not connect to host
 eyedarts.com: did not receive HSTS header
 eyeglassuniverse.com: did not receive HSTS header
 eyes-of-universe.eu: did not receive HSTS header
 eyesoccer-didikh.rhcloud.com: could not connect to host
 eyesonly.cc: did not receive HSTS header
 ez.fi: could not connect to host
 ezimoeko.net: could not connect to host
 ezmod.org: could not connect to host
@@ -5812,16 +5808,17 @@ farmacia.pt: did not receive HSTS header
 farmaciaformula.com.br: could not connect to host
 farmaciamedicom.com.br: could not connect to host
 farwat.ru: did not receive HSTS header
 fashion.net: did not receive HSTS header
 fashioncare.cz: did not receive HSTS header
 fashionholic.my: did not receive HSTS header
 fashionoutfits24.com: did not receive HSTS header
 fasset.jp: could not connect to host
+fastbackmbm.be: did not receive HSTS header
 fastcomcorp.com: did not receive HSTS header
 fastcomcorp.net: did not receive HSTS header
 fastlike.co: could not connect to host
 fastograph.com: could not connect to host
 fastopen.ml: could not connect to host
 fastworx.com: did not receive HSTS header
 fatdoge.cn: did not receive HSTS header
 fatgeekflix.net: could not connect to host
@@ -5950,34 +5947,34 @@ flajshans.cz: did not receive HSTS heade
 flamewall.net: could not connect to host
 flamingkeys.com.au: could not connect to host
 flareon.net: could not connect to host
 flatbellyreview.com: max-age too low: 2592000
 flawcheck.com: could not connect to host
 flc111.com: did not receive HSTS header
 flc999.com: max-age too low: 129600
 fleursdesoleil.fr: did not receive HSTS header
-flextribly.xyz: did not receive HSTS header
 fliexer.com: could not connect to host
 flipbell.com: did not receive HSTS header
 flipkey.com: did not receive HSTS header
 flirchi.com: could not connect to host
 flirtycourts.com: did not receive HSTS header
 flixtor.net: could not connect to host
 floless.co.uk: did not receive HSTS header
 floorball-haunwoehr.de: did not receive HSTS header
 flopy.club: could not connect to host
 florafiora.com.br: did not receive HSTS header
-florian-lillpopp.de: max-age too low: 10
-florianlillpopp.de: max-age too low: 10
+florian-lillpopp.de: could not connect to host
+florianlillpopp.de: could not connect to host
 floridaderi.ru: did not receive HSTS header
 floridaescapes.co.uk: did not receive HSTS header
 floro.me: did not receive HSTS header
 flouartistique.ch: could not connect to host
 flow.pe: could not connect to host
+flowerandplant.org: did not receive HSTS header
 flowersandclouds.com: could not connect to host
 floweslawncare.com: could not connect to host
 flowlo.me: could not connect to host
 flugstadplasticsurgery.com: did not receive HSTS header
 fluidojobs.com: could not connect to host
 flukethoughts.com: did not receive HSTS header
 flurrybridge.com: did not receive HSTS header
 flushstudios.com: did not receive HSTS header
@@ -6019,16 +6016,18 @@ forewordreviews.com: did not receive HST
 forex-dan.com: did not receive HSTS header
 forgix.com: could not connect to host
 forlagetmarx.dk: did not receive HSTS header
 formazioneopen.it: could not connect to host
 formersessalaries.com: did not receive HSTS header
 formula.cf: could not connect to host
 forplanetsake.com: could not connect to host
 forty2.eu: did not receive HSTS header
+forum-kinozal-tv.appspot.com: did not receive HSTS header
+forum-kinozal.appspot.com: did not receive HSTS header
 forus.be: could not connect to host
 foryoucosmeticos.com.br: could not connect to host
 fossewaygardencentre.co.uk: did not receive HSTS header
 fotiu.com: could not connect to host
 fotoallerlei.com: did not receive HSTS header
 fotocerita.net: could not connect to host
 fotogiraffe.ru: did not receive HSTS header
 fotografosexpertos.com: did not receive HSTS header
@@ -6175,16 +6174,17 @@ gamepader.com: could not connect to host
 gameparade.de: could not connect to host
 gameparagon.info: could not connect to host
 gamepiece.com: max-age too low: 300
 gamers-life.fr: could not connect to host
 gamerslair.org: did not receive HSTS header
 gamerz-point.de: could not connect to host
 gamesdepartment.co.uk: could not connect to host
 gameserver-sponsor.de: did not receive HSTS header
+gameserver-sponsor.me: did not receive HSTS header
 gamesurferapp.com: could not connect to host
 gamingmedia.eu: did not receive HSTS header
 gamoice.com: did not receive HSTS header
 gampenhof.de: did not receive HSTS header
 garageon.net: did not receive HSTS header
 garciamartin.me: could not connect to host
 garcinia--cambogia.com: could not connect to host
 garciniacambogiareviewed.co: did not receive HSTS header
@@ -6278,17 +6278,16 @@ ghid-pitesti.ro: did not receive HSTS he
 ghkim.net: could not connect to host
 ghostblog.info: did not receive HSTS header
 giakki.eu: could not connect to host
 giant-powerfit.co.uk: did not receive HSTS header
 gibraltar-firma.com: did not receive HSTS header
 gidea.nu: could not connect to host
 gietvloergarant.nl: did not receive HSTS header
 giftgofers.com: max-age too low: 2592000
-giftservices.nl: could not connect to host
 gigacloud.org: did not receive HSTS header
 gigin.me: did not receive HSTS header
 gilcloud.com: could not connect to host
 gilgaz.com: did not receive HSTS header
 gillet-cros.fr: could not connect to host
 gilly.berlin: did not receive HSTS header
 gilroywestwood.org: did not receive HSTS header
 gincher.net: did not receive HSTS header
@@ -6321,16 +6320,17 @@ globalmusic.ga: could not connect to hos
 globalsites.nl: did not receive HSTS header
 glotter.com: did not receive HSTS header
 gloucesterphotographer.com: did not receive HSTS header
 glubbforum.de: did not receive HSTS header
 glws.org: did not receive HSTS header
 gm-assicurazioni.it: did not receive HSTS header
 gmat.ovh: could not connect to host
 gmoes.at: could not connect to host
+gnosticjade.net: did not receive HSTS header
 go.ax: did not receive HSTS header
 go2sh.de: did not receive HSTS header
 go4it.solutions: did not receive HSTS header
 goabonga.com: could not connect to host
 goalsetup.com: did not receive HSTS header
 goaltree.ch: did not receive HSTS header
 goarmy.eu: could not connect to host
 goat.chat: did not receive HSTS header
@@ -6384,17 +6384,17 @@ gouv.ovh: did not receive HSTS header
 gov.ax: could not connect to host
 goverage.org: could not connect to host
 govillemo.ca: did not receive HSTS header
 gozel.com.tr: did not receive HSTS header
 gparent.org: did not receive HSTS header
 gpo.gov: did not receive HSTS header
 gpstuner.com: did not receive HSTS header
 graavaapi.elasticbeanstalk.com: could not connect to host
-gracebaking.com: could not connect to host
+gracebaking.com: max-age too low: 86400
 gracechurchpc.net: max-age too low: 2592000
 gracesofgrief.com: could not connect to host
 grachtenpandverkopen.nl: could not connect to host
 grafitec.ru: did not receive HSTS header
 grana.com: did not receive HSTS header
 grandlinecsk.ru: did not receive HSTS header
 grandmascookieblog.com: did not receive HSTS header
 grantedby.me: max-age too low: 0
@@ -6422,16 +6422,17 @@ gregorytlee.me: could not connect to hos
 grekland.guide: could not connect to host
 gremots.com: could not connect to host
 greplin.com: could not connect to host
 gresb.com: did not receive HSTS header
 gretchelizartistry.com: did not receive HSTS header
 grettogeek.com: did not receive HSTS header
 grevesgarten.de: could not connect to host
 greyline.se: could not connect to host
+greysky.me: did not receive HSTS header
 grian-bam.at: did not receive HSTS header
 gribani.com: could not connect to host
 grid2osm.org: could not connect to host
 gridle.io: did not receive HSTS header
 grigalanzsoftware.com: could not connect to host
 grillinfools.com: did not receive HSTS header
 gripopgriep.net: could not connect to host
 groenewoud.run: could not connect to host
@@ -6526,16 +6527,17 @@ hainoni.com: did not receive HSTS header
 hairlossstop.net: did not receive HSTS header
 haitschi.com: could not connect to host
 haitschi.de: did not receive HSTS header
 haitschi.net: could not connect to host
 haitschi.org: could not connect to host
 haktec.de: did not receive HSTS header
 haku.moe: could not connect to host
 hakugin.org: could not connect to host
+hallettxn.com: did not receive HSTS header
 halo.red: could not connect to host
 halyul.cc: did not receive HSTS header
 halyul.com: did not receive HSTS header
 haman.nl: could not connect to host
 hancc.net: could not connect to host
 handenafvanhetmedischdossier.nl: could not connect to host
 handicapindeles.nl: did not receive HSTS header
 handiworker.com: could not connect to host
@@ -6661,16 +6663,17 @@ heribe-maruo.com: did not receive HSTS h
 heritagedentistry.ca: did not receive HSTS header
 heroin.org.uk: did not receive HSTS header
 herrenfahrt.com: did not receive HSTS header
 heutger.net: did not receive HSTS header
 hex2013.com: did not receive HSTS header
 hexhu.com: could not connect to host
 heyguevara.com: did not receive HSTS header
 heywoodtown.co.uk: did not receive HSTS header
+hfbg.nl: did not receive HSTS header
 hfcbank.com.gh: did not receive HSTS header
 hibilog.com: could not connect to host
 hicn.gq: could not connect to host
 hiddendepth.ie: max-age too low: 0
 hiddenmail.xyz: could not connect to host
 hiddenprocess.com: did not receive HSTS header
 hiddenrefuge.eu.org: could not connect to host
 hideftv.deals: could not connect to host
@@ -6719,32 +6722,30 @@ hodne.io: could not connect to host
 hoekwoningverkopen.nl: could not connect to host
 hoerbuecher-und-hoerspiele.de: could not connect to host
 hofiprojekt.cz: did not receive HSTS header
 hogar123.es: could not connect to host
 hoiku-map.tokyo: could not connect to host
 hoiku-navi.com: did not receive HSTS header
 holgerlehner.com: could not connect to host
 holifestival-freyung.de: could not connect to host
-hollandguns.com: did not receive HSTS header
 holymoly.lu: could not connect to host
 homads.com: did not receive HSTS header
 home-coaching.be: did not receive HSTS header
 homeandyarddetailing.com: could not connect to host
 homeclouding.de: could not connect to host
 homedna.com: did not receive HSTS header
 homeexx.com: did not receive HSTS header
 homeownersassociationmanagementla.com: could not connect to host
 homeremodelingcontractorsca.com: did not receive HSTS header
 homesandal.com: did not receive HSTS header
 homeseller.co.uk: could not connect to host
 hometownmall.com: max-age too low: 0
 homeyantra.com: did not receive HSTS header
 homezhi.com.tw: did not receive HSTS header
-homyremedies.com: did not receive HSTS header
 hongyd.online: could not connect to host
 hongzhaxiaofendui.com: could not connect to host
 honoo.com: could not connect to host
 hookandloom.com: did not receive HSTS header
 hoopsacademyusa.com: could not connect to host
 hoorr.com: did not receive HSTS header
 hoovism.com: did not receive HSTS header
 hopewellproperties.co.uk: did not receive HSTS header
@@ -6810,17 +6811,16 @@ humeurs.net: could not connect to host
 humortuga.pt: could not connect to host
 hump.dk: could not connect to host
 humpi.at: could not connect to host
 humpteedumptee.in: did not receive HSTS header
 huodongweb.com: could not connect to host
 hup.blue: did not receive HSTS header
 huskybutt.dog: could not connect to host
 huskyduvercors.com: did not receive HSTS header
-huutonauru.net: did not receive HSTS header
 huzu.com: did not receive HSTS header
 hwcine.com: did not receive HSTS header
 hwpkasse.de: max-age too low: 2592000
 hyakumachi.com: did not receive HSTS header
 hyatt.com: did not receive HSTS header
 hydra.ws: could not connect to host
 hydrodipcenter.nl: did not receive HSTS header
 hydronium.cf: could not connect to host
@@ -6887,16 +6887,17 @@ ierna.com: did not receive HSTS header
 ies-italia.it: did not receive HSTS header
 ies.id.lv: could not connect to host
 ievgenialehner.com: did not receive HSTS header
 ifad.org: did not receive HSTS header
 ifastuniversity.com: did not receive HSTS header
 ifleurs.com: could not connect to host
 ifx.ee: could not connect to host
 ifxor.com: did not receive HSTS header
+igd.chat: did not receive HSTS header
 igforums.com: could not connect to host
 igi.codes: did not receive HSTS header
 igiftcards.nl: did not receive HSTS header
 ignatisd.gr: did not receive HSTS header
 igule.net: could not connect to host
 ihotel.io: did not receive HSTS header
 ihrlotto.de: could not connect to host
 ihrnationalrat.ch: could not connect to host
@@ -6935,17 +6936,17 @@ imjiangtao.com: did not receive HSTS hea
 immanuel60.hu: did not receive HSTS header
 immoprotect.ca: did not receive HSTS header
 immortals-co.com: did not receive HSTS header
 immoverkauf24.at: did not receive HSTS header
 immoverkauf24.de: did not receive HSTS header
 immunicity.cc: max-age too low: 0
 immunicity.date: did not receive HSTS header
 immunicity.eu: did not receive HSTS header
-immunicity.host: could not connect to host
+immunicity.host: max-age too low: 0
 immunicity.info: could not connect to host
 immunicity.online: could not connect to host
 immunicity.press: could not connect to host
 immunicity.rocks: could not connect to host
 immunicity.st: did not receive HSTS header
 immunicity.today: could not connect to host
 immunicity.top: could not connect to host
 immunicity.win: max-age too low: 0
@@ -6962,17 +6963,16 @@ imy.life: could not connect to host
 imydl.com: did not receive HSTS header
 inb4.us: could not connect to host
 inbox.li: did not receive HSTS header
 incendiary-arts.com: could not connect to host
 inche-ali.com: did not receive HSTS header
 inchomatic.com: did not receive HSTS header
 inderagamono.net: could not connect to host
 indiecert.net: could not connect to host
-indieethos.com: did not receive HSTS header
 indiemods.com: could not connect to host
 indien.guide: could not connect to host
 indilens.com: did not receive HSTS header
 indochina.io: could not connect to host
 indoorskiassen.nl: did not receive HSTS header
 indredouglas.me: could not connect to host
 industrybazar.com: max-age too low: 2592000
 ineed.com.mt: could not connect to host
@@ -6980,16 +6980,17 @@ infcof.com: did not receive HSTS header
 infilock.com: could not connect to host
 infinitude.me.uk: could not connect to host
 infinitude.xyz: could not connect to host
 infinitudecloud.com: could not connect to host
 infinitusgaming.eu: could not connect to host
 infinity-freedom.com: could not connect to host
 infinity-freedom.de: could not connect to host
 infinity-lifestyle.de: could not connect to host
+infinityepos.co.uk: did not receive HSTS header
 inflation.ml: could not connect to host
 info-sys.tk: could not connect to host
 infoduv.fr: did not receive HSTS header
 inforichjapan.com: did not receive HSTS header
 informaticapremium.com: did not receive HSTS header
 infosec.rip: could not connect to host
 infosoph.org: could not connect to host
 infotics.es: did not receive HSTS header
@@ -7060,17 +7061,17 @@ intranetsec.fr: could not connect to hos
 introvertedtravel.space: did not receive HSTS header
 intrp.net: did not receive HSTS header
 intxt.net: did not receive HSTS header
 investnext.com: max-age too low: 43200
 invictusmc.uk: could not connect to host
 invinsec.cloud: did not receive HSTS header
 invite24.pro: could not connect to host
 iodice.org: did not receive HSTS header
-ioiart.eu: did not receive HSTS header
+ioiart.eu: could not connect to host
 iolife.dk: could not connect to host
 ionas-law.ro: did not receive HSTS header
 iop.intuit.com: max-age too low: 86400
 iora.fr: could not connect to host
 iosmods.com: did not receive HSTS header
 iostips.ru: could not connect to host
 ip-life.net: did not receive HSTS header
 ip6.im: did not receive HSTS header
@@ -7117,18 +7118,17 @@ ischool.co.jp: did not receive HSTS head
 isdf.me: could not connect to host
 isef-eg.com: did not receive HSTS header
 iseulde.com: did not receive HSTS header
 ishadowsocks.ltd: could not connect to host
 ishillaryclintoninprisonyet.com: could not connect to host
 isitamor.pm: could not connect to host
 iskai.net: did not receive HSTS header
 iskaz.rs: did not receive HSTS header
-islandpumpandtank.com: did not receive HSTS header
-islandzero.net: did not receive HSTS header
+islandzero.net: could not connect to host
 ismetroonfiretoday.com: could not connect to host
 isoface33.fr: did not receive HSTS header
 isogen5.com: could not connect to host
 isogram.nl: did not receive HSTS header
 issala.org: did not receive HSTS header
 istanbul.systems: did not receive HSTS header
 istanbultravelguide.info: could not connect to host
 istaspirtslietas.lv: did not receive HSTS header
@@ -7175,17 +7175,16 @@ izolight.ch: could not connect to host
 izoox.com: did not receive HSTS header
 izzzorgconcerten.nl: could not connect to host
 j-eck.nl: did not receive HSTS header
 j-lsolutions.com: could not connect to host
 j-rickroll-a.pw: could not connect to host
 ja-publications.com: did not receive HSTS header
 ja.md: did not receive HSTS header
 jaan.su: could not connect to host
-jaccblog.com: could not connect to host
 jackalworks.com: could not connect to host
 jackdoan.com: could not connect to host
 jackfahnestock.com: could not connect to host
 jacobparry.ca: did not receive HSTS header
 jacobsenarquitetura.com: max-age too low: 5184000
 jagido.de: did not receive HSTS header
 jahliveradio.com: could not connect to host
 jaksi.io: did not receive HSTS header
@@ -7408,16 +7407,17 @@ junaos.com: did not receive HSTS header
 junaos.xyz: did not receive HSTS header
 jundimax.com.br: could not connect to host
 junge-selbsthilfe.info: could not connect to host
 junglegoat.xyz: did not receive HSTS header
 junjung.me: could not connect to host
 junqtion.com: could not connect to host
 junqueiropolis.com: did not receive HSTS header
 jupp0r.de: did not receive HSTS header
+jurisprudent.by: did not receive HSTS header
 juristas.com.br: did not receive HSTS header
 jurke.com: did not receive HSTS header
 justiceforfathers.com: could not connect to host
 justinlemay.com: could not connect to host
 justlikethat.hosting: did not receive HSTS header
 justmy.website: did not receive HSTS header
 justnaw.co.uk: could not connect to host
 justudin.com: did not receive HSTS header
@@ -7506,17 +7506,16 @@ keepassa.co: did not receive HSTS header
 keepclean.me: could not connect to host
 keepcoalintheground.org: could not connect to host
 keepflow.io: did not receive HSTS header
 kefaloniatoday.com: did not receive HSTS header
 keihin-chaplin.jp: did not receive HSTS header
 kela.jp: did not receive HSTS header
 ken-electric.com.br: could not connect to host
 kenkoelectric.com: did not receive HSTS header
-kenoschwalb.com: did not receive HSTS header
 kentacademiestrust.org.uk: did not receive HSTS header
 kepler-seminar.de: did not receive HSTS header
 kerangalam.com: did not receive HSTS header
 kerksanders.nl: did not receive HSTS header
 kermadec.blog: could not connect to host
 kermadec.net: could not connect to host
 kernl.us: did not receive HSTS header
 keskeces.com: did not receive HSTS header
@@ -7526,17 +7525,17 @@ keymaster.lookout.com: did not receive H
 kfbrussels.be: could not connect to host
 kg-rating.com: could not connect to host
 kgxtech.com: max-age too low: 2592000
 khaganat.net: did not receive HSTS header
 ki-on.net: did not receive HSTS header
 kialo.com: did not receive HSTS header
 kickass-proxies.org: could not connect to host
 kickass.al: could not connect to host
-kickasstorrents.gq: did not receive HSTS header
+kickasstorrents.gq: could not connect to host
 kickerplaza.nl: did not receive HSTS header
 kickstart.com.pk: did not receive HSTS header
 kid-dachau.de: did not receive HSTS header
 kidkat.cn: could not connect to host
 kiel-media.de: did not receive HSTS header
 kill-paff.com: did not receive HSTS header
 kimana.pe: could not connect to host
 kimberg.co.uk: did not receive HSTS header
@@ -7884,17 +7883,17 @@ lifeventure.co.uk: did not receive HSTS 
 lightarmory.com: could not connect to host
 lightning-ashe.com: did not receive HSTS header
 lightnovelsekai.com: could not connect to host
 lightpaste.com: could not connect to host
 lightworkerandempathsupport.com: max-age too low: 300
 lightworx.io: did not receive HSTS header
 lila.pink: did not receive HSTS header
 lilapmedia.com: could not connect to host
-lillpopp.eu: did not receive HSTS header
+lillpopp.eu: could not connect to host
 lilpwny.com: could not connect to host
 lilycms.com: could not connect to host
 lim-light.com: did not receive HSTS header
 limalama.eu: max-age too low: 1
 limeyeti.com: could not connect to host
 limiteddata.co.uk: did not receive HSTS header
 limodo-shop.de: did not receive HSTS header
 limpens.net: did not receive HSTS header
@@ -7920,17 +7919,17 @@ linuxeyecandy.com: could not connect to 
 linuxfixed.it: could not connect to host
 linuxforyou.com: could not connect to host
 linuxgeek.ro: could not connect to host
 linuxmint.cz: could not connect to host
 linuxmonitoring.net: did not receive HSTS header
 liquid.solutions: did not receive HSTS header
 liquorsanthe.in: could not connect to host
 lisaco.de: could not connect to host
-lisbongold.com: could not connect to host
+lisbongold.com: did not receive HSTS header
 lisgade.dk: could not connect to host
 listafirmelor.com: could not connect to host
 listage.ovh: did not receive HSTS header
 litespeed.io: could not connect to host
 little.pw: did not receive HSTS header
 littlefreelibrary.org: did not receive HSTS header
 littlelife.co.uk: did not receive HSTS header
 liujunyang.com: did not receive HSTS header
@@ -8076,16 +8075,17 @@ m.nu: did not receive HSTS header
 m0wef.uk: could not connect to host
 m2tc.fr: could not connect to host
 m3-gmbh.de: did not receive HSTS header
 m82labs.com: did not receive HSTS header
 ma-musique.fr: did not receive HSTS header
 maarten.nyc: could not connect to host
 maartenprovo.be: did not receive HSTS header
 mac-torrents.me: did not receive HSTS header
+macandtonic.com: did not receive HSTS header
 macbolo.com: could not connect to host
 macchaberrycream.com: could not connect to host
 macchedil.com: did not receive HSTS header
 macdj.tk: could not connect to host
 macedopesca.com.br: did not receive HSTS header
 macgeneral.de: did not receive HSTS header
 mach1club.com: did not receive HSTS header
 macleodnc.com: did not receive HSTS header
@@ -8261,25 +8261,25 @@ matt.tf: did not receive HSTS header
 mattandreko.com: did not receive HSTS header
 mattberryman.com: max-age too low: 43200
 matterconcern.com: could not connect to host
 matthewprenger.com: could not connect to host
 matthewtester.com: did not receive HSTS header
 matthiassteen.be: max-age too low: 0
 mattressinsider.com: max-age too low: 3153600
 mattsvensson.com: max-age too low: 0
+mattwb65.com: did not receive HSTS header
 matty.digital: did not receive HSTS header
 maultrom.ml: could not connect to host
 maupiknik.com: did not receive HSTS header
 maur.cz: did not receive HSTS header
 maurus-automation.de: did not receive HSTS header
 mausi.co: did not receive HSTS header
 mavisang.cf: could not connect to host
 mawe.red: could not connect to host
-maxbeenen.de: did not receive HSTS header
 maxima.at: did not receive HSTS header
 maximov.space: could not connect to host
 maxmachine.ind.br: could not connect to host
 maxserver.com: did not receive HSTS header
 maya.mg: could not connect to host
 mazyun.com: max-age too low: 3600
 mazz-tech.com: could not connect to host
 mbconsultancy.nu: did not receive HSTS header
@@ -8306,17 +8306,16 @@ mecenat-cassous.com: did not receive HST
 mechmk1.me: did not receive HSTS header
 medallia.io: could not connect to host
 media-access.online: did not receive HSTS header
 mediacru.sh: could not connect to host
 mediafinancelab.org: did not receive HSTS header
 mediamag.am: max-age too low: 0
 mediawikicn.org: could not connect to host
 medienservice-fritz.de: did not receive HSTS header
-medifab.online: did not receive HSTS header
 medirich.co: could not connect to host
 meditek-dv.ru: could not connect to host
 mediterenopmaandag.nl: did not receive HSTS header
 medm-test.com: could not connect to host
 medzinenews.com: did not receive HSTS header
 meedoenzaanstad.nl: did not receive HSTS header
 meetfinch.com: could not connect to host
 meetingmanage.nl: did not receive HSTS header
@@ -8328,16 +8327,17 @@ meghudson.com: could not connect to host
 meifrench.com: could not connect to host
 meiju.video: max-age too low: 0
 mein-gesundheitsmanager.com: max-age too low: 0
 meincloudspeicher.de: could not connect to host
 meinebo.it: could not connect to host
 meiqia.cn: did not receive HSTS header
 meiqia.com: did not receive HSTS header
 mekatrotekno.com: did not receive HSTS header
+melakaltenegger.at: did not receive HSTS header
 melangebrasil.com: could not connect to host
 melaniebilodeau.com: did not receive HSTS header
 melcher.it: did not receive HSTS header
 melf.nl: did not receive HSTS header
 melhoresdominios.net: could not connect to host
 melted.pw: could not connect to host
 melvinlow.com: did not receive HSTS header
 memberpress.com: did not receive HSTS header
@@ -8462,32 +8462,32 @@ minecraft-forums.ga: could not connect t
 minecraft-forums.gq: could not connect to host
 minecraftforum.ch: could not connect to host
 minecraftforums.cf: could not connect to host
 minecraftforums.gq: could not connect to host
 minecraftforums.ml: could not connect to host
 minecraftserverz.com: could not connect to host
 minecraftvoter.com: could not connect to host
 mineover.es: could not connect to host
-mingming.info: did not receive HSTS header
 mingo.nl: max-age too low: 2592000
 minh.at: did not receive HSTS header
 mini-piraten.de: did not receive HSTS header
 minikneet.nl: could not connect to host
 minimoo.se: could not connect to host
 minis-hip.de: max-age too low: 172800
 minkondom.nu: could not connect to host
 minnesotadata.com: could not connect to host
 minora.io: could not connect to host
 minoris.se: could not connect to host
 mipiaci.co.nz: did not receive HSTS header
 mipiaci.com.au: did not receive HSTS header
 miragrow.com: could not connect to host
 mirindadomo.ru: did not receive HSTS header
 mironized.com: did not receive HSTS header
+mirrorsedgearchive.ga: did not receive HSTS header
 mirrorx.com: did not receive HSTS header
 miruc.co: did not receive HSTS header
 misericordiasegrate.org: did not receive HSTS header
 misgluteosperfectos.com: did not receive HSTS header
 misiondelosangeles-mailing.com: did not receive HSTS header
 missrain.tw: could not connect to host
 mist.ink: could not connect to host
 mister.hosting: did not receive HSTS header
@@ -8634,17 +8634,16 @@ mpkossen.com: could not connect to host
 mqas.net: did not receive HSTS header
 mr-hosting.com: could not connect to host
 mrawe.com: could not connect to host
 mrdani.net: could not connect to host
 mrdleisure.co.uk: did not receive HSTS header
 mredsanders.net: did not receive HSTS header
 mrettich.org: did not receive HSTS header
 mrhee.com: did not receive HSTS header
-mrleonardo.com: did not receive HSTS header
 mrning.com: did not receive HSTS header
 mrnonz.com: max-age too low: 0
 mrparker.pw: did not receive HSTS header
 mrpopat.in: did not receive HSTS header
 mrs-shop.com: could not connect to host
 mrsbairds.com: max-age too low: 86400
 msc-seereisen.net: could not connect to host
 mstd.tokyo: did not receive HSTS header
@@ -8806,17 +8805,16 @@ natuurbehangnederland.nl: could not conn
 nauck.org: did not receive HSTS header
 naudles.me: could not connect to host
 nav.jobs: could not connect to host
 naval.tf: could not connect to host
 navjobs.com: did not receive HSTS header
 nbb.io: could not connect to host
 nbg-ha.de: could not connect to host
 ncc60205.info: could not connect to host
-nchristo.com: did not receive HSTS header
 ncpc.gov: could not connect to host
 ncpw.gov: did not receive HSTS header
 nct.org.uk: did not receive HSTS header
 nctx.co.uk: did not receive HSTS header
 ndtmarket.place: could not connect to host
 ne1home.dyndns.org: did not receive HSTS header
 near.st: did not receive HSTS header
 nearbiwa.com: did not receive HSTS header
@@ -8849,17 +8847,16 @@ netbox.cc: could not connect to host
 netbrief.ml: could not connect to host
 netfs.pl: did not receive HSTS header
 netherwind.eu: did not receive HSTS header
 netlilo.com: could not connect to host
 netloanusa.com: could not connect to host
 netmagik.com: did not receive HSTS header
 netprofile.com.au: did not receive HSTS header
 netresourcedesign.com: could not connect to host
-netsafeid.biz: did not receive HSTS header
 netsparkercloud.com: did not receive HSTS header
 nettefoundation.com: could not connect to host
 netweaver.uk: did not receive HSTS header
 networx-online.de: could not connect to host
 netzbit.de: could not connect to host
 netzpolitik.org: max-age too low: 2592000
 netztest.at: did not receive HSTS header
 netzvieh.de: did not receive HSTS header
@@ -8869,16 +8866,17 @@ neuralgic.net: could not connect to host
 neuro-plus-100.com: could not connect to host
 neuronfactor.com: max-age too low: 1000
 neutralvehicle.com: did not receive HSTS header
 never-afk.de: did not receive HSTS header
 neveta.com: could not connect to host
 newedivideo.it: could not connect to host
 newgenerationplus.org: could not connect to host
 newhdmovies.io: could not connect to host
+newline.online: did not receive HSTS header
 newlooknow.com: did not receive HSTS header
 newmelalife.com: did not receive HSTS header
 newparadigmventures.net: did not receive HSTS header
 newportpropertygroup.com: could not connect to host
 news4c.com: did not receive HSTS header
 newsquantified.com: max-age too low: 0
 newstarnootropics.com: could not connect to host
 newtonwarp.com: could not connect to host
@@ -9411,17 +9409,16 @@ peerherrmann.de: could not connect to ho
 peissen.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116"  data: no]
 pekkapikkarainen.fi: did not receive HSTS header
 pekkarik.ru: could not connect to host
 peliculasaudiolatinoonline.com: could not connect to host
 peliseries24.com: did not receive HSTS header
 pemberton.at: did not receive HSTS header
 penablog.com: did not receive HSTS header
 pencillab.cn: did not receive HSTS header
-pengui.uk: did not receive HSTS header
 penguinclientsystem.com: did not receive HSTS header
 pennylane.me.uk: did not receive HSTS header
 pensanisso.com: max-age too low: 2592000
 pentagram.me: max-age too low: 2592000
 pentano.net: could not connect to host
 people-mozilla.org: could not connect to host
 peperiot.com: did not receive HSTS header
 pepper.dog: did not receive HSTS header
@@ -9448,17 +9445,16 @@ personalizedtouch.co: could not connect 
 perthdevicelab.com: did not receive HSTS header
 pestalozzishop.com.br: could not connect to host
 pet-nsk.ru: could not connect to host
 petbooking.it: did not receive HSTS header
 petchart.net: could not connect to host
 peterkshultz.com: did not receive HSTS header
 peternagy.ie: did not receive HSTS header
 petersmark.com: did not receive HSTS header
-pethelpers.org: did not receive HSTS header
 pethub.com: did not receive HSTS header
 petit.site: could not connect to host
 petplum.com: could not connect to host
 petravdbos.nl: did not receive HSTS header
 petrkrapek.cz: did not receive HSTS header
 petrolplus.ru: max-age too low: 7776000
 petrovsky.pro: could not connect to host
 petsittersservices.com: could not connect to host
@@ -9569,16 +9565,17 @@ plfgr.eu.org: could not connect to host
 plhdb.org: could not connect to host
 plirt.ru: could not connect to host
 plixer.com: did not receive HSTS header
 plogable.co: could not connect to host
 plombirator.kz: did not receive HSTS header
 plothost.com: did not receive HSTS header
 ploup.net: could not connect to host
 pluff.nl: did not receive HSTS header
+plural.cafe: did not receive HSTS header
 plus-digital.net: did not receive HSTS header
 plus-u.com.au: did not receive HSTS header
 plustech.id: did not receive HSTS header
 plut.org: did not receive HSTS header
 plymouthsoftplay.co.uk: could not connect to host
 pm13-media.cz: could not connect to host
 pmac.pt: could not connect to host
 pmemanager.fr: did not receive HSTS header
@@ -9622,27 +9619,28 @@ poon.tech: could not connect to host
 popi.se: did not receive HSTS header
 popkins.ml: could not connect to host
 popupsoftplay.com: did not receive HSTS header
 poris.web.id: could not connect to host
 pornstars.me: did not receive HSTS header
 portalm.tk: could not connect to host
 portalplatform.net: could not connect to host
 portaluniversalista.org: could not connect to host
+portefeuillesignalen.nl: did not receive HSTS header
+posbank.co.uk: did not receive HSTS header
 poshpak.com: max-age too low: 86400
 postback.io: did not receive HSTS header
-postcodegarant.nl: did not receive HSTS header
+postcodegarant.nl: could not connect to host
 postcodewise.co.uk: could not connect to host
 postscheduler.org: could not connect to host
 posylka.de: did not receive HSTS header
 potatoheads.net: could not connect to host
 potpourrifestival.de: did not receive HSTS header
 potsky.com: did not receive HSTS header
 pourmesloisirs.com: could not connect to host
-pourout.org: did not receive HSTS header
 poussinooz.fr: could not connect to host
 povitria.net: could not connect to host
 power-l.ch: did not receive HSTS header
 power-of-interest.com: did not receive HSTS header
 power99press.com: did not receive HSTS header
 powerb.ch: did not receive HSTS header
 poweroff.win: could not connect to host
 powerplannerapp.com: could not connect to host
@@ -9674,17 +9672,17 @@ preparedcapital.com: max-age too low: 30
 preppertactics.com: did not receive HSTS header
 presidentials2016.com: could not connect to host
 press-anime-nenkan.com: did not receive HSTS header
 pressenews.net: did not receive HSTS header
 pressfreedomfoundation.org: did not receive HSTS header
 pretrialservices.gov: did not receive HSTS header
 prettygrouse.com: did not receive HSTS header
 prettyphotoart.de: did not receive HSTS header
-pretzlaff.info: could not connect to host
+pretzlaff.info: did not receive HSTS header
 preworkout.me: could not connect to host
 prgslab.net: could not connect to host
 pridoc.se: did not receive HSTS header
 prilock.com: did not receive HSTS header
 primecaplending.com: could not connect to host
 primotiles.co.uk: did not receive HSTS header
 prinbanat.ngo: did not receive HSTS header
 princesparktouch.com: did not receive HSTS header
@@ -9835,17 +9833,16 @@ quakerlens.com: did not receive HSTS hea
 quality1.com.br: did not receive HSTS header
 qualityology.com: did not receive HSTS header
 quanglepro.com: could not connect to host
 quantacloud.ch: could not connect to host
 quantenteranik.eu: could not connect to host
 quantum-cloud.xyz: could not connect to host
 quantum-ethics.com: could not connect to host
 quantumcourse.org: did not receive HSTS header
-quarryhillrentals.com: did not receive HSTS header
 quebecmailbox.com: could not connect to host
 queenbrownie.com.br: could not connect to host
 quelmandataire.fr: did not receive HSTS header
 queroreceitasoberana.com.br: max-age too low: 0
 queryplayground.com: could not connect to host
 questsandrewards.com: could not connect to host
 quickandroid.tools: could not connect to host
 quickpayservice.com: could not connect to host
@@ -9959,17 +9956,16 @@ rede.ca: did not receive HSTS header
 redhorsemountainranch.com: did not receive HSTS header
 redicabo.de: could not connect to host
 redirectman.com: did not receive HSTS header
 redlatam.org: could not connect to host
 redmbk.com: did not receive HSTS header
 redner.cc: did not receive HSTS header
 rednertv.de: did not receive HSTS header
 redoakmedia.net: did not receive HSTS header
-redperegrine.com: did not receive HSTS header
 redports.org: could not connect to host
 redra.ws: did not receive HSTS header
 reducerin.ro: did not receive HSTS header
 redy.host: did not receive HSTS header
 reed-sensor.com: did not receive HSTS header
 referenten.org: did not receive HSTS header
 refitplanner.com: did not receive HSTS header
 reg.ru: did not receive HSTS header
@@ -10011,17 +10007,16 @@ renkhosting.com: could not connect to ho
 renlong.org: did not receive HSTS header
 renrenss.com: could not connect to host
 renscreations.com: did not receive HSTS header
 rentacarcluj.xyz: could not connect to host
 rentbrowsertrain.me: could not connect to host
 rentcarassist.com: could not connect to host
 renteater.com: could not connect to host
 rentex.com: did not receive HSTS header
-renyiyou.com: could not connect to host
 repex.co.il: did not receive HSTS header
 replacemychina.com: could not connect to host
 report-to.com: did not receive HSTS header
 report-to.io: did not receive HSTS header
 report-uri.io: did not receive HSTS header
 report-url.com: did not receive HSTS header
 report-url.io: did not receive HSTS header
 reported.ly: did not receive HSTS header
@@ -10092,35 +10087,36 @@ rizon.me: max-age too low: 0
 rj.gg: could not connect to host
 rk6.cz: could not connect to host
 rkkhok.hu: did not receive HSTS header
 rkmantpur.org: did not receive HSTS header
 rmaqequipamentos.com.br: could not connect to host
 rme.li: did not receive HSTS header
 roadfeast.com: could not connect to host
 roan24.pl: did not receive HSTS header
+robertoentringer.com: did not receive HSTS header
 robigalia.org: did not receive HSTS header
 robteix.com: did not receive HSTS header
 robtex.com: did not receive HSTS header
 robtex.net: did not receive HSTS header
 robtex.org: did not receive HSTS header
 rochman.id: could not connect to host
 rocketnet.ml: could not connect to host
 rockeyscrivo.com: did not receive HSTS header
 rocksberg.net: could not connect to host
 rockz.io: did not receive HSTS header
+roddis.net: did not receive HSTS header
 rodney.id.au: did not receive HSTS header
 rodneybrooksjr.com: did not receive HSTS header
 rodosto.com: did not receive HSTS header
 roelf.org: did not receive HSTS header
 roeper.party: could not connect to host
 roesemann.email: could not connect to host
 roguelikecenter.fr: max-age too low: 0
 rohlik.cz: did not receive HSTS header
-roketix.co.uk: could not connect to host
 rolandkolodziej.com: max-age too low: 86400
 rolandslate.com: did not receive HSTS header
 rolemaster.net: could not connect to host
 rolroer.co.za: could not connect to host
 romaimperator.com: did not receive HSTS header
 romainmuller.xyz: did not receive HSTS header
 romans-place.me.uk: could not connect to host
 romeoferraris.com: did not receive HSTS header
@@ -10132,16 +10128,17 @@ ronwo.de: max-age too low: 1
 roo.ie: could not connect to host
 rootforum.org: did not receive HSTS header
 rootservice.org: did not receive HSTS header
 rootwpn.com: could not connect to host
 rop.io: could not connect to host
 roquecenter.org: did not receive HSTS header
 rorymcdaniel.com: did not receive HSTS header
 roseitsolutions.uk: did not receive HSTS header
+rossclark.com: did not receive HSTS header
 rossen.be: did not receive HSTS header
 rossiworld.com: did not receive HSTS header
 rotex1840.de: did not receive HSTS header
 rotter-dam.nl: did not receive HSTS header
 rough.nu: could not connect to host
 roundtheme.com: did not receive HSTS header
 rous.se: could not connect to host
 rouvray.org: could not connect to host
@@ -10218,16 +10215,17 @@ saigonstar.de: could not connect to host
 sail-nyc.com: did not receive HSTS header
 saint-astier-triathlon.com: did not receive HSTS header
 saintjohnlutheran.church: did not receive HSTS header
 sairai.bid: could not connect to host
 sakaserver.com: did not receive HSTS header
 sakib.ninja: did not receive HSTS header
 sakurabuff.com: could not connect to host
 saleslift.pl: did not receive HSTS header
+salmonrecovery.gov: did not receive HSTS header
 salserocafe.com: did not receive HSTS header
 salserototal.com: could not connect to host
 saltedskies.com: could not connect to host
 saltra.online: could not connect to host
 salvagedfurnitureparlour.com: could not connect to host
 samaritansnet.org: did not receive HSTS header
 sametovymesic.cz: could not connect to host
 saml2.com: could not connect to host
@@ -10244,17 +10242,16 @@ sanik.my: did not receive HSTS header
 sanissimo.com.mx: max-age too low: 86400
 sansage.com.br: could not connect to host
 sansdev.com: could not connect to host
 sansemea.com: did not receive HSTS header
 santi.eu: did not receive HSTS header
 santorinibbs.com: did not receive HSTS header
 santouri.be: could not connect to host
 saotn.org: did not receive HSTS header
-sapk.fr: did not receive HSTS header
 sarah-beckett-harpist.com: did not receive HSTS header
 sarahsweetlife.com: could not connect to host
 sarahsweger.com: could not connect to host
 sarakas.com: could not connect to host
 saraleebread.com: max-age too low: 86400
 sarangsemutbandung.com: could not connect to host
 sarisonproductions.com: did not receive HSTS header
 sarkarischeme.in: could not connect to host
@@ -10407,17 +10404,16 @@ sehenderson.com: did not receive HSTS he
 seiler-bad.de: did not receive HSTS header
 seizoushokoyuubangou.com: did not receive HSTS header
 sektor.team: could not connect to host
 selecadm.name: could not connect to host
 selectary.com: could not connect to host
 selectcertifiedautos.com: did not receive HSTS header
 selectel.com: did not receive HSTS header
 selectruckscalltrackingreports.com: could not connect to host
-seleondar.ru: did not receive HSTS header
 selfdefenserx.com: did not receive HSTS header
 selfie-france.fr: could not connect to host
 selldorado.com: could not connect to host
 sellercritic.com: did not receive HSTS header
 sello.com: did not receive HSTS header
 sellocdn.com: could not connect to host
 sellservs.co.za: could not connect to host
 semaf.at: max-age too low: 86400
@@ -10429,17 +10425,16 @@ semps-servers.de: could not connect to h
 sendash.com: could not connect to host
 sendmeback.de: did not receive HSTS header
 senedirect.com: could not connect to host
 sens2lavie.com: max-age too low: 0
 senseofnumber.co.uk: did not receive HSTS header
 sensiblemn.org: could not connect to host
 sensibus.com: did not receive HSTS header
 seobot.com.au: could not connect to host
-seoinc.com: did not receive HSTS header
 seomobo.com: could not connect to host
 seosanantonioinc.com: did not receive HSTS header
 seowarp.net: did not receive HSTS header
 sep23.ru: did not receive HSTS header
 sepie.gob.es: did not receive HSTS header
 seq.tf: did not receive HSTS header
 serathius.ovh: could not connect to host
 serbien.guide: could not connect to host
@@ -10453,16 +10448,17 @@ servergno.me: did not receive HSTS heade
 servermonkey.nl: could not connect to host
 servicevie.com: did not receive HSTS header
 servu.de: did not receive HSTS header
 seryo.moe: could not connect to host
 seryo.net: could not connect to host
 setphaserstostun.org: could not connect to host
 setuid.de: could not connect to host
 setuid.io: did not receive HSTS header
+sewoo.co.uk: did not receive HSTS header
 seyahatsagliksigortalari.com: could not connect to host
 seydaozcan.com: did not receive HSTS header
 sfashion.si: did not receive HSTS header
 sfhobbies.com.br: could not connect to host
 sfsltd.com: did not receive HSTS header
 sgcaccounts.co.uk: did not receive HSTS header
 sgovaard.nl: did not receive HSTS header
 sh11.pp.ua: did not receive HSTS header
@@ -10484,32 +10480,30 @@ shadowsoks.com: could not connect to hos
 shadowsu.info: did not receive HSTS header
 shadowsu.top: did not receive HSTS header
 shagi29.ru: did not receive HSTS header
 shahbeat.com: did not receive HSTS header
 shakebox.de: could not connect to host
 shanesage.com: could not connect to host
 shapesedinburgh.co.uk: did not receive HSTS header
 shardsoft.com: could not connect to host
-shareeri.com: did not receive HSTS header
 shareimg.xyz: could not connect to host
 sharejoy.cn: did not receive HSTS header
 sharekey.com: did not receive HSTS header
 shareoine.com: did not receive HSTS header
 sharepass.pw: could not connect to host
 sharepic.xyz: could not connect to host
 sharesplitter.com: could not connect to host
 sharezen.de: could not connect to host
 sharingcode.com: did not receive HSTS header
 shatorin.com: did not receive HSTS header
 shauncrowley.co.uk: could not connect to host
 shaunwheelhou.se: could not connect to host
 shawnbsmith.me: did not receive HSTS header
 shawnh.net: could not connect to host
-shawnstarrcustomhomes.com: did not receive HSTS header
 shellsec.pw: did not receive HSTS header
 shep.co.il: did not receive HSTS header
 sheratan.web.id: did not receive HSTS header
 shereallyheals.com: did not receive HSTS header
 shermantank.biz: did not receive HSTS header
 shervik.ga: could not connect to host
 shevronpatriot.ru: did not receive HSTS header
 shg-pornographieabhaengigkeit.de: did not receive HSTS header
@@ -10568,17 +10562,16 @@ silent.live: could not connect to host
 silentcircle.com: did not receive HSTS header
 silentcircle.org: could not connect to host
 silentlink.io: could not connect to host
 silentmode.com: max-age too low: 7889238
 silicagelpackets.ca: did not receive HSTS header
 silver-drachenkrieger.de: did not receive HSTS header
 silverhome.ninja: could not connect to host
 silverpvp.com: could not connect to host
-silviamacallister.com: did not receive HSTS header
 simbast.com: could not connect to host
 simbihaiti.com: max-age too low: 7889238
 simbol.id: did not receive HSTS header
 simccorp.com: did not receive HSTS header
 simeon.us: max-age too low: 2592000
 simfri.com: could not connect to host
 simnovo.net: did not receive HSTS header
 simobilklub.si: could not connect to host
@@ -10662,25 +10655,25 @@ slauber.de: did not receive HSTS header
 sleeklounge.com: did not receive HSTS header
 sleep10.com: could not connect to host
 sleepstar.com.mt: did not receive HSTS header
 slicketl.com: did not receive HSTS header
 slightfuture.click: could not connect to host
 slightfuture.com: did not receive HSTS header
 slix.io: could not connect to host
 slope.haus: could not connect to host
-slovakiana.sk: did not receive HSTS header
 slovoice.org: could not connect to host
 slowsociety.org: could not connect to host
 sluplift.com: did not receive HSTS header
 slycurity.de: did not receive HSTS header
 smablo.com: did not receive HSTS header
 smallcdn.rocks: could not connect to host
 smalldogbreeds.net: did not receive HSTS header
 smallshopit.com: did not receive HSTS header
+smaltimentorifiuti.veneto.it: did not receive HSTS header
 smart-mirror.de: did not receive HSTS header
 smart-ov.nl: could not connect to host
 smartbuyelectric.com: could not connect to host
 smartcoin.com.br: could not connect to host
 smartfon4you.ru: max-age too low: 0
 smarthomedna.com: did not receive HSTS header
 smartit.pro: did not receive HSTS header
 smartofficesandsmarthomes.com: did not receive HSTS header
@@ -10696,20 +10689,19 @@ smith.is: did not receive HSTS header
 smittix.co.uk: did not receive HSTS header
 smkn1lengkong.sch.id: did not receive HSTS header
 smksi2.com: could not connect to host
 smksultanismail2.com: could not connect to host
 smkw.com: did not receive HSTS header
 smol.cat: did not receive HSTS header
 smove.sg: did not receive HSTS header
 smplix.com: could not connect to host
-smspodmena.ru: did not receive HSTS header
+smspodmena.ru: could not connect to host
 smtp.bz: did not receive HSTS header
 smusg.com: could not connect to host
-snafarms.com: did not receive HSTS header
 snailing.org: could not connect to host
 snakehosting.dk: did not receive HSTS header
 snapworks.net: did not receive HSTS header
 snekchat.moe: could not connect to host
 snelwerk.be: could not connect to host
 sng.my: could not connect to host
 snip.host: could not connect to host
 snippet.host: could not connect to host
@@ -10762,16 +10754,17 @@ soporte.cc: could not connect to host
 sorensen-online.com: could not connect to host
 sosaka.ml: could not connect to host
 sosiolog.com: could not connect to host
 sotor.de: did not receive HSTS header
 soucorneteiro.com.br: could not connect to host
 soulfulglamour.uk: could not connect to host
 soundforsound.co.uk: did not receive HSTS header
 sourcelair.com: did not receive HSTS header
+sourcitec.com: did not receive HSTS header
 southcoastswords.com: did not receive HSTS header
 southernjamusa.com: did not receive HSTS header
 southgale.condos: could not connect to host
 southside-crew.club: could not connect to host
 southworcestershiregpservices.co.uk: could not connect to host
 souvik.me: did not receive HSTS header
 souyar.de: could not connect to host
 souyar.net: could not connect to host
@@ -10816,16 +10809,17 @@ spineandscoliosis.com: did not receive H
 spirit-dev.net: max-age too low: 0
 spiritfanfics.com: did not receive HSTS header
 spisoggrin.dk: did not receive HSTS header
 spitefultowel.com: did not receive HSTS header
 spititout.it: could not connect to host
 spokonline.com: could not connect to host
 spon.cz: did not receive HSTS header
 sponsortobias.com: could not connect to host
+sport-socken.net: did not receive HSTS header
 sportchirp-internal.azurewebsites.net: did not receive HSTS header
 sporthit.ru: did not receive HSTS header
 sportifik.com: did not receive HSTS header
 sportingoods.com.br: could not connect to host
 sportscollection.com.br: could not connect to host
 sportwette.eu: could not connect to host
 spot-events.com: could not connect to host
 spotifyripper.tk: could not connect to host
@@ -10900,16 +10894,17 @@ steph-autoecole.ch: did not receive HSTS
 stephanierxo.com: did not receive HSTS header
 stephanos.me: could not connect to host
 stephenandburns.com: did not receive HSTS header
 stevechekblain.win: could not connect to host
 stevenroddis.com: did not receive HSTS header
 stevensheffey.me: did not receive HSTS header
 stevensononthe.net: did not receive HSTS header
 stevenz.net: did not receive HSTS header
+stevenz.science: did not receive HSTS header
 stevenz.xyz: did not receive HSTS header
 stewartremodelingadvantage.com: could not connect to host
 sticklerjs.org: could not connect to host
 stig.io: did not receive HSTS header
 stigroom.com: could not connect to host
 stillblackhat.id: could not connect to host
 stinkytrashhound.com: could not connect to host
 stirlingpoon.net: could not connect to host
@@ -10921,18 +10916,18 @@ stl.news: did not receive HSTS header
 stmbgr.com: could not connect to host
 stn.me.uk: did not receive HSTS header
 stockseyeserum.com: could not connect to host
 stocktrade.de: could not connect to host
 stoffe-monster.de: did not receive HSTS header
 stoick.me: could not connect to host
 stole-my.bike: could not connect to host
 stole-my.tv: could not connect to host
-stomadental.com: did not receive HSTS header
 stonecutterscommunity.com: could not connect to host
+stopbreakupnow.org: did not receive HSTS header
 stopwoodfin.org: could not connect to host
 storbritannien.guide: could not connect to host
 store-host.com: did not receive HSTS header
 storecove.com: did not receive HSTS header
 storeden.com: did not receive HSTS header
 storefrontify.com: could not connect to host
 storiesofhealth.org: did not receive HSTS header
 stormhub.org: could not connect to host
@@ -10986,16 +10981,17 @@ sugarsweetorsour.com: did not receive HS
 suian.or.jp: max-age too low: 86400
 suite73.org: could not connect to host
 summitbankofkc.com: did not receive HSTS header
 summitmasters.net: did not receive HSTS header
 sumoatm.com: did not receive HSTS header
 sumoscout.de: could not connect to host
 suncountrymarine.com: did not receive HSTS header
 sundaycooks.com: max-age too low: 2592000
+sunflyer.cn: did not receive HSTS header
 sunlandsg.vn: did not receive HSTS header
 sunnyfruit.ru: could not connect to host
 sunriseafricarelief.com: did not receive HSTS header
 sunshinepress.org: could not connect to host
 sunyanzi.tk: could not connect to host
 suos.io: could not connect to host
 supcro.com: could not connect to host
 super-garciniaslim.com: could not connect to host
@@ -11127,16 +11123,17 @@ tatilbus.com: did not receive HSTS heade
 tatilmix.com: did not receive HSTS header
 tatt.io: could not connect to host
 tattvaayoga.com: did not receive HSTS header
 tauchkater.de: could not connect to host
 tavoittaja.fi: did not receive HSTS header
 tavopica.lt: did not receive HSTS header
 taxaudit.com: did not receive HSTS header
 taxbench.com: could not connect to host
+taxi-24std.de: did not receive HSTS header
 taxsnaps.co.nz: did not receive HSTS header
 tazj.in: did not receive HSTS header
 tazz.in: could not connect to host
 tc-bonito.de: did not receive HSTS header
 tcao.info: could not connect to host
 tcby45.xyz: could not connect to host
 tcdw.net: did not receive HSTS header
 tcl.ath.cx: did not receive HSTS header
@@ -11158,17 +11155,16 @@ teamblueridge.org: could not connect to 
 teamhood.io: did not receive HSTS header
 teampoint.cz: could not connect to host
 teamsocial.co: did not receive HSTS header
 teamup.rocks: did not receive HSTS header
 teamzeus.cz: could not connect to host
 tearoy.faith: did not receive HSTS header
 tech-blog.fr: did not receive HSTS header
 tech-finder.fr: could not connect to host
-tech-zealots.com: did not receive HSTS header
 tech55i.com: could not connect to host
 techandtux.de: could not connect to host
 techassist.io: did not receive HSTS header
 techcavern.ml: did not receive HSTS header
 techelements.co: did not receive HSTS header
 techfactslive.com: did not receive HSTS header
 techhipster.net: could not connect to host
 techhub.ml: could not connect to host
@@ -11187,19 +11183,18 @@ techproud.com: did not receive HSTS head
 techreview.link: could not connect to host
 techtoy.store: did not receive HSTS header
 techtraveller.com.au: did not receive HSTS header
 techview.link: max-age too low: 1209600
 tecnimotos.com: did not receive HSTS header
 tecnogaming.com: did not receive HSTS header
 tecture.de: did not receive HSTS header
 tedovo.com: did not receive HSTS header
-tedsdivingsystem.com: did not receive HSTS header
+tedsdivingsystem.com: could not connect to host
 tedxkmitl.com: could not connect to host
-teeplelaw.com: did not receive HSTS header
 tefl.io: did not receive HSTS header
 tegelsensanitaironline.nl: could not connect to host
 tehotuotanto.net: did not receive HSTS header
 tekiro.com: did not receive HSTS header
 teknologi.or.id: max-age too low: 36000
 teknotes.co.uk: could not connect to host
 tekshrek.com: did not receive HSTS header
 tel-dithmarschen.de: did not receive HSTS header
@@ -11272,24 +11267,23 @@ theamp.com: did not receive HSTS header
 theater.cf: could not connect to host
 theavenuegallery.com: did not receive HSTS header
 thebakingclass.com: max-age too low: 60
 thebasementguys.com: could not connect to host
 thebeautifulmusic.net: did not receive HSTS header
 thebeginningisnye.com: could not connect to host
 theberkshirescompany.com: could not connect to host
 thebigfail.net: could not connect to host
-thebreakhotel.com: did not receive HSTS header
 thebrightons.co.uk: did not receive HSTS header
 thebrightons.uk: could not connect to host
 thebrotherswarde.com: could not connect to host
 thecapitalbank.com: did not receive HSTS header
 thecharlestonwaldorf.com: did not receive HSTS header
 theclementinebutchers.com: could not connect to host
-thecloudrevolution.net: could not connect to host
+thecloudrevolution.net: did not receive HSTS header
 theclubjersey.com: did not receive HSTS header
 thecodeninja.net: did not receive HSTS header
 thecoffeehouse.xyz: could not connect to host
 thedrinks.co: did not receive HSTS header
 thedrop.pw: did not receive HSTS header
 thedystance.com: could not connect to host
 theelitebuzz.com: could not connect to host
 theendofzion.com: did not receive HSTS header
@@ -11303,17 +11297,17 @@ thefrozenfire.com: did not receive HSTS 
 thefutureharrills.com: could not connect to host
 thegamerscamp.com: max-age too low: 0
 thegemriverside.com.vn: did not receive HSTS header
 thego2swatking.com: could not connect to host
 thegoldregister.co.uk: could not connect to host
 thegreenpark.co.uk: did not receive HSTS header
 thegreenvpn.com: did not receive HSTS header
 thehiddenbay.eu: could not connect to host
-thehiddenbay.me: max-age too low: 0
+thehiddenbay.me: could not connect to host
 thehiddenbay.net: max-age too low: 0
 thehighersideclothing.com: did not receive HSTS header
 thehistory.me: could not connect to host
 thehonorguard.org: did not receive HSTS header
 thehoopsarchive.com: could not connect to host
 thehotfix.net: could not connect to host
 theimagesalon.com: max-age too low: 43200
 theinvisibletrailer.com: could not connect to host
@@ -11327,17 +11321,16 @@ themarble.co: could not connect to host
 themathbehindthe.science: could not connect to host
 themathematician.uk: could not connect to host
 themicrocapital.com: could not connect to host
 themoderate.xyz: could not connect to host
 thenarcissisticlife.com: did not receive HSTS header
 thenextstep.events: could not connect to host
 thenorthschool.org.uk: did not receive HSTS header
 theodorejones.info: could not connect to host
-theofleck.com: did not receive HSTS header
 thepartywarehouse.co.uk: did not receive HSTS header
 thepcweb.tk: could not connect to host
 thepiratebay.al: could not connect to host
 thepiratebay.poker: could not connect to host
 thepiratebay.tech: could not connect to host
 therise.ca: max-age too low: 300
 therockawaysny.com: did not receive HSTS header
 thesearchnerds.co.uk: did not receive HSTS header
@@ -11468,17 +11461,16 @@ tobias-bielefeld.de: did not receive HST
 tobiasmathes.com: could not connect to host
 tobiasmathes.name: could not connect to host
 tobiasofficial.at: could not connect to host
 tobiassachs.cf: could not connect to host
 tobiassachs.tk: could not connect to host
 todesschaf.org: could not connect to host
 todo.is: could not connect to host
 todobazar.es: could not connect to host
-todoscomciro.com: did not receive HSTS header
 tofu.im: could not connect to host
 togelonlinecommunity.com: did not receive HSTS header
 toka.sg: did not receive HSTS header
 tokenloan.com: could not connect to host
 tokobungaasryflorist.com: did not receive HSTS header
 tokobungadipadangflorist.com: did not receive HSTS header
 tokoone.com: could not connect to host
 tokotamz.net: could not connect to host
@@ -11508,16 +11500,17 @@ topdeskdev.net: could not connect to hos
 topdogsinflatables.co.uk: did not receive HSTS header
 topmarine.se: did not receive HSTS header
 topnewstoday.org: could not connect to host
 topnovini.com: did not receive HSTS header
 toppik.com.br: could not connect to host
 topshelfguild.com: could not connect to host
 toptenthebest.com: did not receive HSTS header
 toptranslation.com: did not receive HSTS header
+topwindowcleaners.co.uk: did not receive HSTS header
 topyx.com: did not receive HSTS header
 torahanytime.com: did not receive HSTS header
 torchl.it: could not connect to host
 torlock.download: could not connect to host
 torproject.org.uk: could not connect to host
 torrentdownloads.bid: could not connect to host
 torrenttop100.net: did not receive HSTS header
 torrentz.website: could not connect to host
@@ -11532,16 +11525,17 @@ totalsystemcare.com: did not receive HST
 totalworkout.fitness: did not receive HSTS header
 totem-eshop.cz: could not connect to host
 totoro.pub: did not receive HSTS header
 totot.net: did not receive HSTS header
 toucedo.de: could not connect to host
 touchbasemail.com: did not receive HSTS header
 touchpointidg.us: could not connect to host
 touchscreen-handy.de: did not receive HSTS header
+touchscreentills.com: did not receive HSTS header
 touchstonefms.co.uk: did not receive HSTS header
 touchtable.nl: did not receive HSTS header
 tourpeer.com: did not receive HSTS header
 toxme.se: did not receive HSTS header
 toyotamotala.se: could not connect to host
 tpbcdn.com: could not connect to host
 tpe-edu.com: could not connect to host
 tpms4u.at: did not receive HSTS header
@@ -11679,40 +11673,40 @@ twinkseason.co.uk: could not connect to 
 twinkseason.net: could not connect to host
 twinkseason.org: could not connect to host
 twinkseason.xyz: could not connect to host
 twist.party: could not connect to host
 twogo.com: did not receive HSTS header
 twolinepassbrewing.com: could not connect to host
 twolivelife.com: could not connect to host
 tx041cap.org: did not receive HSTS header
-txbi.de: did not receive HSTS header
+txbi.de: could not connect to host
 txclimbers.com: could not connect to host
 txcp01.com: did not receive HSTS header
 txcp02.com: did not receive HSTS header
 txf.pw: could not connect to host
 tylian.net: max-age too low: 0
 typeofweb.com: did not receive HSTS header
 typingrevolution.com: did not receive HSTS header
 tyreis.com: did not receive HSTS header
 tyrelius.com: did not receive HSTS header
 tyroproducts.eu: did not receive HSTS header
 tyroremotes.no: did not receive HSTS header
 tyskland.guide: could not connect to host
 tzappa.net: could not connect to host
 u-blox.com: max-age too low: 0
+u-master.net: did not receive HSTS header
 uadp.pw: could not connect to host
 uatgootax.ru: did not receive HSTS header
 uber.com.au: did not receive HSTS header
 ubercalculator.com: did not receive HSTS header
 uberfunction.com: did not receive HSTS header
 ubicloud.de: could not connect to host
 ublox.com: did not receive HSTS header
 ubuntuhot.com: could not connect to host
-ucfirst.nl: did not receive HSTS header
 uefeng.com: did not receive HSTS header
 uega.net: did not receive HSTS header
 ufgaming.com: did not receive HSTS header
 ufotable.uk: could not connect to host
 ugisgutless.com: could not connect to host
 ugo.ninja: could not connect to host
 ugosadventures.com: could not connect to host
 uhm.io: did not receive HSTS header
@@ -11803,16 +11797,17 @@ upldr.pw: could not connect to host
 uporoops.com: could not connect to host
 uprotect.it: could not connect to host
 upstats.eu: could not connect to host
 uptic.net: did not receive HSTS header
 ur-lauber.de: did not receive HSTS header
 urandom.eu.org: did not receive HSTS header
 urban-garden.lt: could not connect to host
 urban-garden.lv: could not connect to host
+urbanstylestaging.com: did not receive HSTS header
 urbpic.com: could not connect to host
 urlchomp.com: did not receive HSTS header
 urology.wiki: did not receive HSTS header
 urphp.com: could not connect to host
 us-immigration.com: did not receive HSTS header
 usaab.org: did not receive HSTS header
 usafuelservice.com: did not receive HSTS header
 usbirthcertificate.com: could not connect to host
@@ -11942,17 +11937,17 @@ vicianovi.cz: could not connect to host
 victorenxovais.com.br: could not connect to host
 victoriapemberton.com: did not receive HSTS header
 vid.me: did not receive HSTS header
 vidbuchanan.co.uk: did not receive HSTS header
 viddiaz.com: did not receive HSTS header
 videnskabsklubben.dk: did not receive HSTS header
 videomuz.com: could not connect to host
 videotogel.net: could not connect to host
-videoueberwachung-set.de: could not connect to host
+videoueberwachung-set.de: did not receive HSTS header
 vider.ga: could not connect to host
 vidid.net: could not connect to host
 vidiproject.com: did not receive HSTS header
 vidister.de: did not receive HSTS header
 vidz.ga: could not connect to host
 vietnamchevrolet.net: did not receive HSTS header
 vietnamphotographytours.com: could not connect to host
 viewsea.com: max-age too low: 0
@@ -12001,21 +11996,20 @@ vissersgrootboek.nl: did not receive HST
 vistarait.com: could not connect to host
 visualvotes.co.uk: could not connect to host
 vitagenda.nl: could not connect to host
 vitalita.cz: did not receive HSTS header
 vitalorange.com: max-age too low: 7889238
 vitta.me: did not receive HSTS header
 viva-french.com: did not receive HSTS header
 vivasports.com.br: could not connect to host
-vivianmaier.cn: did not receive HSTS header
 vivocloud.com: could not connect to host
 vivremoinscher.fr: did not receive HSTS header
 vizeat.com: did not receive HSTS header
-vladimiroff.org: could not connect to host
+vladimiroff.org: did not receive HSTS header
 vliegensvlug.services: max-age too low: 2592000
 vm0.eu: could not connect to host
 vmrdev.com: could not connect to host
 voceinveste.com: did not receive HSTS header
 voicesuk.co.uk: did not receive HSTS header
 voidserv.net: could not connect to host
 volbyzive.cz: did not receive HSTS header
 volcrado.com: did not receive HSTS header
@@ -12208,16 +12202,17 @@ wewillgo.org: did not receive HSTS heade
 wewlad.me: did not receive HSTS header
 wftda.com: did not receive HSTS header
 whatnext.limited: could not connect to host
 whats.io: could not connect to host
 whatsstalk.me: could not connect to host
 whatsyouroffer.co.uk: did not receive HSTS header
 wheresben.today: could not connect to host
 whisker.network: could not connect to host
+whistler-transfers.com: did not receive HSTS header
 whitehat.id: could not connect to host
 whiterabbit.org: did not receive HSTS header
 whiterabbitcakery.com: could not connect to host
 whiteroom.agency: did not receive HSTS header
 whitestagforge.com: could not connect to host
 whoclicks.net: could not connect to host
 whoisapi.online: could not connect to host
 wholebites.com: max-age too low: 7889238
@@ -12300,16 +12295,17 @@ woodmafia.com.au: could not connect to h
 woodworkertip.com: did not receive HSTS header
 woording.com: could not connect to host
 wootton95.com: could not connect to host
 wooviet.com: could not connect to host
 wordbits.net: did not receive HSTS header
 work-and-jockel.de: did not receive HSTS header
 workfone.io: could not connect to host
 workpermit.com.vn: could not connect to host
+worldchess.london: did not receive HSTS header
 worldlist.org: could not connect to host
 worldpovertysolutions.org: did not receive HSTS header
 worldsbeststory.com: did not receive HSTS header
 worldwhisperer.net: could not connect to host
 worshapp.com: could not connect to host
 wow-travel.eu: could not connect to host
 wowapi.org: could not connect to host
 wowinvasion.com: did not receive HSTS header
@@ -12354,17 +12350,17 @@ www-1117.com: could not connect to host
 www-39988.com: did not receive HSTS header
 www-507.net: could not connect to host
 www-746.com: could not connect to host
 www-771122.com: did not receive HSTS header
 www-8003.com: did not receive HSTS header
 www-88599.com: did not receive HSTS header
 www-9995.com: did not receive HSTS header
 www-djbet.com: did not receive HSTS header
-www-jinshavip.com: could not connect to host
+www-jinshavip.com: did not receive HSTS header
 www.cueup.com: could not connect to host
 www.cyveillance.com: did not receive HSTS header
 www.developer.mydigipass.com: could not connect to host
 www.elanex.biz: did not receive HSTS header
 www.gamesdepartment.co.uk: could not connect to host
 www.gpo.gov: did not receive HSTS header
 www.greplin.com: could not connect to host
 www.jitsi.org: did not receive HSTS header
@@ -12419,16 +12415,17 @@ xiaolvmu.me: could not connect to host
 xiaoxiao.im: could not connect to host
 xiliant.com: did not receive HSTS header
 ximage.me: did not receive HSTS header
 ximens.me: could not connect to host
 xinbiji.cn: could not connect to host
 xinghuokeji.xin: could not connect to host
 xisa.it: could not connect to host
 xivpn.com: could not connect to host
+xiyu.it: did not receive HSTS header
 xlboo.com: did not receive HSTS header
 xlfblog.com: did not receive HSTS header
 xlinar.com: did not receive HSTS header
 xmr.my: could not connect to host
 xmv.cz: could not connect to host
 xn--3lqp21gwna.xn--fiqs8s: could not connect to host
 xn--3lqp21gwna.xn--fiqz9s: could not connect to host
 xn--3lqt7ir4md4tzwa.cn: did not receive HSTS header
@@ -12506,23 +12503,22 @@ yamamo10.com: could not connect to host
 yameveo.com: did not receive HSTS header
 yanwh.xyz: did not receive HSTS header
 yaporn.tv: did not receive HSTS header
 yard-fu.com: could not connect to host
 yardbird.us: could not connect to host
 yarnhookup.com: did not receive HSTS header
 yasinaydin.net: did not receive HSTS header
 yasutomonodokoiko.com: did not receive HSTS header
-ycaaz.com: did not receive HSTS header
 ycc.wtf: could not connect to host
 ycm2.wtf: could not connect to host
 ydy.jp: could not connect to host
 yecl.net: did not receive HSTS header
 yello.website: could not connect to host
-yenibilgi.net: could not connect to host
+yenibilgi.net: did not receive HSTS header
 yenniferallulli.com: could not connect to host
 yenniferallulli.de: could not connect to host
 yenniferallulli.es: did not receive HSTS header
 yenniferallulli.moda: could not connect to host
 yenniferallulli.nl: could not connect to host
 yesdevnull.net: did not receive HSTS header
 yestees.com: did not receive HSTS header
 yetcore.io: could not connect to host
@@ -12599,18 +12595,17 @@ zaidanlebensmittelhandel.de: did not rec
 zakoncontrol.com: did not receive HSTS header
 zamorano.edu: could not connect to host
 zamos.ru: max-age too low: 0
 zaneweb.org: could not connect to host
 zao.fi: could not connect to host
 zaoshanghao-dajia.rhcloud.com: could not connect to host
 zap.yt: did not receive HSTS header
 zarooba.com: could not connect to host
-zary.me: did not receive HSTS header
-zavca.com: did not receive HSTS header
+zavca.com: could not connect to host
 zbasenem.pl: did not receive HSTS header
 zbigniewgalucki.eu: did not receive HSTS header
 zdravotnickasluzba.eu: could not connect to host
 zdrowiepaleo.pl: did not receive HSTS header
 zdx.ch: max-age too low: 0
 zebrababy.cn: could not connect to host
 zebry.nl: did not receive HSTS header
 zecrypto.com: could not connect to host
@@ -12637,17 +12632,16 @@ zeroml.ml: could not connect to host
 zerudi.com: did not receive HSTS header
 zeto365.pl: did not receive HSTS header
 zett4.me: max-age too low: 172800
 zeug.co: did not receive HSTS header
 zeytin.pro: could not connect to host
 zh1.li: could not connect to host
 zhang.wtf: could not connect to host
 zhangruilin.com: did not receive HSTS header
-zhangsidan.com: could not connect to host
 zhangzifan.com: did not receive HSTS header
 zhaojin97.cn: could not connect to host
 zhendingresources.com: could not connect to host
 zhh.in: could not connect to host
 zhihua-lai.com: did not receive HSTS header
 zhiin.net: did not receive HSTS header
 zhome.info: could not connect to host
 zhuji.com.cn: could not connect to host
@@ -12671,17 +12665,17 @@ zkillboard.com: did not receive HSTS hea
 zking.ga: could not connect to host
 zlcp.com: could not connect to host
 zmsastro.co.za: did not receive HSTS header
 zmy.im: did not receive HSTS header
 znacite.com: did not receive HSTS header
 zocken.com: did not receive HSTS header
 zoe.vc: could not connect to host
 zohar.link: could not connect to host
-zollihood.ch: did not receive HSTS header
+zollihood.ch: could not connect to host
 zolotoy-standart.com.ua: did not receive HSTS header
 zomiac.pp.ua: could not connect to host
 zonadebolsa.es: did not receive HSTS header
 zoneminder.com: did not receive HSTS header
 zoners.si: did not receive HSTS header
 zonky.io: could not connect to host
 zoo24.de: did not receive HSTS header
 zoofaeth.de: did not receive HSTS header
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*****************************************************************************/
 /* This is an automatically generated file. If you're not                    */
 /* nsSiteSecurityService.cpp, you shouldn't be #including it.     */
 /*****************************************************************************/
 
 #include <stdint.h>
-const PRTime gPreloadListExpirationTime = INT64_C(1534105987786000);
+const PRTime gPreloadListExpirationTime = INT64_C(1534192657699000);
 %%
 0-1.party, 1
 0.me.uk, 1
 0005pay.com, 1
 00100010.net, 1
 0010100.net, 1
 00120012.net, 1
 00130013.net, 1
@@ -1245,16 +1245,17 @@ abvlbasketviganello.ch, 1
 abyssgaming.eu, 1
 abyssproject.net, 1
 ac-admin.pl, 1
 ac-epmservices.com, 1
 ac-town.com, 1
 ac0g.dyndns.org, 1
 academicexperts.us, 1
 academie-de-police.ch, 1
+academy4.net, 1
 academytv.com.au, 1
 acaeum.com, 1
 acampar.com.br, 1
 acaonegocios.com.br, 1
 acara-yoga.de, 1
 acat.io, 1
 acbrussels-used.be, 1
 accbay.com, 1
@@ -1953,17 +1954,16 @@ alexsergeyev.com, 1
 alexsexton.com, 1
 alexsinnott.me, 1
 alextaffe.com, 1
 alextjam.es, 1
 alextsang.net, 1
 alexvdveen.nl, 1
 alexvetter.de, 1
 alexwardweb.com, 1
-alexyang.me, 1
 alfa-tech.su, 1
 alfaperfumes.com.br, 1
 alfaponny.se, 1
 alfirous.com, 1
 algarmatic-automatismos.pt, 1
 algebraaec.com, 1
 alghanimcatering.com, 1
 algoentremanos.com, 1
@@ -2236,16 +2236,17 @@ ameho.me, 0
 amelandadventure.nl, 1
 amello.de, 1
 america.gov, 1
 americafamilylawcenter.org, 1
 american.dating, 1
 americandistribuidora.com, 1
 americanfoundationbr.com, 1
 americanmediainstitute.com, 1
+americanoutlawjeepparts.com, 1
 americasbasementcontractor.com, 1
 americkykongres.cz, 1
 amerigroup.com, 1
 ameriikanpoijat.org, 1
 amerimarkdirect.com, 1
 amerimex.cc, 1
 amesgen.de, 1
 amesvacuumrepair.com, 1
@@ -3759,17 +3760,16 @@ balancenaturalhealthclinic.ca, 1
 balboa.io, 1
 balcaonet.com.br, 1
 balconnr.com, 1
 balconsverdun.com, 1
 baldur.cc, 1
 balenciaspa.com, 1
 balia.de, 1
 balicekzdravi.cz, 1
-balidesignshop.com.br, 1
 balikonos.cz, 1
 balinese.dating, 1
 balist.es, 1
 baliyano.com, 1
 balkonien.org, 1
 ball.holdings, 1
 ballarin.cc, 1
 ballbusting-cbt.com, 1
@@ -5124,17 +5124,16 @@ bondagefetishstore.com, 1
 bondarenko.dn.ua, 1
 bondingwithbaby.ca, 1
 bondoer.fr, 1
 bondpro.gov, 1
 bondskampeerder.nl, 1
 bondtofte.dk, 1
 bonesserver.com, 1
 bonfi.net, 1
-bonibuty.com, 1
 bonifacius.be, 1
 bonita.com.br, 1
 bonnant-associes.ch, 1
 bonnant-partners.ch, 1
 bonnebouffe.fr, 1
 bonnieradvocaten.nl, 1
 bonnsustainabilityportal.de, 1
 bonnyprints.at, 1
@@ -6340,17 +6339,16 @@ cashsector.ga, 1
 casino-cash-flow.su, 1
 casino-cashflow.ru, 1
 casino-trio.com, 1
 casinobonuscodes.online, 1
 casinocashflow.ru, 1
 casinolistings.com, 1
 casinoonlinesicuri.com, 1
 casinoreal.com, 1
-casjay.cloud, 1
 casjay.com, 1
 casjay.info, 1
 casjaygames.com, 1
 caspar.ai, 1
 casperpanel.com, 1
 caspicards.com, 1
 cassimo.com, 1
 castible.de, 1
@@ -6515,16 +6513,17 @@ centennialradon.com, 1
 centerpereezd.ru, 0
 centerpoint.ovh, 1
 centillien.com, 0
 centio.bg, 1
 centos.pub, 1
 centos.tips, 1
 central4.me, 1
 centralbank.ae, 1
+centralcountiesservices.org, 1
 centralebigmat.eu, 1
 centralegedimat.eu, 1
 centralfor.me, 1
 centrallead.net, 1
 centralstatecu.org, 1
 centralvoice.org, 1
 centrationgame.com, 1
 centredaccueil.fr, 1
@@ -7668,16 +7667,17 @@ commania.co.kr, 1
 commco.nl, 1
 commechezvous.ch, 1
 commercial-academy.fr, 1
 commitsandrebases.com, 1
 common.io, 1
 commoncode.com.au, 1
 commoncode.io, 1
 commoncore4kids.com, 1
+community-cupboard.org, 1
 communityblog.fedoraproject.org, 1
 communitycodeofconduct.com, 1
 communityflow.info, 1
 communote.net, 1
 comodesinflamarlashemorroides.org, 1
 comodo.nl, 1
 comodormirmasrapido.com, 1
 comodosslstore.com, 1
@@ -7891,16 +7891,17 @@ cooldan.com, 1
 coole-fete.de, 1
 coolerssr.space, 1
 coolgifs.de, 1
 cooljs.me, 1
 coolpickz.com, 1
 coolprylar.se, 1
 coolrc.me, 1
 coolviewthermostat.com, 1
+coolvox.com, 1
 coopens.com, 1
 coor.fun, 1
 coore.jp, 1
 coorpacademy.com, 1
 copdfoundation.org, 1
 copperhead.co, 1
 copperheados.com, 1
 coptic-treasures.com, 1
@@ -7983,17 +7984,16 @@ cosmeticosnet.com.br, 1
 cosmiatria.pe, 1
 cosmodacollection.com, 1
 cosmofunnel.com, 1
 cosmundi.de, 1
 cosni.co, 1
 cosplayer.com, 1
 cospol.ch, 1
 costa-rica-reisen.ch, 1
-costa-rica-reisen.de, 1
 costablancavoorjou.com, 1
 costcofinance.com, 1
 costinstefan.eu, 1
 costreportdata.com, 0
 costulessdirect.com, 1
 coteries.com, 1
 cotonea.de, 1
 cotonmusic.ch, 1
@@ -8782,16 +8782,17 @@ darknetlive.com, 1
 darknight.blog, 1
 darkserver.fedoraproject.org, 1
 darkserver.stg.fedoraproject.org, 1
 darkshop.nl, 1
 darkside.re, 1
 darktime.ru, 1
 darkwater.info, 1
 darkx.me, 1
+darlastudio66.com, 1
 darlo.co.uk, 0
 darom.jp, 1
 darookee.net, 1
 daropia.org, 1
 darrenellis.xyz, 1
 darrenm.net, 1
 darrienworth.com, 1
 darshnam.com, 1
@@ -10076,16 +10077,17 @@ dotsiam.com, 1
 douai.me, 1
 doubleaste.com, 1
 doubleavineyards.com, 1
 doublefun.net, 1
 doublestat.me, 1
 doubleup.com.au, 1
 doucheba.gs, 0
 dougferris.id.au, 1
+douglasstafford.com, 1
 doujin-domain.cz, 1
 doujin.nagoya, 1
 doujinshi.info, 1
 dounats.com, 1
 douzer.de, 1
 dovenzorgmalawi.nl, 1
 dovro.de, 1
 downloadaja.com, 1
@@ -10398,16 +10400,17 @@ dusmomente.com, 1
 dusnan.com, 1
 dustplanet.de, 1
 dustri.org, 1
 dustycloth.com, 1
 dustygroove.com, 1
 dustyspokesbnb.ca, 1
 dutch.desi, 1
 dutch1.nl, 1
+dutchessuganda.com, 1
 dutchrank.nl, 1
 dutchwanderers.nl, 1
 dutchweballiance.nl, 1
 dvbris.co.uk, 1
 dvbris.com, 1
 dvdland.com.au, 1
 dvhosting.be, 1
 dvnatura.ch, 1
@@ -10631,32 +10634,34 @@ echoactive.com, 1
 echoanalytics.com, 1
 echodio.com, 1
 echofoxtrot.co, 1
 echomanchester.net, 1
 echopaper.com, 1
 echosim.io, 1
 echosixmonkey.com, 1
 echosystem.fr, 1
+echoteam.gq, 1
 echoteen.com, 1
 echoworld.ch, 1
 ecirtam.net, 1
 eckel.co, 1
 eclipse.ws, 1
 ecnetworker.com, 1
 eco-derattizzazione.it, 1
 eco-work.it, 1
 ecoccinelles.ch, 1
 ecoccinelles.com, 1
 ecococon.fr, 1
 ecocreativity.org, 1
 ecodedi.com, 1
 ecodigital.social, 1
 ecogen.com.au, 1
 ecogen.net.au, 1
+ecoheatcool.co.uk, 1
 ecohostingservices.uk, 1
 ecolala.my, 1
 ecole-attalens.ch, 1
 ecole-iaf.fr, 1
 ecoledusabbat.org, 1
 ecolemathurincordier.com, 1
 ecolife-vrn.ru, 1
 ecompen.co.za, 1
@@ -10675,16 +10680,17 @@ ecosoftconsult.com, 1
 ecosound.ch, 1
 ecosystem.atlassian.net, 1
 ecoterramedia.com, 1
 ecotur.org, 1
 ecovision.com.br, 1
 ecpannualmeeting.com, 1
 ecrandouble.ch, 1
 ectora.com, 1
+ecupcafe.com, 0
 ed.gs, 1
 ed4becky.net, 1
 edakoe.ru, 1
 edanni.io, 1
 edd-miles.com, 1
 eddesign.ch, 1
 eddmil.es, 1
 eddokloosterman.com, 1
@@ -11333,40 +11339,17 @@ epistas.com, 1
 epistas.de, 1
 epiteugma.com, 1
 epizentrum.work, 1
 epizentrum.works, 1
 epmcentroitalia.it, 1
 epo32.ru, 1
 epoch.com, 1
 epolitiker.com, 1
-epos-distributor.co.uk, 1
-eposbirmingham.co.uk, 1
-eposbrighton.co.uk, 1
-eposbristol.co.uk, 1
-eposcardiff.co.uk, 1
-eposcloud.net, 1
-eposkent.co.uk, 1
-eposleeds.co.uk, 1
-eposleicester.co.uk, 1
-eposliverpool.co.uk, 1
-eposlondon.co.uk, 1
-eposmidlands.co.uk, 1
-eposnewport.co.uk, 1
-eposnottingham.co.uk, 1
-eposreading.co.uk, 1
-eposreview.co.uk, 1
-epossheffield.co.uk, 1
-epossurrey.co.uk, 1
-epossussex.co.uk, 1
-eposswansea.co.uk, 1
-epossystems.co.uk, 1
 epostplus.li, 1
-eposwales.co.uk, 1
-eposyork.co.uk, 1
 eppelblei.lu, 1
 eppelduerferjugend.lu, 1
 eppelpress.lu, 1
 epreskripce.cz, 1
 eprofitacademy.com, 1
 epsilon.dk, 1
 epsorting.cz, 1
 epublibre.org, 1
@@ -11378,17 +11361,16 @@ equalcloud.com, 1
 equalparts.eu, 1
 equidam.com, 1
 equinecoaching.ca, 1
 equinetherapy.ca, 1
 equinox.io, 1
 equipandoloja.net.br, 1
 equipedefrance.tv, 1
 equipeferramentas.com.br, 1
-equippers.de, 1
 equipsupply.com, 1
 er-music.com, 1
 er.tl, 1
 erad.fr, 1
 erasmusplusrooms.com, 1
 erath.fr, 1
 erclab.kr, 1
 erdethamburgeronsdag.no, 1
@@ -11682,16 +11664,17 @@ estafallando.es, 1
 estafallando.mx, 1
 estaleiro.org, 1
 estan.cn, 1
 estateczech-eu.ru, 1
 estcequejailaflemme.fr, 1
 estcequonmetenprodaujourdhui.info, 1
 esteam.se, 1
 estedafah.com, 1
+estespr.com, 1
 esteticanorte.com.br, 1
 estetista.net, 1
 estilopack-loja.com.br, 1
 estoic.net, 1
 estoniantrade.ee, 1
 estonoentraenelexamen.com, 1
 estoqueinformatica.com.br, 1
 estrietoit.com, 0
@@ -12042,16 +12025,17 @@ extratorrent.world, 1
 extreme-gaming.de, 1
 extreme-gaming.us, 1
 extreme-players.com, 1
 extreme-players.de, 1
 extreme.co.th, 1
 extrememanual.net, 1
 exvs.org, 1
 exyplis.com, 1
+eyasc.nl, 1
 eydesignguidelines.com, 1
 eyecandy.gr, 1
 eyeglasses.com, 0
 eyelashconcept.com, 1
 eyeonid.com, 1
 eyep.me, 1
 eyes-berg.ch, 1
 eyes-berg.com, 1
@@ -12302,17 +12286,16 @@ fashionunited.se, 1
 fashionweekweb.com, 1
 faspirits.co.uk, 1
 faspirits.com, 1
 fassaden-selleng.de, 1
 fassadenverkleidung24.de, 1
 fassi-sport.it, 1
 fastaim.de, 1
 fastbackmbg.be, 1
-fastbackmbm.be, 1
 fastcash.com.br, 1
 fastcommerce.org, 1
 fastconfirm.com, 1
 fastforwardthemes.com, 1
 fastmail.com, 0
 fastonline.ro, 1
 fastpresence.com, 1
 fastrevision.com, 1
@@ -12779,16 +12762,17 @@ fleurenplume.fr, 1
 fleurette.me, 1
 flexapplications.se, 1
 flexdrukker.nl, 1
 fleximus.org, 0
 flexinvesting.fi, 1
 flexport.com, 1
 flexstart.me, 1
 flextrack.dk, 1
+flextribly.xyz, 1
 fliacuello.com.ar, 1
 flightdeckfriend.com, 1
 flightmedx.com, 1
 flightschoolbooking.com, 1
 flightschoolcandidates.gov, 1
 flightzero.cf, 1
 fliino.com, 1
 fliino.eu, 1
@@ -12838,17 +12822,16 @@ florisvdk.net, 1
 floriswesterman.nl, 1
 flosch.at, 0
 floseed.fr, 1
 floskelwolke.de, 1
 floth.at, 1
 flow.su, 1
 flowcom.de, 1
 flowcount.xyz, 1
-flowerandplant.org, 1
 flowersbylegacy.com, 1
 flowinvoice.com, 1
 flowreader.com, 1
 flox.io, 1
 floydm.com, 1
 flra.gov, 1
 flucky.xyz, 0
 flucto.com, 1
@@ -13038,18 +13021,16 @@ fortricks.in, 1
 fortuna-loessnitz.de, 1
 fortuna-s.com, 1
 fortworth.ch, 1
 forty-two.nl, 1
 forty8creates.com, 1
 fortytwo.cloud, 1
 forum-bonn.de, 1
 forum-heg.ch, 1
-forum-kinozal-tv.appspot.com, 1
-forum-kinozal.appspot.com, 1
 forum.linode.com, 0
 forum3.ru, 1
 forumvoordemocratie.nl, 1
 forvisualdesign.com, 1
 forward-fly-fishing.ch, 1
 foryouandyourcustomers.com, 1
 foryourhealthybody.com, 1
 foscamcanada.com, 1
@@ -13676,17 +13657,16 @@ gameofpwnz.com, 1
 gamepad.com.br, 1
 gamercredo.com, 1
 gamereader.de, 1
 gamerezo.com, 1
 gamerpoets.com, 1
 gamerz-stream.com, 1
 gamerzdot.com, 1
 games4theworld.org, 1
-gameserver-sponsor.me, 1
 gameshowchallenge.ie, 1
 gamesplanet.com, 1
 gamesputnik.ru, 1
 gamestats.gg, 1
 gameswitchers.uk, 1
 gametium.com, 1
 gametium.es, 1
 gamhealth.net, 1
@@ -14121,16 +14101,17 @@ giduv.com, 1
 giebel.it, 1
 giegler.software, 1
 gierds.de, 1
 giethoorn.com, 1
 giftedconsortium.com, 1
 giftking.nl, 0
 giftmaniabrilhos.com.br, 1
 gifts365.co.uk, 1
+giftservices.nl, 1
 giftsn.com.sg, 0
 gifzilla.net, 0
 gig-raiffeisen.de, 1
 gig.ru, 0
 giga.nl, 1
 gigabitz.pw, 1
 gigacog.com, 1
 gigantism.com, 1
@@ -14211,17 +14192,17 @@ gixtools.uk, 1
 gizmo.ovh, 1
 gj-bochum.de, 1
 gjcampbell.co.uk, 1
 gjengset.com, 1
 gjspunk.de, 0
 gjung.com, 0
 gkimanyar.org, 1
 gkralik.eu, 1
-gkvsc.de, 1
+gkvsc.de, 0
 gl.search.yahoo.com, 0
 glabiatoren-kst.de, 1
 glaciernursery.com, 1
 gladwellentertainments.co.uk, 1
 glahcks.com, 1
 glamguru.co.il, 1
 glamguru.world, 1
 glamour4you.de, 1
@@ -14319,17 +14300,16 @@ gmx.fr, 1
 gmx.net, 1
 gn00.com, 1
 gnax.jp, 1
 gnetion.com, 1
 gnetwork.eu, 1
 gnhub.org, 1
 gnilebein.de, 1
 gnom.me, 1
-gnosticjade.net, 1
 gnucashtoqif.us, 1
 gnunet.org, 1
 gnwp.eu, 1
 gnylf.com, 1
 go-embedded.de, 1
 go-zh.org, 1
 go.xero.com, 0
 goa8.xyz, 1
@@ -14662,17 +14642,16 @@ grepular.com, 1
 gresak.io, 1
 greuel.online, 1
 greve.xyz, 1
 grexx.co.uk, 1
 grexx.de, 1
 grey.house, 1
 greybit.net, 1
 greyhash.se, 1
-greysky.me, 1
 greyskymedia.com, 1
 greysolutions.it, 1
 greywizard.com, 1
 grh.am, 1
 griechische-pfoetchen.de, 1
 grieg-gaarden.no, 1
 grieg.com, 1
 grieg.net, 1
@@ -15022,17 +15001,16 @@ haleo.net, 1
 half-logic.eu.org, 1
 halfco.de, 1
 halfwaythere.eu, 1
 halitopuroprodutos.com.br, 1
 halkirkbouncycastles.co.uk, 1
 halkyon.net, 1
 hallelujahsoftware.com, 1
 halletienne.fr, 1
-hallettxn.com, 1
 hallhuber.com, 1
 halliday.work, 1
 halligladen.de, 1
 hallmarkestates.ca, 1
 hallucinogen.com, 1
 hallucinogens.org, 1
 halo.fr, 1
 halongbaybackpackertour.com, 1
@@ -15538,17 +15516,16 @@ hexobind.com, 1
 hexony.com, 1
 hexr.org, 1
 hexxagon.com, 1
 heycms.com, 0
 heyfringe.com, 1
 heyjournal.com, 1
 hf-tekst.nl, 1
 hf51.nl, 1
-hfbg.nl, 1
 hfi.me, 0
 hfu.io, 1
 hg.python.org, 1
 hg0088.vip, 1
 hg525.com, 1
 hg718.com, 1
 hg71801.com, 1
 hg71802.com, 1
@@ -15791,16 +15768,17 @@ hokioisecurity.com, 1
 holad.de, 1
 holboxwhalesharktours.com, 1
 holebedeljek.hu, 1
 holidayincotswolds.co.uk, 1
 holidaysportugal.eu, 1
 holisticacupuncture.com.au, 1
 holistichealer.in, 1
 holisticon.de, 1
+hollandguns.com, 1
 hollermann.eu, 1
 hollo.me, 1
 hollowpoint.xyz, 1
 hollowrap.com, 1
 hollyforrest.ca, 1
 hollyforrestphotography.ca, 1
 holmesian.org, 1
 holmq.dk, 1
@@ -15853,16 +15831,17 @@ homeserver-kp.de, 1
 homesfordinner.ca, 1
 homesteadfarm.org, 1
 homewatt.co.uk, 1
 homeyou.com, 1
 hommeatoutfaire.be, 1
 homoglyph.net, 1
 homophoni.com, 1
 hompus.nl, 0
+homyremedies.com, 1
 honda-centrum.cz, 1
 hondart.cz, 1
 hondenoppasfraneker.nl, 1
 honey.is, 1
 honeybadger.io, 0
 honeybeard.co.uk, 1
 honeycome.net, 1
 honeycreeper.com, 1
@@ -16197,16 +16176,17 @@ husic.net, 0
 husky.xyz, 1
 huskyinc.us, 1
 hussam.eu.org, 1
 hustle.com, 1
 hustle.life, 1
 hustlehope.com, 1
 hustunique.com, 1
 huto.ml, 1
+huutonauru.net, 1
 huwcbjones.co.uk, 1
 huwcbjones.uk, 1
 huwjones.me, 1
 huxley.net, 1
 huzurmetal.net, 1
 hvdbox.de, 1
 hverdagogkink.no, 1
 hvh.no, 1
@@ -16491,17 +16471,16 @@ ifsclist.com, 1
 ifsr.de, 1
 iftrue.de, 1
 ifxnet.com, 1
 ifyou.live, 1
 ig.com, 1
 iga-semi.jp, 1
 igamingforums.com, 1
 igcc.jp, 1
-igd.chat, 1
 igglabs.com, 1
 iggprivate.com, 1
 iggsoft.com, 1
 iggsoftware.com, 1
 igiftcards.de, 1
 igimusic.com, 1
 igk.nz, 1
 igm-be.ch, 1
@@ -16753,16 +16732,17 @@ index-games.com, 1
 index-mp3.com, 1
 indiaflowermall.com, 1
 indian-elephant.com, 1
 indianaantlersupply.com, 1
 indianaberry.com, 1
 indianaffairs.gov, 0
 indiawise.co.uk, 1
 indicateurs-flash.fr, 1
+indieethos.com, 1
 indiegame.space, 1
 indievelopment.nl, 1
 indigoinflatables.com, 1
 indigosakura.com, 1
 indiraactive.com, 1
 inditip.com, 1
 indogerman.de, 1
 indogermanstartup.com, 1
@@ -16799,17 +16779,16 @@ infinite.hosting, 1
 infinitegroup.info, 1
 infinitiofallentownparts.com, 1
 infinitiofaugustaparts.com, 1
 infinitioflynnwoodparts.com, 1
 infinitiofmarinparts.com, 1
 infinity.to, 1
 infinitybas.com, 1
 infinityengine.org, 1
-infinityepos.co.uk, 1
 infirmiere-canadienne.com, 1
 infirmieredevie.ch, 1
 inflatablehire-scotland.co.uk, 1
 inflatablesny.com, 1
 inflatadays.co.uk, 1
 inflatamania.com, 1
 inflexsys.com, 1
 influencerchampions.com, 1
@@ -17297,16 +17276,17 @@ isitnuclearwaryet.com, 1
 isitup.org, 1
 iskaron.de, 1
 iskkk.com, 1
 iskogen.nu, 1
 islam.si, 1
 islandhosting.com, 1
 islandinthenet.com, 1
 islandoilsupply.com, 1
+islandpumpandtank.com, 1
 islazia.fr, 1
 isletech.net, 1
 isliada.org, 1
 islief.com, 1
 ismat.com, 1
 ismena.bg, 1
 ismywebsitepenalized.com, 1
 isn.cz, 1
@@ -17551,16 +17531,17 @@ jabbari.io, 1
 jabbas.eu, 1
 jabber.at, 1
 jabberfr.org, 1
 jabberzac.org, 1
 jaberg-rutschi.ch, 1
 jabergrutschi.ch, 1
 jability.ovh, 1
 jabjab.de, 1
+jaccblog.com, 1
 jacekowski.org, 1
 jackdawphoto.co.uk, 1
 jackdelik.de, 1
 jackf.me, 1
 jackingramnissanparts.com, 1
 jackops.com, 1
 jackpothappy.com, 1
 jackrusselterrier.com.br, 1
@@ -18359,17 +18340,16 @@ juni.io, 1
 juniperroots.ca, 1
 juniwalk.cz, 1
 junkdrome.org, 1
 jurassicbarkharrogate.co.uk, 1
 jurassicgolf.nl, 1
 juridiqueo.com, 1
 juridoc.com.br, 1
 jurijbuga.de, 1
-jurisprudent.by, 1
 juristeo.com, 1
 jurko.cz, 1
 jurriaan.ninja, 1
 just-a-clanpage.de, 1
 just-pools.co.za, 1
 just2trade.com, 1
 justanothercompany.name, 1
 justbelieverecovery.com, 1
@@ -18771,16 +18751,17 @@ kenners.org, 1
 kennethaasan.no, 1
 kennethferguson.com, 1
 kennethlim.me, 1
 kenneths.org, 1
 kenny-peck.com, 1
 kennynet.co.uk, 1
 keno.im, 1
 kenokallinger.at, 1
+kenoschwalb.com, 1
 kenrogers.co, 0
 kens.pics, 1
 kensbouncycastles.co.uk, 1
 kentec.net, 1
 kenterlis.gr, 1
 kenvix.com, 0
 kenx5.eu.org, 1
 kenyons.info, 1
@@ -19412,17 +19393,17 @@ kromamoveis.com.br, 1
 kromonos.net, 1
 kronaw.it, 1
 krony.de, 1
 kroon.email, 1
 kropkait.pl, 1
 krouzkyliduska.cz, 1
 krsn.de, 1
 krugermillions.org, 1
-krugoval.hr, 1
+krugoval.hr, 0
 kruin.net, 1
 kruisselbrink.com, 1
 kruk.co, 1
 krumberconsulting.com, 1
 krupa.net.pl, 0
 krutka.cz, 1
 kruu.de, 1
 kruzhki-s-kartinkami.ru, 1
@@ -21119,17 +21100,16 @@ maartenterpstra.xyz, 1
 maartenvandekamp.nl, 1
 maaya.jp, 1
 maayogashram.com, 1
 mabankonline.com, 1
 mabulledu.net, 1
 mac-i-tea.ch, 1
 mac-world.pl, 1
 mac1.net, 1
-macandtonic.com, 1
 macaque.io, 0
 macaw.nl, 1
 macaws.org, 1
 maceinturecuir.com, 1
 maces-net.de, 1
 mach-politik.ch, 1
 macha.cloud, 1
 machbach.com, 1
@@ -21770,17 +21750,16 @@ matthieuschlosser.fr, 1
 matthijssen.info, 1
 mattia98.org, 1
 mattiascibien.net, 1
 mattisam.com, 1
 mattli.us, 1
 mattmccutchen.net, 1
 mattmcshane.com, 1
 mattonline.me, 1
-mattwb65.com, 1
 mattwservices.co.uk, 1
 matviet.vn, 1
 matze.co, 1
 matze.org, 0
 mauerwerkstag.info, 1
 mauldincookfence.com, 1
 mauran.me, 1
 maurice-walker.com, 1
@@ -21791,16 +21770,17 @@ maury-moteurs.com, 1
 mavenclinic.com, 1
 mavensecurity.com, 1
 maveris.com, 1
 mawidabp.com, 1
 mawidaca.com, 1
 max-moeglich.de, 1
 max-went.pl, 1
 max.gov, 1
+maxbeenen.de, 1
 maxbruckner.de, 1
 maxbruckner.org, 1
 maxbytes.nl, 0
 maxchan.info, 1
 maxdev72.freeboxos.fr, 1
 maxfox.me, 1
 maxhamon.ovh, 1
 maxhoechtl.at, 1
@@ -22011,16 +21991,17 @@ medicare-providers.net, 1
 medicarecoveragefinder.com, 1
 medicareinfo.org, 1
 medicinesfast.com, 0
 medicinia.com.br, 1
 medicinskavranje.edu.rs, 1
 medicocompetente.it, 1
 medicoresponde.com.br, 1
 medienweite.de, 1
+medifab.online, 1
 medifi.com, 1
 medigap-quote.net, 1
 medinside.ch, 1
 medinside.li, 1
 medinsider.ch, 1
 medinsider.li, 1
 medireport.fr, 1
 mediter-simplement.com, 1
@@ -22110,17 +22091,16 @@ meine-reise-gut-versichert.de, 1
 meinezwangsversteigerung.de, 1
 meinstartinsleben.com, 1
 meinstartinsleben.de, 1
 meinv.asia, 1
 meisterritter.de, 1
 meizufans.eu, 1
 meklon.net, 1
 mekongeye.com, 1
-melakaltenegger.at, 1
 melaniebernhardt.com, 1
 melaniegruber.de, 1
 melbourne.dating, 1
 melbourneapartments.website, 1
 melchizedek-forum.de, 1
 meldcode-assistent.nl, 1
 melearning.university, 0
 meledia.com, 0
@@ -22542,16 +22522,17 @@ minepay.net, 1
 minepic.org, 1
 minepod.fr, 1
 minerstat.com, 1
 minerva2015.it, 1
 minesouls.fr, 1
 minetude.com, 1
 minez-nightswatch.com, 0
 minf3-games.de, 1
+mingming.info, 1
 mingram.net, 1
 mingwah.ch, 1
 mingy.ddns.net, 1
 mingyueli.com, 1
 minhanossasenhora.com.br, 1
 mini2.fi, 1
 minigames.com, 1
 minigolf-reisinger.com, 1
@@ -22599,17 +22580,16 @@ mirch.com, 1
 mirco-grams.de, 1
 mireiaseuba.com, 1
 mireillewendling.com.br, 1
 mireservaonline.es, 1
 mirkofranz.de, 1
 mirodasilva.be, 1
 mironet.cz, 1
 mirrorsedgearchive.de, 1
-mirrorsedgearchive.ga, 1
 mirshak.com, 1
 mirtes.cz, 1
 mirtouf.fr, 1
 mirucon.com, 1
 misakiya.co.jp, 1
 misclick.nl, 1
 misconfigured.io, 1
 miscreant.me, 1
@@ -23143,16 +23123,17 @@ mrevolution.eu, 1
 mrhc.ru, 1
 mrinalpurohit.in, 1
 mrizzio.com, 1
 mrjooz.com, 1
 mrkapowski.com, 1
 mrketolocksmith.com, 1
 mrknee.gr, 1
 mrksk.com, 1
+mrleonardo.com, 1
 mrliu.me, 1
 mrmoregame.de, 1
 mrnh.de, 1
 mrnh.tk, 1
 mrpropop.com, 1
 mrs-labo.jp, 1
 mrserge.lv, 1
 mrsk.me, 1
@@ -23922,16 +23903,17 @@ ncaq.net, 1
 ncc-efm.com, 1
 ncc-efm.org, 1
 ncc-qualityandsafety.org, 1
 nccemail.net, 1
 ncconsumer.org, 1
 ncdesigns-studio.com, 1
 ncea.net.au, 1
 nchangfong.com, 1
+nchristo.com, 1
 nclvle.co.uk, 1
 ncrmnt.org, 1
 ncsccs.com, 1
 ncstep.org, 1
 ndarville.com, 1
 ndbt.com, 1
 ndcpolipak.com, 1
 ndeoffshore.com, 1
@@ -24116,16 +24098,17 @@ netlocal.ru, 1
 netmagicas.com.br, 1
 netmeister.org, 1
 netnik.de, 1
 netnodes.net, 1
 netraising.com, 1
 netrelay.email, 1
 netrider.net.au, 0
 netronix.be, 1
+netsafeid.biz, 1
 netscaler.expert, 1
 netsight.org, 1
 netsigna.de, 1
 netsite.dk, 1
 netsoins.org, 1
 netsparker.com, 1
 netsparker.com.tr, 1
 netspeedia.net, 1
@@ -24207,17 +24190,16 @@ newfacialbeautycream.com, 1
 newfiepedia.ca, 1
 newgrowbook.com, 1
 newguidance.ch, 1
 newind.info, 1
 newizv.ru, 1
 newjianzhi.com, 1
 newkaliningrad.ru, 1
 newknd.com, 1
-newline.online, 1
 newmarketbouncycastlehire.co.uk, 1
 newmed.com.br, 1
 newmediaone.net, 1
 newmovements.net, 1
 newodesign.com, 1
 newpathintegratedtherapy.com, 1
 news47ell.com, 1
 newsa2.com, 1
@@ -26141,16 +26123,17 @@ pelotonimports.com, 1
 pemagrid.org, 1
 penaugustin.com, 1
 pencepay.com, 1
 pendriveapps.com, 1
 penetrationstest.se, 1
 penfold.fr, 1
 pengi.me, 1
 pengisatelier.net, 1
+pengui.uk, 1
 penguinprotocols.com, 1
 pengumuman.id, 1
 penispumpen.se, 1
 pennergold.net, 1
 pennyapp.io, 1
 pennyparkerpaper.com, 1
 penrithapartments.com.au, 1
 pens.com, 1
@@ -26249,16 +26232,17 @@ peterbruceharvey.com, 1
 peterdavehello.org, 1
 peterfiorella.com, 1
 peterfolta.net, 1
 peterhuetz.at, 1
 peterhuetz.com, 1
 peterjohnson.io, 1
 peterlew.is, 1
 petersontoscano.com, 1
+pethelpers.org, 1
 petit-archer.com, 1
 petite-maison.ch, 1
 petitsfrenchies.com, 1
 petja.me, 0
 petko.me, 1
 petlife.od.ua, 1
 petlife.vet, 1
 petmall.bg, 1
@@ -26767,17 +26751,16 @@ pluginsloaded.com, 1
 plumber-in-sandton.co.za, 1
 plumbingbenoni.co.za, 1
 plumbingcentral.com.au, 1
 plumbingglenvista.co.za, 1
 plumlocosoft.com, 1
 plumnet.ch, 1
 plumpie.net, 0
 plur.com.au, 1
-plural.cafe, 1
 plus-5.com, 1
 plus.google.com, 1
 plus.sandbox.google.com, 1
 plus1s.tk, 1
 pluscbdoil.com, 1
 plushev.com, 1
 pluslink.co.jp, 1
 plussizereviews.com, 1
@@ -27001,33 +26984,31 @@ portal.tirol.gv.at, 1
 portalcarriers.com, 1
 portalcentric.net, 1
 portalhubnuti.cz, 1
 portalisapres.cl, 1
 portalkla.com.br, 1
 portalmundo.xyz, 1
 portalzine.de, 1
 porte.roma.it, 1
-portefeuillesignalen.nl, 1
 portercup.com, 1
 porterranchelectrical.com, 1
 portofacil.com, 1
 portofala.pt, 1
 portofrotterdam.com, 0
 portosonline.pl, 1
 portraitsystem.biz, 1
 portsdebalears.gob.es, 1
 portsmouthbouncycastles.co.uk, 1
 portsmoutheic.com, 1
 portugalsko.net, 1
 portvaletickets.com, 1
 porybox.com, 1
 porzgmbh.de, 1
 posaunenchor-senden.de, 1
-posbank.co.uk, 1
 poseidonwaterproofing.com, 1
 poshcastles.co.uk, 1
 poshlashes.se, 1
 poshsecurity.com, 1
 posijson.stream, 1
 positionus.io, 1
 positive.com.cy, 1
 positivenames.net, 1
@@ -27076,16 +27057,17 @@ potrillionaires.com, 1
 potterscraftcider.com, 1
 pottersheartministry.org, 1
 pottshome.co.uk, 1
 potworowski.de, 1
 pouet.it, 1
 pouets.ovh, 1
 poupatempo.org, 1
 pourlesenfants.info, 1
+pourout.org, 1
 povareschka.ru, 1
 povesham.tk, 1
 powaclub.com, 1
 powdersnow.top, 1
 power-coonies.de, 1
 power-fit.org, 1
 power-flowengineer.com, 1
 power-meter.cc, 1
@@ -27795,16 +27777,17 @@ quantum-mechanics.com, 1
 quantum2.xyz, 1
 quantumfurball.net, 1
 quantumpair.net, 1
 quantumwebs.co, 1
 quanwuji.com, 1
 quanyin.eu.org, 1
 quareal.ru, 1
 quarkdose.de, 1
+quarryhillrentals.com, 1
 quarterfull.com, 1
 quartix.com, 1
 quartzclinical.com, 1
 quasarelectronics.co.uk, 1
 quasseldroid.info, 1
 quatrefoiscent.fr, 1
 quay.net, 1
 qubes-os.org, 1
@@ -28209,17 +28192,17 @@ recapp.ch, 1
 receitas-de-bolos.pt, 1
 receitasdebacalhau.pt, 1
 receptionsbook.com, 1
 recepty.eu, 0
 recetasfacilesdehacer.com, 1
 rechenknaecht.de, 1
 rechenwerk.net, 1
 recht-freundlich.de, 1
-rechtenliteratuurleiden.nl, 1
+rechtenliteratuurleiden.nl, 0
 rechtsanwaeltin-vollmer.de, 1
 rechtsanwalt-koeppen-feucht.de, 1
 rechtschreibpruefung24.de, 1
 recipex.ru, 1
 recipeyak.com, 1
 reckontalk.com, 1
 reclamebureau-ultrax.nl, 1
 reclametoolz.nl, 1
@@ -28289,16 +28272,17 @@ redit.com, 1
 redivis.com, 1
 redizoo.com, 1
 redletter.link, 1
 redlink.de, 1
 redneck-gaming.de, 1
 redneragenturen.org, 1
 rednoseday.com, 1
 rednsx.org, 1
+redperegrine.com, 1
 redporno.cz, 1
 redprice.by, 1
 redshield.co, 1
 redshiftcybersecurity.co.za, 1
 redshiftlabs.com.au, 1
 redshoeswalking.net, 1
 redsicom.com, 1
 redstickfestival.org, 1
@@ -28464,16 +28448,17 @@ rens.nu, 1
 rent-a-c.io, 1
 rent-a-coder.de, 1
 rentacaramerica.com, 1
 rentasweb.gob.ar, 1
 rentbrowser.com, 1
 rentinsingapore.com.sg, 1
 rentourhomeinprovence.com, 1
 renuo.ch, 1
+renyiyou.com, 1
 reorz.com, 1
 reox.at, 0
 repaik.com, 1
 repair.by, 1
 repaper.org, 1
 repaxan.com, 1
 replaceits.me, 1
 replicagunsswords.com, 0
@@ -28797,30 +28782,29 @@ ro.search.yahoo.com, 0
 roaddoc.de, 1
 roadguard.nl, 1
 roadtopgm.com, 1
 roams.es, 1
 roave.com, 1
 rob.uk.com, 1
 rob006.net, 1
 robandjanine.com, 1
-robbertt.com, 1
+robbertt.com, 0
 robdavidson.network, 1
 robert-flynn.de, 1
 robertabittle.com, 1
 robertattfield.com, 1
 robertg.me, 1
 robertglastra.com, 1
 roberthurlbut.com, 1
 robertkrueger.de, 1
 robertlysik.com, 1
 robertnemec.com, 1
 roberto-webhosting.nl, 1
 robertocasares.no-ip.biz, 1
-robertoentringer.com, 1
 robertof.ovh, 1
 robertreiser.photography, 1
 robertrijnders.nl, 1
 robertsmits.be, 1
 robhorstmanshof.nl, 1
 robi-net.it, 1
 robicue.com, 1
 robin-novotny.com, 1
@@ -28868,17 +28852,16 @@ rockinronniescastles.co.uk, 1
 rockitinflatables.co.uk, 1
 rockpesado.com.br, 1
 rockthebabybump.com, 1
 rockuse.com.br, 1
 rockymountainspice.com, 1
 rocssti.net, 1
 rodafe.sk, 1
 rodarion.pl, 1
-roddis.net, 1
 rodehutskors.net, 1
 rodeobull.biz, 1
 rodeohire.com, 1
 rodeosales.co.uk, 1
 rodevlaggen.nl, 1
 rodichi.net, 1
 rodinnebyvanie.eu, 1
 rodolfo.gs, 1
@@ -28917,16 +28900,17 @@ roguefortgame.com, 1
 roguesignal.net, 1
 roguetechhub.org, 1
 rohanbassett.com, 1
 rohedaten.de, 1
 rohitagr.com, 1
 rointe.online, 1
 roiscroll.com, 1
 roka9.de, 1
+roketix.co.uk, 1
 rokki.ch, 1
 rokort.dk, 1
 roksolana.be, 1
 rokudenashi.de, 1
 roland.io, 1
 rolandinsh.com, 1
 rolandreed.cn, 1
 rolandszabo.com, 1
@@ -29016,17 +29000,16 @@ roseofyorkbooking.com, 1
 roseparkhouse.com, 1
 rosesciences.com, 1
 rosetiger.life, 1
 rosevillefacialplasticsurgery.com, 1
 rosewoodranch.com, 1
 rosi-royal.com, 1
 roslynpad.net, 1
 rospa100.com, 1
-rossclark.com, 1
 rosset.me, 1
 rosset.net, 1
 rosslug.org.uk, 1
 rostov-avia.ru, 1
 rot47.net, 1
 rotek.at, 1
 roten.email, 1
 rothkranz.net, 1
@@ -29402,17 +29385,16 @@ salishseawhalewatching.ca, 1
 salixcode.com, 1
 salland1.nl, 1
 salle-quali.fr, 1
 sallydowns.name, 1
 sallysubs.com, 1
 salmo23.com.br, 1
 salmododia.net, 1
 salmonella.co.uk, 1
-salmonrecovery.gov, 1
 salmonvision.com.tw, 0
 salmos91.com, 1
 salmotierra-salvatierra.com, 1
 salon-claudia.ch, 1
 salon-minipli.de, 1
 salon.io, 0
 salon1.ee, 1
 salonestella.it, 1
@@ -29539,16 +29521,17 @@ saorsat.com, 1
 saorsat.ie, 1
 saorview.com, 1
 saorviewconnect.ie, 1
 saorviewconnected.ie, 1
 sapac.es, 1
 sapereaude.com.pl, 1
 sapien-ci.com, 1
 sapience.com, 1
+sapk.fr, 1
 saposute-s.jp, 1
 sapphireblue.me, 1
 sapphirepearl.com.sg, 1
 sapporobeer.com, 1
 sapprendre.ch, 1
 saprima.de, 1
 sapuncheta.com, 1
 saq.com, 1
@@ -30120,16 +30103,17 @@ sekisonn.com, 1
 selbys.net.au, 1
 selco-himejiminami.com, 1
 selcusters.nl, 1
 selected-properties.com, 1
 selectel.ru, 1
 selectorders.com, 1
 selegiline.com, 1
 selent.me, 1
+seleondar.ru, 1
 self-evident.org, 1
 self-signed.com, 1
 self-xss.info, 1
 self.nu, 1
 selfassess.govt.nz, 1
 selfdestruct.net, 1
 selfhosters.com, 1
 selfici.com, 1
@@ -30199,16 +30183,17 @@ seo.london, 1
 seo.tl, 1
 seoagentur2go.de, 1
 seoarchive.org, 1
 seobutler.com, 1
 seocomposer.com, 1
 seoexperte.berlin, 1
 seogeek.nl, 1
 seohochschule.de, 1
+seoinc.com, 1
 seoium.com, 1
 seokay.com, 1
 seolib.org, 1
 seomarketingdeals.com, 1
 seomen.biz, 1
 seon.me, 1
 seoprovider.nl, 1
 seoquake.com, 1
@@ -30320,17 +30305,16 @@ sevenicealimentos.com.br, 1
 sevenmatches.com, 1
 severine-trousselard.com, 1
 severntrentinsuranceportal.com, 1
 sevinci.ch, 1
 sevsey.ru, 1
 sevsopr.ru, 1
 sewafineseam.com, 1
 sewinginsight.com, 1
-sewoo.co.uk, 1
 sex-education.com, 1
 sexaki.com, 1
 sexdocka.nu, 1
 sexgarage.de, 1
 sexmobil.de, 1
 sexocomgravidas.com, 1
 sexpay.net, 1
 sexplicit.co.uk, 1
@@ -30427,16 +30411,17 @@ shansing.cn, 1
 shansing.com, 1
 shansing.net, 1
 shansing.space, 1
 shanxiapark.com, 1
 shaobin.wang, 1
 sharanyamunsi.net, 1
 sharealo.org, 1
 sharedhost.de, 1
+shareeri.com, 1
 sharelovenotsecrets.com, 1
 sharemessage.net, 1
 shareoffice.ch, 1
 sharepointdrive.com, 1
 sharescope.co.uk, 0
 shareselecttools.com, 1
 sharevari.com, 1
 shareworx.net, 1
@@ -30457,16 +30442,17 @@ shaunandamyswedding.com, 1
 shaunc.com, 1
 shaundanielz.com, 1
 shaunharker.com, 1
 shav.it, 1
 shavegazette.com, 1
 shavingks.com, 1
 shawcentral.ca, 0
 shawnhogan.com, 1
+shawnstarrcustomhomes.com, 1
 shawnwilkerson.com, 1
 shawnwilson.info, 1
 shazbots.org, 1
 shazzlemd.com, 1
 shazzlepro.com, 1
 sheaf.site, 1
 shearcomfort.com, 1
 sheehyinfinitioftysonsparts.com, 1
@@ -30785,16 +30771,17 @@ silvergoldbull.tt, 1
 silvergoldbull.tw, 1
 silvergoldbull.uy, 1
 silvergoldbull.uz, 1
 silvergoldbull.ws, 1
 silverlinkz.net, 1
 silverseen.com, 1
 silverstartup.sk, 1
 silverwind.io, 1
+silviamacallister.com, 1
 silvine.xyz, 1
 silvistefi.com, 1
 silvobeat.blog, 1
 silvobeat.com, 1
 sim-karten.net, 1
 sim-minaoshi.jp, 1
 sim-sim.appspot.com, 1
 sim4seed.org, 1
@@ -31117,16 +31104,17 @@ sloancom.com, 1
 slonep.net, 1
 slopeedge.com, 1
 slotboss.co.uk, 1
 slotcar.com, 0
 slotfara.com, 1
 slotfara.net, 1
 sloths.org, 1
 slotlist.info, 1
+slovakiana.sk, 1
 slovenskycestovatel.sk, 1
 slow.zone, 1
 slowb.ro, 1
 slowfood.es, 1
 slowgames.xyz, 1
 slpower.com, 1
 slrd-isperih.com, 1
 slse.ca, 1
@@ -31149,17 +31137,16 @@ smalle-voet.de, 1
 smallhadroncollider.com, 1
 smallpath.me, 1
 smallplanet.ch, 1
 smalltalkconsulting.com, 1
 smaltimento-rifiuti.org, 1
 smaltimento.caserta.it, 1
 smaltimento.napoli.it, 1
 smaltimentoamianto.latina.it, 1
-smaltimentorifiuti.veneto.it, 1
 smares.de, 1
 smart-cp.jp, 1
 smart-informatics.com, 1
 smart-shapes.co.uk, 1
 smart-wohnen.net, 1
 smart.gov, 1
 smartairkey.com, 1
 smartandcom.ch, 1
@@ -31242,16 +31229,17 @@ smskeywords.co.uk, 1
 smskmail.com, 1
 smsprivacy.org, 1
 smuhelper.cn, 1
 smuncensored.com, 1
 smutba.se, 1
 smutek.net, 1
 smx.net.br, 1
 snackbesteld.nl, 1
+snafarms.com, 1
 snafu.cz, 1
 snakafya.com, 1
 snake.dog, 1
 snap.com, 1
 snapappointments.com, 1
 snapappts.com, 1
 snapchat.com, 1
 snapfinance.com, 1
@@ -31551,17 +31539,16 @@ soundhunter.xyz, 0
 soundsecurity.io, 1
 souqtajmeel.com, 1
 sour.is, 1
 souravsaha.com, 1
 sourcebox.be, 1
 sourcecode.love, 1
 sourcely.net, 1
 sourceway.de, 1
-sourcitec.com, 1
 souris.ch, 1
 sous-surveillance.net, 1
 southafrican.dating, 1
 southambouncycastle.co.uk, 1
 southamerican.dating, 1
 southbankregister.com.au, 1
 southcoastkitesurf.co.uk, 1
 southernmost.us, 1
@@ -31725,17 +31712,16 @@ spookbook.net, 1
 spookquest.com, 1
 spookyinternet.com, 1
 spoopy.link, 1
 sporcard.com, 1
 spornkuller.de, 1
 sport-in-sundern.de, 1
 sport-potreby.cz, 1
 sport-potreby.sk, 1
-sport-socken.net, 1
 sport247.bet, 1
 sporter.com, 1
 sportflash.info, 1
 sportnesia.com, 1
 sportovnidum.cz, 1
 sportparks.com, 1
 sportparks.org, 1
 sportressofblogitude.com, 1
@@ -32122,17 +32108,16 @@ stevenbolgartersnakes.com, 1
 stevengoodpaster.com, 1
 stevenhumphrey.uk, 1
 stevenkwan.me, 1
 stevens.se, 1
 stevenski.com, 0
 steventress.com, 1
 steventruesdell.com, 1
 stevenwooding.com, 1
-stevenz.science, 1
 stevesdrivingschooltyneside.com, 1
 stewartswines.com, 1
 stewonet.nl, 1
 steyaert.be, 0
 stforex.com, 1
 stfw.info, 1
 stichtingliab.nl, 1
 stichtingscholierenvervoerzeeland.nl, 1
@@ -32185,27 +32170,27 @@ stocktrader.com, 1
 stodieck.com, 1
 stoebermehl.at, 1
 stoffelen.nl, 1
 stoffelnet.de, 1
 stoianlawfirm.com, 1
 stolina.de, 0
 stolkpotplanten.nl, 1
 stolkschepen.nl, 1
+stomadental.com, 1
 stomt.com, 1
 stonedworms.de, 1
 stonefusion.org.uk, 1
 stonehammerhead.org, 1
 stonemain.eu, 1
 stonemanbrasil.com.br, 1
 stonewuu.com, 1
 stony.com, 1
 stonystratford.org, 1
 stopakwardhandshakes.org, 1
-stopbreakupnow.org, 1
 stopbullying.gov, 1
 stopfraud.gov, 1
 stopthethyroidmadness.com, 1
 stordbatlag.no, 1
 store10.de, 0
 storedsafe.com, 1
 storgom.ua, 0
 storillo.com, 1
@@ -32450,17 +32435,16 @@ sun-wellness-online.com.vn, 1
 sunboxstore.jp, 1
 sunbritetv.com, 1
 sunchasercats.com, 1
 sundanceusa.com, 1
 sundayfundayjapan.com, 1
 suneilpatel.com, 1
 sunfeathers.net, 1
 sunfireshop.com.br, 1
-sunflyer.cn, 0
 sunfox.cz, 1
 sunfulong.blog, 1
 sunfulong.me, 1
 sunjaydhama.com, 1
 sunn.ie, 1
 sunsetwx.com, 1
 sunshinesf.org, 1
 sunsmartresorts.com, 1
@@ -32957,17 +32941,16 @@ tatildukkani.com, 1
 tatiloley.com, 1
 tatort-fanpage.de, 1
 tatsidou.gr, 1
 tattoo.dating, 1
 taunhanh.us, 1
 tavolaquadrada.com.br, 1
 tavsys.net, 1
 taxaroo.com, 1
-taxi-24std.de, 1
 taxi-chamonix.fr, 1
 taxi-collectif.ch, 1
 taxi-puck.pl, 1
 taxicollectif.ch, 1
 taxiindenbosch.nl, 1
 taxis-collectifs.ch, 1
 taxisafmatosinhos.pt, 1
 taxiscollectifs.ch, 1
@@ -33071,16 +33054,17 @@ tecart-system.de, 1
 tecartcrm.de, 1
 tech-blogger.net, 1
 tech-clips.com, 1
 tech-director.ru, 1
 tech-essential.com, 1
 tech-rat.com, 1
 tech-seminar.jp, 1
 tech-value.eu, 1
+tech-zealots.com, 1
 techace.jp, 1
 techademy.nl, 1
 techarea.fr, 1
 techask.it, 1
 techbelife.com, 1
 techbrown.com, 1
 techcentric.com, 0
 techcracky.com, 1
@@ -33156,16 +33140,17 @@ tee-idf.net, 1
 teebeedee.org, 1
 teedb.de, 1
 teehaus-shila.de, 1
 teemo.gg, 1
 teemperor.de, 1
 teemulintula.fi, 1
 teencounseling.com, 1
 teenerotic.net, 1
+teeplelaw.com, 1
 teesypeesy.com, 1
 teeworlds-friends.de, 1
 tefek.cz, 1
 tege-elektronik.hu, 1
 tehcrayz.com, 1
 tehplace.club, 1
 tehrabbitt.com, 0
 tehranperfume.com, 1
@@ -33424,16 +33409,17 @@ thebikeinsurer.co.uk, 1
 thebimhub.com, 1
 thebit.link, 1
 theblackknightsings.com, 1
 theblondeabroad.com, 1
 thebodyprinciple.com, 1
 thebouncedepartment.co.uk, 1
 thebouncyman.co.uk, 1
 theboxofcarlos.com, 1
+thebreakhotel.com, 1
 thebreakroom.org, 1
 thebte.com, 1
 thebuffalotavern.com, 1
 thecandidforum.com, 1
 thecarolingconnection.com, 1
 thecellulitediet.com, 1
 thecherryship.ch, 1
 thechunk.net, 1
@@ -33569,16 +33555,17 @@ thenexwork.com, 1
 thenib.com, 1
 thenichecast.com, 1
 thenocman.com, 1
 thenrdhrd.nl, 1
 theobromos.fr, 1
 theocharis.org, 1
 theodorahome.co, 1
 theodorahome.com.br, 1
+theofleck.com, 1
 theojones.name, 1
 theokonst.tk, 1
 theokouzelis.com, 1
 theoldbrewhouse.info, 1
 theoriginalbit.com, 1
 theory-test-online.co.uk, 1
 theory.org, 1
 theoscure.eu, 1
@@ -34095,16 +34082,17 @@ todacarreira.com, 1
 todaciencia.com, 1
 todamateria.com.br, 1
 todapolitica.com, 1
 todaymeow.com, 1
 todocracy.com, 1
 todoescine.com, 1
 todoist.com, 1
 todon.fr, 1
+todoscomciro.com, 1
 todosrv.com, 1
 toeglhofer.at, 1
 toeightycountries.com, 1
 toekomstperspectief.be, 1
 toerclub-ing-arnhem.nl, 1
 toetsplatform.be, 1
 tofa-koeln.de, 1
 tofe.io, 1
@@ -34285,17 +34273,16 @@ toponlinecasinosites.co.uk, 1
 topprice.ua, 1
 topshelfcommercial.com, 1
 topspeedgolf.com, 0
 toptec.net.br, 1
 toptexture.com, 1
 toptheto.com, 1
 topvertimai.lt, 1
 topwin.la, 1
-topwindowcleaners.co.uk, 1
 topworktops.co.uk, 1
 tor2web.org, 1
 toracon.org, 1
 torbay.ga, 1
 torbe.es, 1
 torchantifa.org, 1
 toretame.jp, 1
 toretfaction.net, 1
@@ -34346,17 +34333,16 @@ totch.de, 1
 totem-international.com, 1
 totobetty.com, 1
 totodil.es, 1
 totolabs.com, 1
 touch-up-net.com, 1
 touch.facebook.com, 0
 touch.mail.ru, 1
 touchoflife.in, 1
-touchscreentills.com, 1
 touchweb.fr, 1
 touchwoodtrees.com.au, 1
 tougetu.com, 1
 touha.me, 0
 touhou.ac.cn, 1
 touhou.cc, 1
 touhou.fm, 1
 touhouwiki.net, 1
@@ -34944,17 +34930,16 @@ tyroremotes.es, 1
 tyroremotes.eu, 1
 tyroremotes.fr, 1
 tyroremotes.nl, 1
 tysox.de, 1
 tysye.ca, 1
 tyuo-keibi.co.jp, 1
 tzifas.com, 1
 tzwe.com, 1
-u-master.net, 1
 u-metals.com, 1
 u-tokyo.club, 1
 u.nu, 1
 u03.fr, 1
 u1100.com, 1
 u1144.com, 1
 u175.com, 1
 u2fanlife.com, 1
@@ -34987,16 +34972,17 @@ ubis.company, 1
 ubis.group, 1
 ublaboo.org, 1
 uborcare.com, 1
 ubtce.com, 1
 uc.ac.id, 1
 ucac.nz, 0
 ucangiller.com, 1
 ucch.be, 1
+ucfirst.nl, 1
 uchargeapp.com, 1
 uclanmasterplan.co.uk, 1
 uclip.club, 1
 ucppe.org, 0
 ucrdatatool.gov, 1
 uctarna.online, 1
 udbhav.me, 1
 uddi.ng, 1
@@ -35280,17 +35266,16 @@ urban.melbourne, 1
 urbanesecurity.com, 1
 urbanfi.sh, 1
 urbanguerillas.de, 1
 urbanietz-immobilien.de, 1
 urbanmelbourne.info, 1
 urbanmic.com, 1
 urbannewsservice.com, 1
 urbansparrow.in, 1
-urbanstylestaging.com, 1
 urbanwildlifealliance.org, 0
 urbexdk.nl, 1
 urcentral.com, 1
 urcentral.net, 1
 urcentral.org, 1
 ureka.org, 1
 urgences-valais.ch, 1
 uripura.de, 1
@@ -35949,16 +35934,17 @@ vitrado.de, 1
 vitsoft.by, 1
 vivaldi-fr.com, 1
 vivaldi.club, 1
 vivaldi.com, 1
 vivamusic.es, 1
 vivanosports.com.br, 1
 vivatv.com.tw, 1
 vivendi.de, 1
+vivianmaier.cn, 1
 vivid-academy.com, 1
 vividinflatables.co.uk, 1
 vividlumen.com, 1
 viviennevandenbos.nl, 1
 vivirenelmundo.com, 1
 vivo.sx, 1
 vivoseg.com, 1
 vizards.cc, 1
@@ -36785,17 +36771,16 @@ whisky-circle.info, 1
 whiskyglazen.nl, 1
 whiskynerd.ca, 1
 whisp.ly, 0
 whispeer.de, 1
 whisperinghoperanch.org, 1
 whisperlab.org, 1
 whistleb.com, 1
 whistleblower.gov, 1
-whistler-transfers.com, 1
 whitby-brewery.com, 1
 whitealps.at, 1
 whitealps.be, 1
 whitealps.ch, 1
 whitealps.de, 1
 whitealps.fr, 1
 whitealps.net, 1
 whitebear.cloud, 1
@@ -37165,17 +37150,16 @@ workray.com, 1
 works-ginan.jp, 1
 workshopszwolle.nl, 1
 workshopzwolle.com, 1
 worksofwyoming.org, 1
 workwithgo.com, 1
 world-education-association.org, 1
 world-in-my-eyes.com, 1
 worldcareers.dk, 1
-worldchess.london, 1
 worldcigars.com.br, 1
 worldcrafts.org, 1
 worldcubeassociation.org, 1
 worldessays.com, 1
 worldeventscalendars.com, 1
 worldfree4.org, 1
 worldnettps.com, 1
 worldofbelia.de, 1
@@ -37545,17 +37529,16 @@ xilkoi.net, 1
 ximbo.net, 1
 xin-in.com, 1
 xin-in.net, 1
 xing-in.net, 1
 xing.ml, 1
 xingiahanvisa.net, 1
 xiqi.us, 1
 xirion.net, 1
-xiyu.it, 0
 xiyu.moe, 1
 xj8876.com, 1
 xjd.vision, 1
 xjjeeps.com, 1
 xjoi.net, 1
 xjoin.de, 1
 xjpvictor.info, 1
 xkblog.xyz, 1
@@ -37871,16 +37854,17 @@ yawnbox.com, 1
 yaxim.org, 1
 yazaral.com, 1
 ybin.me, 1
 ybresson.com, 1
 ybscareers.co.uk, 1
 ybsul.com, 1
 ybti.net, 1
 ybzhao.com, 1
+ycaaz.com, 1
 ych.art, 1
 ycherbonnel.fr, 1
 ychon.com, 1
 ychong.com, 1
 yclan.net, 1
 yd.io, 1
 yeapdata.com, 1
 yeesker.com, 1
@@ -38169,17 +38153,17 @@ yukonconnector.com, 1
 yukonlip.com, 1
 yukontec.com, 1
 yum.beer, 1
 yum0.cn, 1
 yumeconcert.com, 1
 yumli.net, 1
 yummylooks.com, 1
 yuna.love, 1
-yuna.tg, 1
+yuna.tg, 0
 yunity.org, 1
 yunjishou.pro, 1
 yunzhu.li, 1
 yuqi.me, 1
 yuricarlenzoli.it, 1
 yurikirin.me, 1
 yurimoens.be, 1
 yurinet.org, 1
@@ -38265,16 +38249,17 @@ zapatoshechoamano.pe, 1
 zapier.com, 1
 zappbuildapps.com, 0
 zarabiaj.com, 1
 zaratan.fr, 1
 zargaripour.com, 1
 zargescases.co.uk, 1
 zarmarket.org, 1
 zarpo.com.br, 1
+zary.me, 1
 zatsepin.by, 1
 zaufanatrzeciastrona.pl, 1
 zavec.com.ec, 1
 zavetaji.lv, 1
 zawo-electric.de, 1
 zbchen.com, 1
 zberger.com, 1
 zbetcheck.in, 1
@@ -38369,16 +38354,17 @@ zgan.ga, 1
 zgrep.org, 1
 zh.search.yahoo.com, 0
 zhang-hao.com, 1
 zhang.nz, 1
 zhangfangzhou.com, 1
 zhangge.net, 1
 zhanghao.me, 1
 zhangheda.cf, 1
+zhangsidan.com, 0
 zhangsir.net, 1
 zhangyuhao.com, 1
 zhaochen.xyz, 1
 zhaofeng.li, 1
 zhaoxixiangban.cc, 1
 zhcexo.com, 1
 zhen-chen.com, 1
 zhengjie.com, 1
--- a/testing/marionette/harness/marionette_harness/tests/unit/test_navigation.py
+++ b/testing/marionette/harness/marionette_harness/tests/unit/test_navigation.py
@@ -114,24 +114,30 @@ class BaseNavigationTestCase(WindowManag
     def ready_state(self):
         return self.marionette.execute_script("return window.document.readyState;",
                                               sandbox=None)
 
 
 class TestNavigate(BaseNavigationTestCase):
 
     def test_set_location_through_execute_script(self):
+        test_element_locator = (By.ID, "testh1")
+
         self.marionette.execute_script(
             "window.location.href = arguments[0];",
             script_args=(self.test_page_remote,), sandbox=None)
 
+        # We cannot use get_url() to wait until the target page has been loaded,
+        # because it will return the URL of the top browsing context and doesn't
+        # wait for the page load to be complete.
         Wait(self.marionette, timeout=self.marionette.timeout.page_load).until(
-            lambda mn: self.test_page_remote == mn.get_url(),
-            message="'{}' hasn't been loaded".format(self.test_page_remote))
-        self.assertEqual("Marionette Test", self.marionette.title)
+            expected.element_present(*test_element_locator),
+            message="Target element 'testh1' has not been found")
+
+        self.assertEqual(self.test_page_remote, self.marionette.get_url())
 
     def test_navigate_chrome_unsupported_error(self):
         with self.marionette.using_context("chrome"):
             self.assertRaises(errors.UnsupportedOperationException,
                               self.marionette.navigate, "about:blank")
             self.assertRaises(errors.UnsupportedOperationException, self.marionette.go_back)
             self.assertRaises(errors.UnsupportedOperationException, self.marionette.go_forward)
             self.assertRaises(errors.UnsupportedOperationException, self.marionette.refresh)
--- a/testing/modules/StructuredLog.jsm
+++ b/testing/modules/StructuredLog.jsm
@@ -83,20 +83,20 @@ StructuredLogger.prototype = {
     if (extra !== null) {
       data.extra = extra;
     }
 
     this._logData("test_end", data);
   },
 
   assertionCount(test, count, minExpected = 0, maxExpected = 0) {
-      var data = {test,
-                  min_expected: minExpected,
-                  max_expected: maxExpected,
-                  count};
+    var data = {test: this._testId(test),
+                min_expected: minExpected,
+                max_expected: maxExpected,
+                count};
 
     this._logData("assertion_count", data);
   },
 
   suiteStart(tests, name = null, runinfo = null, versioninfo = null, deviceinfo = null, extra = null) {
     var data = {tests: tests.map(x => this._testId(x))};
     if (name !== null) {
       data.name = name;
deleted file mode 100644
--- a/testing/talos/talos/tests/devtools/addon/content/pages/custom/inspector/generate-inspector-index-html.js
+++ /dev/null
@@ -1,118 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/**
- * nodejs script to generate: testing/talos/talos/tests/devtools/addon/content/pages/custom/inspector/index.html
- *
- * Execute it like this:
- * $ nodejs generate-inspector-index-html.js > testing/talos/talos/tests/devtools/addon/content/pages/custom/inspector/index.html
- */
-
-// We first create a deep tree with ${deep} nested children
-let deep = 50;
-// Then we create ${n} element after the deep tree
-let n = 50;
-// Number of attributes set on the repeated elements
-let attributes = 50;
-
-// Build the <div> with $attributes data attributes
-let div = "<div";
-for (var i = 1; i <= attributes; i++) {
-  div += ` data-a${i}="${i}"`;
-}
-div += ">";
-
-// Build the tree of $deep elements
-let tree = "";
-for (i = 1; i <= deep; i++) {
-  tree += new Array(i).join(" ");
-  tree += div + " " + i + "\n";
-}
-for (i = deep; i >= 1; i--) {
-  tree += new Array(i).join(" ");
-  tree += "</div>\n";
-}
-
-// Build the list of $n elements
-let repeat = "";
-for (i = 1; i <= n; i++) {
-  repeat += div + " " + i + " </div>\n";
-}
-
-// Prepare CSS rules to add to the document <style>.
-let CSS_RULES_COUNT = 200;
-let manyCssRules = "";
-for (i = 0; i < CSS_RULES_COUNT; i++) {
-  manyCssRules += `
-  .many-css-rules {
-    font-size: ${i}px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }`;
-}
-let expandManyChildren = new Array(100).join("  <div attr='my-attr'>content</div>\n");
-
-let maxBalancedDepth = 8;
-function createBalancedMarkup(level = 0) {
-  let tab = new Array(level + 1).join("  ");
-  if (level < maxBalancedDepth) {
-    let child = createBalancedMarkup(level + 1);
-    return `${tab}<div>
-${child}
-${child}
-${tab}</div>`;
-  } else {
-    return tab + "<div class='leaf'>leaf</div>";
-  }
-}
-let expandBalanced = createBalancedMarkup();
-
-console.log(`
-<!DOCTYPE html>
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
-   - License, v. 2.0. If a copy of the MPL was not distributed with this file,
-   - You can obtain one at http://mozilla.org/MPL/2.0/.  -->
-<!-- This file is a generated file, do not edit it directly.
-   - See generate-inspector-html.js for instructions to update this file -->
-<html>
-<head>
-  <meta charset="utf-8">
-  <title>Custom page for the Inspector</title>
-  <style>
-  div {
-    margin-left: 0.5em;
-  }
-  /* Styles for custom.inspector.manyrules tests */`);
-console.log(manyCssRules);
-console.log(`
-  </style>
-</head>
-<body>
-<!-- <div> elements with ${deep} nested childs, all with ${attributes} attributes -->
-<!-- The deepest <div> has id="deep"> -->
-`);
-console.log(tree);
-console.log(`
-<!-- ${n} <div> elements without any children -->
-`);
-console.log(repeat);
-console.log(`
-<!-- Elements for custom.inspector.manyrules tests -->
-<div class="no-css-rules"></div>
-<div class="many-css-rules"></div>
-<div class="expand-many-children">
-`);
-console.log(expandManyChildren);
-console.log(`
-</div>
-<div class="expand-balanced">
-`);
-console.log(expandBalanced);
-console.log(`
-</div>
-</body>
-</html>`);
-
--- a/testing/talos/talos/tests/devtools/addon/content/pages/custom/inspector/index.html
+++ b/testing/talos/talos/tests/devtools/addon/content/pages/custom/inspector/index.html
@@ -1,2459 +1,105 @@
 
 <!DOCTYPE html>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this file,
    - You can obtain one at http://mozilla.org/MPL/2.0/.  -->
-<!-- This file is a generated file, do not edit it directly.
-   - See generate-inspector-html.js for instructions to update this file -->
 <html>
 <head>
   <meta charset="utf-8">
   <title>Custom page for the Inspector</title>
   <style>
-  div {
-    margin-left: 0.5em;
-  }
-  /* Styles for custom.inspector.manyrules tests */
-
-  .many-css-rules {
-    font-size: 0px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 1px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 2px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 3px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 4px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 5px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 6px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 7px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 8px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 9px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 10px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 11px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 12px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 13px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 14px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 15px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 16px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 17px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 18px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 19px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 20px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 21px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 22px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 23px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 24px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 25px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 26px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 27px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 28px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 29px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 30px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 31px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 32px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 33px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 34px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 35px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 36px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 37px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 38px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 39px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 40px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 41px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 42px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 43px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 44px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 45px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 46px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 47px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 48px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 49px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 50px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 51px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 52px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 53px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 54px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 55px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 56px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 57px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 58px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 59px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 60px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 61px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 62px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 63px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 64px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 65px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 66px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 67px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 68px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 69px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 70px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 71px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 72px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 73px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 74px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 75px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 76px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 77px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 78px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 79px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 80px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 81px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 82px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 83px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 84px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 85px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 86px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 87px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 88px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 89px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 90px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 91px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 92px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 93px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 94px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 95px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 96px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 97px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 98px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 99px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 100px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 101px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 102px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 103px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 104px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 105px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 106px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 107px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 108px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 109px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 110px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 111px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 112px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 113px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 114px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 115px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 116px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 117px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 118px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 119px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 120px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 121px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 122px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 123px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 124px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 125px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 126px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 127px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 128px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 129px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 130px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 131px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 132px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 133px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 134px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 135px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 136px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 137px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 138px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 139px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 140px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 141px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 142px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 143px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 144px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 145px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 146px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 147px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 148px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 149px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 150px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 151px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 152px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 153px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 154px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 155px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 156px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 157px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 158px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 159px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 160px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 161px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 162px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 163px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 164px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 165px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 166px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 167px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 168px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 169px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 170px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 171px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 172px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 173px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 174px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 175px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 176px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 177px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 178px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 179px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 180px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 181px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 182px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 183px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 184px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 185px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 186px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 187px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 188px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 189px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 190px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 191px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 192px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 193px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 194px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 195px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 196px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 197px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 198px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-  .many-css-rules {
-    font-size: 199px;
-    margin: 10px;
-    padding: 10px;
-    font-family: Arial;
-    margin: 20px;
-  }
-
+    div {
+      margin-left: 0.5em;
+    }
   </style>
 </head>
 <body>
-<!-- <div> elements with 50 nested childs, all with 50 attributes -->
-<!-- The deepest <div> has id="deep"> -->
+  <script type="text/javascript">
+    // We first create a deep tree with ${deep} nested children
+    let deep = 50;
+    // Then we create ${n} element after the deep tree
+    let n = 50;
+    // Number of attributes set on the repeated elements
+    let attributes = 50;
 
-<div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 1
- <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 2
-  <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 3
-   <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 4
-    <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 5
-     <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 6
-      <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 7
-       <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 8
-        <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 9
-         <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 10
-          <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 11
-           <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 12
-            <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" data-a38="38" data-a39="39" data-a40="40" data-a41="41" data-a42="42" data-a43="43" data-a44="44" data-a45="45" data-a46="46" data-a47="47" data-a48="48" data-a49="49" data-a50="50"> 13
-             <div data-a1="1" data-a2="2" data-a3="3" data-a4="4" data-a5="5" data-a6="6" data-a7="7" data-a8="8" data-a9="9" data-a10="10" data-a11="11" data-a12="12" data-a13="13" data-a14="14" data-a15="15" data-a16="16" data-a17="17" data-a18="18" data-a19="19" data-a20="20" data-a21="21" data-a22="22" data-a23="23" data-a24="24" data-a25="25" data-a26="26" data-a27="27" data-a28="28" data-a29="29" data-a30="30" data-a31="31" data-a32="32" data-a33="33" data-a34="34" data-a35="35" data-a36="36" data-a37="37" d