Merge mozilla-central to inbound. a=merge CLOSED TREE
authorOana Pop Rus <opoprus@mozilla.com>
Tue, 23 Apr 2019 01:18:37 +0300
changeset 470537 24537856cc886a8beccb2089ee679d55d448ce00
parent 470536 b21620648d313b1eb606ba0fe5f2c3b1abba0bf8 (current diff)
parent 470380 4c7eaf384b06cfda8314be34cd179ab46f271ccc (diff)
child 470538 7a1707c388c7c5cd787d8b0747aed226dbea773e
push id35907
push useraciure@mozilla.com
push dateTue, 23 Apr 2019 22:16:10 +0000
treeherdermozilla-central@4b0811d7b8e1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone68.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge mozilla-central to inbound. a=merge CLOSED TREE
--- a/accessible/base/nsAccessibilityService.cpp
+++ b/accessible/base/nsAccessibilityService.cpp
@@ -1390,17 +1390,18 @@ nsAccessibilityService::CreateAccessible
     case eHTMLTableRowType: {
       // Accessible HTML table row may be a child of tbody/tfoot/thead of
       // accessible HTML table or a direct child of accessible of HTML table.
       Accessible* table = aContext->IsTable() ? aContext : nullptr;
       if (!table && aContext->Parent() && aContext->Parent()->IsTable())
         table = aContext->Parent();
 
       if (table) {
-        nsIContent* parentContent = aContent->GetParentOrHostNode()->AsContent();
+        nsIContent* parentContent =
+            aContent->GetParentOrHostNode()->AsContent();
         nsIFrame* parentFrame = nullptr;
         if (parentContent) {
           parentFrame = parentContent->GetPrimaryFrame();
           if (!parentFrame || !parentFrame->IsTableWrapperFrame()) {
             parentContent = parentContent->GetParentOrHostNode()->AsContent();
             if (parentContent) {
               parentFrame = parentContent->GetPrimaryFrame();
             }
--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -1,10 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
-<blocklist lastupdate="1555503879816" xmlns="http://www.mozilla.org/2006/addons-blocklist">
+<blocklist lastupdate="1555528639011" 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"/>
@@ -2823,16 +2823,24 @@
     <emItem blockID="881d3476-f18a-4560-b065-cded406783d2" id="{40cd7fd2-a3e4-43f9-9d86-0e0a70376203}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
     <emItem blockID="8aff4cb0-4d5f-4e74-8db7-b04f616c3b60" id="{674fff65-6cd0-488a-9453-fb91fc3d7397}">
       <prefs/>
       <versionRange minVersion="0" maxVersion="*" severity="3"/>
     </emItem>
+    <emItem blockID="cbd7444f-e62a-4639-b172-845548b6d4a7" id="/^((\{880cacfe-5793-4346-89ce-fbbd368d394c\})|(\{f0780038-50b9-11e9-9c72-4ba2d8f2ec9f\})|(\{22ffe411-2b0e-11e9-87f9-c329f1f9c8d2\})|(\{cf4bae43-026f-4e7e-a85a-952a7ca697a1\})|(\{17052516-09be-11e9-a008-03419f6c8bc6\})|(\{333fb3de-18a8-18e8-b6d3-e73213911efb\})|(\{aa4abac2-1ffa-12aa-bbdd-9305cb2c1254\})|(\{72222e70-2fd6-11e9-956b-27f7787b8d2d\})|(\{637212d8-3484-11e9-9812-005056b22b42\})|(\{4a222e60-31de-1eca-8476-37565daf6afb\})|(\{7fc6d222-48d5-11e9-b586-17e94c73a1b1\})|(\{e111c358-121b-13fa-bf23-bb57da32d184\})|(\{9674445c-8dff-4580-96b2-99442a7ae9af\}))$/">
+      <prefs/>
+      <versionRange minVersion="0" maxVersion="*" severity="3"/>
+    </emItem>
+    <emItem blockID="74ad8c8b-a65a-470c-aa2f-ca14e1e8774d" id="{3fab603e-3ee1-1222-a859-5f85a3441216}">
+      <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/app/winlauncher/DllBlocklistWin.cpp
+++ b/browser/app/winlauncher/DllBlocklistWin.cpp
@@ -341,25 +341,24 @@ LauncherVoidResult InitializeDllBlocklis
 
   mozilla::nt::PEHeaders ourExeImage(ourModule);
   if (!ourExeImage) {
     return LAUNCHER_ERROR_FROM_WIN32(ERROR_BAD_EXE_FORMAT);
   }
 
   // As part of our mitigation of binary tampering, copy our import directory
   // from the original in our executable file.
-  LauncherVoidResult importDirRestored =
-    RestoreImportDirectory(aFullImagePath, ourExeImage, aChildProcess,
-                           ourModule);
+  LauncherVoidResult importDirRestored = RestoreImportDirectory(
+      aFullImagePath, ourExeImage, aChildProcess, ourModule);
   if (importDirRestored.isErr()) {
     return importDirRestored;
   }
 
   Maybe<nt::PEHeaders::IATThunks> ntdllThunks =
-    ourExeImage.GetIATThunksForModule("ntdll.dll");
+      ourExeImage.GetIATThunksForModule("ntdll.dll");
   if (!ntdllThunks) {
     return LAUNCHER_ERROR_FROM_WIN32(ERROR_INVALID_DATA);
   }
 
   PIMAGE_THUNK_DATA firstIatThunk = ntdllThunks.value().mFirstThunk;
   SIZE_T iatLength = ntdllThunks.value().Length();
   SIZE_T bytesWritten;
 
--- a/browser/app/winlauncher/LauncherProcessWin.cpp
+++ b/browser/app/winlauncher/LauncherProcessWin.cpp
@@ -36,20 +36,19 @@
 #endif  // defined(MOZ_LAUNCHER_PROCESS)
 
 /**
  * At this point the child process has been created in a suspended state. Any
  * additional startup work (eg, blocklist setup) should go here.
  *
  * @return Ok if browser startup should proceed
  */
-static mozilla::LauncherVoidResult PostCreationSetup(const wchar_t* aFullImagePath,
-                                                     HANDLE aChildProcess,
-                                                     HANDLE aChildMainThread,
-                                                     const bool aIsSafeMode) {
+static mozilla::LauncherVoidResult PostCreationSetup(
+    const wchar_t* aFullImagePath, HANDLE aChildProcess,
+    HANDLE aChildMainThread, const bool aIsSafeMode) {
   // The launcher process's DLL blocking code is incompatible with ASAN because
   // it is able to execute before ASAN itself has even initialized.
   // Also, the AArch64 build doesn't yet have a working interceptor.
 #if defined(MOZ_ASAN) || defined(_M_ARM64)
   return mozilla::Ok();
 #else
   return mozilla::InitializeDllBlocklistOOP(aFullImagePath, aChildProcess);
 #endif  // defined(MOZ_ASAN) || defined(_M_ARM64)
@@ -327,19 +326,18 @@ Maybe<int> LauncherMain(int& argc, wchar
   if (!createOk) {
     HandleLauncherError(LAUNCHER_ERROR_FROM_LAST());
     return Nothing();
   }
 
   nsAutoHandle process(pi.hProcess);
   nsAutoHandle mainThread(pi.hThread);
 
-  LauncherVoidResult setupResult =
-      PostCreationSetup(argv[0], process.get(), mainThread.get(),
-                        isSafeMode.value());
+  LauncherVoidResult setupResult = PostCreationSetup(
+      argv[0], process.get(), mainThread.get(), isSafeMode.value());
   if (setupResult.isErr()) {
     HandleLauncherError(setupResult);
     ::TerminateProcess(process.get(), 1);
     return Nothing();
   }
 
   if (::ResumeThread(mainThread.get()) == static_cast<DWORD>(-1)) {
     HandleLauncherError(LAUNCHER_ERROR_FROM_LAST());
--- a/browser/extensions/webcompat/aboutCompat.html
+++ b/browser/extensions/webcompat/aboutCompat.html
@@ -3,17 +3,17 @@
 <head>
   <base/>
   <!-- If you change this script tag you must update the hash in the extension's
          `content_security_policy` 'sha256-HbSjs39Y0thRGfO3RHrNzLPKyC/tq6FdIuP3jEBAcJQ=' -->
   <script>document.head.firstElementChild.href = browser.runtime.getURL("");</script>
   <meta charset="utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <link rel="stylesheet" href="aboutCompat.css" />
-  <link rel="stylesheet" media="screen and (min-device-width:481px), projection" type="text/css"
+  <link rel="stylesheet" media="screen and (pointer:fine), projection" type="text/css"
           href="chrome://global/skin/in-content/common.css"/>
   <link rel="localization" href="toolkit/about/aboutCompat.ftl"/>
   <title data-l10n-id="text-title"></title>
   <script src="aboutCompat.js"></script>
   </head>
 <body>
   <h2 class="tab active" data-l10n-id="label-overrides"></h2>
   <table id="overrides">
--- a/browser/extensions/webcompat/aboutPage.js
+++ b/browser/extensions/webcompat/aboutPage.js
@@ -1,47 +1,34 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 /* global ExtensionAPI, Services, XPCOMUtils */
 
-ChromeUtils.defineModuleGetter(this, "AppConstants",
-                               "resource://gre/modules/AppConstants.jsm");
-
 ChromeUtils.defineModuleGetter(this, "Services",
                                "resource://gre/modules/Services.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "resProto",
                                    "@mozilla.org/network/protocol;1?name=resource",
                                    "nsISubstitutingProtocolHandler");
 
 const ResourceSubstitution = "webcompat";
 const ProcessScriptURL = "resource://webcompat/aboutPageProcessScript.js";
 
-const ShouldStart = ["default", "nightly", "nightly-try"].includes(AppConstants.MOZ_UPDATE_CHANNEL);
-
 this.aboutPage = class extends ExtensionAPI {
   onStartup() {
-    if (!ShouldStart) {
-      return;
-    }
-
     const {rootURI} = this.extension;
 
     resProto.setSubstitution(ResourceSubstitution,
                              Services.io.newURI("chrome/res/", null, rootURI));
 
     Services.ppmm.loadProcessScript(ProcessScriptURL, true);
   }
 
   onShutdown() {
-    if (!ShouldStart) {
-      return;
-    }
-
     resProto.setSubstitution(ResourceSubstitution, null);
 
     Services.ppmm.removeDelayedProcessScript(ProcessScriptURL);
   }
 };
--- a/caps/OriginAttributes.cpp
+++ b/caps/OriginAttributes.cpp
@@ -263,17 +263,18 @@ class MOZ_STACK_CLASS PopulateFromSuffix
 
     if (aName.EqualsLiteral("firstPartyDomain")) {
       MOZ_RELEASE_ASSERT(mOriginAttributes->mFirstPartyDomain.IsEmpty());
       mOriginAttributes->mFirstPartyDomain.Assign(aValue);
       return true;
     }
 
     if (aName.EqualsLiteral("geckoViewUserContextId")) {
-      MOZ_RELEASE_ASSERT(mOriginAttributes->mGeckoViewSessionContextId.IsEmpty());
+      MOZ_RELEASE_ASSERT(
+          mOriginAttributes->mGeckoViewSessionContextId.IsEmpty());
       mOriginAttributes->mGeckoViewSessionContextId.Assign(aValue);
       return true;
     }
 
     // No other attributes are supported.
     return false;
   }
 
--- a/caps/OriginAttributes.h
+++ b/caps/OriginAttributes.h
@@ -151,17 +151,18 @@ class OriginAttributesPattern : public d
     }
 
     if (mFirstPartyDomain.WasPassed() &&
         mFirstPartyDomain.Value() != aAttrs.mFirstPartyDomain) {
       return false;
     }
 
     if (mGeckoViewSessionContextId.WasPassed() &&
-        mGeckoViewSessionContextId.Value() != aAttrs.mGeckoViewSessionContextId) {
+        mGeckoViewSessionContextId.Value() !=
+            aAttrs.mGeckoViewSessionContextId) {
       return false;
     }
 
     return true;
   }
 
   bool Overlaps(const OriginAttributesPattern& aOther) const {
     if (mAppId.WasPassed() && aOther.mAppId.WasPassed() &&
@@ -186,18 +187,20 @@ class OriginAttributesPattern : public d
       return false;
     }
 
     if (mFirstPartyDomain.WasPassed() && aOther.mFirstPartyDomain.WasPassed() &&
         mFirstPartyDomain.Value() != aOther.mFirstPartyDomain.Value()) {
       return false;
     }
 
-    if (mGeckoViewSessionContextId.WasPassed() && aOther.mGeckoViewSessionContextId.WasPassed() &&
-        mGeckoViewSessionContextId.Value() != aOther.mGeckoViewSessionContextId.Value()) {
+    if (mGeckoViewSessionContextId.WasPassed() &&
+        aOther.mGeckoViewSessionContextId.WasPassed() &&
+        mGeckoViewSessionContextId.Value() !=
+            aOther.mGeckoViewSessionContextId.Value()) {
       return false;
     }
 
     return true;
   }
 };
 
 }  // namespace mozilla
--- a/caps/nsJSPrincipals.cpp
+++ b/caps/nsJSPrincipals.cpp
@@ -284,18 +284,18 @@ static bool ReadPrincipalInfo(JSStructur
 #endif
   }
 
   return true;
 }
 
 static StaticRefPtr<nsIPrincipal> sActiveWorkerPrincipal;
 
-nsJSPrincipals::AutoSetActiveWorkerPrincipal::AutoSetActiveWorkerPrincipal
-    (nsIPrincipal* aPrincipal) {
+nsJSPrincipals::AutoSetActiveWorkerPrincipal::AutoSetActiveWorkerPrincipal(
+    nsIPrincipal* aPrincipal) {
   MOZ_ASSERT(NS_IsMainThread());
   MOZ_RELEASE_ASSERT(!sActiveWorkerPrincipal);
   sActiveWorkerPrincipal = aPrincipal;
 }
 
 nsJSPrincipals::AutoSetActiveWorkerPrincipal::~AutoSetActiveWorkerPrincipal() {
   sActiveWorkerPrincipal = nullptr;
 }
--- a/caps/tests/gtest/TestOriginAttributes.cpp
+++ b/caps/tests/gtest/TestOriginAttributes.cpp
@@ -4,17 +4,17 @@
 #include "gtest/gtest.h"
 #include "mozilla/BasePrincipal.h"
 #include "mozilla/Preferences.h"
 #include "nsNetUtil.h"
 
 using mozilla::OriginAttributes;
 using mozilla::Preferences;
 
-static void TestSuffix(const OriginAttributes& attrs) {
+static void TestSuffix(const OriginAttributes &attrs) {
   nsAutoCString suffix;
   attrs.CreateSuffix(suffix);
 
   OriginAttributes attrsFromSuffix;
   bool success = attrsFromSuffix.PopulateFromSuffix(suffix);
   EXPECT_TRUE(success);
 
   EXPECT_EQ(attrs, attrsFromSuffix);
--- a/devtools/client/debugger/src/components/Editor/Footer.js
+++ b/devtools/client/debugger/src/components/Editor/Footer.js
@@ -165,16 +165,17 @@ class SourceFooter extends PureComponent
     }
 
     return (
       <PaneToggleButton
         key="toggle"
         collapsed={this.props.endPanelCollapsed}
         horizontal={this.props.horizontal}
         handleClick={(this.props.togglePaneCollapse: any)}
+        position="end"
       />
     );
   }
 
   renderCommands() {
     const commands = [this.blackBoxButton(), this.prettyPrintButton()].filter(
       Boolean
     );
--- a/devtools/client/debugger/src/components/Editor/tests/__snapshots__/Footer.spec.js.snap
+++ b/devtools/client/debugger/src/components/Editor/tests/__snapshots__/Footer.spec.js.snap
@@ -15,17 +15,17 @@ exports[`SourceFooter Component default 
       title="(Line 1, column 1)"
     >
       (1, 1)
     </div>
     <PaneToggleButton
       collapsed={false}
       horizontal={false}
       key="toggle"
-      position="start"
+      position="end"
     />
   </div>
 </div>
 `;
 
 exports[`SourceFooter Component move cursor should render new cursor position 1`] = `
 <div
   className="source-footer"
@@ -41,13 +41,13 @@ exports[`SourceFooter Component move cur
       title="(Line 6, column 11)"
     >
       (6, 11)
     </div>
     <PaneToggleButton
       collapsed={false}
       horizontal={false}
       key="toggle"
-      position="start"
+      position="end"
     />
   </div>
 </div>
 `;
--- a/dom/base/DocumentOrShadowRoot.cpp
+++ b/dom/base/DocumentOrShadowRoot.cpp
@@ -356,18 +356,17 @@ Element* DocumentOrShadowRoot::ElementFr
   QueryNodesFromPoint(*this, aX, aY, options, flush, Multiple::No, elements);
   return elements.SafeElementAt(0);
 }
 
 void DocumentOrShadowRoot::NodesFromRect(float aX, float aY, float aTopSize,
                                          float aRightSize, float aBottomSize,
                                          float aLeftSize,
                                          bool aIgnoreRootScrollFrame,
-                                         bool aFlushLayout,
-                                         bool aOnlyVisible,
+                                         bool aFlushLayout, bool aOnlyVisible,
                                          nsTArray<RefPtr<nsINode>>& aReturn) {
   // Following the same behavior of elementFromPoint,
   // we don't return anything if either coord is negative
   if (!aIgnoreRootScrollFrame && (aX < 0 || aY < 0)) {
     return;
   }
 
   nscoord x = nsPresContext::CSSPixelsToAppUnits(aX - aLeftSize);
--- a/dom/base/Element.cpp
+++ b/dom/base/Element.cpp
@@ -659,29 +659,26 @@ void Element::GetAttributeNames(nsTArray
 
 already_AddRefed<nsIHTMLCollection> Element::GetElementsByTagName(
     const nsAString& aLocalName) {
   return NS_GetContentList(this, kNameSpaceID_Unknown, aLocalName);
 }
 
 nsIScrollableFrame* Element::GetScrollFrame(nsIFrame** aFrame,
                                             FlushType aFlushType) {
-  // it isn't clear what to return for SVG nodes, so just return nothing
-  if (IsSVGElement()) {
-    if (aFrame) {
-      *aFrame = nullptr;
-    }
-    return nullptr;
-  }
-
   nsIFrame* frame = GetPrimaryFrame(aFlushType);
   if (aFrame) {
     *aFrame = frame;
   }
   if (frame) {
+    if (frame->HasAnyStateBits(NS_FRAME_SVG_LAYOUT)) {
+      // It's unclear what to return for SVG frames, so just return null.
+      return nullptr;
+    }
+
     // menu frames implement GetScrollTargetFrame but we don't want
     // to use it here.  Similar for comboboxes.
     LayoutFrameType type = frame->Type();
     if (type != LayoutFrameType::Menu &&
         type != LayoutFrameType::ComboboxControl) {
       nsIScrollableFrame* scrollFrame = frame->GetScrollTargetFrame();
       if (scrollFrame) {
         MOZ_ASSERT(!OwnerDoc()->IsScrollingElement(this),
@@ -927,17 +924,17 @@ void Element::SetScrollLeft(int32_t aScr
 void Element::MozScrollSnap() {
   nsIScrollableFrame* sf = GetScrollFrame(nullptr, FlushType::None);
   if (sf) {
     sf->ScrollSnap();
   }
 }
 
 static nsSize GetScrollRectSizeForOverflowVisibleFrame(nsIFrame* aFrame) {
-  if (!aFrame) {
+  if (!aFrame || aFrame->HasAnyStateBits(NS_FRAME_SVG_LAYOUT)) {
     return nsSize(0, 0);
   }
 
   nsRect paddingRect = aFrame->GetPaddingRectRelativeToSelf();
   nsOverflowAreas overflowAreas(paddingRect, paddingRect);
   // Add the scrollable overflow areas of children (if any) to the paddingRect.
   // It's important to start with the paddingRect, otherwise if there are no
   // children the overflow rect will be 0,0,0,0 which will force the point 0,0
@@ -949,33 +946,29 @@ static nsSize GetScrollRectSizeForOverfl
       overflowAreas.ScrollableOverflow().UnionEdges(paddingRect);
   return nsLayoutUtils::GetScrolledRect(aFrame, overflowRect,
                                         paddingRect.Size(),
                                         aFrame->StyleVisibility()->mDirection)
       .Size();
 }
 
 int32_t Element::ScrollHeight() {
-  if (IsSVGElement()) return 0;
-
   nsIFrame* frame;
   nsIScrollableFrame* sf = GetScrollFrame(&frame);
   nscoord height;
   if (sf) {
     height = sf->GetScrollRange().Height() + sf->GetScrollPortRect().Height();
   } else {
     height = GetScrollRectSizeForOverflowVisibleFrame(frame).height;
   }
 
   return nsPresContext::AppUnitsToIntCSSPixels(height);
 }
 
 int32_t Element::ScrollWidth() {
-  if (IsSVGElement()) return 0;
-
   nsIFrame* frame;
   nsIScrollableFrame* sf = GetScrollFrame(&frame);
   nscoord width;
   if (sf) {
     width = sf->GetScrollRange().Width() + sf->GetScrollPortRect().Width();
   } else {
     width = GetScrollRectSizeForOverflowVisibleFrame(frame).width;
   }
--- a/dom/base/SelectionChangeEventDispatcher.h
+++ b/dom/base/SelectionChangeEventDispatcher.h
@@ -15,17 +15,17 @@
 class nsINode;
 class nsRange;
 
 namespace mozilla {
 
 namespace dom {
 class Document;
 class Selection;
-}
+}  // namespace dom
 
 class SelectionChangeEventDispatcher final {
  public:
   // SelectionChangeEventDispatcher has to participate in cycle collection
   // because it holds strong references to nsINodes in its mOldRanges array.
   NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(
       SelectionChangeEventDispatcher)
   NS_DECL_CYCLE_COLLECTION_NATIVE_CLASS(SelectionChangeEventDispatcher)
--- a/dom/base/nsDOMWindowUtils.cpp
+++ b/dom/base/nsDOMWindowUtils.cpp
@@ -1161,18 +1161,17 @@ nsDOMWindowUtils::NodesFromRect(float aX
   NS_ENSURE_STATE(doc);
 
   nsSimpleContentList* list = new nsSimpleContentList(doc);
   NS_ADDREF(list);
   *aReturn = list;
 
   AutoTArray<RefPtr<nsINode>, 8> nodes;
   doc->NodesFromRect(aX, aY, aTopSize, aRightSize, aBottomSize, aLeftSize,
-                     aIgnoreRootScrollFrame, aFlushLayout, aOnlyVisible,
-                     nodes);
+                     aIgnoreRootScrollFrame, aFlushLayout, aOnlyVisible, nodes);
   list->SetCapacity(nodes.Length());
   for (auto& node : nodes) {
     list->AppendElement(node->AsContent());
   }
   return NS_OK;
 }
 
 NS_IMETHODIMP
--- a/dom/base/nsGlobalWindowOuter.cpp
+++ b/dom/base/nsGlobalWindowOuter.cpp
@@ -1459,18 +1459,23 @@ NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(nsG
   NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
 NS_IMPL_CYCLE_COLLECTION_TRACE_END
 
 bool nsGlobalWindowOuter::IsBlackForCC(bool aTracingNeeded) {
   if (!nsCCUncollectableMarker::sGeneration) {
     return false;
   }
 
+  // Unlike most wrappers, the outer window wrapper is not a wrapper for
+  // the outer window. Instead, the outer window wrapper holds the inner
+  // window binding object, which in turn holds the nsGlobalWindowInner, which
+  // has a strong reference to the nsGlobalWindowOuter. We're using the
+  // mInnerWindow pointer as a flag for that whole chain.
   return (nsCCUncollectableMarker::InGeneration(GetMarkedCCGeneration()) ||
-          HasKnownLiveWrapper()) &&
+          (mInnerWindow && HasKnownLiveWrapper())) &&
          (!aTracingNeeded || HasNothingToTrace(ToSupports(this)));
 }
 
 //*****************************************************************************
 // nsGlobalWindowOuter::nsIScriptGlobalObject
 //*****************************************************************************
 
 nsresult nsGlobalWindowOuter::EnsureScriptEnvironment() {
@@ -2814,18 +2819,18 @@ void nsPIDOMWindowOuter::SetInitialKeybo
 
   if (aShowAccelerators != UIStateChangeType_NoChange) {
     windowRoot->SetShowAccelerators(aShowAccelerators == UIStateChangeType_Set);
   }
   if (aShowFocusRings != UIStateChangeType_NoChange) {
     windowRoot->SetShowFocusRings(aShowFocusRings == UIStateChangeType_Set);
   }
 
-  nsContentUtils::SetKeyboardIndicatorsOnRemoteChildren(
-      this, aShowAccelerators, aShowFocusRings);
+  nsContentUtils::SetKeyboardIndicatorsOnRemoteChildren(this, aShowAccelerators,
+                                                        aShowFocusRings);
 }
 
 Element* nsPIDOMWindowOuter::GetFrameElementInternal() const {
   return mFrameElement;
 }
 
 void nsPIDOMWindowOuter::SetFrameElementInternal(Element* aFrameElement) {
   mFrameElement = aFrameElement;
@@ -6272,19 +6277,17 @@ void nsGlobalWindowOuter::ReallyCloseWin
            This works because we reach this code when we shouldn't only
            in the particular circumstance that we belong to a tab
            that has just been closed (and is therefore already missing
            from the list of browsers) (and has an unload handler
            that closes the window). */
         // XXXbz now that we have mHavePendingClose, is this needed?
         bool isTab;
         if (rootWin == this || !bwin ||
-            (NS_SUCCEEDED(
-                 bwin->IsTabContentWindow(this, &isTab)) &&
-             isTab)) {
+            (NS_SUCCEEDED(bwin->IsTabContentWindow(this, &isTab)) && isTab)) {
           treeOwnerAsWin->Destroy();
         }
       }
     }
 
     CleanUp();
   }
 }
@@ -6839,18 +6842,18 @@ void nsGlobalWindowOuter::SetKeyboardInd
 
   if (aShowAccelerators != UIStateChangeType_NoChange) {
     windowRoot->SetShowAccelerators(aShowAccelerators == UIStateChangeType_Set);
   }
   if (aShowFocusRings != UIStateChangeType_NoChange) {
     windowRoot->SetShowFocusRings(aShowFocusRings == UIStateChangeType_Set);
   }
 
-  nsContentUtils::SetKeyboardIndicatorsOnRemoteChildren(
-      this, aShowAccelerators, aShowFocusRings);
+  nsContentUtils::SetKeyboardIndicatorsOnRemoteChildren(this, aShowAccelerators,
+                                                        aShowFocusRings);
 
   bool newShouldShowFocusRing = ShouldShowFocusRing();
   if (mInnerWindow && nsGlobalWindowInner::Cast(mInnerWindow)->mHasFocus &&
       mInnerWindow->mFocusedElement &&
       oldShouldShowFocusRing != newShouldShowFocusRing) {
     // Update focusedNode's state.
     if (newShouldShowFocusRing) {
       mInnerWindow->mFocusedElement->AddStates(NS_EVENT_STATE_FOCUSRING);
--- a/dom/base/nsHistory.h
+++ b/dom/base/nsHistory.h
@@ -7,18 +7,18 @@
 #define nsHistory_h___
 
 #include "mozilla/Attributes.h"
 #include "mozilla/ErrorResult.h"
 #include "mozilla/dom/HistoryBinding.h"
 #include "mozilla/dom/ChildSHistory.h"
 #include "nsCOMPtr.h"
 #include "nsCycleCollectionParticipant.h"
-#include "nsIWeakReferenceUtils.h"// for nsWeakPtr
-#include "nsPIDOMWindow.h"  // for GetParentObject
+#include "nsIWeakReferenceUtils.h"  // for nsWeakPtr
+#include "nsPIDOMWindow.h"          // for GetParentObject
 #include "nsStringFwd.h"
 #include "nsWrapperCache.h"
 
 class nsIDocShell;
 class nsISHistory;
 class nsIWeakReference;
 class nsPIDOMWindowInner;
 
--- a/dom/base/nsIDocumentObserver.h
+++ b/dom/base/nsIDocumentObserver.h
@@ -89,34 +89,34 @@ NS_DEFINE_STATIC_IID_ACCESSOR(nsIDocumen
 #define NS_DECL_NSIDOCUMENTOBSERVER_ENDLOAD \
   virtual void EndLoad(mozilla::dom::Document*) override;
 
 #define NS_DECL_NSIDOCUMENTOBSERVER_CONTENTSTATECHANGED     \
   virtual void ContentStateChanged(mozilla::dom::Document*, \
                                    nsIContent* aContent,    \
                                    mozilla::EventStates aStateMask) override;
 
-#define NS_DECL_NSIDOCUMENTOBSERVER                 \
-  NS_DECL_NSIDOCUMENTOBSERVER_BEGINUPDATE           \
-  NS_DECL_NSIDOCUMENTOBSERVER_ENDUPDATE             \
-  NS_DECL_NSIDOCUMENTOBSERVER_BEGINLOAD             \
-  NS_DECL_NSIDOCUMENTOBSERVER_ENDLOAD               \
-  NS_DECL_NSIDOCUMENTOBSERVER_CONTENTSTATECHANGED   \
+#define NS_DECL_NSIDOCUMENTOBSERVER               \
+  NS_DECL_NSIDOCUMENTOBSERVER_BEGINUPDATE         \
+  NS_DECL_NSIDOCUMENTOBSERVER_ENDUPDATE           \
+  NS_DECL_NSIDOCUMENTOBSERVER_BEGINLOAD           \
+  NS_DECL_NSIDOCUMENTOBSERVER_ENDLOAD             \
+  NS_DECL_NSIDOCUMENTOBSERVER_CONTENTSTATECHANGED \
   NS_DECL_NSIMUTATIONOBSERVER
 
 #define NS_IMPL_NSIDOCUMENTOBSERVER_CORE_STUB(_class)  \
   void _class::BeginUpdate(mozilla::dom::Document*) {} \
   void _class::EndUpdate(mozilla::dom::Document*) {}   \
   NS_IMPL_NSIMUTATIONOBSERVER_CORE_STUB(_class)
 
 #define NS_IMPL_NSIDOCUMENTOBSERVER_LOAD_STUB(_class) \
   void _class::BeginLoad(mozilla::dom::Document*) {}  \
   void _class::EndLoad(mozilla::dom::Document*) {}
 
-#define NS_IMPL_NSIDOCUMENTOBSERVER_STATE_STUB(_class)                 \
-  void _class::ContentStateChanged(mozilla::dom::Document*,            \
-                                   nsIContent* aContent,               \
+#define NS_IMPL_NSIDOCUMENTOBSERVER_STATE_STUB(_class)      \
+  void _class::ContentStateChanged(mozilla::dom::Document*, \
+                                   nsIContent* aContent,    \
                                    mozilla::EventStates aStateMask) {}
 
 #define NS_IMPL_NSIDOCUMENTOBSERVER_CONTENT(_class) \
   NS_IMPL_NSIMUTATIONOBSERVER_CONTENT(_class)
 
 #endif /* nsIDocumentObserver_h___ */
--- a/dom/bindings/CallbackObject.h
+++ b/dom/bindings/CallbackObject.h
@@ -520,18 +520,19 @@ class CallbackObjectHolder : CallbackObj
   static const uintptr_t XPCOMCallbackFlag = 1u;
 
   friend void ImplCycleCollectionUnlink<WebIDLCallbackT, XPCOMCallbackT>(
       CallbackObjectHolder& aField);
 
   void UnlinkSelf() {
     // NS_IF_RELEASE because we might have been unlinked before
     nsISupports* ptr = GetISupports();
+    // Clear mPtrBits before the release to prevent reentrance.
+    mPtrBits = 0;
     NS_IF_RELEASE(ptr);
-    mPtrBits = 0;
   }
 
   uintptr_t mPtrBits;
 };
 
 NS_DEFINE_STATIC_IID_ACCESSOR(CallbackObject, DOM_CALLBACKOBJECT_IID)
 
 template <class T, class U>
--- a/dom/gamepad/GamepadRemapping.cpp
+++ b/dom/gamepad/GamepadRemapping.cpp
@@ -125,235 +125,232 @@ class DefaultRemapper final : public Gam
   }
 
  private:
   uint32_t numAxes;
   uint32_t numButtons;
 };
 
 class ADT1Remapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return BUTTON_INDEX_COUNT;
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return BUTTON_INDEX_COUNT;
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      case 3:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 4:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 5:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      case 9:
+        FetchDpadFromAxis(aIndex, aValue);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString("Axis idx '%d' doesn't support in ADT1Remapper().",
+                            aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        case 3:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 4:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 5:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        case 9:
-          FetchDpadFromAxis(aIndex, aValue);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in ADT1Remapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString("Button idx '%d' doesn't support in ADT1Remapper().",
+                          aButton)
+              .get());
+      return;
+    }
 
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in ADT1Remapper().",
-                  aButton)
-                  .get());
-        return;
-      }
-
-      const std::map<uint32_t, uint32_t> buttonMapping = {
+    const std::map<uint32_t, uint32_t> buttonMapping = {
         {3, BUTTON_INDEX_TERTIARY},
         {4, BUTTON_INDEX_QUATERNARY},
         {6, BUTTON_INDEX_LEFT_SHOULDER},
         {7, BUTTON_INDEX_RIGHT_SHOULDER},
         {12, BUTTON_INDEX_META},
         {13, BUTTON_INDEX_LEFT_THUMBSTICK},
-        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}
-      };
+        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 };
 
 class TwoAxesEightKeysRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return 0;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return 0; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return BUTTON_INDEX_COUNT - 1;
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return BUTTON_INDEX_COUNT - 1;
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_LEFT,
+                                AxisNegativeAsButton(aValue));
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_RIGHT,
+                                AxisPositiveAsButton(aValue));
+        break;
+      case 1:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_UP,
+                                AxisNegativeAsButton(aValue));
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_DOWN,
+                                AxisPositiveAsButton(aValue));
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in TwoAxesEightKeysRemapper().",
+                aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_LEFT, AxisNegativeAsButton(aValue));
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_RIGHT, AxisPositiveAsButton(aValue));
-          break;
-        case 1:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_UP, AxisNegativeAsButton(aValue));
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_DOWN, AxisPositiveAsButton(aValue));
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in TwoAxesEightKeysRemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString(
+              "Button idx '%d' doesn't support in TwoAxesEightKeysRemapper().",
+              aButton)
+              .get());
+      return;
+    }
 
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in TwoAxesEightKeysRemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
-
-      const std::map<uint32_t, uint32_t> buttonMapping = {
+    const std::map<uint32_t, uint32_t> buttonMapping = {
         {0, BUTTON_INDEX_QUATERNARY},
         {2, BUTTON_INDEX_PRIMARY},
-        {3, BUTTON_INDEX_TERTIARY}
-      };
+        {3, BUTTON_INDEX_TERTIARY}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 };
 
 class StadiaControllerRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return STADIA_BUTTON_COUNT;
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return STADIA_BUTTON_COUNT;
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      case 3:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      case 4:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER, aValue);
+        break;
+      case 5:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER, aValue);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in StadiaControllerRemapper().",
+                aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        case 3:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        case 4:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER, aValue);
-          break;
-        case 5:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER, aValue);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in StadiaControllerRemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    if (STADIA_BUTTON_COUNT <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString(
+              "Button idx '%d' doesn't support in StadiaControllerRemapper().",
+              aButton)
+              .get());
+      return;
+    }
 
-      if (STADIA_BUTTON_COUNT <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in StadiaControllerRemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
-
-      service->NewButtonEvent(aIndex, aButton, aPressed);
-    }
+    service->NewButtonEvent(aIndex, aButton, aPressed);
+  }
 
  private:
   enum STADIAButtons {
     STADIA_BUTTON_EXTRA1 = BUTTON_INDEX_COUNT,
     STADIA_BUTTON_EXTRA2,
     STADIA_BUTTON_COUNT
   };
 };
@@ -444,1059 +441,1006 @@ class Dualshock4Remapper final : public 
  private:
   enum Dualshock4Buttons {
     DUALSHOCK_BUTTON_TOUCHPAD = BUTTON_INDEX_COUNT,
     DUALSHOCK_BUTTON_COUNT
   };
 };
 
 class LogitechDInputRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
 
-    virtual uint32_t GetButtonCount() const override {
-      // The Logitech button (BUTTON_INDEX_META) is not accessible through the
-      // device's D-mode.
-      return BUTTON_INDEX_COUNT - 1;
+  virtual uint32_t GetButtonCount() const override {
+    // The Logitech button (BUTTON_INDEX_META) is not accessible through the
+    // device's D-mode.
+    return BUTTON_INDEX_COUNT - 1;
+  }
+
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      case 5:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      case 9:
+        FetchDpadFromAxis(aIndex, aValue);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in LogitechDInputRemapper().",
+                aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        case 5:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        case 9:
-          FetchDpadFromAxis(aIndex, aValue);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in LogitechDInputRemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString(
+              "Button idx '%d' doesn't support in LogitechDInputRemapper().",
+              aButton)
+              .get());
+      return;
+    }
 
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in LogitechDInputRemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
-
-      const std::map<uint32_t, uint32_t> buttonMapping = {
+    const std::map<uint32_t, uint32_t> buttonMapping = {
         {0, BUTTON_INDEX_TERTIARY},
         {1, BUTTON_INDEX_PRIMARY},
-        {2, BUTTON_INDEX_SECONDARY}
-      };
+        {2, BUTTON_INDEX_SECONDARY}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 };
 
 class SwitchJoyConRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return 2;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return 2; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return BUTTON_INDEX_COUNT;
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return BUTTON_INDEX_COUNT;
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
+    service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+  }
+
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
         GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
-
-      service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
-
-      service->NewButtonEvent(aIndex, aButton, aPressed);
-    }
+    service->NewButtonEvent(aIndex, aButton, aPressed);
+  }
 };
 
 class SwitchProRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
 
-    virtual uint32_t GetButtonCount() const override {
-      // The Switch Pro controller has a Capture button that has no equivalent in
-      // the Standard Gamepad.
-      return SWITCHPRO_BUTTON_COUNT;
+  virtual uint32_t GetButtonCount() const override {
+    // The Switch Pro controller has a Capture button that has no equivalent in
+    // the Standard Gamepad.
+    return SWITCHPRO_BUTTON_COUNT;
+  }
+
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
+    service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+  }
+
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
         GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
-
-      service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    service->NewButtonEvent(aIndex, aButton, aPressed);
+  }
 
-      service->NewButtonEvent(aIndex, aButton, aPressed);
-    }
-
-private:
+ private:
   enum SwitchProButtons {
     SWITCHPRO_BUTTON_EXTRA = BUTTON_INDEX_COUNT,
     SWITCHPRO_BUTTON_COUNT
   };
 };
 
 class NvShieldRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return SHIELD_BUTTON_COUNT;
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return SHIELD_BUTTON_COUNT;
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      case 3:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 4:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 5:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      case 9:
+        FetchDpadFromAxis(aIndex, aValue);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in NvShieldRemapper().", aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        case 3:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 4:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 5:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        case 9:
-          FetchDpadFromAxis(aIndex, aValue);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in NvShieldRemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-          GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString(
+              "Button idx '%d' doesn't support in NvShieldRemapper().", aButton)
+              .get());
+      return;
+    }
 
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in NvShieldRemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
-
-      const std::map<uint32_t, uint32_t> buttonMapping = {
+    const std::map<uint32_t, uint32_t> buttonMapping = {
         {2, BUTTON_INDEX_META},
         {3, BUTTON_INDEX_TERTIARY},
         {4, BUTTON_INDEX_QUATERNARY},
         {5, SHIELD_BUTTON_CIRCLE},
         {6, BUTTON_INDEX_LEFT_SHOULDER},
         {7, BUTTON_INDEX_RIGHT_SHOULDER},
         {9, BUTTON_INDEX_BACK_SELECT},
         {11, BUTTON_INDEX_START},
         {13, BUTTON_INDEX_LEFT_THUMBSTICK},
-        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}
-      };
+        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 
-private:
+ private:
   enum ShieldButtons {
     SHIELD_BUTTON_CIRCLE = BUTTON_INDEX_COUNT,
     SHIELD_BUTTON_COUNT
   };
 };
 
 class NvShield2017Remapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return SHIELD2017_BUTTON_COUNT;
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return SHIELD2017_BUTTON_COUNT;
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      case 3:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 4:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 5:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      case 9:
+        FetchDpadFromAxis(aIndex, aValue);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in NvShield2017Remapper().",
+                aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        case 3:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 4:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 5:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        case 9:
-          FetchDpadFromAxis(aIndex, aValue);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in NvShield2017Remapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-          GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString(
+              "Button idx '%d' doesn't support in NvShield2017Remapper().",
+              aButton)
+              .get());
+      return;
+    }
 
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in NvShield2017Remapper().",
-                  aButton)
-                  .get());
-        return;
-      }
-
-      const std::map<uint32_t, uint32_t> buttonMapping = {
+    const std::map<uint32_t, uint32_t> buttonMapping = {
         {2, BUTTON_INDEX_META},
         {3, BUTTON_INDEX_TERTIARY},
         {4, BUTTON_INDEX_QUATERNARY},
         {5, BUTTON_INDEX_START},
         {6, BUTTON_INDEX_LEFT_SHOULDER},
         {7, BUTTON_INDEX_RIGHT_SHOULDER},
         {8, BUTTON_INDEX_BACK_SELECT},
         {11, SHIELD2017_BUTTON_PLAYPAUSE},
         {13, BUTTON_INDEX_LEFT_THUMBSTICK},
-        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}
-      };
+        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 
-private:
+ private:
   enum Shield2017Buttons {
     SHIELD2017_BUTTON_PLAYPAUSE = BUTTON_INDEX_COUNT,
     SHIELD2017_BUTTON_COUNT
   };
 };
 
 class IBuffaloRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return 2;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return 2; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return BUTTON_INDEX_COUNT - 1; /* no meta */
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return BUTTON_INDEX_COUNT - 1; /* no meta */
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_LEFT,
+                                AxisNegativeAsButton(aValue));
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_RIGHT,
+                                AxisPositiveAsButton(aValue));
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_UP,
+                                AxisNegativeAsButton(aValue));
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_DOWN,
+                                AxisPositiveAsButton(aValue));
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in IBuffaloRemapper().", aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_LEFT, AxisNegativeAsButton(aValue));
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_RIGHT, AxisPositiveAsButton(aValue));
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_UP, AxisNegativeAsButton(aValue));
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_DPAD_DOWN, AxisPositiveAsButton(aValue));
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in IBuffaloRemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-          GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
-
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in IBuffaloRemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString(
+              "Button idx '%d' doesn't support in IBuffaloRemapper().", aButton)
+              .get());
+      return;
+    }
 
-      const std::map<uint32_t, uint32_t> buttonMapping = {
-        {0, BUTTON_INDEX_SECONDARY},
-        {1, BUTTON_INDEX_PRIMARY},
-        {2, BUTTON_INDEX_QUATERNARY},
-        {3, BUTTON_INDEX_TERTIARY},
-        {5, BUTTON_INDEX_RIGHT_TRIGGER},
-        {6, BUTTON_INDEX_BACK_SELECT},
-        {7, BUTTON_INDEX_START}
-      };
+    const std::map<uint32_t, uint32_t> buttonMapping = {
+        {0, BUTTON_INDEX_SECONDARY},     {1, BUTTON_INDEX_PRIMARY},
+        {2, BUTTON_INDEX_QUATERNARY},    {3, BUTTON_INDEX_TERTIARY},
+        {5, BUTTON_INDEX_RIGHT_TRIGGER}, {6, BUTTON_INDEX_BACK_SELECT},
+        {7, BUTTON_INDEX_START}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 };
 
 class XSkillsRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return GAMECUBE_BUTTON_COUNT;
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return GAMECUBE_BUTTON_COUNT;
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      case 3:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 4:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 5:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in XSkillsRemapper().", aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        case 3:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 4:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 5:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in XSkillsRemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-          GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString(
+              "Button idx '%d' doesn't support in XSkillsRemapper().", aButton)
+              .get());
+      return;
+    }
 
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in XSkillsRemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
-
-      const std::map<uint32_t, uint32_t> buttonMapping = {
-        {0, BUTTON_INDEX_PRIMARY},  // A
-        {1, BUTTON_INDEX_TERTIARY}, // B
-        {2, BUTTON_INDEX_SECONDARY},  // X
-        {3, BUTTON_INDEX_QUATERNARY}, // Y
+    const std::map<uint32_t, uint32_t> buttonMapping = {
+        {0, BUTTON_INDEX_PRIMARY},     // A
+        {1, BUTTON_INDEX_TERTIARY},    // B
+        {2, BUTTON_INDEX_SECONDARY},   // X
+        {3, BUTTON_INDEX_QUATERNARY},  // Y
         {4, GAMECUBE_BUTTON_LEFT_TRIGGER_CLICK},
         {5, GAMECUBE_BUTTON_RIGHT_TRIGGER_CLICK},
         {6, BUTTON_INDEX_RIGHT_SHOULDER},
         {7, BUTTON_INDEX_START},
         {8, BUTTON_INDEX_DPAD_LEFT},
         {9, BUTTON_INDEX_DPAD_RIGHT},
         {10, BUTTON_INDEX_DPAD_DOWN},
-        {11, BUTTON_INDEX_DPAD_UP}
-      };
+        {11, BUTTON_INDEX_DPAD_UP}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 
-private:
+ private:
   enum GamecubeButtons {
     GAMECUBE_BUTTON_LEFT_TRIGGER_CLICK = BUTTON_INDEX_COUNT,
     GAMECUBE_BUTTON_RIGHT_TRIGGER_CLICK,
     GAMECUBE_BUTTON_COUNT
   };
 };
 
 class BoomN64PsxRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
 
-    virtual uint32_t GetButtonCount() const override {
-      return BUTTON_INDEX_COUNT - 1;  // no meta
-    }
-
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+  virtual uint32_t GetButtonCount() const override {
+    return BUTTON_INDEX_COUNT - 1;  // no meta
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        case 5:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in BoomN64PsxRemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-          GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      case 5:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in BoomN64PsxRemapper().", aAxis)
+                .get());
+        break;
+    }
+  }
 
-      const std::vector<uint32_t> buttonMapping = {
-        BUTTON_INDEX_QUATERNARY,
-        BUTTON_INDEX_SECONDARY,
-        BUTTON_INDEX_PRIMARY,
-        BUTTON_INDEX_TERTIARY,
-        BUTTON_INDEX_LEFT_TRIGGER,
-        BUTTON_INDEX_RIGHT_TRIGGER,
-        BUTTON_INDEX_LEFT_SHOULDER,
-        BUTTON_INDEX_RIGHT_SHOULDER,
-        BUTTON_INDEX_BACK_SELECT,
-        BUTTON_INDEX_LEFT_THUMBSTICK,
-        BUTTON_INDEX_RIGHT_THUMBSTICK,
-        BUTTON_INDEX_START,
-        BUTTON_INDEX_DPAD_UP,
-        BUTTON_INDEX_DPAD_RIGHT,
-        BUTTON_INDEX_DPAD_DOWN,
-        BUTTON_INDEX_DPAD_LEFT
-      };
-
-      if (buttonMapping.size() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in BoomN64PsxRemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
-
-      service->NewButtonEvent(aIndex, buttonMapping[aButton], aPressed);
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-private:
+    const std::vector<uint32_t> buttonMapping = {
+        BUTTON_INDEX_QUATERNARY,       BUTTON_INDEX_SECONDARY,
+        BUTTON_INDEX_PRIMARY,          BUTTON_INDEX_TERTIARY,
+        BUTTON_INDEX_LEFT_TRIGGER,     BUTTON_INDEX_RIGHT_TRIGGER,
+        BUTTON_INDEX_LEFT_SHOULDER,    BUTTON_INDEX_RIGHT_SHOULDER,
+        BUTTON_INDEX_BACK_SELECT,      BUTTON_INDEX_LEFT_THUMBSTICK,
+        BUTTON_INDEX_RIGHT_THUMBSTICK, BUTTON_INDEX_START,
+        BUTTON_INDEX_DPAD_UP,          BUTTON_INDEX_DPAD_RIGHT,
+        BUTTON_INDEX_DPAD_DOWN,        BUTTON_INDEX_DPAD_LEFT};
+
+    if (buttonMapping.size() <= aIndex) {
+      NS_WARNING(nsPrintfCString(
+                     "Button idx '%d' doesn't support in BoomN64PsxRemapper().",
+                     aButton)
+                     .get());
+      return;
+    }
+
+    service->NewButtonEvent(aIndex, buttonMapping[aButton], aPressed);
+  }
+
+ private:
   enum GamecubeButtons {
     GAMECUBE_BUTTON_LEFT_TRIGGER_CLICK = BUTTON_INDEX_COUNT,
     GAMECUBE_BUTTON_RIGHT_TRIGGER_CLICK,
     GAMECUBE_BUTTON_COUNT
   };
 };
 
 class AnalogGamepadRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return ANALOG_GAMEPAD_BUTTON_COUNT;
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return ANALOG_GAMEPAD_BUTTON_COUNT;
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      case 3:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 4:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 5:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      case 9:
+        FetchDpadFromAxis(aIndex, aValue);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in AnalogGamepadRemapper().",
+                aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        case 3:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 4:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 5:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        case 9:
-          FetchDpadFromAxis(aIndex, aValue);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in AnalogGamepadRemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-          GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString(
+              "Button idx '%d' doesn't support in AnalogGamepadRemapper().",
+              aButton)
+              .get());
+      return;
+    }
 
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in AnalogGamepadRemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
-
-      const std::map<uint32_t, uint32_t> buttonMapping = {
+    const std::map<uint32_t, uint32_t> buttonMapping = {
         {3, BUTTON_INDEX_TERTIARY},
         {4, BUTTON_INDEX_QUATERNARY},
         {6, BUTTON_INDEX_LEFT_SHOULDER},
         {7, BUTTON_INDEX_RIGHT_SHOULDER},
         {10, BUTTON_INDEX_BACK_SELECT},
         {11, BUTTON_INDEX_META},
         {12, BUTTON_INDEX_START},
         {13, BUTTON_INDEX_LEFT_THUMBSTICK},
         {14, BUTTON_INDEX_RIGHT_THUMBSTICK},
         {16, ANALOG_GAMEPAD_BUTTON_EXTRA},
-        {17, ANALOG_GAMEPAD_BUTTON_EXTRA2}
-      };
+        {17, ANALOG_GAMEPAD_BUTTON_EXTRA2}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 
-private:
+ private:
   enum AnalogGamepadButtons {
     ANALOG_GAMEPAD_BUTTON_EXTRA = BUTTON_INDEX_COUNT,
     ANALOG_GAMEPAD_BUTTON_EXTRA2,
     ANALOG_GAMEPAD_BUTTON_COUNT
   };
 };
 
 class RazerServalRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return BUTTON_INDEX_COUNT - 1; /* no meta */
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return BUTTON_INDEX_COUNT - 1; /* no meta */
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      case 3:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 4:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 5:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      case 9:
+        FetchDpadFromAxis(aIndex, aValue);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in RazerServalRemapper().",
+                aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        case 3:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 4:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 5:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        case 9:
-          FetchDpadFromAxis(aIndex, aValue);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in RazerServalRemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-          GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
-
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in RazerServalRemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString(
+              "Button idx '%d' doesn't support in RazerServalRemapper().",
+              aButton)
+              .get());
+      return;
+    }
 
-      const std::map<uint32_t, uint32_t> buttonMapping = {
-        {3, BUTTON_INDEX_TERTIARY},
-        {4, BUTTON_INDEX_QUATERNARY},
-        {6, BUTTON_INDEX_LEFT_SHOULDER},
-        {7, BUTTON_INDEX_RIGHT_SHOULDER},
-        {10, BUTTON_INDEX_BACK_SELECT},
-        {11, BUTTON_INDEX_START},
-        {12, BUTTON_INDEX_START},
-        {13, BUTTON_INDEX_LEFT_THUMBSTICK},
-        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}
-      };
+    const std::map<uint32_t, uint32_t> buttonMapping = {
+        {3, BUTTON_INDEX_TERTIARY},         {4, BUTTON_INDEX_QUATERNARY},
+        {6, BUTTON_INDEX_LEFT_SHOULDER},    {7, BUTTON_INDEX_RIGHT_SHOULDER},
+        {10, BUTTON_INDEX_BACK_SELECT},     {11, BUTTON_INDEX_START},
+        {12, BUTTON_INDEX_START},           {13, BUTTON_INDEX_LEFT_THUMBSTICK},
+        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 };
 
 class MogaProRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return BUTTON_INDEX_COUNT - 1; /* no meta */
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return BUTTON_INDEX_COUNT - 1; /* no meta */
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                  double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      case 3:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 4:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 5:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      case 9:
+        FetchDpadFromAxis(aIndex, aValue);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in MogaProRemapper().", aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        case 3:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 4:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
-                                  aValue > 0.1f);
-          break;
-        case 5:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        case 9:
-          FetchDpadFromAxis(aIndex, aValue);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in MogaProRemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-          GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
-
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in MogaProRemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString(
+              "Button idx '%d' doesn't support in MogaProRemapper().", aButton)
+              .get());
+      return;
+    }
 
-      const std::map<uint32_t, uint32_t> buttonMapping = {
-        {3, BUTTON_INDEX_TERTIARY},
-        {4, BUTTON_INDEX_QUATERNARY},
-        {6, BUTTON_INDEX_LEFT_SHOULDER},
-        {7, BUTTON_INDEX_RIGHT_SHOULDER},
-        {11, BUTTON_INDEX_START},
-        {13, BUTTON_INDEX_LEFT_THUMBSTICK},
-        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}
-      };
+    const std::map<uint32_t, uint32_t> buttonMapping = {
+        {3, BUTTON_INDEX_TERTIARY},         {4, BUTTON_INDEX_QUATERNARY},
+        {6, BUTTON_INDEX_LEFT_SHOULDER},    {7, BUTTON_INDEX_RIGHT_SHOULDER},
+        {11, BUTTON_INDEX_START},           {13, BUTTON_INDEX_LEFT_THUMBSTICK},
+        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 };
 
 class OnLiveWirelessRemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return BUTTON_INDEX_COUNT;
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return BUTTON_INDEX_COUNT;
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                    double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 3:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      case 4:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      case 5:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 9:
+        FetchDpadFromAxis(aIndex, aValue);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString(
+                "Axis idx '%d' doesn't support in OnLiveWirelessRemapper().",
+                aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER, aValue > 0.1f);
-          break;
-        case 3:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        case 4:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        case 5:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER, aValue > 0.1f);
-          break;
-        case 9:
-          FetchDpadFromAxis(aIndex, aValue);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in OnLiveWirelessRemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-          GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString(
+              "Button idx '%d' doesn't support in OnLiveWirelessRemapper().",
+              aButton)
+              .get());
+      return;
+    }
 
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in OnLiveWirelessRemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
-
-      const std::map<uint32_t, uint32_t> buttonMapping = {
+    const std::map<uint32_t, uint32_t> buttonMapping = {
         {3, BUTTON_INDEX_TERTIARY},
         {4, BUTTON_INDEX_QUATERNARY},
         {6, BUTTON_INDEX_LEFT_SHOULDER},
         {7, BUTTON_INDEX_RIGHT_SHOULDER},
         {12, BUTTON_INDEX_META},
         {13, BUTTON_INDEX_LEFT_THUMBSTICK},
-        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}
-      };
+        {14, BUTTON_INDEX_RIGHT_THUMBSTICK}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 };
 
 class OUYARemapper final : public GamepadRemapper {
-  public:
-    virtual uint32_t GetAxisCount() const override {
-      return AXIS_INDEX_COUNT;
-    }
+ public:
+  virtual uint32_t GetAxisCount() const override { return AXIS_INDEX_COUNT; }
+
+  virtual uint32_t GetButtonCount() const override {
+    return BUTTON_INDEX_COUNT;
+  }
 
-    virtual uint32_t GetButtonCount() const override {
-      return BUTTON_INDEX_COUNT;
+  virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
+                                  double aValue) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapAxisMoveEvent(uint32_t aIndex, uint32_t aAxis,
-                                    double aValue) const override {
-      RefPtr<GamepadPlatformService> service =
-        GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
+    switch (aAxis) {
+      case 0:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
+        break;
+      case 1:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
+        break;
+      case 2:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      case 3:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
+        break;
+      case 4:
+        service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
+        break;
+      case 5:
+        service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER,
+                                aValue > 0.1f);
+        break;
+      default:
+        NS_WARNING(
+            nsPrintfCString("Axis idx '%d' doesn't support in OUYARemapper().",
+                            aAxis)
+                .get());
+        break;
+    }
+  }
 
-      switch (aAxis) {
-        case 0:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_X, aValue);
-          break;
-        case 1:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_LEFT_STICK_Y, aValue);
-          break;
-        case 2:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_LEFT_TRIGGER, aValue > 0.1f);
-          break;
-        case 3:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_X, aValue);
-          break;
-        case 4:
-          service->NewAxisMoveEvent(aIndex, AXIS_INDEX_RIGHT_STICK_Y, aValue);
-          break;
-        case 5:
-          service->NewButtonEvent(aIndex, BUTTON_INDEX_RIGHT_TRIGGER, aValue > 0.1f);
-          break;
-        default:
-          NS_WARNING(
-              nsPrintfCString(
-                  "Axis idx '%d' doesn't support in OUYARemapper().", aAxis)
-                  .get());
-          break;
-      }
+  virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
+                                bool aPressed) const override {
+    RefPtr<GamepadPlatformService> service =
+        GamepadPlatformService::GetParentService();
+    if (!service) {
+      return;
     }
 
-    virtual void RemapButtonEvent(uint32_t aIndex, uint32_t aButton,
-                                  bool aPressed) const override {
-      RefPtr<GamepadPlatformService> service =
-          GamepadPlatformService::GetParentService();
-      if (!service) {
-        return;
-      }
-
-      if (GetButtonCount() <= aIndex) {
-        NS_WARNING(
-              nsPrintfCString(
-                  "Button idx '%d' doesn't support in OUYARemapper().",
-                  aButton)
-                  .get());
-        return;
-      }
+    if (GetButtonCount() <= aIndex) {
+      NS_WARNING(
+          nsPrintfCString("Button idx '%d' doesn't support in OUYARemapper().",
+                          aButton)
+              .get());
+      return;
+    }
 
-      const std::map<uint32_t, uint32_t> buttonMapping = {
-        {1, BUTTON_INDEX_TERTIARY},
-        {2, BUTTON_INDEX_QUATERNARY},
-        {3, BUTTON_INDEX_SECONDARY},
-        {6, BUTTON_INDEX_LEFT_THUMBSTICK},
-        {7, BUTTON_INDEX_RIGHT_THUMBSTICK},
-        {8, BUTTON_INDEX_DPAD_UP},
-        {9, BUTTON_INDEX_DPAD_DOWN},
-        {10, BUTTON_INDEX_DPAD_LEFT},
-        {11, BUTTON_INDEX_DPAD_RIGHT},
-        {15, BUTTON_INDEX_META}
-      };
+    const std::map<uint32_t, uint32_t> buttonMapping = {
+        {1, BUTTON_INDEX_TERTIARY},         {2, BUTTON_INDEX_QUATERNARY},
+        {3, BUTTON_INDEX_SECONDARY},        {6, BUTTON_INDEX_LEFT_THUMBSTICK},
+        {7, BUTTON_INDEX_RIGHT_THUMBSTICK}, {8, BUTTON_INDEX_DPAD_UP},
+        {9, BUTTON_INDEX_DPAD_DOWN},        {10, BUTTON_INDEX_DPAD_LEFT},
+        {11, BUTTON_INDEX_DPAD_RIGHT},      {15, BUTTON_INDEX_META}};
 
-      auto find = buttonMapping.find(aButton);
-      if (find != buttonMapping.end()) {
-        service->NewButtonEvent(aIndex, find->second, aPressed);
-      } else {
-        service->NewButtonEvent(aIndex, aButton, aPressed);
-      }
+    auto find = buttonMapping.find(aButton);
+    if (find != buttonMapping.end()) {
+      service->NewButtonEvent(aIndex, find->second, aPressed);
+    } else {
+      service->NewButtonEvent(aIndex, aButton, aPressed);
     }
+  }
 };
-      
+
 already_AddRefed<GamepadRemapper> GetGamepadRemapper(
     const uint16_t aVendorId, const uint16_t aProductId) {
   const std::vector<GamepadRemappingData> remappingRules = {
       {GamepadId::kAsusTekProduct4500, new ADT1Remapper()},
       {GamepadId::kDragonRiseProduct0011, new TwoAxesEightKeysRemapper()},
       {GamepadId::kGoogleProduct2c40, new ADT1Remapper()},
       {GamepadId::kGoogleProduct9400, new StadiaControllerRemapper()},
       {GamepadId::kLogitechProductc216, new LogitechDInputRemapper()},
@@ -1514,18 +1458,17 @@ already_AddRefed<GamepadRemapper> GetGam
       {GamepadId::kPrototypeVendorProduct9401, new AnalogGamepadRemapper()},
       {GamepadId::kRazer1532Product0900, new RazerServalRemapper()},
       {GamepadId::kSonyProduct05c4, new Dualshock4Remapper()},
       {GamepadId::kSonyProduct09cc, new Dualshock4Remapper()},
       {GamepadId::kSonyProduct0ba0, new Dualshock4Remapper()},
       {GamepadId::kVendor20d6Product6271, new MogaProRemapper()},
       {GamepadId::kVendor2378Product1008, new OnLiveWirelessRemapper()},
       {GamepadId::kVendor2378Product100a, new OnLiveWirelessRemapper()},
-      {GamepadId::kVendor2836Product0001, new OUYARemapper()}
-  };
+      {GamepadId::kVendor2836Product0001, new OUYARemapper()}};
   const GamepadId id = static_cast<GamepadId>((aVendorId << 16) | aProductId);
 
   for (uint32_t i = 0; i < remappingRules.size(); ++i) {
     if (id == remappingRules[i].id) {
       return do_AddRef(remappingRules[i].remapping.get());
     }
   }
 
--- a/dom/html/HTMLLinkElement.cpp
+++ b/dom/html/HTMLLinkElement.cpp
@@ -339,20 +339,19 @@ nsresult HTMLLinkElement::AfterSetAttr(i
       }
 
       if ((aName == nsGkAtoms::as || aName == nsGkAtoms::type ||
            aName == nsGkAtoms::crossorigin || aName == nsGkAtoms::media) &&
           IsInComposedDoc()) {
         UpdatePreload(aName, aValue, aOldValue);
       }
 
-      const bool forceUpdate = dropSheet || aName == nsGkAtoms::title ||
-                               aName == nsGkAtoms::media ||
-                               aName == nsGkAtoms::type ||
-                               aName == nsGkAtoms::disabled;
+      const bool forceUpdate =
+          dropSheet || aName == nsGkAtoms::title || aName == nsGkAtoms::media ||
+          aName == nsGkAtoms::type || aName == nsGkAtoms::disabled;
 
       Unused << UpdateStyleSheetInternal(
           nullptr, nullptr, forceUpdate ? ForceUpdate::Yes : ForceUpdate::No);
     }
   } else {
     if (aNameSpaceID == kNameSpaceID_None) {
       if (aName == nsGkAtoms::disabled &&
           StaticPrefs::dom_link_disabled_attribute_enabled()) {
--- a/dom/indexedDB/ActorsParent.cpp
+++ b/dom/indexedDB/ActorsParent.cpp
@@ -7848,18 +7848,17 @@ class QuotaClient final : public mozilla
   mozilla::dom::quota::Client::Type GetType() override;
 
   nsresult UpgradeStorageFrom1_0To2_0(nsIFile* aDirectory) override;
 
   nsresult UpgradeStorageFrom2_1To2_2(nsIFile* aDirectory) override;
 
   nsresult InitOrigin(PersistenceType aPersistenceType,
                       const nsACString& aGroup, const nsACString& aOrigin,
-                      const AtomicBool& aCanceled,
-                      UsageInfo* aUsageInfo,
+                      const AtomicBool& aCanceled, UsageInfo* aUsageInfo,
                       bool aForGetUsage) override;
 
   nsresult GetUsageForOrigin(PersistenceType aPersistenceType,
                              const nsACString& aGroup,
                              const nsACString& aOrigin,
                              const AtomicBool& aCanceled,
                              UsageInfo* aUsageInfo) override;
 
@@ -15955,18 +15954,17 @@ nsresult QuotaClient::UpgradeStorageFrom
 
   return NS_OK;
 }
 
 nsresult QuotaClient::InitOrigin(PersistenceType aPersistenceType,
                                  const nsACString& aGroup,
                                  const nsACString& aOrigin,
                                  const AtomicBool& aCanceled,
-                                 UsageInfo* aUsageInfo,
-                                 bool aForGetUsage) {
+                                 UsageInfo* aUsageInfo, bool aForGetUsage) {
   AssertIsOnIOThread();
 
   nsCOMPtr<nsIFile> directory;
   nsresult rv =
       GetDirectory(aPersistenceType, aOrigin, getter_AddRefs(directory));
   if (NS_WARN_IF(NS_FAILED(rv))) {
     REPORT_TELEMETRY_INIT_ERR(kExternalError, IDB_GetDirectory);
     return rv;
--- a/dom/ipc/ContentChild.cpp
+++ b/dom/ipc/ContentChild.cpp
@@ -3689,21 +3689,21 @@ already_AddRefed<nsIEventTarget> Content
       }
       aMsg.IgnoreSentinel(&iter);
       if (NS_WARN_IF(!IPC::ReadParam(&aMsg, &iter, &sameTabGroupAs))) {
         return nullptr;
       }
 
       // If sameTabGroupAs is non-zero, then the new tab will be in the same
       // TabGroup as a previously created tab. Rather than try to find the
-      // previously created tab (whose constructor message may not even have been
-      // processed yet, in theory) and look up its event target, we just use the
-      // default event target. This means that runnables for this tab will not be
-      // labeled. However, this path is only taken for print preview and view
-      // source, which are not performance-sensitive.
+      // previously created tab (whose constructor message may not even have
+      // been processed yet, in theory) and look up its event target, we just
+      // use the default event target. This means that runnables for this tab
+      // will not be labeled. However, this path is only taken for print preview
+      // and view source, which are not performance-sensitive.
       if (sameTabGroupAs) {
         return nullptr;
       }
 
       if (NS_WARN_IF(!endpoint.IsValid())) {
         return nullptr;
       }
 
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -1182,18 +1182,19 @@ TabParent* ContentParent::CreateBrowser(
 
     if (tabId == 0) {
       return nullptr;
     }
 
     aBrowsingContext->Canonical()->SetOwnerProcessId(
         constructorSender->ChildID());
 
-    RefPtr<TabParent> tabParent = new TabParent(
-        constructorSender, tabId, aContext, aBrowsingContext->Canonical(), chromeFlags);
+    RefPtr<TabParent> tabParent =
+        new TabParent(constructorSender, tabId, aContext,
+                      aBrowsingContext->Canonical(), chromeFlags);
 
     // Open a remote endpoint for our PBrowser actor. DeallocPBrowserParent
     // releases the ref taken.
     ManagedEndpoint<PBrowserChild> childEp =
         constructorSender->OpenPBrowserEndpoint(do_AddRef(tabParent).take());
     if (NS_WARN_IF(!childEp.IsValid())) {
       return nullptr;
     }
--- a/dom/media/AudioConverter.cpp
+++ b/dom/media/AudioConverter.cpp
@@ -1,17 +1,17 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "AudioConverter.h"
+#include <speex/speex_resampler.h>
 #include <string.h>
-#include <speex/speex_resampler.h>
 #include <cmath>
 
 /*
  *  Parts derived from MythTV AudioConvert Class
  *  Created by Jean-Yves Avenard.
  *
  *  Copyright (C) Bubblestuff Pty Ltd 2013
  *  Copyright (C) foobum@gmail.com 2010
@@ -146,49 +146,50 @@ static void dumbUpDownMix(TYPE* aOut, in
     for (int32_t j = 0; j < aInChannels - aOutChannels; j++) {
       aOut[i * aOutChannels + j] = 0;
     }
   }
 }
 
 size_t AudioConverter::DownmixAudio(void* aOut, const void* aIn,
                                     size_t aFrames) const {
-  MOZ_ASSERT(mIn.Format() == AudioConfig::FORMAT_S16 ||
-             mIn.Format() == AudioConfig::FORMAT_FLT);
-  MOZ_ASSERT(mIn.Channels() >= mOut.Channels());
-  MOZ_ASSERT(mOut.Layout() == AudioConfig::ChannelLayout(2) ||
-             mOut.Layout() == AudioConfig::ChannelLayout(1));
+  MOZ_DIAGNOSTIC_ASSERT(mIn.Format() == AudioConfig::FORMAT_S16 ||
+                        mIn.Format() == AudioConfig::FORMAT_FLT);
+  MOZ_DIAGNOSTIC_ASSERT(mIn.Channels() >= mOut.Channels());
+  MOZ_DIAGNOSTIC_ASSERT(mOut.Layout() == AudioConfig::ChannelLayout(2) ||
+                        mOut.Layout() == AudioConfig::ChannelLayout(1));
 
-  uint32_t channels = mIn.Channels();
+  uint32_t inChannels = mIn.Channels();
+  uint32_t outChannels = mOut.Channels();
 
-  if (channels == 1 && mOut.Channels() == 1) {
+  if (inChannels == outChannels) {
     if (aOut != aIn) {
       memmove(aOut, aIn, FramesOutToBytes(aFrames));
     }
     return aFrames;
   }
 
   if (!mIn.Layout().IsValid() || !mOut.Layout().IsValid()) {
     // Dumb copy dropping extra channels.
     if (mIn.Format() == AudioConfig::FORMAT_FLT) {
-      dumbUpDownMix(static_cast<float*>(aOut), mOut.Channels(),
-                    static_cast<const float*>(aIn), mIn.Channels(), aFrames);
+      dumbUpDownMix(static_cast<float*>(aOut), outChannels,
+                    static_cast<const float*>(aIn), inChannels, aFrames);
     } else if (mIn.Format() == AudioConfig::FORMAT_S16) {
-      dumbUpDownMix(static_cast<int16_t*>(aOut), mOut.Channels(),
-                    static_cast<const int16_t*>(aIn), mIn.Channels(), aFrames);
+      dumbUpDownMix(static_cast<int16_t*>(aOut), outChannels,
+                    static_cast<const int16_t*>(aIn), inChannels, aFrames);
     } else {
       MOZ_DIAGNOSTIC_ASSERT(false, "Unsupported data type");
     }
     return aFrames;
   }
 
   MOZ_ASSERT(
       mIn.Layout() == AudioConfig::ChannelLayout::SMPTEDefault(mIn.Layout()),
       "Can only downmix input data in SMPTE layout");
-  if (channels > 2) {
+  if (inChannels > 2) {
     if (mIn.Format() == AudioConfig::FORMAT_FLT) {
       // Downmix matrix. Per-row normalization 1 for rows 3,4 and 2 for rows
       // 5-8.
       static const float dmatrix[6][8][2] = {
           /*3*/ {{0.5858f, 0}, {0, 0.5858f}, {0.4142f, 0.4142f}},
           /*4*/
           {{0.4226f, 0}, {0, 0.4226f}, {0.366f, 0.2114f}, {0.2114f, 0.366f}},
           /*5*/
@@ -223,24 +224,26 @@ size_t AudioConverter::DownmixAudio(void
            {0.1943f, 0.3366f}},
       };
       // Re-write the buffer with downmixed data
       const float* in = static_cast<const float*>(aIn);
       float* out = static_cast<float*>(aOut);
       for (uint32_t i = 0; i < aFrames; i++) {
         float sampL = 0.0;
         float sampR = 0.0;
-        for (uint32_t j = 0; j < channels; j++) {
-          sampL +=
-              in[i * mIn.Channels() + j] * dmatrix[mIn.Channels() - 3][j][0];
-          sampR +=
-              in[i * mIn.Channels() + j] * dmatrix[mIn.Channels() - 3][j][1];
+        for (uint32_t j = 0; j < inChannels; j++) {
+          sampL += in[i * inChannels + j] * dmatrix[inChannels - 3][j][0];
+          sampR += in[i * inChannels + j] * dmatrix[inChannels - 3][j][1];
         }
-        *out++ = sampL;
-        *out++ = sampR;
+        if (outChannels == 2) {
+          *out++ = sampL;
+          *out++ = sampR;
+        } else {
+          *out++ = (sampL + sampR) * 0.5;
+        }
       }
     } else if (mIn.Format() == AudioConfig::FORMAT_S16) {
       // Downmix matrix. Per-row normalization 1 for rows 3,4 and 2 for rows
       // 5-8. Coefficients in Q14.
       static const int16_t dmatrix[6][8][2] = {
           /*3*/ {{9598, 0}, {0, 9598}, {6786, 6786}},
           /*4*/ {{6925, 0}, {0, 6925}, {5997, 3462}, {3462, 5997}},
           /*5*/
@@ -270,55 +273,56 @@ size_t AudioConverter::DownmixAudio(void
            {5514, 3184},
            {3184, 5514}}};
       // Re-write the buffer with downmixed data
       const int16_t* in = static_cast<const int16_t*>(aIn);
       int16_t* out = static_cast<int16_t*>(aOut);
       for (uint32_t i = 0; i < aFrames; i++) {
         int32_t sampL = 0;
         int32_t sampR = 0;
-        for (uint32_t j = 0; j < channels; j++) {
-          sampL += in[i * channels + j] * dmatrix[channels - 3][j][0];
-          sampR += in[i * channels + j] * dmatrix[channels - 3][j][1];
+        for (uint32_t j = 0; j < inChannels; j++) {
+          sampL += in[i * inChannels + j] * dmatrix[inChannels - 3][j][0];
+          sampR += in[i * inChannels + j] * dmatrix[inChannels - 3][j][1];
         }
-        *out++ = clipTo15((sampL + 8192) >> 14);
-        *out++ = clipTo15((sampR + 8192) >> 14);
+        sampL = clipTo15((sampL + 8192) >> 14);
+        sampR = clipTo15((sampR + 8192) >> 14);
+        if (outChannels == 2) {
+          *out++ = sampL;
+          *out++ = sampR;
+        } else {
+          *out++ = (sampL + sampR) * 0.5;
+        }
       }
     } else {
       MOZ_DIAGNOSTIC_ASSERT(false, "Unsupported data type");
     }
-
-    // If we are to continue downmixing to mono, start working on the output
-    // buffer.
-    aIn = aOut;
-    channels = 2;
+    return aFrames;
   }
 
-  if (mOut.Channels() == 1) {
-    if (mIn.Format() == AudioConfig::FORMAT_FLT) {
-      const float* in = static_cast<const float*>(aIn);
-      float* out = static_cast<float*>(aOut);
-      for (size_t fIdx = 0; fIdx < aFrames; ++fIdx) {
-        float sample = 0.0;
-        // The sample of the buffer would be interleaved.
-        sample = (in[fIdx * channels] + in[fIdx * channels + 1]) * 0.5;
-        *out++ = sample;
-      }
-    } else if (mIn.Format() == AudioConfig::FORMAT_S16) {
-      const int16_t* in = static_cast<const int16_t*>(aIn);
-      int16_t* out = static_cast<int16_t*>(aOut);
-      for (size_t fIdx = 0; fIdx < aFrames; ++fIdx) {
-        int32_t sample = 0.0;
-        // The sample of the buffer would be interleaved.
-        sample = (in[fIdx * channels] + in[fIdx * channels + 1]) * 0.5;
-        *out++ = sample;
-      }
-    } else {
-      MOZ_DIAGNOSTIC_ASSERT(false, "Unsupported data type");
+  MOZ_DIAGNOSTIC_ASSERT(inChannels == 2 && outChannels == 1);
+  if (mIn.Format() == AudioConfig::FORMAT_FLT) {
+    const float* in = static_cast<const float*>(aIn);
+    float* out = static_cast<float*>(aOut);
+    for (size_t fIdx = 0; fIdx < aFrames; ++fIdx) {
+      float sample = 0.0;
+      // The sample of the buffer would be interleaved.
+      sample = (in[fIdx * inChannels] + in[fIdx * inChannels + 1]) * 0.5;
+      *out++ = sample;
     }
+  } else if (mIn.Format() == AudioConfig::FORMAT_S16) {
+    const int16_t* in = static_cast<const int16_t*>(aIn);
+    int16_t* out = static_cast<int16_t*>(aOut);
+    for (size_t fIdx = 0; fIdx < aFrames; ++fIdx) {
+      int32_t sample = 0.0;
+      // The sample of the buffer would be interleaved.
+      sample = (in[fIdx * inChannels] + in[fIdx * inChannels + 1]) * 0.5;
+      *out++ = sample;
+    }
+  } else {
+    MOZ_DIAGNOSTIC_ASSERT(false, "Unsupported data type");
   }
   return aFrames;
 }
 
 size_t AudioConverter::ResampleAudio(void* aOut, const void* aIn,
                                      size_t aFrames) {
   if (!mResampler) {
     return 0;
--- a/dom/media/GraphDriver.h
+++ b/dom/media/GraphDriver.h
@@ -317,17 +317,17 @@ struct StreamAndPromiseForOperation {
                                dom::AudioContextOperation aOperation,
                                dom::AudioContextOperationFlags aFlags);
   RefPtr<MediaStream> mStream;
   void* mPromise;
   dom::AudioContextOperation mOperation;
   dom::AudioContextOperationFlags mFlags;
 };
 
-enum class AsyncCubebOperation { INIT, START, STOP, SHUTDOWN  };
+enum class AsyncCubebOperation { INIT, START, STOP, SHUTDOWN };
 enum class AudioInputType { Unknown, Voice };
 
 /**
  * This is a graph driver that is based on callback functions called by the
  * audio api. This ensures minimal audio latency, because it means there is no
  * buffering happening: the audio is generated inside the callback.
  *
  * This design is less flexible than running our own thread:
--- a/dom/media/VideoUtils.cpp
+++ b/dom/media/VideoUtils.cpp
@@ -61,19 +61,18 @@ TimeUnit FramesToTimeUnit(int64_t aFrame
 // Converts from microseconds to number of audio frames, given the specified
 // audio rate.
 CheckedInt64 UsecsToFrames(int64_t aUsecs, uint32_t aRate) {
   return SaferMultDiv(aUsecs, aRate, USECS_PER_S);
 }
 
 // Format TimeUnit as number of frames at given rate.
 CheckedInt64 TimeUnitToFrames(const TimeUnit& aTime, uint32_t aRate) {
-  return aTime.IsValid() ?
-      UsecsToFrames(aTime.ToMicroseconds(), aRate) :
-      CheckedInt64(INT64_MAX) + 1;
+  return aTime.IsValid() ? UsecsToFrames(aTime.ToMicroseconds(), aRate)
+                         : CheckedInt64(INT64_MAX) + 1;
 }
 
 nsresult SecondsToUsecs(double aSeconds, int64_t& aOutUsecs) {
   if (aSeconds * double(USECS_PER_S) > INT64_MAX) {
     return NS_ERROR_FAILURE;
   }
   aOutUsecs = int64_t(aSeconds * double(USECS_PER_S));
   return NS_OK;
--- a/dom/media/webrtc/MediaEngineWebRTC.cpp
+++ b/dom/media/webrtc/MediaEngineWebRTC.cpp
@@ -178,21 +178,21 @@ void MediaEngineWebRTC::EnumerateMicroph
       if (devices[i]->Preferred()) {
 #ifdef DEBUG
         if (!foundPreferredDevice) {
           foundPreferredDevice = true;
         } else {
           // This is possible on windows, there is a default communication
           // device, and a default device:
           // See https://bugzilla.mozilla.org/show_bug.cgi?id=1542739
-#ifndef XP_WIN
+#  ifndef XP_WIN
           MOZ_ASSERT(!foundPreferredDevice,
                      "Found more than one preferred audio input device"
                      "while enumerating");
-#endif
+#  endif
         }
 #endif
         aDevices->InsertElementAt(0, device);
       } else {
         aDevices->AppendElement(device);
       }
     }
   }
--- a/dom/quota/Client.h
+++ b/dom/quota/Client.h
@@ -138,18 +138,17 @@ class Client {
   virtual nsresult UpgradeStorageFrom2_1To2_2(nsIFile* aDirectory) {
     return NS_OK;
   }
 
   virtual nsresult InitOrigin(PersistenceType aPersistenceType,
                               const nsACString& aGroup,
                               const nsACString& aOrigin,
                               const AtomicBool& aCanceled,
-                              UsageInfo* aUsageInfo,
-                              bool aForGetUsage) = 0;
+                              UsageInfo* aUsageInfo, bool aForGetUsage) = 0;
 
   virtual nsresult GetUsageForOrigin(PersistenceType aPersistenceType,
                                      const nsACString& aGroup,
                                      const nsACString& aOrigin,
                                      const AtomicBool& aCanceled,
                                      UsageInfo* aUsageInfo) = 0;
 
   // This method is called when origins are about to be cleared
--- a/dom/simpledb/ActorsParent.cpp
+++ b/dom/simpledb/ActorsParent.cpp
@@ -437,18 +437,17 @@ class QuotaClient final : public mozilla
   }
 
   NS_INLINE_DECL_THREADSAFE_REFCOUNTING(QuotaClient, override)
 
   Type GetType() override;
 
   nsresult InitOrigin(PersistenceType aPersistenceType,
                       const nsACString& aGroup, const nsACString& aOrigin,
-                      const AtomicBool& aCanceled,
-                      UsageInfo* aUsageInfo,
+                      const AtomicBool& aCanceled, UsageInfo* aUsageInfo,
                       bool aForGetUsage) override;
 
   nsresult GetUsageForOrigin(PersistenceType aPersistenceType,
                              const nsACString& aGroup,
                              const nsACString& aOrigin,
                              const AtomicBool& aCanceled,
                              UsageInfo* aUsageInfo) override;
 
@@ -1606,18 +1605,17 @@ QuotaClient::~QuotaClient() {
 mozilla::dom::quota::Client::Type QuotaClient::GetType() {
   return QuotaClient::SDB;
 }
 
 nsresult QuotaClient::InitOrigin(PersistenceType aPersistenceType,
                                  const nsACString& aGroup,
                                  const nsACString& aOrigin,
                                  const AtomicBool& aCanceled,
-                                 UsageInfo* aUsageInfo,
-                                 bool aForGetUsage) {
+                                 UsageInfo* aUsageInfo, bool aForGetUsage) {
   AssertIsOnIOThread();
 
   if (!aUsageInfo) {
     return NS_OK;
   }
 
   return GetUsageForOrigin(aPersistenceType, aGroup, aOrigin, aCanceled,
                            aUsageInfo);
--- a/dom/tests/mochitest/general/test_offsets.js
+++ b/dom/tests/mochitest/general/test_offsets.js
@@ -27,16 +27,20 @@ function testElements(baseid, callback)
   div.scrollLeft = 10;
   div.scrollTop = 10;
   is(element.scrollLeft, 0, element.id + " scrollLeft after nonscroll");
   is(element.scrollTop, 0, element.id + " scrollTop after nonscroll");
 
   callback();
 }
 
+function usesSVGLayout(e) {
+  return e instanceof SVGElement && !(e instanceof SVGSVGElement);
+}
+
 function toNearestAppunit(v)
 {
   // 60 appunits per CSS pixel; round result to the nearest appunit
   return Math.round(v*60)/60;
 }
 
 function isEqualAppunits(a, b, msg)
 {
@@ -89,23 +93,23 @@ function testElement(element)
       doScrollCheck = false;
     } else {
       scrollWidth = clientWidth;
       scrollHeight = clientHeight;
     }
   }
 
   if (doScrollCheck) {
-    if (element instanceof SVGElement)
+    if (usesSVGLayout(element))
       checkScrollState(element, 0, 0, 0, 0, element.id);
      else
       checkScrollState(element, 0, 0, scrollWidth, scrollHeight, element.id);
   }
 
-  if (element instanceof SVGElement)
+  if (usesSVGLayout(element))
     checkClientState(element, 0, 0, 0, 0, element.id);
   else
     checkClientState(element, borderLeft, borderTop, clientWidth, clientHeight, element.id);
 
   var boundingrect = element.getBoundingClientRect();
   isEqualAppunits(boundingrect.width, borderLeft + paddingLeft + width + paddingRight + borderRight,
      element.id + " bounding rect width");
   isEqualAppunits(boundingrect.height, borderTop + paddingTop + height + paddingBottom + borderBottom,
@@ -202,27 +206,27 @@ function checkCoords(element, type, left
     // scrollWidth and scrollHeight can deviate by 1 pixel due to snapping.
     checkCoordFuzzy(element, type + "Width", width, 1, testname);
     checkCoordFuzzy(element, type + "Height", height, 1, testname);
   } else {
     checkCoord(element, type + "Width", width, testname);
     checkCoord(element, type + "Height", height, testname);
   }
 
-  if (element instanceof SVGElement)
+  if (usesSVGLayout(element))
     return;
 
   if (element.id == "outerpopup" && !element.parentNode.open) // closed popup
     return;
 
   if (element.id == "div-displaynone" || element.id == "nonappended") // hidden elements
     ok(element[type + "Width"] == 0 && element[type + "Height"] == 0,
        element.id + " has zero " + type + " width and height");
 }
 
 function gcs(element, prop)
 {
-  var propVal = (element instanceof SVGElement && (prop == "width" || prop == "height")) ?
+  var propVal = (usesSVGLayout(element) && (prop == "width" || prop == "height")) ?
                    element.getAttribute(prop) : getComputedStyle(element, "")[prop];
   if (propVal == "auto" || element.id == "nonappended")
     return 0;
   return parseFloat(propVal);
 }
--- a/dom/workers/WorkerError.cpp
+++ b/dom/workers/WorkerError.cpp
@@ -195,22 +195,24 @@ void WorkerErrorBase::AssignErrorBase(JS
 }
 
 void WorkerErrorNote::AssignErrorNote(JSErrorNotes::Note* aNote) {
   WorkerErrorBase::AssignErrorBase(aNote);
   xpc::ErrorNote::ErrorNoteToMessageString(aNote, mMessage);
 }
 
 WorkerErrorReport::WorkerErrorReport(WorkerPrivate* aWorkerPrivate)
-  : StructuredCloneHolder(CloningSupported, TransferringNotSupported,
-                          StructuredCloneScope::SameProcessDifferentThread),
-    mFlags(0), mExnType(JSEXN_ERR), mMutedError(false) {
+    : StructuredCloneHolder(CloningSupported, TransferringNotSupported,
+                            StructuredCloneScope::SameProcessDifferentThread),
+      mFlags(0),
+      mExnType(JSEXN_ERR),
+      mMutedError(false) {
   if (aWorkerPrivate) {
-    RefPtr<StrongWorkerRef> workerRef = StrongWorkerRef::Create(
-        aWorkerPrivate, "WorkerErrorReport");
+    RefPtr<StrongWorkerRef> workerRef =
+        StrongWorkerRef::Create(aWorkerPrivate, "WorkerErrorReport");
     if (workerRef) {
       mWorkerRef = new ThreadSafeWorkerRef(workerRef);
     }
   }
 }
 
 void WorkerErrorReport::AssignErrorReport(JSErrorReport* aReport) {
   WorkerErrorBase::AssignErrorBase(aReport);
--- a/dom/workers/WorkerPrivate.cpp
+++ b/dom/workers/WorkerPrivate.cpp
@@ -4054,17 +4054,18 @@ void WorkerPrivate::ReportError(JSContex
   UniquePtr<WorkerErrorReport> report = MakeUnique<WorkerErrorReport>(this);
   if (aReport) {
     report->AssignErrorReport(aReport);
   } else {
     report->mFlags = nsIScriptError::errorFlag | nsIScriptError::exceptionFlag;
   }
 
   JS::RootedObject stack(aCx), stackGlobal(aCx);
-  xpc::FindExceptionStackForConsoleReport(nullptr, exn, exnStack, &stack, &stackGlobal);
+  xpc::FindExceptionStackForConsoleReport(nullptr, exn, exnStack, &stack,
+                                          &stackGlobal);
 
   if (stack) {
     JS::RootedValue stackValue(aCx, JS::ObjectValue(*stack));
     report->Write(aCx, stackValue, IgnoreErrors());
   }
 
   if (report->mMessage.IsEmpty() && aToStringResult) {
     nsDependentCString toStringResult(aToStringResult.c_str());
@@ -4086,18 +4087,18 @@ void WorkerPrivate::ReportError(JSContex
   data->mErrorHandlerRecursionCount++;
 
   // Don't want to run the scope's error handler if this is a recursive error or
   // if we ran out of memory.
   bool fireAtScope = data->mErrorHandlerRecursionCount == 1 &&
                      report->mErrorNumber != JSMSG_OUT_OF_MEMORY &&
                      JS::CurrentGlobalOrNull(aCx);
 
-  WorkerErrorReport::ReportError(aCx, this, fireAtScope,
-                                 nullptr, std::move(report), 0, exn);
+  WorkerErrorReport::ReportError(aCx, this, fireAtScope, nullptr,
+                                 std::move(report), 0, exn);
 
   data->mErrorHandlerRecursionCount--;
 }
 
 // static
 void WorkerPrivate::ReportErrorToConsole(const char* aMessage) {
   nsTArray<nsString> emptyParams;
   WorkerPrivate::ReportErrorToConsole(aMessage, emptyParams);
--- a/dom/workers/sharedworkers/SharedWorkerService.cpp
+++ b/dom/workers/sharedworkers/SharedWorkerService.cpp
@@ -213,19 +213,18 @@ void SharedWorkerService::GetOrCreateWor
 void SharedWorkerService::GetOrCreateWorkerManagerOnMainThread(
     nsIEventTarget* aBackgroundEventTarget, SharedWorkerParent* aActor,
     const RemoteWorkerData& aData, uint64_t aWindowID,
     const MessagePortIdentifier& aPortIdentifier) {
   MOZ_ASSERT(NS_IsMainThread());
   MOZ_ASSERT(aBackgroundEventTarget);
   MOZ_ASSERT(aActor);
 
-  auto closeMessagePortIdentifier = MakeScopeExit([&] {
-    MessagePort::ForceClose(aPortIdentifier);
-  });
+  auto closeMessagePortIdentifier =
+      MakeScopeExit([&] { MessagePort::ForceClose(aPortIdentifier); });
 
   nsresult rv = NS_OK;
   nsCOMPtr<nsIPrincipal> storagePrincipal =
       PrincipalInfoToPrincipal(aData.storagePrincipalInfo(), &rv);
   if (NS_WARN_IF(!storagePrincipal)) {
     ErrorPropagationOnMainThread(aBackgroundEventTarget, aActor, rv);
     return;
   }
--- a/gfx/gl/GLContext.cpp
+++ b/gfx/gl/GLContext.cpp
@@ -2875,23 +2875,25 @@ void GLContext::AfterGLCall_Debug(const 
 
   if (mDebugFlags & DebugFlagTrace) {
     printf_stderr("[gl:%p] < %s [%s]\n", this, funcName,
                   GLErrorToString(err).c_str());
   }
 
   if (err && !mLocalErrorScopeStack.size()) {
     const auto errStr = GLErrorToString(err);
-    const auto text = nsPrintfCString("%s: Generated unexpected %s error", funcName, errStr.c_str());
+    const auto text = nsPrintfCString("%s: Generated unexpected %s error",
+                                      funcName, errStr.c_str());
     printf_stderr("[gl:%p] %s.\n", this, text.BeginReading());
 
     const bool abortOnError = mDebugFlags & DebugFlagAbortOnError;
     if (abortOnError && err != LOCAL_GL_CONTEXT_LOST) {
       gfxCriticalErrorOnce() << text.BeginReading();
-      MOZ_CRASH("Aborting... (Run with MOZ_GL_DEBUG_ABORT_ON_ERROR=0 to disable)");
+      MOZ_CRASH(
+          "Aborting... (Run with MOZ_GL_DEBUG_ABORT_ON_ERROR=0 to disable)");
     }
   }
 }
 
 /*static*/
 void GLContext::OnImplicitMakeCurrentFailure(const char* const funcName) {
   gfxCriticalError() << "Ignoring call to " << funcName << " with failed"
                      << " mImplicitMakeCurrent.";
--- a/gfx/layers/apz/src/APZCTreeManager.cpp
+++ b/gfx/layers/apz/src/APZCTreeManager.cpp
@@ -709,17 +709,18 @@ void APZCTreeManager::SampleForWebRender
   }
   if (activeAnimations) {
     RefPtr<CompositorController> controller;
     CompositorBridgeParent::CallWithIndirectShadowTree(
         mRootLayersId, [&](LayerTreeState& aState) -> void {
           controller = aState.GetCompositorController();
         });
     if (controller) {
-      controller->ScheduleRenderOnCompositorThread(wr::RenderRootSet(aRenderRoot));
+      controller->ScheduleRenderOnCompositorThread(
+          wr::RenderRootSet(aRenderRoot));
     }
   }
 }
 
 // Compute the clip region to be used for a layer with an APZC. This function
 // is only called for layers which actually have scrollable metrics and an APZC.
 template <class ScrollNode>
 Maybe<ParentLayerIntRegion> APZCTreeManager::ComputeClipRegion(
--- a/gfx/layers/composite/CanvasLayerComposite.cpp
+++ b/gfx/layers/composite/CanvasLayerComposite.cpp
@@ -35,19 +35,23 @@ CanvasLayerComposite::CanvasLayerComposi
 CanvasLayerComposite::~CanvasLayerComposite() {
   MOZ_COUNT_DTOR(CanvasLayerComposite);
 
   CleanupResources();
 }
 
 bool CanvasLayerComposite::SetCompositableHost(CompositableHost* aHost) {
   switch (aHost->GetType()) {
-    case CompositableType::IMAGE:
+    case CompositableType::IMAGE: {
+      if (mCompositableHost && aHost != mCompositableHost) {
+        mCompositableHost->Detach(this);
+      }
       mCompositableHost = aHost;
       return true;
+    }
     default:
       return false;
   }
 }
 
 Layer* CanvasLayerComposite::GetLayer() { return this; }
 
 void CanvasLayerComposite::SetLayerManager(HostLayerManager* aManager) {
--- a/gfx/layers/composite/ImageLayerComposite.cpp
+++ b/gfx/layers/composite/ImageLayerComposite.cpp
@@ -42,19 +42,24 @@ ImageLayerComposite::~ImageLayerComposit
   MOZ_COUNT_DTOR(ImageLayerComposite);
   MOZ_ASSERT(mDestroyed);
 
   CleanupResources();
 }
 
 bool ImageLayerComposite::SetCompositableHost(CompositableHost* aHost) {
   switch (aHost->GetType()) {
-    case CompositableType::IMAGE:
-      mImageHost = static_cast<ImageHost*>(aHost);
+    case CompositableType::IMAGE: {
+      ImageHost* newImageHost = static_cast<ImageHost*>(aHost);
+      if (mImageHost && newImageHost != mImageHost) {
+        mImageHost->Detach(this);
+      }
+      mImageHost = newImageHost;
       return true;
+    }
     default:
       return false;
   }
 }
 
 void ImageLayerComposite::Disconnect() { Destroy(); }
 
 Layer* ImageLayerComposite::GetLayer() { return this; }
--- a/gfx/layers/composite/PaintedLayerComposite.cpp
+++ b/gfx/layers/composite/PaintedLayerComposite.cpp
@@ -42,19 +42,24 @@ PaintedLayerComposite::~PaintedLayerComp
   MOZ_COUNT_DTOR(PaintedLayerComposite);
   CleanupResources();
 }
 
 bool PaintedLayerComposite::SetCompositableHost(CompositableHost* aHost) {
   switch (aHost->GetType()) {
     case CompositableType::CONTENT_TILED:
     case CompositableType::CONTENT_SINGLE:
-    case CompositableType::CONTENT_DOUBLE:
-      mBuffer = static_cast<ContentHost*>(aHost);
+    case CompositableType::CONTENT_DOUBLE: {
+      ContentHost* newBuffer = static_cast<ContentHost*>(aHost);
+      if (mBuffer && newBuffer != mBuffer) {
+        mBuffer->Detach(this);
+      }
+      mBuffer = newBuffer;
       return true;
+    }
     default:
       return false;
   }
 }
 
 void PaintedLayerComposite::Disconnect() { Destroy(); }
 
 void PaintedLayerComposite::Destroy() {
--- a/gfx/layers/ipc/CompositorBridgeParent.h
+++ b/gfx/layers/ipc/CompositorBridgeParent.h
@@ -431,18 +431,18 @@ class CompositorBridgeParent final : pub
   void InvalidateOnCompositorThread();
   /**
    * Returns true if a surface was obtained and the resume succeeded; false
    * otherwise.
    */
   bool ScheduleResumeOnCompositorThread();
   bool ScheduleResumeOnCompositorThread(int x, int y, int width, int height);
 
-  void ScheduleComposition(const wr::RenderRootSet& aRenderRoots =
-                               wr::RenderRootSet());
+  void ScheduleComposition(
+      const wr::RenderRootSet& aRenderRoots = wr::RenderRootSet());
 
   void NotifyShadowTreeTransaction(LayersId aId, bool aIsFirstPaint,
                                    const FocusTarget& aFocusTarget,
                                    bool aScheduleComposite,
                                    uint32_t aPaintSequenceNumber,
                                    bool aIsRepeatTransaction,
                                    bool aHitTestUpdate);
 
--- a/gfx/layers/ipc/CompositorVsyncScheduler.cpp
+++ b/gfx/layers/ipc/CompositorVsyncScheduler.cpp
@@ -179,17 +179,17 @@ bool CompositorVsyncScheduler::NotifyVsy
 
 #if defined(MOZ_WIDGET_ANDROID)
   gfx::VRManager* vm = gfx::VRManager::Get();
   if (!vm->IsPresenting()) {
     PostCompositeTask(aVsync.mId, aVsync.mTime);
   }
 #else
   PostCompositeTask(aVsync.mId, aVsync.mTime);
-#endif    // defined(MOZ_WIDGET_ANDROID)
+#endif  // defined(MOZ_WIDGET_ANDROID)
 
   PostVRTask(aVsync.mTime);
   return true;
 }
 
 void CompositorVsyncScheduler::CancelCurrentCompositeTask() {
   MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread() ||
              NS_IsMainThread());
--- a/gfx/layers/mlgpu/PaintedLayerMLGPU.cpp
+++ b/gfx/layers/mlgpu/PaintedLayerMLGPU.cpp
@@ -60,22 +60,26 @@ const LayerIntRegion& PaintedLayerMLGPU:
 #endif
   return mRenderRegion;
 }
 
 bool PaintedLayerMLGPU::SetCompositableHost(CompositableHost* aHost) {
   switch (aHost->GetType()) {
     case CompositableType::CONTENT_TILED:
     case CompositableType::CONTENT_SINGLE:
-    case CompositableType::CONTENT_DOUBLE:
+    case CompositableType::CONTENT_DOUBLE: {
+      if (mHost && mHost != aHost->AsContentHost()) {
+        mHost->Detach(this);
+      }
       mHost = aHost->AsContentHost();
       if (!mHost) {
         gfxWarning() << "ContentHostBase is not a ContentHostTexture";
       }
       return true;
+    }
     default:
       return false;
   }
 }
 
 CompositableHost* PaintedLayerMLGPU::GetCompositableHost() { return mHost; }
 
 gfx::Point PaintedLayerMLGPU::GetDestOrigin() const { return mDestOrigin; }
--- a/gfx/webrender_bindings/RenderThread.cpp
+++ b/gfx/webrender_bindings/RenderThread.cpp
@@ -893,17 +893,17 @@ static already_AddRefed<gl::GLContext> C
 static already_AddRefed<gl::GLContext> CreateGLContext() {
 #ifdef XP_WIN
   if (gfx::gfxVars::UseWebRenderANGLE()) {
     return CreateGLContextANGLE();
   }
 #endif
 
 #if defined(MOZ_WIDGET_ANDROID)
-    return CreateGLContextEGL();
+  return CreateGLContextEGL();
 #elif defined(MOZ_WAYLAND)
   if (!GDK_IS_X11_DISPLAY(gdk_display_get_default())) {
     return CreateGLContextEGL();
   }
 #endif
   // We currently only support a shared GLContext
   // with ANGLE.
   return nullptr;
--- a/gfx/webrender_bindings/WebRenderAPI.cpp
+++ b/gfx/webrender_bindings/WebRenderAPI.cpp
@@ -369,17 +369,18 @@ void WebRenderAPI::SendTransaction(Trans
 /* static */
 void WebRenderAPI::SendTransactions(
     const RenderRootArray<RefPtr<WebRenderAPI>>& aApis,
     RenderRootArray<TransactionBuilder*>& aTxns) {
   if (!aApis[RenderRoot::Default]) {
     return;
   }
 
-  aApis[RenderRoot::Default]->UpdateDebugFlags(gfx::gfxVars::WebRenderDebugFlags());
+  aApis[RenderRoot::Default]->UpdateDebugFlags(
+      gfx::gfxVars::WebRenderDebugFlags());
   AutoTArray<DocumentHandle*, kRenderRootCount> documentHandles;
   AutoTArray<Transaction*, kRenderRootCount> txns;
   Maybe<bool> useSceneBuilderThread;
   for (auto& api : aApis) {
     if (!api) {
       continue;
     }
     auto& txn = aTxns[api->GetRenderRoot()];
--- a/gfx/webrender_bindings/WebRenderAPI.h
+++ b/gfx/webrender_bindings/WebRenderAPI.h
@@ -204,18 +204,19 @@ class WebRenderAPI final {
 
  public:
   /// This can be called on the compositor thread only.
   static already_AddRefed<WebRenderAPI> Create(
       layers::CompositorBridgeParent* aBridge,
       RefPtr<widget::CompositorWidget>&& aWidget,
       const wr::WrWindowId& aWindowId, LayoutDeviceIntSize aSize);
 
-  static void SendTransactions(const RenderRootArray<RefPtr<WebRenderAPI>>& aApis,
-                               RenderRootArray<TransactionBuilder*>& aTxns);
+  static void SendTransactions(
+      const RenderRootArray<RefPtr<WebRenderAPI>>& aApis,
+      RenderRootArray<TransactionBuilder*>& aTxns);
 
   already_AddRefed<WebRenderAPI> CreateDocument(LayoutDeviceIntSize aSize,
                                                 int8_t aLayerIndex,
                                                 wr::RenderRoot aRenderRoot);
 
   already_AddRefed<WebRenderAPI> Clone();
 
   wr::WindowId GetId() const { return mId; }
--- a/js/public/TraceKind.h
+++ b/js/public/TraceKind.h
@@ -110,19 +110,19 @@ struct MapTypeToTraceKind {
   D(RegExpShared, js::RegExpShared, true,           true)
 // clang-format on
 
 // Returns true if the JS::TraceKind is represented as a node in cycle collector
 // graph.
 inline constexpr bool IsCCTraceKind(JS::TraceKind aKind) {
   switch (aKind) {
 #define JS_EXPAND_DEF(name, _1, _2, inCCGraph) \
-    case JS::TraceKind::name: \
-      return inCCGraph;
-      JS_FOR_EACH_TRACEKIND(JS_EXPAND_DEF);
+  case JS::TraceKind::name:                    \
+    return inCCGraph;
+    JS_FOR_EACH_TRACEKIND(JS_EXPAND_DEF);
 #undef JS_EXPAND_DEF
     default:
       return false;
   }
 }
 
 // Map from all public types to their trace kind.
 #define JS_EXPAND_DEF(name, type, _, _1)                   \
@@ -217,17 +217,17 @@ struct MapTypeToRootKind<JSFunction*> : 
 #if (defined(_MSC_VER) && _MSC_VER < 1910) && !defined(__clang__)
 #  define JS_DEPENDENT_TEMPLATE_HINT
 #else
 #  define JS_DEPENDENT_TEMPLATE_HINT template
 #endif
 template <typename F, typename... Args>
 auto DispatchTraceKindTyped(F f, JS::TraceKind traceKind, Args&&... args) {
   switch (traceKind) {
-#define JS_EXPAND_DEF(name, type, _, _1)                   \
+#define JS_EXPAND_DEF(name, type, _, _1)                  \
   case JS::TraceKind::name:                               \
     return f.JS_DEPENDENT_TEMPLATE_HINT operator()<type>( \
         std::forward<Args>(args)...);
     JS_FOR_EACH_TRACEKIND(JS_EXPAND_DEF);
 #undef JS_EXPAND_DEF
     default:
       MOZ_CRASH("Invalid trace kind in DispatchTraceKindTyped.");
   }
@@ -236,17 +236,17 @@ auto DispatchTraceKindTyped(F f, JS::Tra
 
 // Given a GC thing specified by pointer and trace kind, calls the functor |f|
 // with a template argument of the actual type of the pointer and returns the
 // result.
 template <typename F>
 auto MapGCThingTyped(void* thing, JS::TraceKind traceKind, F&& f) {
   switch (traceKind) {
 #define JS_EXPAND_DEF(name, type, _, _1) \
-  case JS::TraceKind::name:             \
+  case JS::TraceKind::name:              \
     return f(static_cast<type*>(thing));
     JS_FOR_EACH_TRACEKIND(JS_EXPAND_DEF);
 #undef JS_EXPAND_DEF
     default:
       MOZ_CRASH("Invalid trace kind in MapGCThingTyped.");
   }
 }
 
--- a/js/public/TrackedOptimizationInfo.h
+++ b/js/public/TrackedOptimizationInfo.h
@@ -72,98 +72,98 @@ namespace JS {
   _(Compare_Call)                           \
   _(Compare_Character)                      \
                                             \
   _(Call_Inline)
 
 // Ordering is important below. All outcomes before GenericSuccess will be
 // considered failures, and all outcomes after GenericSuccess will be
 // considered successes.
-#define TRACKED_OUTCOME_LIST(_)                   \
-  _(GenericFailure)                               \
-  _(Disabled)                                     \
-  _(NoTypeInfo)                                   \
-  _(NoShapeInfo)                                  \
-  _(UnknownProperties)                            \
-  _(Singleton)                                    \
-  _(NotSingleton)                                 \
-  _(NotFixedSlot)                                 \
-  _(InconsistentFixedSlot)                        \
-  _(NotObject)                                    \
-  _(NotStruct)                                    \
-  _(NotUndefined)                                 \
-  _(StructNoField)                                \
-  _(NeedsTypeBarrier)                             \
-  _(InDictionaryMode)                             \
-  _(MultiProtoPaths)                              \
-  _(NonWritableProperty)                          \
-  _(ProtoIndexedProps)                            \
-  _(ArrayBadFlags)                                \
-  _(ArrayDoubleConversion)                        \
-  _(ArrayRange)                                   \
-  _(ArraySeenNegativeIndex)                       \
-  _(ArraySeenNonIntegerIndex)                     \
-  _(TypedObjectHasDetachedBuffer)                 \
-  _(TypedObjectArrayRange)                        \
-  _(AccessNotDense)                               \
-  _(AccessNotTypedObject)                         \
-  _(AccessNotTypedArray)                          \
-  _(AccessNotString)                              \
-  _(OperandNotString)                             \
-  _(OperandNotNumber)                             \
-  _(OperandNotSimpleArith)                        \
-  _(OperandNotEasilyCoercibleToString)            \
-  _(OutOfBounds)                                  \
-  _(IndexType)                                    \
-  _(NotModuleNamespace)                           \
-  _(UnknownProperty)                              \
-  _(NoTemplateObject)                             \
-  _(LengthTooBig)                                 \
-  _(SpeculationOnInputTypesFailed)                \
-  _(RelationalCompare)                            \
-  _(OperandTypeNotBitwiseComparable)              \
-  _(OperandMaybeEmulatesUndefined)                \
-  _(LoosyUndefinedNullCompare)                    \
-  _(LoosyInt32BooleanCompare)                     \
-  _(CallsValueOf)                                 \
-  _(StrictCompare)                                \
-  _(InitHole)                                     \
-                                                  \
-  _(CantInlineGeneric)                            \
-  _(CantInlineNoTarget)                           \
-  _(CantInlineNotInterpreted)                     \
-  _(CantInlineNoBaseline)                         \
-  _(CantInlineLazy)                               \
-  _(CantInlineNotConstructor)                     \
-  _(CantInlineClassConstructor)                   \
-  _(CantInlineDisabledIon)                        \
-  _(CantInlineTooManyArgs)                        \
-  _(CantInlineNeedsArgsObj)                       \
-  _(CantInlineDebuggee)                           \
-  _(CantInlineExceededDepth)                      \
-  _(CantInlineExceededTotalBytecodeLength)        \
-  _(CantInlineBigCaller)                          \
-  _(CantInlineBigCallee)                          \
-  _(CantInlineBigCalleeInlinedBytecodeLength)     \
-  _(CantInlineCrossRealm)                         \
-  _(CantInlineNotHot)                             \
-  _(CantInlineNotInDispatch)                      \
-  _(CantInlineUnreachable)                        \
-  _(CantInlineNativeBadForm)                      \
-  _(CantInlineNativeBadType)                      \
-  _(CantInlineNativeNoTemplateObj)                \
-  _(CantInlineBound)                              \
-  _(CantInlineNativeNoSpecialization)             \
-  _(CantInlineUnexpectedNewTarget)                \
-  _(HasCommonInliningPath)                        \
-                                                  \
-  _(GenericSuccess)                               \
-  _(Inlined)                                      \
-  _(DOM)                                          \
-  _(Monomorphic)                                  \
+#define TRACKED_OUTCOME_LIST(_)               \
+  _(GenericFailure)                           \
+  _(Disabled)                                 \
+  _(NoTypeInfo)                               \
+  _(NoShapeInfo)                              \
+  _(UnknownProperties)                        \
+  _(Singleton)                                \
+  _(NotSingleton)                             \
+  _(NotFixedSlot)                             \
+  _(InconsistentFixedSlot)                    \
+  _(NotObject)                                \
+  _(NotStruct)                                \
+  _(NotUndefined)                             \
+  _(StructNoField)                            \
+  _(NeedsTypeBarrier)                         \
+  _(InDictionaryMode)                         \
+  _(MultiProtoPaths)                          \
+  _(NonWritableProperty)                      \
+  _(ProtoIndexedProps)                        \
+  _(ArrayBadFlags)                            \
+  _(ArrayDoubleConversion)                    \
+  _(ArrayRange)                               \
+  _(ArraySeenNegativeIndex)                   \
+  _(ArraySeenNonIntegerIndex)                 \
+  _(TypedObjectHasDetachedBuffer)             \
+  _(TypedObjectArrayRange)                    \
+  _(AccessNotDense)                           \
+  _(AccessNotTypedObject)                     \
+  _(AccessNotTypedArray)                      \
+  _(AccessNotString)                          \
+  _(OperandNotString)                         \
+  _(OperandNotNumber)                         \
+  _(OperandNotSimpleArith)                    \
+  _(OperandNotEasilyCoercibleToString)        \
+  _(OutOfBounds)                              \
+  _(IndexType)                                \
+  _(NotModuleNamespace)                       \
+  _(UnknownProperty)                          \
+  _(NoTemplateObject)                         \
+  _(LengthTooBig)                             \
+  _(SpeculationOnInputTypesFailed)            \
+  _(RelationalCompare)                        \
+  _(OperandTypeNotBitwiseComparable)          \
+  _(OperandMaybeEmulatesUndefined)            \
+  _(LoosyUndefinedNullCompare)                \
+  _(LoosyInt32BooleanCompare)                 \
+  _(CallsValueOf)                             \
+  _(StrictCompare)                            \
+  _(InitHole)                                 \
+                                              \
+  _(CantInlineGeneric)                        \
+  _(CantInlineNoTarget)                       \
+  _(CantInlineNotInterpreted)                 \
+  _(CantInlineNoBaseline)                     \
+  _(CantInlineLazy)                           \
+  _(CantInlineNotConstructor)                 \
+  _(CantInlineClassConstructor)               \
+  _(CantInlineDisabledIon)                    \
+  _(CantInlineTooManyArgs)                    \
+  _(CantInlineNeedsArgsObj)                   \
+  _(CantInlineDebuggee)                       \
+  _(CantInlineExceededDepth)                  \
+  _(CantInlineExceededTotalBytecodeLength)    \
+  _(CantInlineBigCaller)                      \
+  _(CantInlineBigCallee)                      \
+  _(CantInlineBigCalleeInlinedBytecodeLength) \
+  _(CantInlineCrossRealm)                     \
+  _(CantInlineNotHot)                         \
+  _(CantInlineNotInDispatch)                  \
+  _(CantInlineUnreachable)                    \
+  _(CantInlineNativeBadForm)                  \
+  _(CantInlineNativeBadType)                  \
+  _(CantInlineNativeNoTemplateObj)            \
+  _(CantInlineBound)                          \
+  _(CantInlineNativeNoSpecialization)         \
+  _(CantInlineUnexpectedNewTarget)            \
+  _(HasCommonInliningPath)                    \
+                                              \
+  _(GenericSuccess)                           \
+  _(Inlined)                                  \
+  _(DOM)                                      \
+  _(Monomorphic)                              \
   _(Polymorphic)
 
 #define TRACKED_TYPESITE_LIST(_) \
   _(Receiver)                    \
   _(Operand)                     \
   _(Index)                       \
   _(Value)                       \
   _(Call_Target)                 \
--- a/js/src/builtin/AtomicsObject.cpp
+++ b/js/src/builtin/AtomicsObject.cpp
@@ -57,16 +57,17 @@
 #include "jsapi.h"
 #include "jsfriendapi.h"
 #include "jsnum.h"
 
 #include "jit/AtomicOperations.h"
 #include "jit/InlinableNatives.h"
 #include "js/Class.h"
 #include "js/PropertySpec.h"
+#include "js/Result.h"
 #include "vm/GlobalObject.h"
 #include "vm/Time.h"
 #include "vm/TypedArrayObject.h"
 #include "wasm/WasmInstance.h"
 
 #include "vm/JSObject-inl.h"
 
 using namespace js;
@@ -111,322 +112,184 @@ static bool GetTypedArrayIndex(JSContext
   }
   if (index >= view->length()) {
     return ReportOutOfRange(cx);
   }
   *offset = uint32_t(index);
   return true;
 }
 
-static int32_t CompareExchange(Scalar::Type viewType, int32_t oldCandidate,
-                               int32_t newCandidate, SharedMem<void*> viewData,
-                               uint32_t offset, bool* badArrayType = nullptr) {
-  switch (viewType) {
-    case Scalar::Int8: {
-      int8_t oldval = (int8_t)oldCandidate;
-      int8_t newval = (int8_t)newCandidate;
-      oldval = jit::AtomicOperations::compareExchangeSeqCst(
-          viewData.cast<int8_t*>() + offset, oldval, newval);
-      return oldval;
+template <typename T>
+struct ArrayOps {
+  static JS::Result<T> convertValue(JSContext* cx, HandleValue v) {
+    int32_t n;
+    if (!ToInt32(cx, v, &n)) {
+      return cx->alreadyReportedError();
     }
-    case Scalar::Uint8: {
-      uint8_t oldval = (uint8_t)oldCandidate;
-      uint8_t newval = (uint8_t)newCandidate;
-      oldval = jit::AtomicOperations::compareExchangeSeqCst(
-          viewData.cast<uint8_t*>() + offset, oldval, newval);
-      return oldval;
-    }
-    case Scalar::Int16: {
-      int16_t oldval = (int16_t)oldCandidate;
-      int16_t newval = (int16_t)newCandidate;
-      oldval = jit::AtomicOperations::compareExchangeSeqCst(
-          viewData.cast<int16_t*>() + offset, oldval, newval);
-      return oldval;
+    return (T)n;
+  }
+
+  static JS::Result<T> convertValue(JSContext* cx, HandleValue v,
+                                    MutableHandleValue result) {
+    double d;
+    if (!ToInteger(cx, v, &d)) {
+      return cx->alreadyReportedError();
     }
-    case Scalar::Uint16: {
-      uint16_t oldval = (uint16_t)oldCandidate;
-      uint16_t newval = (uint16_t)newCandidate;
-      oldval = jit::AtomicOperations::compareExchangeSeqCst(
-          viewData.cast<uint16_t*>() + offset, oldval, newval);
-      return oldval;
-    }
-    case Scalar::Int32: {
-      int32_t oldval = oldCandidate;
-      int32_t newval = newCandidate;
-      oldval = jit::AtomicOperations::compareExchangeSeqCst(
-          viewData.cast<int32_t*>() + offset, oldval, newval);
-      return oldval;
-    }
-    case Scalar::Uint32: {
-      uint32_t oldval = (uint32_t)oldCandidate;
-      uint32_t newval = (uint32_t)newCandidate;
-      oldval = jit::AtomicOperations::compareExchangeSeqCst(
-          viewData.cast<uint32_t*>() + offset, oldval, newval);
-      return (int32_t)oldval;
-    }
-    default:
-      if (badArrayType) {
-        *badArrayType = true;
-      }
-      return 0;
+    result.setNumber(d);
+    return (T)JS::ToInt32(d);
   }
+
+  static JS::Result<> storeResult(JSContext* cx, T v,
+                                  MutableHandleValue result) {
+    result.setInt32(v);
+    return Ok();
+  }
+};
+
+template <>
+JS::Result<> ArrayOps<uint32_t>::storeResult(JSContext* cx, uint32_t v,
+                                             MutableHandleValue result) {
+  result.setNumber(v);
+  return Ok();
 }
 
-bool js::atomics_compareExchange(JSContext* cx, unsigned argc, Value* vp) {
-  CallArgs args = CallArgsFromVp(argc, vp);
-  HandleValue objv = args.get(0);
-  HandleValue idxv = args.get(1);
-  HandleValue oldv = args.get(2);
-  HandleValue newv = args.get(3);
-  MutableHandleValue r = args.rval();
-
-  Rooted<TypedArrayObject*> view(cx, nullptr);
-  if (!GetSharedTypedArray(cx, objv, &view)) {
-    return false;
-  }
-  uint32_t offset;
-  if (!GetTypedArrayIndex(cx, idxv, view, &offset)) {
-    return false;
-  }
-  int32_t oldCandidate;
-  if (!ToInt32(cx, oldv, &oldCandidate)) {
-    return false;
-  }
-  int32_t newCandidate;
-  if (!ToInt32(cx, newv, &newCandidate)) {
-    return false;
-  }
-
-  bool badType = false;
-  int32_t result = CompareExchange(view->type(), oldCandidate, newCandidate,
-                                   view->dataPointerShared(), offset, &badType);
-
-  if (badType) {
-    return ReportBadArrayType(cx);
-  }
-
-  if (view->type() == Scalar::Uint32) {
-    r.setNumber((double)(uint32_t)result);
-  } else {
-    r.setInt32(result);
-  }
-  return true;
-}
-
-bool js::atomics_load(JSContext* cx, unsigned argc, Value* vp) {
-  CallArgs args = CallArgsFromVp(argc, vp);
-  HandleValue objv = args.get(0);
-  HandleValue idxv = args.get(1);
-  MutableHandleValue r = args.rval();
-
+template <template <typename> class F, typename... Args>
+bool perform(JSContext* cx, HandleValue objv, HandleValue idxv, Args... args) {
   Rooted<TypedArrayObject*> view(cx, nullptr);
   if (!GetSharedTypedArray(cx, objv, &view)) {
     return false;
   }
   uint32_t offset;
   if (!GetTypedArrayIndex(cx, idxv, view, &offset)) {
     return false;
   }
-
   SharedMem<void*> viewData = view->dataPointerShared();
   switch (view->type()) {
-    case Scalar::Uint8: {
-      uint8_t v =
-          jit::AtomicOperations::loadSeqCst(viewData.cast<uint8_t*>() + offset);
-      r.setInt32(v);
-      return true;
-    }
-    case Scalar::Int8: {
-      int8_t v =
-          jit::AtomicOperations::loadSeqCst(viewData.cast<uint8_t*>() + offset);
-      r.setInt32(v);
-      return true;
-    }
-    case Scalar::Int16: {
-      int16_t v =
-          jit::AtomicOperations::loadSeqCst(viewData.cast<int16_t*>() + offset);
-      r.setInt32(v);
-      return true;
-    }
-    case Scalar::Uint16: {
-      uint16_t v = jit::AtomicOperations::loadSeqCst(
-          viewData.cast<uint16_t*>() + offset);
-      r.setInt32(v);
-      return true;
-    }
-    case Scalar::Int32: {
-      int32_t v =
-          jit::AtomicOperations::loadSeqCst(viewData.cast<int32_t*>() + offset);
-      r.setInt32(v);
-      return true;
-    }
-    case Scalar::Uint32: {
-      uint32_t v = jit::AtomicOperations::loadSeqCst(
-          viewData.cast<uint32_t*>() + offset);
-      r.setNumber(v);
-      return true;
-    }
-    default:
+    case Scalar::Int8:
+      return F<int8_t>::run(cx, viewData.cast<int8_t*>() + offset, args...);
+    case Scalar::Uint8:
+      return F<uint8_t>::run(cx, viewData.cast<uint8_t*>() + offset, args...);
+    case Scalar::Int16:
+      return F<int16_t>::run(cx, viewData.cast<int16_t*>() + offset, args...);
+    case Scalar::Uint16:
+      return F<uint16_t>::run(cx, viewData.cast<uint16_t*>() + offset, args...);
+    case Scalar::Int32:
+      return F<int32_t>::run(cx, viewData.cast<int32_t*>() + offset, args...);
+    case Scalar::Uint32:
+      return F<uint32_t>::run(cx, viewData.cast<uint32_t*>() + offset, args...);
+    case Scalar::Float32:
+    case Scalar::Float64:
+    case Scalar::Uint8Clamped:
+    case Scalar::BigInt64:
+    case Scalar::BigUint64:
       return ReportBadArrayType(cx);
+    case Scalar::MaxTypedArrayViewType:
+    case Scalar::Int64:
+      break;
   }
+  MOZ_CRASH("Unsupported TypedArray type");
 }
 
-enum XchgStoreOp { DoExchange, DoStore };
-
-template <XchgStoreOp op>
-static int32_t ExchangeOrStore(Scalar::Type viewType, int32_t numberValue,
-                               SharedMem<void*> viewData, uint32_t offset,
-                               bool* badArrayType = nullptr) {
-#define INT_OP(ptr, value)                                       \
-  JS_BEGIN_MACRO                                                 \
-    if (op == DoStore)                                           \
-      jit::AtomicOperations::storeSeqCst(ptr, value);            \
-    else                                                         \
-      value = jit::AtomicOperations::exchangeSeqCst(ptr, value); \
-  JS_END_MACRO
+template <typename T>
+struct DoCompareExchange {
+  static bool run(JSContext* cx, SharedMem<T*> addr, HandleValue oldv,
+                  HandleValue newv, MutableHandleValue result) {
+    using Ops = ArrayOps<T>;
+    T oldval;
+    JS_TRY_VAR_OR_RETURN_FALSE(cx, oldval, Ops::convertValue(cx, oldv));
+    T newval;
+    JS_TRY_VAR_OR_RETURN_FALSE(cx, newval, Ops::convertValue(cx, newv));
 
-  switch (viewType) {
-    case Scalar::Int8: {
-      int8_t value = (int8_t)numberValue;
-      INT_OP(viewData.cast<int8_t*>() + offset, value);
-      return value;
-    }
-    case Scalar::Uint8: {
-      uint8_t value = (uint8_t)numberValue;
-      INT_OP(viewData.cast<uint8_t*>() + offset, value);
-      return value;
-    }
-    case Scalar::Int16: {
-      int16_t value = (int16_t)numberValue;
-      INT_OP(viewData.cast<int16_t*>() + offset, value);
-      return value;
-    }
-    case Scalar::Uint16: {
-      uint16_t value = (uint16_t)numberValue;
-      INT_OP(viewData.cast<uint16_t*>() + offset, value);
-      return value;
-    }
-    case Scalar::Int32: {
-      int32_t value = numberValue;
-      INT_OP(viewData.cast<int32_t*>() + offset, value);
-      return value;
-    }
-    case Scalar::Uint32: {
-      uint32_t value = (uint32_t)numberValue;
-      INT_OP(viewData.cast<uint32_t*>() + offset, value);
-      return (int32_t)value;
-    }
-    default:
-      if (badArrayType) {
-        *badArrayType = true;
-      }
-      return 0;
+    oldval = jit::AtomicOperations::compareExchangeSeqCst(addr, oldval, newval);
+
+    JS_TRY_OR_RETURN_FALSE(cx, Ops::storeResult(cx, oldval, result));
+    return true;
   }
-#undef INT_OP
+};
+
+bool js::atomics_compareExchange(JSContext* cx, unsigned argc, Value* vp) {
+  CallArgs args = CallArgsFromVp(argc, vp);
+  return perform<DoCompareExchange>(cx, args.get(0), args.get(1), args.get(2),
+                                    args.get(3), args.rval());
 }
 
-template <XchgStoreOp op>
-static bool ExchangeOrStore(JSContext* cx, unsigned argc, Value* vp) {
-  CallArgs args = CallArgsFromVp(argc, vp);
-  HandleValue objv = args.get(0);
-  HandleValue idxv = args.get(1);
-  HandleValue valv = args.get(2);
-  MutableHandleValue r = args.rval();
-
-  Rooted<TypedArrayObject*> view(cx, nullptr);
-  if (!GetSharedTypedArray(cx, objv, &view)) {
-    return false;
-  }
-  uint32_t offset;
-  if (!GetTypedArrayIndex(cx, idxv, view, &offset)) {
-    return false;
+template <typename T>
+struct DoLoad {
+  static bool run(JSContext* cx, SharedMem<T*> addr,
+                  MutableHandleValue result) {
+    using Ops = ArrayOps<T>;
+    T v = jit::AtomicOperations::loadSeqCst(addr);
+    JS_TRY_OR_RETURN_FALSE(cx, Ops::storeResult(cx, v, result));
+    return true;
   }
-  double integerValue;
-  if (!ToInteger(cx, valv, &integerValue)) {
-    return false;
-  }
-
-  bool badType = false;
-  int32_t result =
-      ExchangeOrStore<op>(view->type(), JS::ToInt32(integerValue),
-                          view->dataPointerShared(), offset, &badType);
+};
 
-  if (badType) {
-    return ReportBadArrayType(cx);
-  }
-
-  if (op == DoStore) {
-    r.setNumber(integerValue);
-  } else if (view->type() == Scalar::Uint32) {
-    r.setNumber((double)(uint32_t)result);
-  } else {
-    r.setInt32(result);
-  }
-  return true;
+bool js::atomics_load(JSContext* cx, unsigned argc, Value* vp) {
+  CallArgs args = CallArgsFromVp(argc, vp);
+  return perform<DoLoad>(cx, args.get(0), args.get(1), args.rval());
 }
 
+template <typename T>
+struct DoExchange {
+  static bool run(JSContext* cx, SharedMem<T*> addr, HandleValue valv,
+                  MutableHandleValue result) {
+    using Ops = ArrayOps<T>;
+    T value;
+    JS_TRY_VAR_OR_RETURN_FALSE(cx, value, Ops::convertValue(cx, valv));
+    value = jit::AtomicOperations::exchangeSeqCst(addr, value);
+    JS_TRY_OR_RETURN_FALSE(cx, Ops::storeResult(cx, value, result));
+    return true;
+  }
+};
+
+template <typename T>
+struct DoStore {
+  static bool run(JSContext* cx, SharedMem<T*> addr, HandleValue valv,
+                  MutableHandleValue result) {
+    using Ops = ArrayOps<T>;
+    T value;
+    JS_TRY_VAR_OR_RETURN_FALSE(cx, value, Ops::convertValue(cx, valv, result));
+    jit::AtomicOperations::storeSeqCst(addr, value);
+    return true;
+  }
+};
+
 bool js::atomics_store(JSContext* cx, unsigned argc, Value* vp) {
-  return ExchangeOrStore<DoStore>(cx, argc, vp);
+  CallArgs args = CallArgsFromVp(argc, vp);
+  return perform<DoStore>(cx, args.get(0), args.get(1), args.get(2),
+                          args.rval());
 }
 
 bool js::atomics_exchange(JSContext* cx, unsigned argc, Value* vp) {
-  return ExchangeOrStore<DoExchange>(cx, argc, vp);
+  CallArgs args = CallArgsFromVp(argc, vp);
+  return perform<DoExchange>(cx, args.get(0), args.get(1), args.get(2),
+                             args.rval());
 }
 
-template <typename T>
-static bool AtomicsBinop(JSContext* cx, HandleValue objv, HandleValue idxv,
-                         HandleValue valv, MutableHandleValue r) {
-  Rooted<TypedArrayObject*> view(cx, nullptr);
-  if (!GetSharedTypedArray(cx, objv, &view)) {
-    return false;
-  }
-  uint32_t offset;
-  if (!GetTypedArrayIndex(cx, idxv, view, &offset)) {
-    return false;
-  }
-  int32_t numberValue;
-  if (!ToInt32(cx, valv, &numberValue)) {
-    return false;
-  }
-
-  SharedMem<void*> viewData = view->dataPointerShared();
-  switch (view->type()) {
-    case Scalar::Int8: {
-      int8_t v = (int8_t)numberValue;
-      r.setInt32(T::operate(viewData.cast<int8_t*>() + offset, v));
+template <typename Operate>
+struct DoBinopWithOperation {
+  template <typename T>
+  struct DoBinop {
+    static bool run(JSContext* cx, SharedMem<T*> addr, HandleValue valv,
+                    MutableHandleValue result) {
+      using Ops = ArrayOps<T>;
+      T v;
+      JS_TRY_VAR_OR_RETURN_FALSE(cx, v, Ops::convertValue(cx, valv));
+      v = Operate::operate(addr, v);
+      JS_TRY_OR_RETURN_FALSE(cx, Ops::storeResult(cx, v, result));
       return true;
     }
-    case Scalar::Uint8: {
-      uint8_t v = (uint8_t)numberValue;
-      r.setInt32(T::operate(viewData.cast<uint8_t*>() + offset, v));
-      return true;
-    }
-    case Scalar::Int16: {
-      int16_t v = (int16_t)numberValue;
-      r.setInt32(T::operate(viewData.cast<int16_t*>() + offset, v));
-      return true;
-    }
-    case Scalar::Uint16: {
-      uint16_t v = (uint16_t)numberValue;
-      r.setInt32(T::operate(viewData.cast<uint16_t*>() + offset, v));
-      return true;
-    }
-    case Scalar::Int32: {
-      int32_t v = numberValue;
-      r.setInt32(T::operate(viewData.cast<int32_t*>() + offset, v));
-      return true;
-    }
-    case Scalar::Uint32: {
-      uint32_t v = (uint32_t)numberValue;
-      r.setNumber((double)T::operate(viewData.cast<uint32_t*>() + offset, v));
-      return true;
-    }
-    default:
-      return ReportBadArrayType(cx);
-  }
+  };
+};
+
+template <typename Operate>
+static bool AtomicsBinop(JSContext* cx, HandleValue objv, HandleValue idxv,
+                         HandleValue valv, MutableHandleValue r) {
+  return perform<DoBinopWithOperation<Operate>::template DoBinop>(
+      cx, objv, idxv, valv, r);
 }
 
 #define INTEGRAL_TYPES_FOR_EACH(NAME)                              \
   static int8_t operate(SharedMem<int8_t*> addr, int8_t v) {       \
     return NAME(addr, v);                                          \
   }                                                                \
   static uint8_t operate(SharedMem<uint8_t*> addr, uint8_t v) {    \
     return NAME(addr, v);                                          \
--- a/js/src/gc/Marking.cpp
+++ b/js/src/gc/Marking.cpp
@@ -920,20 +920,20 @@ void js::GCMarker::traverseEdge(S source
   ApplyGCThingTyped(thing,
                     [this, source](auto t) { this->traverseEdge(source, t); });
 }
 
 namespace {
 
 template <typename T>
 struct TraceKindCanBeGray {};
-#define EXPAND_TRACEKIND_DEF(_, type, canBeGray, _1)  \
-  template <>                                         \
-  struct TraceKindCanBeGray<type> {                   \
-    static const bool value = canBeGray;              \
+#define EXPAND_TRACEKIND_DEF(_, type, canBeGray, _1) \
+  template <>                                        \
+  struct TraceKindCanBeGray<type> {                  \
+    static const bool value = canBeGray;             \
   };
 JS_FOR_EACH_TRACEKIND(EXPAND_TRACEKIND_DEF)
 #undef EXPAND_TRACEKIND_DEF
 
 }  // namespace
 
 struct TraceKindCanBeGrayFunctor {
   template <typename T>
@@ -1255,19 +1255,17 @@ void WasmInstanceScope::Data::trace(JSTr
   TraceBindingNames(trc, trailingNames.start(), length);
 }
 void WasmFunctionScope::Data::trace(JSTracer* trc) {
   TraceBindingNames(trc, trailingNames.start(), length);
 }
 void Scope::traceChildren(JSTracer* trc) {
   TraceNullableEdge(trc, &enclosing_, "scope enclosing");
   TraceNullableEdge(trc, &environmentShape_, "scope env shape");
-  applyScopeDataTyped([trc](auto data) {
-                        data->trace(trc);
-                      });
+  applyScopeDataTyped([trc](auto data) { data->trace(trc); });
 }
 inline void js::GCMarker::eagerlyMarkChildren(Scope* scope) {
   do {
     if (scope->environmentShape_) {
       traverseEdge(scope, scope->environmentShape_.get());
     }
     TrailingNamesArray* names = nullptr;
     uint32_t length = 0;
@@ -3320,17 +3318,18 @@ FOR_EACH_PUBLIC_GC_POINTER_TYPE(INSTANTI
 FOR_EACH_PUBLIC_TAGGED_GC_POINTER_TYPE(
     INSTANTIATE_ALL_VALID_HEAP_TRACE_FUNCTIONS)
 
 #define INSTANTIATE_INTERNAL_MARKING_FUNCTIONS(type)               \
   template bool IsMarkedInternal(JSRuntime* rt, type* thing);      \
   template bool IsMarkedBlackInternal(JSRuntime* rt, type* thing); \
   template bool IsAboutToBeFinalizedInternal(type* thingp);
 
-#define INSTANTIATE_INTERNAL_MARKING_FUNCTIONS_FROM_TRACEKIND(_1, type, _2, _3) \
+#define INSTANTIATE_INTERNAL_MARKING_FUNCTIONS_FROM_TRACEKIND(_1, type, _2, \
+                                                              _3)           \
   INSTANTIATE_INTERNAL_MARKING_FUNCTIONS(type*)
 
 JS_FOR_EACH_TRACEKIND(INSTANTIATE_INTERNAL_MARKING_FUNCTIONS_FROM_TRACEKIND)
 FOR_EACH_PUBLIC_TAGGED_GC_POINTER_TYPE(INSTANTIATE_INTERNAL_MARKING_FUNCTIONS)
 
 #undef INSTANTIATE_INTERNAL_MARKING_FUNCTIONS_FROM_TRACEKIND
 #undef INSTANTIATE_INTERNAL_MARKING_FUNCTIONS
 
--- a/js/src/gc/RootMarking.cpp
+++ b/js/src/gc/RootMarking.cpp
@@ -68,17 +68,17 @@ static inline void TraceExactStackRootLi
     T* addr = reinterpret_cast<JS::Rooted<T>*>(rooter)->address();
     TraceStackOrPersistentRoot(trc, addr, name);
     rooter = rooter->previous();
   }
 }
 
 static inline void TraceStackRoots(JSTracer* trc,
                                    JS::RootedListHeads& stackRoots) {
-#define TRACE_ROOTS(name, type, _, _1)                                 \
+#define TRACE_ROOTS(name, type, _, _1)                                \
   TraceExactStackRootList<type*>(trc, stackRoots[JS::RootKind::name], \
                                  "exact-" #name);
   JS_FOR_EACH_TRACEKIND(TRACE_ROOTS)
 #undef TRACE_ROOTS
   TraceExactStackRootList<jsid>(trc, stackRoots[JS::RootKind::Id], "exact-id");
   TraceExactStackRootList<Value>(trc, stackRoots[JS::RootKind::Value],
                                  "exact-value");
 
@@ -103,17 +103,17 @@ static inline void TracePersistentRooted
     const char* name) {
   for (PersistentRooted<void*>* r : list) {
     TraceStackOrPersistentRoot(
         trc, reinterpret_cast<PersistentRooted<T>*>(r)->address(), name);
   }
 }
 
 void JSRuntime::tracePersistentRoots(JSTracer* trc) {
-#define TRACE_ROOTS(name, type, _, _1)                                        \
+#define TRACE_ROOTS(name, type, _, _1)                                       \
   TracePersistentRootedList<type*>(trc, heapRoots.ref()[JS::RootKind::name], \
                                    "persistent-" #name);
   JS_FOR_EACH_TRACEKIND(TRACE_ROOTS)
 #undef TRACE_ROOTS
   TracePersistentRootedList<jsid>(trc, heapRoots.ref()[JS::RootKind::Id],
                                   "persistent-id");
   TracePersistentRootedList<Value>(trc, heapRoots.ref()[JS::RootKind::Value],
                                    "persistent-value");
--- a/js/src/jit/arm/Assembler-arm.h
+++ b/js/src/jit/arm/Assembler-arm.h
@@ -2316,17 +2316,18 @@ class AutoForbidPoolsAndNops : public Au
  public:
   // The maxInst argument is the maximum number of word sized instructions
   // that will be allocated within this context. It is used to determine if
   // the pool needs to be dumped before entering this content. The debug code
   // checks that no more than maxInst instructions are actually allocated.
   //
   // Allocation of pool entries is not supported within this content so the
   // code can not use large integers or float constants etc.
-  AutoForbidPoolsAndNops(Assembler* masm, size_t maxInst) : AutoForbidNops(masm) {
+  AutoForbidPoolsAndNops(Assembler* masm, size_t maxInst)
+      : AutoForbidNops(masm) {
     masm_->enterNoPool(maxInst);
   }
 
   ~AutoForbidPoolsAndNops() { masm_->leaveNoPool(); }
 };
 
 }  // namespace jit
 }  // namespace js
--- a/js/src/jit/arm/MacroAssembler-arm.cpp
+++ b/js/src/jit/arm/MacroAssembler-arm.cpp
@@ -4287,17 +4287,18 @@ void MacroAssembler::patchFarJump(CodeOf
   MOZ_ASSERT(editSrc(BufferOffset(addOffset))->is<InstALU>());
 
   // When pc is read as the operand of the add, its value is the address of
   // the add instruction + 8.
   *u32 = (targetOffset - addOffset) - 8;
 }
 
 CodeOffset MacroAssembler::nopPatchableToCall(const wasm::CallSiteDesc& desc) {
-  AutoForbidPoolsAndNops afp(this, /* max number of instructions in scope = */ 1);
+  AutoForbidPoolsAndNops afp(this,
+                             /* max number of instructions in scope = */ 1);
   CodeOffset offset(currentOffset());
   ma_nop();
   append(desc, CodeOffset(currentOffset()));
   return offset;
 }
 
 void MacroAssembler::patchNopToCall(uint8_t* call, uint8_t* target) {
   uint8_t* inst = call - 4;
--- a/js/src/jit/arm64/Assembler-arm64.h
+++ b/js/src/jit/arm64/Assembler-arm64.h
@@ -532,17 +532,18 @@ class AutoForbidNops {
  public:
   explicit AutoForbidNops(Assembler* asm_) : asm_(asm_) { asm_->enterNoNops(); }
   ~AutoForbidNops() { asm_->leaveNoNops(); }
 };
 
 // Forbids pool generation during a specified interval. Not nestable.
 class AutoForbidPoolsAndNops : public AutoForbidNops {
  public:
-  AutoForbidPoolsAndNops(Assembler* asm_, size_t maxInst) : AutoForbidNops(asm_) {
+  AutoForbidPoolsAndNops(Assembler* asm_, size_t maxInst)
+      : AutoForbidNops(asm_) {
     asm_->enterNoPool(maxInst);
   }
   ~AutoForbidPoolsAndNops() { asm_->leaveNoPool(); }
 };
 
 }  // namespace jit
 }  // namespace js
 
--- a/js/src/jit/arm64/MacroAssembler-arm64-inl.h
+++ b/js/src/jit/arm64/MacroAssembler-arm64-inl.h
@@ -271,17 +271,18 @@ void MacroAssembler::add64(Imm32 imm, Re
 
 void MacroAssembler::add64(Imm64 imm, Register64 dest) {
   Add(ARMRegister(dest.reg, 64), ARMRegister(dest.reg, 64), Operand(imm.value));
 }
 
 CodeOffset MacroAssembler::sub32FromStackPtrWithPatch(Register dest) {
   vixl::UseScratchRegisterScope temps(this);
   const ARMRegister scratch = temps.AcquireX();
-  AutoForbidPoolsAndNops afp(this, /* max number of instructions in scope = */ 3);
+  AutoForbidPoolsAndNops afp(this,
+                             /* max number of instructions in scope = */ 3);
   CodeOffset offs = CodeOffset(currentOffset());
   movz(scratch, 0, 0);
   movk(scratch, 0, 16);
   Sub(ARMRegister(dest, 64), sp, scratch);
   return offs;
 }
 
 void MacroAssembler::patchSub32FromStackPtr(CodeOffset offset, Imm32 imm) {
--- a/js/src/jit/arm64/MacroAssembler-arm64.cpp
+++ b/js/src/jit/arm64/MacroAssembler-arm64.cpp
@@ -304,22 +304,23 @@ void MacroAssemblerCompat::wasmLoadImpl(
   ARMRegister ptr(ptr_, 64);
   if (offset) {
     Add(ptr, ptr, Operand(offset));
   }
 
   asMasm().memoryBarrierBefore(access.sync());
 
   // Reg+Reg addressing is directly encodable in one Load instruction, hence
-  // the AutoForbidPoolsAndNops will ensure that the access metadata is emitted at
-  // the address of the Load.
+  // the AutoForbidPoolsAndNops will ensure that the access metadata is emitted
+  // at the address of the Load.
   MemOperand srcAddr(memoryBase, ptr);
 
   {
-    AutoForbidPoolsAndNops afp(this, /* max number of instructions in scope = */ 1);
+    AutoForbidPoolsAndNops afp(this,
+                               /* max number of instructions in scope = */ 1);
     append(access, asMasm().currentOffset());
     switch (access.type()) {
       case Scalar::Int8:
         Ldrsb(SelectGPReg(outany, out64), srcAddr);
         break;
       case Scalar::Uint8:
         Ldrb(SelectGPReg(outany, out64), srcAddr);
         break;
@@ -372,22 +373,23 @@ void MacroAssemblerCompat::wasmStoreImpl
   ARMRegister ptr(ptr_, 64);
   if (offset) {
     Add(ptr, ptr, Operand(offset));
   }
 
   asMasm().memoryBarrierBefore(access.sync());
 
   // Reg+Reg addressing is directly encodable in one Store instruction, hence
-  // the AutoForbidPoolsAndNops will ensure that the access metadata is emitted at
-  // the address of the Store.
+  // the AutoForbidPoolsAndNops will ensure that the access metadata is emitted
+  // at the address of the Store.
   MemOperand dstAddr(memoryBase, ptr);
 
   {
-    AutoForbidPoolsAndNops afp(this, /* max number of instructions in scope = */ 1);
+    AutoForbidPoolsAndNops afp(this,
+                               /* max number of instructions in scope = */ 1);
     append(access, asMasm().currentOffset());
     switch (access.type()) {
       case Scalar::Int8:
       case Scalar::Uint8:
         Strb(SelectGPReg(valany, val64), dstAddr);
         break;
       case Scalar::Int16:
       case Scalar::Uint16:
@@ -678,17 +680,18 @@ void MacroAssembler::patchCall(uint32_t 
   AutoFlushICache::flush(uintptr_t(inst), 4);
 }
 
 CodeOffset MacroAssembler::farJumpWithPatch() {
   vixl::UseScratchRegisterScope temps(this);
   const ARMRegister scratch = temps.AcquireX();
   const ARMRegister scratch2 = temps.AcquireX();
 
-  AutoForbidPoolsAndNops afp(this, /* max number of instructions in scope = */ 7);
+  AutoForbidPoolsAndNops afp(this,
+                             /* max number of instructions in scope = */ 7);
 
   mozilla::DebugOnly<uint32_t> before = currentOffset();
 
   align(8);  // At most one nop
 
   Label branch;
   adr(scratch2, &branch);
   ldr(scratch, vixl::MemOperand(scratch2, 4));
@@ -715,17 +718,18 @@ void MacroAssembler::patchFarJump(CodeOf
   MOZ_ASSERT(inst1->InstructionBits() == UINT32_MAX);
   MOZ_ASSERT(inst2->InstructionBits() == UINT32_MAX);
 
   inst1->SetInstructionBits((uint32_t)distance);
   inst2->SetInstructionBits((uint32_t)(distance >> 32));
 }
 
 CodeOffset MacroAssembler::nopPatchableToCall(const wasm::CallSiteDesc& desc) {
-  AutoForbidPoolsAndNops afp(this, /* max number of instructions in scope = */ 1);
+  AutoForbidPoolsAndNops afp(this,
+                             /* max number of instructions in scope = */ 1);
   CodeOffset offset(currentOffset());
   Nop();
   append(desc, CodeOffset(currentOffset()));
   return offset;
 }
 
 void MacroAssembler::patchNopToCall(uint8_t* call, uint8_t* target) {
   uint8_t* inst = call - 4;
@@ -1070,17 +1074,18 @@ template void MacroAssembler::storeUnbox
     const BaseObjectElementIndex& dest, MIRType slotType);
 
 void MacroAssembler::comment(const char* msg) { Assembler::comment(msg); }
 
 // ========================================================================
 // wasm support
 
 CodeOffset MacroAssembler::wasmTrapInstruction() {
-  AutoForbidPoolsAndNops afp(this, /* max number of instructions in scope = */ 1);
+  AutoForbidPoolsAndNops afp(this,
+                             /* max number of instructions in scope = */ 1);
   CodeOffset offs(currentOffset());
   Unreachable();
   return offs;
 }
 
 void MacroAssembler::wasmBoundsCheck(Condition cond, Register index,
                                      Register boundsCheckLimit, Label* label) {
   // Not used on ARM64, we rely on signal handling instead
@@ -1510,67 +1515,71 @@ static void SignOrZeroExtend(MacroAssemb
 
 static void LoadExclusive(MacroAssembler& masm,
                           const wasm::MemoryAccessDesc* access,
                           Scalar::Type srcType, Width targetWidth,
                           MemOperand ptr, Register dest) {
   bool signExtend = Scalar::isSignedIntType(srcType);
 
   // With this address form, a single native ldxr* will be emitted, and the
-  // AutoForbidPoolsAndNops ensures that the metadata is emitted at the address of
-  // the ldxr*.
+  // AutoForbidPoolsAndNops ensures that the metadata is emitted at the address
+  // of the ldxr*.
   MOZ_ASSERT(ptr.IsImmediateOffset() && ptr.offset() == 0);
 
   switch (Scalar::byteSize(srcType)) {
     case 1: {
       {
-        AutoForbidPoolsAndNops afp(&masm,
-                            /* max number of instructions in scope = */ 1);
+        AutoForbidPoolsAndNops afp(
+            &masm,
+            /* max number of instructions in scope = */ 1);
         if (access) {
           masm.append(*access, masm.currentOffset());
         }
         masm.Ldxrb(W(dest), ptr);
       }
       if (signExtend) {
         masm.Sbfm(R(dest, targetWidth), R(dest, targetWidth), 0, 7);
       }
       break;
     }
     case 2: {
       {
-        AutoForbidPoolsAndNops afp(&masm,
-                            /* max number of instructions in scope = */ 1);
+        AutoForbidPoolsAndNops afp(
+            &masm,
+            /* max number of instructions in scope = */ 1);
         if (access) {
           masm.append(*access, masm.currentOffset());
         }
         masm.Ldxrh(W(dest), ptr);
       }
       if (signExtend) {
         masm.Sbfm(R(dest, targetWidth), R(dest, targetWidth), 0, 15);
       }
       break;
     }
     case 4: {
       {
-        AutoForbidPoolsAndNops afp(&masm,
-                            /* max number of instructions in scope = */ 1);
+        AutoForbidPoolsAndNops afp(
+            &masm,
+            /* max number of instructions in scope = */ 1);
         if (access) {
           masm.append(*access, masm.currentOffset());
         }
         masm.Ldxr(W(dest), ptr);
       }
       if (targetWidth == Width::_64 && signExtend) {
         masm.Sbfm(X(dest), X(dest), 0, 31);
       }
       break;
     }
     case 8: {
       {
-        AutoForbidPoolsAndNops afp(&masm,
-                            /* max number of instructions in scope = */ 1);
+        AutoForbidPoolsAndNops afp(
+            &masm,
+            /* max number of instructions in scope = */ 1);
         if (access) {
           masm.append(*access, masm.currentOffset());
         }
         masm.Ldxr(X(dest), ptr);
       }
       break;
     }
     default: {
--- a/js/src/jsapi.cpp
+++ b/js/src/jsapi.cpp
@@ -5003,20 +5003,19 @@ JS_PUBLIC_API void JS_SetPendingExceptio
   }
 }
 
 JS_PUBLIC_API void JS_ClearPendingException(JSContext* cx) {
   AssertHeapIsIdle();
   cx->clearPendingException();
 }
 
-JS_PUBLIC_API void
-JS::SetPendingExceptionAndStack(JSContext* cx, HandleValue value,
-                                HandleObject stack)
-{
+JS_PUBLIC_API void JS::SetPendingExceptionAndStack(JSContext* cx,
+                                                   HandleValue value,
+                                                   HandleObject stack) {
   AssertHeapIsIdle();
   CHECK_THREAD(cx);
   cx->releaseCheck(value);
   cx->releaseCheck(stack);
 
   RootedSavedFrame nstack(cx);
   if (stack) {
     nstack = &UncheckedUnwrap(stack)->as<SavedFrame>();
--- a/js/src/vm/Scope.cpp
+++ b/js/src/vm/Scope.cpp
@@ -448,19 +448,17 @@ Scope* Scope::clone(JSContext* cx, Handl
       break;
   }
 
   return nullptr;
 }
 
 void Scope::finalize(FreeOp* fop) {
   MOZ_ASSERT(CurrentThreadIsGCSweeping());
-  applyScopeDataTyped([fop](auto data) {
-                        fop->delete_(data);
-                      });
+  applyScopeDataTyped([fop](auto data) { fop->delete_(data); });
   data_ = nullptr;
 }
 
 size_t Scope::sizeOfExcludingThis(mozilla::MallocSizeOf mallocSizeOf) const {
   if (data_) {
     return mallocSizeOf(data_);
   }
   return 0;
--- a/js/src/vm/Scope.h
+++ b/js/src/vm/Scope.h
@@ -1019,49 +1019,49 @@ class WasmFunctionScope : public Scope {
 };
 
 template <typename F>
 void Scope::applyScopeDataTyped(F&& f) {
   switch (kind()) {
     case ScopeKind::Function: {
       f(&as<FunctionScope>().data());
       break;
-    case ScopeKind::FunctionBodyVar:
-    case ScopeKind::ParameterExpressionVar:
-      f(&as<VarScope>().data());
-      break;
-    case ScopeKind::Lexical:
-    case ScopeKind::SimpleCatch:
-    case ScopeKind::Catch:
-    case ScopeKind::NamedLambda:
-    case ScopeKind::StrictNamedLambda:
-      f(&as<LexicalScope>().data());
-      break;
-    case ScopeKind::With:
-      // With scopes do not have data.
-      break;
-    case ScopeKind::Eval:
-    case ScopeKind::StrictEval:
-      f(&as<EvalScope>().data());
-      break;
-    case ScopeKind::Global:
-    case ScopeKind::NonSyntactic:
-      f(&as<GlobalScope>().data());
-      break;
-    case ScopeKind::Module:
-      f(&as<ModuleScope>().data());
-      break;
-    case ScopeKind::WasmInstance:
-      f(&as<WasmInstanceScope>().data());
-      break;
-    case ScopeKind::WasmFunction:
-      f(&as<WasmFunctionScope>().data());
-      break;
-    default:
-      MOZ_CRASH("Unexpected scope type in ApplyScopeDataTyped");
+      case ScopeKind::FunctionBodyVar:
+      case ScopeKind::ParameterExpressionVar:
+        f(&as<VarScope>().data());
+        break;
+      case ScopeKind::Lexical:
+      case ScopeKind::SimpleCatch:
+      case ScopeKind::Catch:
+      case ScopeKind::NamedLambda:
+      case ScopeKind::StrictNamedLambda:
+        f(&as<LexicalScope>().data());
+        break;
+      case ScopeKind::With:
+        // With scopes do not have data.
+        break;
+      case ScopeKind::Eval:
+      case ScopeKind::StrictEval:
+        f(&as<EvalScope>().data());
+        break;
+      case ScopeKind::Global:
+      case ScopeKind::NonSyntactic:
+        f(&as<GlobalScope>().data());
+        break;
+      case ScopeKind::Module:
+        f(&as<ModuleScope>().data());
+        break;
+      case ScopeKind::WasmInstance:
+        f(&as<WasmInstanceScope>().data());
+        break;
+      case ScopeKind::WasmFunction:
+        f(&as<WasmFunctionScope>().data());
+        break;
+      default:
+        MOZ_CRASH("Unexpected scope type in ApplyScopeDataTyped");
     }
   }
 }
 
 //
 // An iterator for a Scope's bindings. This is the source of truth for frame
 // and environment object layout.
 //
--- a/js/src/vm/TypeInference-inl.h
+++ b/js/src/vm/TypeInference-inl.h
@@ -993,18 +993,18 @@ struct TypeHashSet {
       return;
     }
 
     // Simple functions to read and mutate the mark bit of pointers.
     auto markBit = [](U* elem) -> bool {
       return bool(reinterpret_cast<uintptr_t>(elem) & U::TypeHashSetMarkBit);
     };
     auto toggleMarkBit = [](U* elem) -> U* {
-      return reinterpret_cast<U*>(
-          reinterpret_cast<uintptr_t>(elem) ^ U::TypeHashSetMarkBit);
+      return reinterpret_cast<U*>(reinterpret_cast<uintptr_t>(elem) ^
+                                  U::TypeHashSetMarkBit);
     };
 
     // When we have a single element it is stored in-place of the function
     // array pointer.
     if (count == 1) {
       U* elem = f(reinterpret_cast<U*>(values));
       MOZ_ASSERT(!markBit(elem));
       values = reinterpret_cast<U**>(elem);
--- a/js/src/wasm/WasmBaselineCompile.cpp
+++ b/js/src/wasm/WasmBaselineCompile.cpp
@@ -4690,17 +4690,18 @@ class BaseCompiler final : public BaseCo
     tableCl.target()->bind(theTable->offset());
     masm.addCodeLabel(tableCl);
 
     masm.jmp(Operand(scratch, switchValue, ScalePointer));
 #elif defined(JS_CODEGEN_ARM)
     // Flush constant pools: offset must reflect the distance from the MOV
     // to the start of the table; as the address of the MOV is given by the
     // label, nothing must come between the bind() and the ma_mov().
-    AutoForbidPoolsAndNops afp(&masm, /* number of instructions in scope = */ 5);
+    AutoForbidPoolsAndNops afp(&masm,
+                               /* number of instructions in scope = */ 5);
 
     ScratchI32 scratch(*this);
 
     // Compute the offset from the ma_mov instruction to the jump table.
     Label here;
     masm.bind(&here);
     uint32_t offset = here.offset() - theTable->offset();
 
@@ -4723,17 +4724,18 @@ class BaseCompiler final : public BaseCo
 
     masm.ma_li(scratch, &tableCl);
 
     tableCl.target()->bind(theTable->offset());
     masm.addCodeLabel(tableCl);
 
     masm.branchToComputedAddress(BaseIndex(scratch, switchValue, ScalePointer));
 #elif defined(JS_CODEGEN_ARM64)
-    AutoForbidPoolsAndNops afp(&masm, /* number of instructions in scope = */ 4);
+    AutoForbidPoolsAndNops afp(&masm,
+                               /* number of instructions in scope = */ 4);
 
     ScratchI32 scratch(*this);
 
     ARMRegister s(scratch, 64);
     ARMRegister v(switchValue, 64);
     masm.Adr(s, theTable);
     masm.Add(s, s, Operand(v, vixl::LSL, 3));
     masm.Ldr(s, MemOperand(s, 0));
--- a/js/src/wasm/WasmFrameIter.cpp
+++ b/js/src/wasm/WasmFrameIter.cpp
@@ -434,17 +434,18 @@ static void GenerateCallablePrologue(Mac
     masm.moveStackPtrTo(FramePointer);
     MOZ_ASSERT_IF(!masm.oom(), SetFP == masm.currentOffset() - *entry);
   }
 #elif defined(JS_CODEGEN_ARM64)
   {
     // We do not use the PseudoStackPointer.
     MOZ_ASSERT(masm.GetStackPointer64().code() == sp.code());
 
-    AutoForbidPoolsAndNops afp(&masm, /* number of instructions in scope = */ 5);
+    AutoForbidPoolsAndNops afp(&masm,
+                               /* number of instructions in scope = */ 5);
 
     *entry = masm.currentOffset();
 
     masm.Sub(sp, sp, sizeof(Frame));
     masm.Str(ARMRegister(lr, 64),
              MemOperand(sp, offsetof(Frame, returnAddress)));
     MOZ_ASSERT_IF(!masm.oom(), PushedRetAddr == masm.currentOffset() - *entry);
     masm.Str(ARMRegister(WasmTlsReg, 64), MemOperand(sp, offsetof(Frame, tls)));
@@ -453,17 +454,18 @@ static void GenerateCallablePrologue(Mac
              MemOperand(sp, offsetof(Frame, callerFP)));
     MOZ_ASSERT_IF(!masm.oom(), PushedFP == masm.currentOffset() - *entry);
     masm.Mov(ARMRegister(FramePointer, 64), sp);
     MOZ_ASSERT_IF(!masm.oom(), SetFP == masm.currentOffset() - *entry);
   }
 #else
   {
 #  if defined(JS_CODEGEN_ARM)
-    AutoForbidPoolsAndNops afp(&masm, /* number of instructions in scope = */ 7);
+    AutoForbidPoolsAndNops afp(&masm,
+                               /* number of instructions in scope = */ 7);
 
     *entry = masm.currentOffset();
 
     MOZ_ASSERT(BeforePushRetAddr == 0);
     masm.push(lr);
 #  else
     *entry = masm.currentOffset();
     // The x86/x64 call instruction pushes the return address.
@@ -692,25 +694,27 @@ void wasm::GenerateJitExitEpilogue(Macro
   MOZ_ASSERT(masm.framePushed() == 0);
 }
 
 void wasm::GenerateJitEntryPrologue(MacroAssembler& masm, Offsets* offsets) {
   masm.haltingAlign(CodeAlignment);
 
   {
 #if defined(JS_CODEGEN_ARM)
-    AutoForbidPoolsAndNops afp(&masm, /* number of instructions in scope = */ 2);
+    AutoForbidPoolsAndNops afp(&masm,
+                               /* number of instructions in scope = */ 2);
     offsets->begin = masm.currentOffset();
     MOZ_ASSERT(BeforePushRetAddr == 0);
     masm.push(lr);
 #elif defined(JS_CODEGEN_MIPS32) || defined(JS_CODEGEN_MIPS64)
     offsets->begin = masm.currentOffset();
     masm.push(ra);
 #elif defined(JS_CODEGEN_ARM64)
-    AutoForbidPoolsAndNops afp(&masm, /* number of instructions in scope = */ 3);
+    AutoForbidPoolsAndNops afp(&masm,
+                               /* number of instructions in scope = */ 3);
     offsets->begin = masm.currentOffset();
     MOZ_ASSERT(BeforePushRetAddr == 0);
     // Subtract from SP first as SP must be aligned before offsetting.
     masm.Sub(sp, sp, 8);
     masm.storePtr(lr, Address(masm.getStackPointer(), 0));
     masm.adjustFrame(8);
 #else
     // The x86/x64 call instruction pushes the return address.
--- a/layout/base/nsRefreshDriver.cpp
+++ b/layout/base/nsRefreshDriver.cpp
@@ -73,17 +73,17 @@
 #include "mozilla/Unused.h"
 #include "mozilla/TimelineConsumers.h"
 #include "nsAnimationManager.h"
 #include "nsDisplayList.h"
 #include "nsTransitionManager.h"
 
 #if defined(MOZ_WIDGET_ANDROID)
 #  include "VRManager.h"
-#endif    // defined(MOZ_WIDGET_ANDROID)
+#endif  // defined(MOZ_WIDGET_ANDROID)
 
 #ifdef MOZ_XUL
 #  include "nsXULPopupManager.h"
 #endif
 
 using namespace mozilla;
 using namespace mozilla::widget;
 using namespace mozilla::ipc;
@@ -1758,17 +1758,17 @@ void nsRefreshDriver::Tick(VsyncId aId, 
   }
 
 #if defined(MOZ_WIDGET_ANDROID)
   gfx::VRManager* vm = gfx::VRManager::Get();
   if (vm->IsPresenting()) {
     RunFrameRequestCallbacks(aNowTime);
     return;
   }
-#endif    // defined(MOZ_WIDGET_ANDROID)
+#endif  // defined(MOZ_WIDGET_ANDROID)
 
   AUTO_PROFILER_LABEL("nsRefreshDriver::Tick", LAYOUT);
 
   // We're either frozen or we were disconnected (likely in the middle
   // of a tick iteration).  Just do nothing here, since our
   // prescontext went away.
   if (IsFrozen() || !mPresContext) {
     return;
@@ -1811,30 +1811,32 @@ void nsRefreshDriver::Tick(VsyncId aId, 
     // We don't want to stop the timer when observers are initially
     // removed, because sometimes observers can be added and removed
     // often depending on what other things are going on and in that
     // situation we don't want to thrash our timer.  So instead we
     // wait until we get a Notify() call when we have no observers
     // before stopping the timer.
     // On top level content pages keep the timer running initially so that we
     // paint the page soon enough.
-    if (!XRE_IsContentProcess() || !presShell || mTestControllingRefreshes ||
-        !mPresContext->Document()->IsTopLevelContentDocument() || mThrottled ||
-        gfxPlatform::IsInLayoutAsapMode()) {
-      StopTimer();
-    } else if (mPresContext->Document()->GetReadyStateEnum() <
-                   Document::READYSTATE_COMPLETE &&
-               !mPresContext->HadContentfulPaint()) {
+    if (presShell && !mThrottled && !mTestControllingRefreshes &&
+        XRE_IsContentProcess() &&
+        mPresContext->Document()->IsTopLevelContentDocument() &&
+        !gfxPlatform::IsInLayoutAsapMode() &&
+        !mPresContext->HadContentfulPaint() &&
+        mPresContext->Document()->GetReadyStateEnum() <
+            Document::READYSTATE_COMPLETE) {
       if (mInitialTimerRunningLimit.IsNull()) {
         mInitialTimerRunningLimit =
             TimeStamp::Now() + TimeDuration::FromSeconds(4.0f);
         // Don't let the timer to run forever, so limit to 4s for now.
       } else if (mInitialTimerRunningLimit < TimeStamp::Now()) {
         StopTimer();
       }
+    } else {
+      StopTimer();
     }
     return;
   }
 
   mResizeSuppressed = false;
 
   AutoRestore<bool> restoreInRefresh(mInRefresh);
   mInRefresh = true;
--- a/layout/generic/nsBlockFrame.cpp
+++ b/layout/generic/nsBlockFrame.cpp
@@ -1281,19 +1281,21 @@ void nsBlockFrame::Reflow(nsPresContext*
       // ::markers that are placed next to a child block (bug 92896)
 
       // Tall ::markers won't look particularly nice here...
       LogicalRect bbox =
           marker->GetLogicalRect(wm, reflowOutput.PhysicalSize());
       const auto baselineGroup = BaselineSharingGroup::eFirst;
       nscoord markerBaseline;
       if (MOZ_UNLIKELY(wm.IsOrthogonalTo(marker->GetWritingMode()) ||
-                       !marker->GetNaturalBaselineBOffset(wm, baselineGroup, &markerBaseline))) {
+                       !marker->GetNaturalBaselineBOffset(wm, baselineGroup,
+                                                          &markerBaseline))) {
         // ::marker has no baseline in this axis: align with its margin-box end.
-        markerBaseline = bbox.BSize(wm) + marker->GetLogicalUsedMargin(wm).BEnd(wm);
+        markerBaseline =
+            bbox.BSize(wm) + marker->GetLogicalUsedMargin(wm).BEnd(wm);
       }
       bbox.BStart(wm) = position.mBaseline - markerBaseline;
       marker->SetRect(wm, bbox, reflowOutput.PhysicalSize());
     }
     // Otherwise just leave the ::marker where it is, up against our
     // block-start padding.
   }
 
--- a/layout/generic/nsTextFrame.cpp
+++ b/layout/generic/nsTextFrame.cpp
@@ -9406,17 +9406,17 @@ nsOverflowAreas nsTextFrame::RecomputeOv
   if (mTextRun->IsVertical()) {
     // Swap line-relative textMetrics dimensions to physical coordinates.
     Swap(boundingBox.x, boundingBox.y);
     Swap(boundingBox.width, boundingBox.height);
   }
   nsRect& vis = result.VisualOverflow();
   vis.UnionRect(vis, boundingBox);
   UnionAdditionalOverflow(PresContext(), aBlockFrame, provider, &vis, true,
-      aIncludeShadows);
+                          aIncludeShadows);
   return result;
 }
 
 static void TransformChars(nsTextFrame* aFrame, const nsStyleText* aStyle,
                            const gfxTextRun* aTextRun, uint32_t aSkippedOffset,
                            const nsTextFragment* aFrag, int32_t aFragOffset,
                            int32_t aFragLen, nsAString& aOut) {
   nsAutoString fragString;
--- a/layout/painting/nsDisplayList.h
+++ b/layout/painting/nsDisplayList.h
@@ -1717,19 +1717,17 @@ class nsDisplayListBuilder {
     if (!aFrame->IsFrameModified()) {
       mModifiedFramesDuringBuilding.AppendElement(aFrame);
       aFrame->SetFrameIsModified(true);
       return true;
     }
     return false;
   }
 
-  void RebuildAllItemsInCurrentSubtree() {
-    mDirtyRect = mVisibleRect;
-  }
+  void RebuildAllItemsInCurrentSubtree() { mDirtyRect = mVisibleRect; }
 
   /**
    * This is a convenience function to ease the transition until AGRs and ASRs
    * are unified.
    */
   AnimatedGeometryRoot* AnimatedGeometryRootForASR(
       const ActiveScrolledRoot* aASR);
 
--- a/layout/style/ServoTypes.h
+++ b/layout/style/ServoTypes.h
@@ -13,17 +13,17 @@
 #include "mozilla/TypedEnumBits.h"
 #include "nsCoord.h"
 
 struct RawServoFontFaceRule;
 
 namespace mozilla {
 enum class StyleOrigin : uint8_t;
 struct LangGroupFontPrefs;
-}
+}  // namespace mozilla
 
 // used for associating origin with specific @font-face rules
 struct nsFontFaceRuleContainer {
   RefPtr<RawServoFontFaceRule> mRule;
   mozilla::StyleOrigin mOrigin;
 };
 
 namespace mozilla {
--- a/layout/style/nsComputedDOMStyle.cpp
+++ b/layout/style/nsComputedDOMStyle.cpp
@@ -1826,19 +1826,17 @@ already_AddRefed<CSSValue> nsComputedDOM
 
   bool calcHeight = false;
 
   if (mInnerFrame) {
     calcHeight = true;
 
     const nsStyleDisplay* displayData = StyleDisplay();
     if (displayData->mDisplay == mozilla::StyleDisplay::Inline &&
-        !(mInnerFrame->IsFrameOfType(nsIFrame::eReplaced)) &&
-        // An outer SVG frame should behave the same as eReplaced in this case
-        !mInnerFrame->IsSVGOuterSVGFrame()) {
+        !mInnerFrame->IsFrameOfType(nsIFrame::eReplaced)) {
       calcHeight = false;
     }
   }
 
   if (calcHeight) {
     AssertFlushedPendingReflows();
     nsMargin adjustedValues = GetAdjustedValuesForBoxSizing();
     val->SetAppUnits(mInnerFrame->GetContentRect().height +
@@ -1865,19 +1863,17 @@ already_AddRefed<CSSValue> nsComputedDOM
 
   bool calcWidth = false;
 
   if (mInnerFrame) {
     calcWidth = true;
 
     const nsStyleDisplay* displayData = StyleDisplay();
     if (displayData->mDisplay == mozilla::StyleDisplay::Inline &&
-        !(mInnerFrame->IsFrameOfType(nsIFrame::eReplaced)) &&
-        // An outer SVG frame should behave the same as eReplaced in this case
-        !mInnerFrame->IsSVGOuterSVGFrame()) {
+        !mInnerFrame->IsFrameOfType(nsIFrame::eReplaced)) {
       calcWidth = false;
     }
   }
 
   if (calcWidth) {
     AssertFlushedPendingReflows();
     nsMargin adjustedValues = GetAdjustedValuesForBoxSizing();
     val->SetAppUnits(mInnerFrame->GetContentRect().width +
--- a/layout/svg/nsSVGOuterSVGFrame.h
+++ b/layout/svg/nsSVGOuterSVGFrame.h
@@ -70,17 +70,18 @@ class nsSVGOuterSVGFrame final : public 
   virtual void BuildDisplayList(nsDisplayListBuilder* aBuilder,
                                 const nsDisplayListSet& aLists) override;
 
   virtual void Init(nsIContent* aContent, nsContainerFrame* aParent,
                     nsIFrame* aPrevInFlow) override;
 
   bool IsFrameOfType(uint32_t aFlags) const override {
     return nsSVGDisplayContainerFrame::IsFrameOfType(
-        aFlags & ~eSupportsContainLayoutAndPaint);
+        aFlags &
+        ~(eSupportsContainLayoutAndPaint | eReplaced | eReplacedSizing));
   }
 
 #ifdef DEBUG_FRAME_DUMP
   virtual nsresult GetFrameName(nsAString& aResult) const override {
     return MakeFrameName(NS_LITERAL_STRING("SVGOuterSVG"), aResult);
   }
 #endif
 
--- a/layout/svg/nsSVGPatternFrame.cpp
+++ b/layout/svg/nsSVGPatternFrame.cpp
@@ -356,17 +356,19 @@ already_AddRefed<SourceSurface> nsSVGPat
     AutoSetRestorePaintServerState paintServer(patternWithChildren);
     for (nsIFrame *kid = firstKid; kid; kid = kid->GetNextSibling()) {
       gfxMatrix tm = *(patternWithChildren->mCTM);
 
       // The CTM of each frame referencing us can be different
       nsSVGDisplayableFrame *SVGFrame = do_QueryFrame(kid);
       if (SVGFrame) {
         SVGFrame->NotifySVGChanged(nsSVGDisplayableFrame::TRANSFORM_CHANGED);
-        tm = nsSVGUtils::GetTransformMatrixInUserSpace(kid, patternWithChildren) * tm;
+        tm = nsSVGUtils::GetTransformMatrixInUserSpace(kid,
+                                                       patternWithChildren) *
+             tm;
       }
 
       nsSVGUtils::PaintFrameWithEffects(kid, *ctx, tm, aImgParams);
     }
   }
 
   patternWithChildren->mSource = nullptr;
 
@@ -630,17 +632,17 @@ gfxMatrix nsSVGPatternFrame::ConstructCT
       ctx = static_cast<SVGElement *>(targetContent)->GetCtx();
     }
     scaleX = scaleY = MaxExpansion(callerCTM);
   }
 
   if (!aViewBox.IsExplicitlySet()) {
     return gfxMatrix(scaleX, 0.0, 0.0, scaleY, 0.0, 0.0);
   }
-  const SVGViewBox& viewBox = aViewBox.GetAnimValue();
+  const SVGViewBox &viewBox = aViewBox.GetAnimValue();
 
   if (viewBox.height <= 0.0f || viewBox.width <= 0.0f) {
     return gfxMatrix(0.0, 0.0, 0.0, 0.0, 0.0, 0.0);  // singular
   }
 
   float viewportWidth, viewportHeight;
   if (targetContent->IsSVGElement()) {
     // If we're dealing with an SVG target only retrieve the context once.
--- a/mobile/android/app/mobile.js
+++ b/mobile/android/app/mobile.js
@@ -207,17 +207,17 @@ pref("extensions.strictCompatibility", f
 pref("extensions.minCompatibleAppVersion", "11.0");
 
 pref("extensions.update.url", "https://versioncheck.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
 pref("extensions.update.background.url", "https://versioncheck-bg.addons.mozilla.org/update/VersionCheck.php?reqVersion=%REQ_VERSION%&id=%ITEM_ID%&version=%ITEM_VERSION%&maxAppVersion=%ITEM_MAXAPPVERSION%&status=%ITEM_STATUS%&appID=%APP_ID%&appVersion=%APP_VERSION%&appOS=%APP_OS%&appABI=%APP_ABI%&locale=%APP_LOCALE%&currentAppVersion=%CURRENT_APP_VERSION%&updateType=%UPDATE_TYPE%&compatMode=%COMPATIBILITY_MODE%");
 
 /* preferences for the Get Add-ons pane */
 pref("extensions.getAddons.cache.enabled", true);
 pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/android/search?q=%TERMS%&platform=%OS%&appver=%VERSION%");
-pref("extensions.getAddons.browseAddons", "https://addons.mozilla.org/%LOCALE%/firefox/collections/4757633/mob/");
+pref("extensions.getAddons.browseAddons", "https://addons.mozilla.org/%LOCALE%/firefox/collections/4757633/mob/?page=1&collection_sort=-popularity");
 pref("extensions.getAddons.get.url", "https://services.addons.mozilla.org/api/v3/addons/search/?guid=%IDS%&lang=%LOCALE%");
 pref("extensions.getAddons.compatOverides.url", "https://services.addons.mozilla.org/api/v3/addons/compat-override/?guid=%IDS%&lang=%LOCALE%");
 pref("extensions.getAddons.langpacks.url", "https://services.addons.mozilla.org/api/v3/addons/language-tools/?app=android&type=language&appversion=%VERSION%");
 
 /* preference for the locale picker */
 pref("extensions.getLocales.get.url", "");
 pref("extensions.compatability.locales.buildid", "0");
 
--- a/mobile/android/extensions/webcompat/aboutCompat.html
+++ b/mobile/android/extensions/webcompat/aboutCompat.html
@@ -3,17 +3,17 @@
 <head>
   <base/>
   <!-- If you change this script tag you must update the hash in the extension's
          `content_security_policy` 'sha256-HbSjs39Y0thRGfO3RHrNzLPKyC/tq6FdIuP3jEBAcJQ=' -->
   <script>document.head.firstElementChild.href = browser.runtime.getURL("");</script>
   <meta charset="utf-8" />
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <link rel="stylesheet" href="aboutCompat.css" />
-  <link rel="stylesheet" media="screen and (min-device-width:481px), projection" type="text/css"
+  <link rel="stylesheet" media="screen and (pointer:fine), projection" type="text/css"
           href="chrome://global/skin/in-content/common.css"/>
   <link rel="localization" href="toolkit/about/aboutCompat.ftl"/>
   <title data-l10n-id="text-title"></title>
   <script src="aboutCompat.js"></script>
   </head>
 <body>
   <h2 class="tab active" data-l10n-id="label-overrides"></h2>
   <table id="overrides">
--- a/mobile/android/extensions/webcompat/aboutPage.js
+++ b/mobile/android/extensions/webcompat/aboutPage.js
@@ -1,47 +1,34 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 /* global ExtensionAPI, Services, XPCOMUtils */
 
-ChromeUtils.defineModuleGetter(this, "AppConstants",
-                               "resource://gre/modules/AppConstants.jsm");
-
 ChromeUtils.defineModuleGetter(this, "Services",
                                "resource://gre/modules/Services.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "resProto",
                                    "@mozilla.org/network/protocol;1?name=resource",
                                    "nsISubstitutingProtocolHandler");
 
 const ResourceSubstitution = "webcompat";
 const ProcessScriptURL = "resource://webcompat/aboutPageProcessScript.js";
 
-const ShouldStart = ["default", "nightly", "nightly-try"].includes(AppConstants.MOZ_UPDATE_CHANNEL);
-
 this.aboutPage = class extends ExtensionAPI {
   onStartup() {
-    if (!ShouldStart) {
-      return;
-    }
-
     const {rootURI} = this.extension;
 
     resProto.setSubstitution(ResourceSubstitution,
                              Services.io.newURI("chrome/res/", null, rootURI));
 
     Services.ppmm.loadProcessScript(ProcessScriptURL, true);
   }
 
   onShutdown() {
-    if (!ShouldStart) {
-      return;
-    }
-
     resProto.setSubstitution(ResourceSubstitution, null);
 
     Services.ppmm.removeDelayedProcessScript(ProcessScriptURL);
   }
 };
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -6082,11 +6082,8 @@ pref("dom.events.testing.asyncClipboard"
 pref("dom.datatransfer.mozAtAPIs", false);
 #else
 pref("dom.datatransfer.mozAtAPIs", true);
 #endif
 
 // External.AddSearchProvider is deprecated and it will be removed in the next
 // cycles.
 pref("dom.sidebar.enabled", true);
-
-// Turn on fission frameloader swapping
-pref("fission.rebuild_frameloaders_on_remoteness_change", true);
--- a/modules/libpref/nsIPrefLocalizedString.idl
+++ b/modules/libpref/nsIPrefLocalizedString.idl
@@ -11,17 +11,17 @@
  * nsISupportsString so the preferences service can have a unique identifier
  * to distinguish between requests for normal wide strings (nsISupportsString)
  * and "localized" wide strings, which get their default values from properites
  * files.
  *
  * @see nsIPrefBranch
  * @see nsISupportsString
  */
-[scriptable, uuid(ae419e24-1dd1-11b2-b39a-d3e5e7073802)]
+[scriptable, builtinclass, uuid(ae419e24-1dd1-11b2-b39a-d3e5e7073802)]
 interface nsIPrefLocalizedString : nsISupportsString {};
 
 %{C++
 
 #define NS_PREFLOCALIZEDSTRING_CID                     \
   { /* {064d9cee-1dd2-11b2-83e3-d25ab0193c26} */       \
     0x064d9cee,                                        \
     0x1dd2,                                            \
--- a/mozglue/misc/ImportDir.h
+++ b/mozglue/misc/ImportDir.h
@@ -6,19 +6,18 @@
 
 #include "mozilla/LauncherResult.h"
 #include "mozilla/NativeNt.h"
 #include "mozilla/WinHeaderOnlyUtils.h"
 
 namespace mozilla {
 namespace detail {
 
-inline LauncherResult<nt::DataDirectoryEntry>
-GetImageDirectoryViaFileIo(const nsAutoHandle& aImageFile,
-                           const uint32_t aOurImportDirectoryRva) {
+inline LauncherResult<nt::DataDirectoryEntry> GetImageDirectoryViaFileIo(
+    const nsAutoHandle& aImageFile, const uint32_t aOurImportDirectoryRva) {
   OVERLAPPED ov = {};
   ov.Offset = aOurImportDirectoryRva;
 
   DWORD bytesRead;
   nt::DataDirectoryEntry result;
   if (!::ReadFile(aImageFile, &result, sizeof(result), &bytesRead, &ov) ||
       bytesRead != sizeof(result)) {
     return LAUNCHER_ERROR_FROM_LAST();
@@ -46,65 +45,62 @@ GetImageDirectoryViaFileIo(const nsAutoH
  *                       process for examination.
  * @param aTargetProcess Handle to the child process whose import table we are
  *                       touching.
  * @param aRemoteExeImage HMODULE referencing the child process's executable
  *                        binary that we are touching. This value is used to
  *                        determine the base address of the binary within the
  *                        target process.
  */
-inline LauncherVoidResult
-RestoreImportDirectory(const wchar_t* aFullImagePath,
-                       const nt::PEHeaders& aLocalExeImage,
-                       HANDLE aTargetProcess, HMODULE aRemoteExeImage) {
+inline LauncherVoidResult RestoreImportDirectory(
+    const wchar_t* aFullImagePath, const nt::PEHeaders& aLocalExeImage,
+    HANDLE aTargetProcess, HMODULE aRemoteExeImage) {
   uint32_t importDirEntryRva;
   PIMAGE_DATA_DIRECTORY importDirEntry =
-    aLocalExeImage.GetImageDirectoryEntryPtr(IMAGE_DIRECTORY_ENTRY_IMPORT,
-                                             &importDirEntryRva);
+      aLocalExeImage.GetImageDirectoryEntryPtr(IMAGE_DIRECTORY_ENTRY_IMPORT,
+                                               &importDirEntryRva);
   if (!importDirEntry) {
     return LAUNCHER_ERROR_FROM_WIN32(ERROR_BAD_EXE_FORMAT);
   }
 
-  nsAutoHandle file(::CreateFileW(aFullImagePath, GENERIC_READ,
-                                  FILE_SHARE_READ, nullptr, OPEN_EXISTING,
-                                  FILE_ATTRIBUTE_NORMAL, nullptr));
+  nsAutoHandle file(::CreateFileW(aFullImagePath, GENERIC_READ, FILE_SHARE_READ,
+                                  nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
+                                  nullptr));
   if (file.get() == INVALID_HANDLE_VALUE) {
     return LAUNCHER_ERROR_FROM_LAST();
   }
 
   // Why do we use file I/O here instead of a memory mapping? The simple reason
   // is that we do not want any kernel-mode drivers to start tampering with file
   // contents under the belief that the file is being mapped for execution.
   // Windows 8 supports creation of file mappings using the SEC_IMAGE_NO_EXECUTE
   // flag, which may help to mitigate this, but we might as well just support
   // a single implementation that works everywhere.
   LauncherResult<nt::DataDirectoryEntry> realImportDirectory =
-    detail::GetImageDirectoryViaFileIo(file, importDirEntryRva);
+      detail::GetImageDirectoryViaFileIo(file, importDirEntryRva);
   if (realImportDirectory.isErr()) {
     return LAUNCHER_ERROR_FROM_RESULT(realImportDirectory);
   }
 
   nt::DataDirectoryEntry toWrite = realImportDirectory.unwrap();
 
-  void* remoteAddress =
-    reinterpret_cast<char*>(nt::PEHeaders::HModuleToBaseAddr(aRemoteExeImage)) +
-    importDirEntryRva;
+  void* remoteAddress = reinterpret_cast<char*>(
+                            nt::PEHeaders::HModuleToBaseAddr(aRemoteExeImage)) +
+                        importDirEntryRva;
 
-  { // Scope for prot
-    AutoVirtualProtect prot(remoteAddress,
-                            sizeof(IMAGE_DATA_DIRECTORY),
+  {  // Scope for prot
+    AutoVirtualProtect prot(remoteAddress, sizeof(IMAGE_DATA_DIRECTORY),
                             PAGE_READWRITE, aTargetProcess);
     if (!prot) {
       return LAUNCHER_ERROR_FROM_MOZ_WINDOWS_ERROR(prot.GetError());
     }
 
     SIZE_T bytesWritten;
-    if (!::WriteProcessMemory(aTargetProcess, remoteAddress,
-                              &toWrite, sizeof(IMAGE_DATA_DIRECTORY),
-                              &bytesWritten) ||
+    if (!::WriteProcessMemory(aTargetProcess, remoteAddress, &toWrite,
+                              sizeof(IMAGE_DATA_DIRECTORY), &bytesWritten) ||
         bytesWritten != sizeof(IMAGE_DATA_DIRECTORY)) {
       return LAUNCHER_ERROR_FROM_LAST();
     }
   }
 
   return Ok();
 }
 
--- a/mozglue/misc/NativeNt.h
+++ b/mozglue/misc/NativeNt.h
@@ -254,18 +254,17 @@ class MOZ_RAII PEHeaders final {
   static PIMAGE_DOS_HEADER HModuleToBaseAddr(HMODULE aModule) {
     return reinterpret_cast<PIMAGE_DOS_HEADER>(
         reinterpret_cast<uintptr_t>(aModule) & ~uintptr_t(3));
   }
 
   explicit PEHeaders(void* aBaseAddress)
       : PEHeaders(reinterpret_cast<PIMAGE_DOS_HEADER>(aBaseAddress)) {}
 
-  explicit PEHeaders(HMODULE aModule)
-      : PEHeaders(HModuleToBaseAddr(aModule)) {}
+  explicit PEHeaders(HMODULE aModule) : PEHeaders(HModuleToBaseAddr(aModule)) {}
 
   explicit PEHeaders(PIMAGE_DOS_HEADER aMzHeader)
       : mMzHeader(aMzHeader), mPeHeader(nullptr), mImageLimit(nullptr) {
     if (!mMzHeader || mMzHeader->e_magic != IMAGE_DOS_SIGNATURE) {
       return;
     }
 
     mPeHeader = RVAToPtrUnchecked<PIMAGE_NT_HEADERS>(mMzHeader->e_lfanew);
@@ -325,32 +324,31 @@ class MOZ_RAII PEHeaders final {
   }
 
   PIMAGE_RESOURCE_DIRECTORY GetResourceTable() {
     return GetImageDirectoryEntry<PIMAGE_RESOURCE_DIRECTORY>(
         IMAGE_DIRECTORY_ENTRY_RESOURCE);
   }
 
   PIMAGE_DATA_DIRECTORY GetImageDirectoryEntryPtr(
-      const uint32_t aDirectoryIndex,
-      uint32_t* aOutRva = nullptr) const {
+      const uint32_t aDirectoryIndex, uint32_t* aOutRva = nullptr) const {
     if (aOutRva) {
       *aOutRva = 0;
     }
 
     IMAGE_OPTIONAL_HEADER& optionalHeader = mPeHeader->OptionalHeader;
 
     const uint32_t maxIndex = std::min(optionalHeader.NumberOfRvaAndSizes,
                                        DWORD(IMAGE_NUMBEROF_DIRECTORY_ENTRIES));
     if (aDirectoryIndex >= maxIndex) {
       return nullptr;
     }
 
     PIMAGE_DATA_DIRECTORY dirEntry =
-      &optionalHeader.DataDirectory[aDirectoryIndex];
+        &optionalHeader.DataDirectory[aDirectoryIndex];
     if (aOutRva) {
       *aOutRva = reinterpret_cast<char*>(dirEntry) -
                  reinterpret_cast<char*>(mMzHeader);
       MOZ_ASSERT(*aOutRva);
     }
 
     return dirEntry;
   }
@@ -399,17 +397,17 @@ class MOZ_RAII PEHeaders final {
       return curImpDesc;
     }
 
     return nullptr;
   }
 
   struct IATThunks {
     IATThunks(PIMAGE_THUNK_DATA aFirstThunk, ptrdiff_t aNumThunks)
-      : mFirstThunk(aFirstThunk), mNumThunks(aNumThunks) {}
+        : mFirstThunk(aFirstThunk), mNumThunks(aNumThunks) {}
 
     size_t Length() const {
       return size_t(mNumThunks) * sizeof(IMAGE_THUNK_DATA);
     }
 
     PIMAGE_THUNK_DATA mFirstThunk;
     ptrdiff_t mNumThunks;
   };
@@ -606,31 +604,29 @@ inline LauncherResult<DWORD> GetParentPr
   if (!NT_SUCCESS(status)) {
     return LAUNCHER_ERROR_FROM_NTSTATUS(status);
   }
 
   return static_cast<DWORD>(pbi.InheritedFromUniqueProcessId & 0xFFFFFFFF);
 }
 
 struct DataDirectoryEntry : public _IMAGE_DATA_DIRECTORY {
-  DataDirectoryEntry() : _IMAGE_DATA_DIRECTORY() {
-  }
+  DataDirectoryEntry() : _IMAGE_DATA_DIRECTORY() {}
 
   MOZ_IMPLICIT DataDirectoryEntry(const _IMAGE_DATA_DIRECTORY& aOther)
-    : _IMAGE_DATA_DIRECTORY(aOther) {
-  }
+      : _IMAGE_DATA_DIRECTORY(aOther) {}
 
   DataDirectoryEntry(const DataDirectoryEntry& aOther) = default;
 };
 
 inline LauncherResult<void*> GetProcessPebPtr(HANDLE aProcess) {
   ULONG returnLength;
   PROCESS_BASIC_INFORMATION pbi;
-  NTSTATUS status = ::NtQueryInformationProcess(aProcess,
-      ProcessBasicInformation, &pbi, sizeof(pbi), &returnLength);
+  NTSTATUS status = ::NtQueryInformationProcess(
+      aProcess, ProcessBasicInformation, &pbi, sizeof(pbi), &returnLength);
   if (!NT_SUCCESS(status)) {
     return LAUNCHER_ERROR_FROM_NTSTATUS(status);
   }
 
   return pbi.PebBaseAddress;
 }
 
 /**
@@ -646,34 +642,36 @@ inline LauncherResult<HMODULE> GetProces
     return LAUNCHER_ERROR_FROM_RESULT(ppeb);
   }
 
   PEB peb;
   SIZE_T bytesRead;
 
 #if defined(MOZILLA_INTERNAL_API)
   if (!::ReadProcessMemory(aProcess, ppeb.unwrap(), &peb, sizeof(peb),
-                           &bytesRead) || bytesRead != sizeof(peb)) {
+                           &bytesRead) ||
+      bytesRead != sizeof(peb)) {
     return LAUNCHER_ERROR_FROM_LAST();
   }
 #else
   NTSTATUS ntStatus = ::NtReadVirtualMemory(aProcess, ppeb.unwrap(), &peb,
                                             sizeof(peb), &bytesRead);
   if (!NT_SUCCESS(ntStatus) || bytesRead != sizeof(peb)) {
     return LAUNCHER_ERROR_FROM_NTSTATUS(ntStatus);
   }
 #endif
 
   // peb.ImageBaseAddress
   void* baseAddress = peb.Reserved3[1];
 
   char mzMagic[2];
 #if defined(MOZILLA_INTERNAL_API)
   if (!::ReadProcessMemory(aProcess, baseAddress, mzMagic, sizeof(mzMagic),
-                           &bytesRead) || bytesRead != sizeof(mzMagic)) {
+                           &bytesRead) ||
+      bytesRead != sizeof(mzMagic)) {
     return LAUNCHER_ERROR_FROM_LAST();
   }
 #else
   ntStatus = ::NtReadVirtualMemory(aProcess, baseAddress, mzMagic,
                                    sizeof(mzMagic), &bytesRead);
   if (!NT_SUCCESS(ntStatus) || bytesRead != sizeof(mzMagic)) {
     return LAUNCHER_ERROR_FROM_NTSTATUS(ntStatus);
   }
--- a/netwerk/dns/effective_tld_names.dat
+++ b/netwerk/dns/effective_tld_names.dat
@@ -7935,19 +7935,16 @@ docs
 doctor
 
 // dodge : 2015-07-30 FCA US LLC.
 dodge
 
 // dog : 2014-12-04 Binky Moon, LLC
 dog
 
-// doha : 2014-09-18 Communications Regulatory Authority (CRA)
-doha
-
 // domains : 2013-10-17 Binky Moon, LLC
 domains
 
 // dot : 2015-05-21 Dish DBS Corporation
 dot
 
 // download : 2014-11-20 dot Support Limited
 download
@@ -10838,16 +10835,20 @@ myfritz.net
 // Submitted by James Kennedy <domains@advisorwebsites.com>
 *.awdev.ca
 *.advisor.ws
 
 // backplane : https://www.backplane.io
 // Submitted by Anthony Voutas <anthony@backplane.io>
 backplaneapp.io
 
+// Banzai Cloud
+// Submitted by Gabor Kozma <info@banzaicloud.com>
+app.banzaicloud.io
+
 // BetaInABox
 // Submitted by Adrian <adrian@betainabox.com>
 betainabox.com
 
 // BinaryLane : http://www.binarylane.com
 // Submitted by Nathan O'Sullivan <nathan@mammoth.com.au>
 bnr.la
 
--- a/netwerk/protocol/http/HttpBaseChannel.cpp
+++ b/netwerk/protocol/http/HttpBaseChannel.cpp
@@ -3182,19 +3182,20 @@ already_AddRefed<nsILoadInfo> HttpBaseCh
         "docshell and necko should have the same userContextId attribute.");
     MOZ_ASSERT(
         docShellAttrs.mInIsolatedMozBrowser == attrs.mInIsolatedMozBrowser,
         "docshell and necko should have the same inIsolatedMozBrowser "
         "attribute.");
     MOZ_ASSERT(
         docShellAttrs.mPrivateBrowsingId == attrs.mPrivateBrowsingId,
         "docshell and necko should have the same privateBrowsingId attribute.");
-    MOZ_ASSERT(
-        docShellAttrs.mGeckoViewSessionContextId == attrs.mGeckoViewSessionContextId,
-        "docshell and necko should have the same geckoViewSessionContextId attribute");
+    MOZ_ASSERT(docShellAttrs.mGeckoViewSessionContextId ==
+                   attrs.mGeckoViewSessionContextId,
+               "docshell and necko should have the same "
+               "geckoViewSessionContextId attribute");
 
     attrs = docShellAttrs;
     attrs.SetFirstPartyDomain(true, newURI);
     newLoadInfo->SetOriginAttributes(attrs);
   }
 
   // Leave empty, we want a 'clean ground' when creating the new channel.
   // This will be ensured to be either set by the protocol handler or set
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -6129,20 +6129,19 @@ NS_INTERFACE_MAP_END_INHERITING(HttpBase
 
 NS_IMETHODIMP
 nsHttpChannel::Cancel(nsresult status) {
   MOZ_ASSERT(NS_IsMainThread());
   // We should never have a pump open while a CORS preflight is in progress.
   MOZ_ASSERT_IF(mPreflightChannel, !mCachePump);
 #ifdef DEBUG
   if (UrlClassifierFeatureFactory::IsClassifierBlockingErrorCode(status)) {
-    MOZ_CRASH_UNSAFE_PRINTF(
-        "Blocking classifier error %" PRIx32
-        " need to be handled by CancelByURLClassifier()",
-        static_cast<uint32_t>(status));
+    MOZ_CRASH_UNSAFE_PRINTF("Blocking classifier error %" PRIx32
+                            " need to be handled by CancelByURLClassifier()",
+                            static_cast<uint32_t>(status));
   }
 #endif
 
   LOG(("nsHttpChannel::Cancel [this=%p status=%" PRIx32 "]\n", this,
        static_cast<uint32_t>(status)));
   if (mCanceled) {
     LOG(("  ignoring; already canceled\n"));
     return NS_OK;
@@ -6214,18 +6213,17 @@ nsHttpChannel::CancelByURLClassifier(nsr
 
 void nsHttpChannel::ContinueCancellingByURLClassifier(nsresult aErrorCode) {
   MOZ_ASSERT(
       UrlClassifierFeatureFactory::IsClassifierBlockingErrorCode(aErrorCode));
   MOZ_ASSERT(NS_IsMainThread());
   // We should never have a pump open while a CORS preflight is in progress.
   MOZ_ASSERT_IF(mPreflightChannel, !mCachePump);
 
-  LOG(("nsHttpChannel::ContinueCancellingByURLClassifier [this=%p]\n",
-       this));
+  LOG(("nsHttpChannel::ContinueCancellingByURLClassifier [this=%p]\n", this));
   if (mCanceled) {
     LOG(("  ignoring; already canceled\n"));
     return;
   }
 
   // Check to see if we should redirect this channel elsewhere by
   // nsIHttpChannel.redirectTo API request
   if (mAPIRedirectToURI) {
--- a/netwerk/protocol/http/nsHttpConnection.cpp
+++ b/netwerk/protocol/http/nsHttpConnection.cpp
@@ -116,17 +116,17 @@ nsHttpConnection::nsHttpConnection()
 
   // the default timeout is for when this connection has not yet processed a
   // transaction
   static const PRIntervalTime k5Sec = PR_SecondsToInterval(5);
   mIdleTimeout = (k5Sec < gHttpHandler->IdleTimeout())
                      ? k5Sec
                      : gHttpHandler->IdleTimeout();
 
- mThroughCaptivePortal = gHttpHandler->GetThroughCaptivePortal();
+  mThroughCaptivePortal = gHttpHandler->GetThroughCaptivePortal();
 }
 
 nsHttpConnection::~nsHttpConnection() {
   LOG(("Destroying nsHttpConnection @%p\n", this));
 
   if (!mEverUsedSpdy) {
     LOG(("nsHttpConnection %p performed %d HTTP/1.x transactions\n", this,
          mHttp1xTransactionCount));
@@ -153,21 +153,22 @@ nsHttpConnection::~nsHttpConnection() {
          totalKBRead, mEverUsedSpdy));
     Telemetry::Accumulate(mEverUsedSpdy ? Telemetry::SPDY_KBREAD_PER_CONN2
                                         : Telemetry::HTTP_KBREAD_PER_CONN2,
                           totalKBRead);
   }
 
   if (mThroughCaptivePortal) {
     if (mTotalBytesRead || mTotalBytesWritten) {
-      auto total = Clamp<uint32_t>(
-          (mTotalBytesRead >> 10) + (mTotalBytesWritten >> 10), 0,
-          std::numeric_limits<uint32_t>::max());
+      auto total =
+          Clamp<uint32_t>((mTotalBytesRead >> 10) + (mTotalBytesWritten >> 10),
+                          0, std::numeric_limits<uint32_t>::max());
       Telemetry::ScalarAdd(
-          Telemetry::ScalarID::NETWORKING_DATA_TRANSFERRED_CAPTIVE_PORTAL, total);
+          Telemetry::ScalarID::NETWORKING_DATA_TRANSFERRED_CAPTIVE_PORTAL,
+          total);
     }
 
     Telemetry::ScalarAdd(
         Telemetry::ScalarID::NETWORKING_HTTP_CONNECTIONS_CAPTIVE_PORTAL, 1);
   }
 
   if (mForceSendTimer) {
     mForceSendTimer->Cancel();
--- a/netwerk/protocol/http/nsHttpHandler.h
+++ b/netwerk/protocol/http/nsHttpHandler.h
@@ -413,16 +413,17 @@ class nsHttpHandler final : public nsIHt
   void SetLastActiveTabLoadOptimizationHit(TimeStamp const &when);
   bool IsBeforeLastActiveTabLoadOptimization(TimeStamp const &when);
 
   bool DumpHpackTables() { return mDumpHpackTables; }
 
   HttpTrafficAnalyzer *GetHttpTrafficAnalyzer();
 
   bool GetThroughCaptivePortal() { return mThroughCaptivePortal; }
+
  private:
   nsHttpHandler();
 
   virtual ~nsHttpHandler();
 
   MOZ_MUST_USE nsresult Init();
 
   //
--- a/netwerk/url-classifier/UrlClassifierFeatureFingerprintingProtection.cpp
+++ b/netwerk/url-classifier/UrlClassifierFeatureFingerprintingProtection.cpp
@@ -169,18 +169,17 @@ UrlClassifierFeatureFingerprintingProtec
   UC_LOG(
       ("UrlClassifierFeatureFingerprintingProtection::ProcessChannel, "
        "cancelling "
        "channel[%p]",
        aChannel));
   nsCOMPtr<nsIHttpChannelInternal> httpChannel = do_QueryInterface(aChannel);
 
   if (httpChannel) {
-    Unused << httpChannel->CancelByURLClassifier(
-        NS_ERROR_FINGERPRINTING_URI);
+    Unused << httpChannel->CancelByURLClassifier(NS_ERROR_FINGERPRINTING_URI);
   } else {
     Unused << aChannel->Cancel(NS_ERROR_FINGERPRINTING_URI);
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
--- a/python/mozbuild/mozbuild/mach_commands.py
+++ b/python/mozbuild/mozbuild/mach_commands.py
@@ -592,27 +592,47 @@ class GTestCommands(MachCommandBase):
              "optionally followed by a '-' and another ':'-separated pattern list (called the negative patterns).")
     @CommandArgument('--jobs', '-j', default='1', nargs='?', metavar='jobs', type=int,
         help='Run the tests in parallel using multiple processes.')
     @CommandArgument('--tbpl-parser', '-t', action='store_true',
         help='Output test results in a format that can be parsed by TBPL.')
     @CommandArgument('--shuffle', '-s', action='store_true',
         help='Randomize the execution order of tests.')
 
+    @CommandArgument('--package',
+        default='org.mozilla.geckoview.test',
+        help='(Android only) Package name of test app.')
+    @CommandArgument('--adbpath',
+        dest='adb_path',
+        help='(Android only) Path to adb binary.')
+    @CommandArgument('--deviceSerial',
+        dest='device_serial',
+        help="(Android only) adb serial number of remote device. "
+             "Required when more than one device is connected to the host. "
+             "Use 'adb devices' to see connected devices.")
+    @CommandArgument('--remoteTestRoot',
+        dest='remote_test_root',
+        help='(Android only) Remote directory to use as test root '
+             '(eg. /mnt/sdcard/tests or /data/local/tests).')
+    @CommandArgument('--libxul',
+        dest='libxul_path',
+        help='(Android only) Path to gtest libxul.so.')
+
     @CommandArgumentGroup('debugging')
     @CommandArgument('--debug', action='store_true', group='debugging',
         help='Enable the debugger. Not specifying a --debugger option will result in the default debugger being used.')
     @CommandArgument('--debugger', default=None, type=str, group='debugging',
         help='Name of debugger to use.')
     @CommandArgument('--debugger-args', default=None, metavar='params', type=str,
         group='debugging',
         help='Command-line arguments to pass to the debugger itself; split as the Bourne shell would.')
 
-    def gtest(self, shuffle, jobs, gtest_filter, tbpl_parser, debug, debugger,
-              debugger_args):
+    def gtest(self, shuffle, jobs, gtest_filter, tbpl_parser,
+              package, adb_path, device_serial, remote_test_root, libxul_path,
+              debug, debugger, debugger_args):
 
         # We lazy build gtest because it's slow to link
         try:
             config = self.config_environment
         except Exception:
             print("Please run |./mach build| before |./mach gtest|.")
             return 1
 
@@ -627,16 +647,27 @@ class GTestCommands(MachCommandBase):
         if res:
             print("Could not build xul-gtest")
             return res
 
         if self.substs.get('MOZ_WIDGET_TOOLKIT') == 'cocoa':
             self._run_make(directory='browser/app', target='repackage',
                            ensure_exit_code=True)
 
+        if conditions.is_android(self):
+            if jobs != 1:
+                print("--jobs is not supported on Android and will be ignored")
+            if debug or debugger or debugger_args:
+                print("--debug options are not supported on Android and will be ignored")
+            return self.android_gtest(shuffle, gtest_filter,
+                                      package, adb_path, device_serial, remote_test_root, libxul_path)
+
+        if package or adb_path or device_serial or remote_test_root or libxul_path:
+            print("One or more Android-only options will be ignored")
+
         app_path = self.get_binary_path('app')
         args = [app_path, '-unittest', '--gtest_death_test_style=threadsafe'];
 
         if sys.platform.startswith('win') and \
             'MOZ_LAUNCHER_PROCESS' in self.defines:
             args.append('--wait-for-browser')
 
         if debug or debugger or debugger_args:
@@ -703,16 +734,46 @@ class GTestCommands(MachCommandBase):
 
         # Clamp error code to 255 to prevent overflowing multiple of
         # 256 into 0
         if exit_code > 255:
             exit_code = 255
 
         return exit_code
 
+    def android_gtest(self, shuffle, gtest_filter,
+                      package, adb_path, device_serial, remote_test_root, libxul_path):
+        # setup logging for mozrunner
+        from mozlog.commandline import setup_logging
+        format_args = {'level': self._mach_context.settings['test']['level']}
+        default_format = self._mach_context.settings['test']['format']
+        log = setup_logging('mach-gtest', {}, {default_format: sys.stdout}, format_args)
+
+        # ensure that a device is available and test app is installed
+        from mozrunner.devices.android_device import (verify_android_device, get_adb_path)
+        verify_android_device(self, install=True, app=package, device_serial=device_serial)
+
+        if not adb_path:
+            adb_path = get_adb_path(self)
+        if not libxul_path:
+            libxul_path = os.path.join(self.topobjdir, "dist", "bin", "gtest", "libxul.so")
+
+        # run gtest via remotegtests.py
+        import imp
+        path = os.path.join('testing', 'gtest', 'remotegtests.py')
+        with open(path, 'r') as fh:
+            imp.load_module('remotegtests', fh, path,
+                            ('.py', 'r', imp.PY_SOURCE))
+        import remotegtests
+        tester = remotegtests.RemoteGTests()
+        tester.run_gtest(shuffle, gtest_filter, package, adb_path, device_serial,
+                         remote_test_root, libxul_path, None)
+
+        return 0
+
     def prepend_debugger_args(self, args, debugger, debugger_args):
         '''
         Given an array with program arguments, prepend arguments to run it under a
         debugger.
 
         :param args: The executable and arguments used to run the process normally.
         :param debugger: The debugger to use, or empty to use the default debugger.
         :param debugger_args: Any additional parameters to pass to the debugger.
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1147,9 +1147,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(1564057460770000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1564403120415000);
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,80 +3,92 @@
  * 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(1566476644168000);
+const PRTime gPreloadListExpirationTime = INT64_C(1566822312728000);
 %%
 0-1.party, 1
 000books.net, 1
 00100010.net, 1
 0010100.net, 1
 00120012.net, 1
 00130013.net, 1
 00140014.net, 1
 00150015.net, 1
 00160016.net, 1
+0017d88.com, 1
 00180018.net, 1
+0018d88.com, 1
 00190019.net, 1
 00220022.net, 1
 00330033.net, 1
 00334.vip, 1
 003971.com, 1
 00440044.net, 1
 00550055.net, 1
+005555.xyz, 1
 00660066.net, 1
 00770077.net, 1
 007kf.com, 1
 008207.com, 1
 008251.com, 1
 008253.com, 1
 008271.com, 1
 00880088.net, 1
 00990099.net, 1
 009p.com, 1
+00d88.com, 1
 00dani.me, 1
 00f.net, 1
 00wbf.com, 1
 0100dev.com, 0
 0100dev.nl, 0
 01011970.xyz, 1
 01100010011001010111001101110100.com, 1
 01110000011100110111001001100111.com, 1
+013zl.com, 1
+015zl.com, 1
 01smh.com, 1
+020ks.net, 1
 021002.com, 1
 022367.com, 1
 022379.com, 1
 022391.com, 1
 022501.com, 1
 022503.com, 1
 022507.com, 1
 022561.com, 1
 022571.com, 1
 022601.com, 1
 022609.com, 1
 022610.com, 1
+022ks.net, 1
 02327.net, 1
 02375.net, 1
 023sec.com, 1
 025ks.com, 1
+025ks.net, 1
 02607.com, 1
 026122.com, 1
 02638.net, 1
+029ks.net, 1
+02am8.com, 1
 02smh.com, 1
 03-09-2016.wedding, 1
 03012.net, 1
 03018.net, 1
 03170317.com, 1
 035711630.xyz, 1
 0391315.com, 1
+03d88.net, 1
 046569.com, 1
 04911701.cn, 1
 04dco.tk, 1
 04sun.com, 1
 050.ca, 1
 050869.com, 1
 050media.nl, 1
 0511315.net, 1
@@ -97,16 +109,17 @@ 056985.com, 1
 0573wk.com, 1
 057587.com, 1
 057596.com, 1
 058509.com, 1
 058596.com, 1
 058679.com, 1
 059957.com, 1
 060258.com, 1
+060579.com, 1
 060757.com, 1
 060795.com, 1
 060796.com, 1
 060798.com, 1
 0607p.com, 1
 060870.com, 1
 060875.com, 1
 06091994.xyz, 1
@@ -187,16 +200,17 @@ 089818.com, 1
 08detaxe.fr, 1
 095598.cc, 1
 09892.net, 1
 098955.com, 1
 0akarma.me, 1
 0au.de, 1
 0c3.de, 1
 0cdn.ga, 1
+0chan.pl, 1
 0day.agency, 1
 0day.su, 1
 0des.com, 1
 0i0.nl, 1
 0ii0.cf, 1
 0ik.de, 1
 0iz.net, 1
 0knowledge.de, 0
@@ -207,16 +221,17 @@ 0vo.moe, 1
 0wx.cat, 1
 0wx.es, 1
 0wx.eu, 1
 0wx.org, 1
 0x.cx, 1
 0x.sk, 1
 0x0.cloud, 1
 0x0.li, 1
+0x00c.de, 1
 0x00ff00ff.com, 1
 0x17.de, 1
 0x378.net, 1
 0x41.us, 1
 0x48.pw, 1
 0x52.net, 1
 0x52.org, 1
 0x7d.com, 1
@@ -281,16 +296,18 @@ 10giant.com, 1
 10hz.de, 1
 10og.de, 1
 10ppm.com, 1
 10x.ooo, 1
 1100.so, 1
 110110110.net, 1
 110320.com, 1
 110692.com, 1
+111.one, 1
+1111k8.com, 1
 112112112.net, 1
 1126p.com, 1
 112app.nl, 1
 112hz.com, 1
 112it.ro, 1
 1130p.com, 1
 113113113.net, 1
 114514ss.com, 1
@@ -306,16 +323,17 @@ 123.gg, 1
 123110.com, 1
 123123qq.com, 1
 1236.be, 1
 123apps.net, 1
 123bearing.co.uk, 1
 123bearing.com, 1
 123bearing.eu, 1
 123comparer.fr, 1
+123derivatives.com, 1
 123djdrop.com, 1
 123midterm.com, 1
 123nutricion.es, 1
 123plons.nl, 1
 123roulement.be, 1
 123roulement.com, 1
 123termpapers.com, 1
 123writings.com, 1
@@ -363,52 +381,57 @@ 13th-dover.uk, 1
 141145.com, 1
 143533.com, 1
 143633.com, 1
 143733.com, 1
 143933.com, 1
 1453914078.rsc.cdn77.org, 1
 145433.com, 1
 145733.com, 1
+145ks.net, 1
 146233.com, 1
 146433.com, 1
 1464424382.rsc.cdn77.org, 1
 146533.com, 1
 146733.com, 1
+147ks.com, 1
 1481481.com, 1
 1481481.net, 1
 1481482.com, 1
 1481482.net, 1
 1481483.com, 1
 1481483.net, 1
 1481485.com, 1
 1481485.net, 1
 1481486.com, 1
 1481486.net, 1
 149433.com, 1
 149733.com, 1
 14it.de, 1
 14x3.de, 1
 15-10.com, 1
 1511774230.rsc.cdn77.org, 1
+151ks.com, 1
+1520322.com, 1
 152433.com, 1
 1527web.com, 1
 154233.com, 1
 154633.com, 1
 154933.com, 1
 156433.com, 1
 158306.com, 1
 1590284872.rsc.cdn77.org, 1
 159cp.com, 1
 159ks.com, 1
 1600esplanade.com, 1
 160887.com, 1
 161233.com, 1
 161263.com, 1
 16164f.com, 1
+162223.com, 1
 162231.com, 1
 162263.com, 1
 162361.com, 1
 162632.com, 1
 162jonesrd.ca, 1
 163132.com, 1
 1644091933.rsc.cdn77.org, 1
 1661237.com, 1
@@ -418,49 +441,55 @@ 168bo9.com, 1
 168bo9.net, 1
 168esb.com, 1
 174.net.nz, 1
 174343.com, 1
 1750studios.com, 0
 1768calc.com.au, 1
 177603.com, 1
 17kpw.cc, 1
+17kpw.com, 1
 17xile.com, 1
 1811559.com, 1
 182162.com, 1
+182ks.com, 1
+182wh.com, 1
 1844329061.rsc.cdn77.org, 1
 186kb.com, 1
 1876996.com, 1
+187kb.com, 1
 188198.net, 1
 1888zr.com, 1
 188da.com, 1
 188dv.com, 1
 1895media.com, 1
 189dv.com, 1
 189fc.com, 1
 18f.gov, 1
 18f.gsa.gov, 0
 191090.com, 1
 1911trust.com, 1
 1912x.com, 1
+192080.com, 1
 192168ll.repair, 1
 1921958389.rsc.cdn77.org, 1
 192433.com, 1
 1972969867.rsc.cdn77.org, 1
 1981612088.rsc.cdn77.org, 1
 198ks.net, 1
 19area.cn, 1
 19hundert84.de, 1
 19qq.vip, 1
 1a-diamantscheiben.de, 1
 1a-werkstattgeraete.de, 1
 1ab-machinery.com, 1
 1android.de, 1
 1b1.pl, 1
 1c-power.ru, 1
+1chan.pl, 1
 1cool.vip, 1
 1cover.co.nz, 1
 1cover.com.au, 1
 1cswd.com, 1
 1day1ac.red, 1
 1db77.cn, 0
 1e9.nl, 1
 1er-secours.ch, 1
@@ -507,31 +536,32 @@ 1st-bounce.co.uk, 1
 1st-community.de, 1
 1stchoicefun.co.uk, 1
 1stchoicelandscapingwa.com, 1
 1stclassbouncycastles.co.uk, 1
 1stforfun.co.uk, 1
 1stpeninsulabouncers.co.uk, 1
 1v9.im, 1
 1volcano.ru, 1
-1way.faith, 1
 1whw.co.uk, 1
 1wirelog.de, 1
 1wl.uk, 1
 1zombie.team, 1
 2.wtf, 1
 200.network, 1
 2001y.me, 1
 200fcw.com, 1
 2012.ovh, 1
 2018.wales, 1
 20188088.com, 1
+204504byse.info, 1
 2048-spiel.de, 1
 2048game.co.uk, 1
 2083236893.com, 1
+208garfield.com, 1
 20at.com, 1
 20denier.com, 1
 215dy.net, 1
 21sthammersmith.org.uk, 1
 21stnc.us, 1
 21x9.org, 1
 2206p.com, 1
 222001.com, 1
@@ -549,18 +579,20 @@ 2333666.xyz, 1
 2333blog.com, 1
 233abc.com, 0
 233blog.com, 1
 233boy.com, 1
 233bwg.com, 1
 233hugo.com, 1
 233now.com, 1
 233ss.net, 1
+233v2.com, 1
 233vps.com, 1
 233yes.com, 1
+238212.com, 1
 24-7.jp, 1
 24.ie, 1
 245meadowvistaway.com, 1
 246060.ru, 1
 2468lhc.com, 1
 247a.co.uk, 1
 247exchange.com, 1
 247healthshop.com, 1
@@ -577,32 +609,38 @@ 24hourlocksmithdetroit.com, 1
 24hourlocksmithshouston.com, 1
 24hoursanantoniolocksmiths.com, 1
 24hourscienceprojects.com, 1
 24ip.com, 1
 24ip.de, 1
 24ip.fr, 1
 24kbet.com, 1
 24zpravy.cz, 1
+2502.net, 1
+2525admin.nl, 1
 256k.me, 1
 256pages.com, 0
 2586p.com, 1
 258877.com, 1
 25reinyan25.net, 1
 26004.cc, 1
 2600edinburgh.org, 1
 2600hq.com, 1
 260887.com, 1
 263.info, 1
 267221.com, 1
 267661.com, 1
+27000.best, 1
 2718282.net, 1
+276112.com, 1
+276117.com, 1
 276771.com, 1
 27728522.com, 1
 28-industries.com, 1
+281116.com, 1
 281180.de, 1
 2858958.com, 1
 288game.net, 1
 28peaks.com, 1
 28spots.net, 1
 291167.xyz, 1
 2912.nl, 1
 29227.com, 1
@@ -663,16 +701,17 @@ 303422.com, 1
 304122.com, 1
 304322.com, 1
 304622.com, 1
 3056999.com, 1
 309422.com, 1
 30hzcollective.com, 1
 310422.com, 1
 311186.com, 1
+311191.com, 1
 313422.com, 1
 314022.com, 1
 314122.com, 1
 314322.com, 1
 314522.com, 1
 314553.com, 1
 314622.com, 1
 314633.com, 1
@@ -698,17 +737,19 @@ 329422.com, 1
 32h.de, 1
 33-km.ru, 1
 330.net, 1
 33445.com, 1
 33445111.com, 1
 33445222.com, 1
 33445333.com, 1
 33445444.com, 1
+3345.com, 1
 3351p.com, 1
+3361p.com, 1
 336yh.com, 1
 338393.com, 1
 338da.com, 1
 338sa.com, 1
 33jiasu.com, 1
 340422.com, 1
 340622.com, 1
 340922.com, 1
@@ -753,50 +794,56 @@ 351113.com, 1
 354022.com, 1
 354133.com, 1
 354233.com, 1
 354622.com, 1
 354633.com, 1
 354922.com, 1
 354933.com, 1
 356433.com, 1
+357601.com, 1
 357maelai.co, 1
 360-staffing.com, 1
 360live.fr, 1
 360rail.nl, 1
 360vrs.com, 1
 360woodworking.com, 1
+361116.com, 1
 361171.com, 1
 361173.com, 1
 361183.com, 1
 364553.com, 1
 365365.com, 1
 365beautyworld.com, 1
+365d88.com, 1
 365daysreview.com, 1
+365electricalvn.com, 1
 365healthworld.com, 1
 365propertybuyer.co.uk, 0
 365skulls.com, 1
 367553.com, 1
 367556.com, 1
 370422.com, 1
 371422.com, 1
+371687.com, 1
 371cloud.com, 1
 373422.com, 1
 374933.com, 1
 375422.com, 1
 376208.com, 1
 376557.com, 1
 377625.com, 1
 377632.com, 1
 377813.com, 1
 377817.com, 1
 378553.com, 1
 379700.com, 1
 380422.com, 1
 382225.com, 1
+3838onndo.tk, 1
 3839.ca, 1
 387763.com, 1
 3880p.com, 1
 38888msc.com, 1
 388da.com, 1
 38sihu.com, 0
 390422.com, 1
 392422.com, 1
@@ -894,16 +941,17 @@ 411416.com, 1
 41199.com, 1
 411film.com, 1
 411movie.com, 1
 411quest.com, 1
 414553.com, 1
 41844.de, 1
 41studio.com, 1
 41where.com, 1
+42.tools, 1
 420java.com, 1
 42ch.com, 1
 42day.info, 1
 42l.fr, 1
 42t.ru, 1
 439050.com, 1
 43klive.com, 1
 440887.com, 1
@@ -914,16 +962,17 @@ 442887.com, 1
 442jz.com, 0
 443887.com, 1
 443jz.com, 0
 444887.com, 1
 445887.com, 1
 44sec.com, 1
 451.ooo, 1
 4553.com, 1
+455327.com, 1
 4553s.com, 1
 4553vip.com, 1
 46fa.com, 1
 47.rs, 1
 4706666.com, 1
 4716666.com, 1
 4726666.com, 1
 4736666.com, 1
@@ -941,32 +990,30 @@ 4baby.com.br, 1
 4c-haircare.com, 1
 4d2.xyz, 1
 4dbygg.se, 1
 4eyes.ch, 1
 4fit.ro, 1
 4flex.info, 1
 4freepress.com, 1
 4g-server.eu, 0
-4garage.com.br, 1
 4gnews.pt, 1
 4hmediaproductions.com, 1
 4host.ch, 1
 4kprojektory.cz, 1
 4loc.us, 1
-4lock.com.br, 1
 4mm.org, 1
 4o5.xyz, 1
 4plebs.moe, 1
 4project.co.il, 1
 4share.tv, 1
 4sics.se, 1
+4smart.house, 1
 4th-ave-studio.com, 1
 4thdc.com, 1
-4u.am, 1
 4u.services, 1
 4u2ore.net, 1
 4vector.com, 1
 4vf.de, 1
 4web-hosting.com, 1
 4x.fi, 1
 4x4-27mc.nl, 1
 4x4.lk, 1
@@ -996,16 +1043,17 @@ 514122.com, 1
 514522.com, 1
 514622.com, 1
 514922.com, 1
 515422.com, 1
 516422.com, 1
 517vpn.cn, 1
 518.com.tw, 1
 51877.net, 1
+518d88.com, 1
 519422.com, 1
 51acg.eu.org, 1
 51aifuli.com, 1
 51chiyu.com, 1
 51guaq.com, 1
 51tiaojiu.com, 1
 5214889.com, 1
 5214889.net, 1
@@ -1020,16 +1068,17 @@ 52b9.net, 1
 52hentai.ml, 1
 52kb1.com, 1
 52kb365.com, 1
 52ncp.net, 1
 52sykb.com, 1
 5310899.com, 1
 5310899.net, 1
 531422.com, 1
+531k8.com, 1
 532441.com, 1
 532445.com, 1
 534122.com, 1
 534622.com, 1
 534922.com, 1
 5364.com, 1
 536422.com, 1
 5364b.com, 1
@@ -1042,16 +1091,17 @@ 540922.com, 1
 541022.com, 1
 541622.com, 1
 541722.com, 1
 541922.com, 1
 545755.com, 1
 545922.com, 1
 546802.com, 1
 54below.com, 1
+54lsj.cc, 1
 5518k3.com, 1
 5533445.com, 1
 5555yh.com, 1
 555w.org, 1
 555wfcp.com, 1
 555xl.com, 1
 556185.com, 1
 55797.com, 1
@@ -1073,16 +1123,17 @@ 591380.com, 1
 591422.com, 1
 592227.com, 1
 592380.com, 1
 592422.com, 1
 5930593.com, 1
 593380.com, 1
 594022.com, 1
 594622.com, 1
+595380.com, 1
 595422.com, 1
 596422.com, 1
 598380.com, 1
 598598598.net, 1
 5986fc.com, 1
 5997891.com, 1
 599980.com, 1
 5apps.com, 1
@@ -1090,29 +1141,31 @@ 5c1fd0f31022cbc40af9f785847baaf9.space, 
 5chat.it, 1
 5dm.tv, 1
 5dwin.com, 1
 5dwin.net, 1
 5ece.de, 1
 5francs.com, 1
 5gb.space, 1
 5h0r7.com, 1
+5in.win, 1
 5kraceforals.com, 1
 5percentperweek.com, 1
 5thchichesterscouts.org.uk, 1
 5y.fi, 1
 5yeb.com, 1
 602422.com, 1
 604122.com, 1
 604322.com, 1
 604522.com, 1
 604622.com, 1
 605422.com, 1
 606422.com, 1
 609422.com, 1
+611135.com, 1
 614022.com, 1
 614322.com, 1
 614922.com, 1
 6166p.com, 1
 617020.com, 1
 61730123.com, 1
 620881.com, 1
 621162.com, 1
@@ -1184,50 +1237,67 @@ 6547711.com, 1
 6547722.com, 1
 6547733.com, 1
 6547744.com, 1
 6547755.com, 1
 6547766.com, 1
 6548855.com, 1
 6548877.com, 1
 656088.com, 1
+657660.com, 1
+657990.com, 1
 659422.com, 1
 65d88.com, 1
 66136.com, 1
 6616fc.com, 1
 662607.xyz, 1
 6633445.com, 1
 6652566.com, 1
 6660111.ru, 1
 6664553.com, 1
 666618.cc, 1
 666668722.com, 1
+666am8.com, 1
 666omg.com, 1
 6677.us, 1
 668825.vip, 1
+668am8.com, 1
 66bwf.com, 1
+66d88.net, 1
 670422.com, 1
 671422.com, 1
+671660.com, 1
+671990.com, 1
 672422.com, 1
+672990.com, 1
 673422.com, 1
+673660.com, 1
+673990.com, 1
+675660.com, 1
+675990.com, 1
 676422.com, 1
 676812.com, 1
 679422.com, 1
+679660.com, 1
 680226.com, 1
 680422.com, 1
 68277.me, 1
+6848.com, 1
 686848.com, 1
 690422.com, 1
 691422.com, 1
 692422.com, 1
+692660.com, 1
+692990.com, 1
 692b8c32.de, 1
 693422.com, 1
 694322.com, 1
 694622.com, 1
 694922.com, 1
+695660.com, 1
 6969.us, 1
 698da.com, 1
 69928.com, 1
 6997896.com, 1
 69butterfly.com, 1
 69fps.gg, 1
 69games.xxx, 1
 69mentor.com, 1
@@ -1245,35 +1315,43 @@ 704233.com, 1
 7045.com, 1
 704533.com, 1
 7045h.com, 1
 704633.com, 1
 705994.com, 1
 7080997.com, 1
 709129.com, 1
 712433.com, 1
+713367.com, 1
+713387.com, 1
 713433.com, 1
 714133.com, 1
 714533.com, 1
 714633.com, 1
 715433.com, 1
 716176.com, 1
 716227.com, 1
 716331.com, 1
 7177p.com, 1
 718113.com, 1
+718227.com, 1
 7183.org, 1
 718337.com, 1
 718433.com, 1
 718552.com, 1
+718772.com, 1
 719433.com, 1
+721167.com, 1
 721172.com, 1
+722201.com, 1
 724233.com, 1
 724go.com, 1
+726162.com, 1
 7261696e626f77.net, 1
+726176.com, 1
 726221.com, 1
 726433.com, 1
 728433.com, 1
 729433.com, 1
 72ty.com, 1
 72ty.net, 1
 730433.com, 1
 731433.com, 1
@@ -1286,21 +1364,23 @@ 73info.com, 0
 740833.com, 1
 741833.com, 1
 742833.com, 1
 743833.com, 1
 74th.jp, 1
 755k3.com, 1
 756337.com, 1
 762.ch, 1
+762116.com, 1
 763137.com, 1
 7733445.com, 1
 7770b.com, 1
 7770t.com, 1
 7771p.com, 1
+7777k8.com, 1
 777coin.com, 1
 7787p.com, 1
 783lab.com, 1
 787637.com, 1
 787k3.com, 1
 7885765.com, 1
 7891553.com, 1
 7891997.com, 1
@@ -1319,81 +1399,119 @@ 7milesglobal.com, 1
 7nw.eu, 1
 7pb.ru, 1
 7plus.com.au, 1
 7proxies.com, 1
 7sons.de, 1
 7thcircledesigns.com, 1
 7trade8.com, 1
 7x24servis.com, 1
+8002d88.com, 1
 8003pay.com, 1
+8007d88.com, 1
+8017d88.com, 1
+8019d88.com, 1
+8020d88.com, 1
+8021d88.com, 1
+8026d88.com, 1
+8028d88.com, 1
+8029d88.com, 1
 803001.com, 1
+8032d88.com, 1
+8033d88.com, 1
+8035d88.com, 1
+8036d88.com, 1
+8037d88.com, 1
 804322.com, 1
+80780780.com, 1
+8078d.com, 1
 8080883.com, 1
 8080889.com, 1
+8081d.com, 1
 80883.cc, 1
 80887.cc, 1
 808phone.net, 1
 809088.cc, 1
+8092d88.com, 1
 809422.com, 1
 80993.net, 1
 80bin.com, 1
+8100d.com, 1
+8105d.com, 1
+8130d88.com, 1
 814022.com, 1
 815jz.com, 1
+8162d.com, 1
 816jz.com, 1
 81818app.com, 1
 8189196.com, 1
 818bwf.com, 1
 818da.com, 1
+8190d88.com, 1
 81uc.com, 1
+8207d88.com, 1
 8211p.com, 1
 8212p.com, 1
 8213p.com, 1
 8214p.com, 1
 8215p.com, 1
 8216p.com, 1
+82kb88.com, 1
 833792.com, 1
 8349822.com, 1
+83kb88.com, 1
 848jz.com, 1
 850226.com, 1
 8522.am, 1
 8522club.com, 1
 8522hk.com, 1
 8522ph.com, 1
 8522top.com, 1
 8522tw.com, 1
 8522usa.com, 1
 85383838.com, 0
 8560.be, 1
+85kb88.com, 1
 86499.com, 1
 8649955.com, 1
 8649966.com, 1
 8649977.com, 1
 8688fc.com, 1
+86kb88.com, 1
 86metro.ru, 1
 8722.am, 1
 8722am.com, 1
 8722cn.com, 1
 8722hk.com, 1
 8722ph.com, 1
 8722tw.com, 1
 8722usa.com, 1
 87577.com, 1
 877027.com, 1
 877791.com, 1
+87kb88.com, 1
 88-line.com, 1
 88-line.net, 1
 8802p.com, 1
 881-line.com, 1
 881-line.net, 1
+8815d.com, 1
+8816d.com, 1
+8816d88.com, 1
 8818k3.com, 1
 8821ks.com, 1
+8826d.com, 1
+8829d88.com, 1
 8833445.com, 1
+8850d88.com, 1
 88522am.com, 1
 885287.com, 1
+8860d.com, 1
+8860d88.com, 1
+8866d88.com, 1
 887.ag, 1
 8876007.com, 1
 8876008.com, 1
 8876009.com, 1
 8876205.com, 1
 8876278.com, 1
 8876289.com, 1
 8876290.com, 1
@@ -1404,16 +1522,17 @@ 8876808.com, 1
 8876832.com, 1
 8876835.com, 1
 8876859.com, 1
 8876878.com, 1
 8876955.com, 1
 8876979.com, 1
 8876987.com, 1
 8876989.com, 1
+8880ks.com, 1
 8884553.com, 1
 88851333.com, 1
 88851777.com, 1
 888666pj.com, 1
 8887999.com, 0
 88881.pw, 1
 888888722.com, 1
 88889822.com, 1
@@ -1440,33 +1559,34 @@ 8901178.com, 1
 8901178.net, 1
 890238.com, 1
 8910899.com, 1
 8910899.net, 1
 8917168.com, 1
 8917168.net, 1
 8917818.com, 1
 8917818.net, 1
+8925d88.com, 1
 8951889.com, 1
 8951889.net, 1
 8989k3.com, 1
 8992088.com, 1
 8992088.net, 1
 89he.com, 1
 8ack.de, 1
 8ballbombom.uk, 1
 8balls.nl, 1
 8da188.com, 1
 8da2018.com, 1
 8da222.com, 1
 8da88.com, 1
 8da999.com, 1
 8dabet.com, 1
-8hrs.net, 1
 8maerz.at, 1
+8pc.ru, 1
 8pecxstudios.com, 1
 8shequapp.com, 1
 8t8.eu, 1
 8t88.biz, 1
 8tech.com.hk, 1
 8thportsmouth.org.uk, 1
 8tuffbeers.com, 1
 8ung.online, 1
@@ -1481,45 +1601,52 @@ 9-11commission.gov, 1
 901543.com, 1
 903422.com, 1
 905422.com, 1
 9090819.com, 1
 90r.jp, 1
 91-freedom.com, 1
 910kj.com, 1
 911.gov, 1
+911216.xyz, 1
 9118.com, 1
 911commission.gov, 1
 912422.com, 1
 913422.com, 1
 914122.com, 1
 914cq.com, 1
 915ers.com, 0
 918116.com, 0
+9181181.com, 1
+9182289.com, 1
 918gd.com, 1
 918yy.com, 1
 919422.com, 1
 91966.com, 1
+91d00.com, 1
+91d01.com, 1
+91d02.com, 1
+91d30.com, 1
+91d31.com, 1
 91dh.cc, 1
 91tianmi.com, 0
 91travel.info, 1
 924122.com, 1
 924322.com, 1
 924622.com, 1
 926422.com, 1
 929349.com, 1
 92url.com, 1
 931422.com, 1
 932422.com, 1
 933325.com, 1
 934122.com, 1
 939394.org, 1
 943022.com, 1
 9449-27a1-22a1-e0d9-4237-dd99-e75e-ac85-2f47-9d34.de, 1
-944cq.com, 1
 946022.com, 1
 946422.com, 1
 947cq.com, 1
 949022.com, 1
 949122.com, 1
 949622.com, 1
 949722.com, 1
 95778.com, 1
@@ -1530,17 +1657,16 @@ 963cq.com, 1
 967606.com, 1
 9679693.com, 1
 9681909.com, 1
 9696178.com, 1
 9696178.net, 1
 972422.com, 1
 9788876.com, 1
 9822.am, 1
-9822.bz, 1
 9822am.com, 1
 9822cn.com, 1
 9822hk.com, 1
 9822ph.com, 1
 9822tw.com, 1
 9822usa.com, 1
 984.ch, 1
 9867666.com, 1
@@ -1557,32 +1683,43 @@ 998sa.com, 1
 9994553.com, 1
 9998722.com, 1
 99998522.com, 1
 99999822.com, 1
 999998722.com, 1
 999salon.co, 1
 999salon.com, 1
 99buffets.com, 1
+99lib.net, 1
 99rst.org, 1
 99spokes.com, 1
 99wxt.com, 1
 9bingo.net, 1
 9box.jp, 1
 9farm.com, 1
 9fvip.net, 1
 9hosts.net, 1
 9iwan.net, 1
 9jajuice.com, 1
 9jatrust.com, 0
+9k266.com, 1
+9k282.com, 1
+9k286.com, 1
+9k635.com, 1
+9k637.com, 1
+9k639.com, 1
+9k675.com, 1
+9k677.com, 1
+9k679.com, 1
+9k695.com, 1
+9k697.com, 1
 9pkfz.com, 1
 9riddles.com, 1
 9ss6.com, 1
 9uelle.jp, 1
-9vx.org, 1
 9won.kr, 1
 9y.at, 1
 9yw.me, 1
 a-1basements.com, 1
 a-1indianawaterproofing.com, 1
 a-allard.be, 1
 a-bm.de, 1
 a-care.net, 1
@@ -1593,38 +1730,39 @@ a-little-linux-box.at, 1
 a-msystems.com, 1
 a-oben.org, 1
 a-players.team, 1
 a-pro-pos.info, 1
 a-starbouncycastles.co.uk, 1
 a-wife.net, 1
 a-ztransmission.com, 1
 a0print.nl, 1
+a122.cc, 1
 a1798.com, 1
 a1autotransport.com, 1
 a1bouncycastlehire.com, 1
 a1jumpandbounce.co.uk, 1
 a1moldsolutions.com, 1
 a1scuba.com, 1
 a1scubastore.com, 1
+a22z.xyz, 1
 a2a.me, 1
 a2a.net, 1
 a2c-co.net, 1
 a2nutrition.com.au, 1
 a2os.club, 1
 a4sound.com, 1
 a632079.me, 1
 a7la-chat.com, 1
 a7m2.me, 1
 a8q.org, 1
 aa-tour.ru, 1
 aa43d.cn, 1
 aa6688.net, 1
 aaapl.com, 1
-aabanet.com.br, 1
 aaben-bank.dk, 1
 aabenbank.dk, 1
 aacfree.com, 1
 aacs-design.com, 1
 aadw.de, 1
 aaex.cloud, 1
 aagetransport.no, 1
 aalalbayt.com, 1
@@ -1669,29 +1807,29 @@ abaev.uk, 1
 abandonedmines.gov, 1
 abasalehngo.com, 1
 abasky.net, 1
 abateroad66.it, 1
 abbadabbabouncycastles.co.uk, 1
 abbas.ch, 1
 abbotsparties.co.uk, 1
 abbottscastles.co.uk, 1
-abbradar.net, 1
 abbruch-star.de, 1
 abc-rz.de, 1
 abc.li, 1
 abcbouncycastlessurrey.co.uk, 1
 abcbouncyfactory.co.uk, 1
 abcdef.be, 1
 abcheck.se, 1
 abckam.com, 1
 abcpartyhire.com, 1
 abcstudio.com.au, 1
 abdel.me, 1
 abdullah.pw, 1
+abdulrahman.eu, 1
 abdulwahaab.ca, 1
 abe-elektro.de, 1
 abe-medical.jp, 1
 abecodes.net, 1
 abeilles-idapi.fr, 1
 abelsflooringandtile.com, 1
 abenteuer-ahnenforschung.de, 1
 abeontech.com, 1
@@ -1716,17 +1854,16 @@ abilymp06.net, 1
 abimelec.com, 1
 abinferis.com, 1
 abinyah.com, 1
 abitidalavoro.roma.it, 1
 abitidasposa.roma.it, 1
 abitur97ag.de, 1
 abiturma.de, 1
 abjay.com, 1
-ablak-nyilaszaro.info, 1
 ableprop.net, 1
 abloop.com, 1
 abmc.gov, 1
 abmledger.ca, 1
 abmtax.ca, 1
 abn-consultants.ie, 1
 abnehmen.com, 1
 abobuch.de, 1
@@ -1770,17 +1907,16 @@ aboutyou.at, 1
 aboutyou.be, 1
 aboutyou.ch, 1
 aboutyou.de, 1
 aboutyou.nl, 1
 aboveaverageplumbing.com, 1
 abox-kb.com, 1
 abpis.hr, 1
 abracadabra.co.jp, 0
-abrakidabra.com.br, 1
 abraxan.pro, 1
 abrilect.com, 1
 abristolgeek.co.uk, 1
 abseits.org, 1
 absolem.cc, 0
 absolutcruceros.com, 1
 absoluteautobody.com, 1
 absolutedouble.co.uk, 1
@@ -1813,19 +1949,19 @@ ac-town.com, 1
 ac.milan.it, 1
 ac0g.dyndns.org, 1
 aca-creative.co.uk, 1
 academiadebomberosonline.com, 1
 academicexperts.us, 1
 academichealthscience.net, 1
 academie-de-police.ch, 1
 academkin.com, 1
+academus.io, 1
 academytv.com.au, 1
 acaeum.com, 1
-acampar.com.br, 1
 acandroid.top, 1
 acaonegocios.com.br, 1
 acaptureservices.com, 1
 acara-yoga.de, 1
 acareer.in, 1
 acat.io, 1
 acbrussels-used.be, 1
 accbay.com, 1
@@ -1840,16 +1976,17 @@ accessacab.co.uk, 1
 accessauto-occasions.be, 1
 accessgaragedoors.com, 1
 accessibility.gov, 1
 accesskeycloning.com, 1
 accessmy.net, 1
 accessoirescheveuxchic.com, 1
 accessoripersmartphone.it, 1
 acchicocchi.com, 1
+acclivity.pro, 1
 accme.co, 1
 accolade.com.br, 1
 accoladescreens.com.au, 1
 accord-application.com, 1
 accordiondoor.com, 1
 account.bbc.com, 1
 accounts.firefox.com, 1
 accounts.google.com, 1
@@ -1871,17 +2008,16 @@ acecolleges.edu.au, 1
 acefreightco.com, 1
 aceinflatables.com, 1
 aceinstituteonline.com, 1
 acelpb.com, 1
 acem.org.au, 1
 acemobileforce.com, 1
 acemypaper.com, 1
 acen.eu, 1
-acendealuz.com.br, 1
 acerentalandsales.com, 1
 acerislaw.com, 1
 acessoeducacao.com, 1
 acfun.eu.org, 1
 acg.mn, 1
 acg.social, 1
 acgaudio.com, 1
 acgmoon.com, 1
@@ -1956,16 +2092,17 @@ acsc.gov.au, 1
 acscbasket.com, 1
 acsemb.org, 1
 acsihostingsolutions.com, 0
 acsports.ca, 1
 act-safety.nl, 1
 actc.org.uk, 1
 actgruppe.de, 1
 actheater.com, 1
+acticu.com, 1
 actiefgeld.nl, 1
 actilove.ch, 1
 actioncleaningnd.com, 1
 actioncoachignite.co.za, 1
 actionfinancialservices.net, 1
 actionlabs.net, 1
 actionmadagascar.ch, 1
 actionsack.com, 1
@@ -1993,19 +2130,26 @@ actualidadblog.com, 1
 actualidadecommerce.com, 1
 actualidadgadget.com, 1
 actualidadiphone.com, 1
 actualidadkd.com, 1
 actualidadliteratura.com, 1
 actualidadmotor.com, 1
 actualidadviajes.com, 1
 actualite-videos.com, 1
+acudire.es, 1
 acuica.co.uk, 0
 acul.me, 1
+aculocity.com, 1
 acupofsalt.tv, 1
+acupuntura.coach, 1
+acupuntura.doctor, 1
+acupuntura.institute, 1
+acupunturamadrid.xyz, 1
+acupunturavalencia.xyz, 1
 acus.gov, 1
 acwi.gov, 1
 acy.com, 1
 acyfxasia.com, 1
 acyume.com, 1
 ad-disruptio.fr, 0
 ad-notam.asia, 1
 ad-notam.ch, 1
@@ -2018,31 +2162,31 @@ ad-notam.pt, 1
 ad-notam.us, 1
 ad13.in, 1
 ada.eco, 1
 ada.gov, 1
 adaera.com, 1
 adalis.org, 1
 adam-ant.co.uk, 1
 adam-kostecki.de, 1
-adam-wilson.me, 1
 adam.lgbt, 1
 adamas-magicus.ru, 1
 adambalogh.net, 1
 adambryant.ca, 0
 adamcoffee.net, 1
 adamdixon.co.uk, 1
 adamfontenot.com, 1
 adamgibbins.com, 1
 adamh.us, 1
 adamjoycegames.co.uk, 1
 adamkostecki.de, 1
 adamoutler.com, 1
 adamradocz.com, 1
 adams.dk, 1
+adamsasphaltpaving.com, 1
 adamstas.com, 1
 adamwallington.co.uk, 1
 adamyuan.xyz, 1
 adappt.co.uk, 1
 adapptlabs.com, 1
 adapt-elektronik.com, 1
 adapt.de, 1
 adaptablesecurity.org, 1
@@ -2111,16 +2255,17 @@ adme.co.il, 1
 admin-serv.net, 1
 admin.casa, 1
 admin.fedoraproject.org, 1
 admin.google.com, 1
 admin.stg.fedoraproject.org, 1
 admind.at, 1
 adminforge.de, 1
 administracionessaez.es, 1
+administratie-smits.nl, 1
 administratiekantoorblom.nl, 1
 administrator.de, 1
 administratorserwera.pl, 1
 adminless.ovh, 1
 adminlinux.pl, 1
 admino.cz, 1
 admins.tech, 1
 adminton.eu, 1
@@ -2142,16 +2287,17 @@ adoniscabaret.co.uk, 1
 adonizer.science, 1
 adonnante.com, 1
 adoptionlink.co.uk, 1
 adorade.ro, 1
 adorai.tk, 1
 adorecricket.com, 1
 adorewe.com, 1
 adorno-gymnasium.de, 1
+adoucisseur.shop, 1
 adquisitio.co.uk, 1
 adquisitio.es, 1
 adquisitio.fr, 1
 adquisitio.it, 1
 adr.gov, 1
 adra.com, 1
 adrafinil.wiki, 1
 adrenalin.od.ua, 1
@@ -2250,54 +2396,56 @@ adzuna.in, 1
 adzuna.it, 1
 adzuna.nl, 1
 adzuna.pl, 1
 adzuna.ru, 1
 adzuna.sg, 1
 ae-construction.co.uk, 1
 ae-dir.com, 1
 ae-dir.org, 1
+ae86sb.com, 1
 ae86x.com, 1
 aebian.org, 1
 aecexpert.fr, 1
 aedollon.com, 1
 aefcleaning.com, 1
 aegee-utrecht.nl, 1
 aegis.moe, 1
 aegisalarm.co.uk, 1
 aegisalarm.com, 1
 aegisalarms.co.uk, 1
 aegisalarms.com, 1
 aegrel.ee, 1
 aehe.us, 1
+aei-asc.edu.my, 1
 aei.co.uk, 1
 aelisya.ch, 1
 aelurus.com, 1
 aenterprise.info, 1
 aeon.co, 1
 aeon.wiki, 1
 aeonct.org, 1
 aeradesign.com, 1
 aerandir.fr, 1
 aereco.com, 1
 aerelon.de, 1
 aergia.eu, 1
 aerisnetwork.com, 1
 aero-pioneer.com, 1
+aero.parts, 1
 aerobasegroup.com, 1
 aerobotz.com, 1
 aeronautix.com, 1
 aeronote.net, 1
 aeropole.de, 1
 aeropole.eu, 1
 aerosimexperience.com, 1
 aerospace-schools.com, 1
 aerotechcoatings.com, 1
 aertel.ie, 1
-aessencia.com.br, 1
 aestheticdr.org, 1
 aestheticsplus.xyz, 1
 aesthetx.com, 1
 aestore.by, 1
 aesym.de, 1
 aeternus.tech, 1
 aetherc0r3.eu, 1
 aethonan.pro, 1
@@ -2366,16 +2514,17 @@ after.digital, 1
 afterdwi.info, 1
 afterhate.fr, 1
 afterskool.eu, 1
 afterstack.net, 1
 afuh.de, 1
 afva.net, 1
 afwd.international, 1
 ag8-game.com, 1
+ag88.com, 1
 agalliasis.ch, 1
 agamsecurity.ch, 1
 agatajanik.de, 1
 agate.pw, 1
 agdalieso.com.ba, 1
 agechecker.net, 1
 ageg.ca, 1
 agelesscitizen.com, 1
@@ -2389,40 +2538,42 @@ agenciamseo.com.br, 1
 agencyinmotion.com, 1
 agencymanager.be, 1
 agenda-loto.net, 0
 agenda21senden.de, 1
 agendatelefonica.com.br, 1
 agent-grow.com, 1
 agentprocessing.com, 1
 agenziaimmobiliarezeta.it, 1
+ageragrosirdistro.com, 1
 agfmedia.com, 1
 agglo-sion.ch, 1
 agia.ad, 1
 agiairini.cz, 1
 agiapelagia.com, 1
 agibank.com.br, 1
 agic-geneve.ch, 1
 agilebits.com, 1
 agilebits.net, 0
 agilecraft.com, 1
 agileecommerce.com.br, 1
 agileui.com, 1
 agiley.se, 1
+agilicus.ca, 1
+agilicus.com, 1
 agilizing.us, 1
 agilob.net, 1
 aging.gov, 1
 agingstats.gov, 1
 agingstop.net, 1
 aginion.net, 1
 agiserv.fr, 1
 agks5.com, 1
 agliamici.it, 1
 agnesk.blog, 1
-agoodmind.com, 1
 agoravm.tk, 1
 agoravox.fr, 1
 agoravox.it, 1
 agoravox.tv, 1
 agotnes.com, 1
 agouraelectrical.com, 1
 agouraelectrician.com, 1
 agouraexteriorlighting.com, 1
@@ -2460,40 +2611,41 @@ agscinemas.com, 1
 agscinemasapp.com, 1
 aguijara.com, 1
 agung-furniture.com, 1
 agwa.name, 1
 agy.cl, 1
 ahawkesrealtors.com, 1
 ahcpr.gov, 0
 ahd.com, 0
-ahegao.ca, 1
 aheng.me, 1
 ahero4all.org, 1
 ahkubiak.ovh, 0
 ahlaejaba.com, 1
 ahlz.sk, 1
 ahmad.works, 1
 ahmadly.com, 1
 ahmedabadflowermall.com, 1
 ahmedcharles.com, 1
+ahmedknowmadic.com, 1
 ahmerjamilkhan.org, 1
 ahmetozer.org, 1
 ahosi.com, 1
 ahoy.travel, 1
 ahoyconference.com, 1
 ahrq.gov, 0
 ahtuxpk.ru, 1
 ahughes03.com, 1
 ahwah.net, 1
 ahxxm.com, 0
 ai-english.jp, 1
 ai-soft.co.jp, 1
 ai.gov, 1
 ai.je, 1
+ai00.vip, 1
 ai1989.com, 1
 aia.de, 1
 aianipid.ee, 1
 aiasesoriainmobiliaria.com, 1
 aibaoyou.com, 1
 aibenzi.com, 1
 aibiying.com, 1
 aibsoftware.mx, 1
@@ -2668,16 +2820,17 @@ airware.com, 1
 airwaystorage.net, 1
 airweb.top, 1
 airwegobouncycastles.co.uk, 1
 airwolfthemes.com, 1
 airwrenchei.com, 1
 ais.fashion, 1
 aisance-co.com, 1
 aisi316l.net, 1
+aisin.ae, 1
 aistockcharts.com, 1
 aistrope.com, 1
 ait.com.ar, 1
 aiticon.com, 1
 aitosoftware.com, 1
 aiutodomestico.ch, 1
 aivan.ai, 1
 aivd.lol, 1
@@ -2689,26 +2842,26 @@ aizxxs.net, 1
 ajapaik.ee, 1
 ajarope.com, 1
 ajaxed.net, 1
 ajbouncycastles.co.uk, 1
 ajces.com, 1
 ajdiaz.me, 1
 ajetaci.cz, 1
 ajeventhire.co.uk, 1
+ajgroup-me.com, 1
 ajiaojr.info, 1
 ajiaojr.io, 1
 ajiaojr.me, 1
 ajiaojr.net, 1
 ajiboye.com, 1
 ajnasz.hu, 1
 ajsb85.com, 1
 ak-varazdin.hr, 1
 ak-webit.de, 1
-ak47-miyamoto.spdns.org, 1
 aka.ms, 1
 akachanikuji.com, 1
 akademeia.moe, 1
 akademie-frankfurt.de, 1
 akalashnikov.ru, 1
 akamon.ac.jp, 1
 akaoma.com, 1
 akasha.world, 1
@@ -2726,16 +2879,17 @@ akijo.de, 1
 akilli-devre.com, 1
 akita-boutique.com, 1
 akita-stream.com, 1
 akiym.com, 1
 akj.io, 1
 akkbouncycastles.co.uk, 1
 akkeylab.com, 1
 akoch.net, 1
+akoofs.com, 1
 akostecki.de, 1
 akovana.com, 1
 akoww.de, 0
 akoya.fi, 1
 akplates.org, 1
 akpwebdesign.com, 1
 akr.io, 1
 akr.services, 1
@@ -2779,23 +2933,23 @@ alainfrancois.eu, 1
 alainfrancois.nl, 1
 alainmargot.ch, 1
 alainodea.com, 1
 alainwolf.ch, 1
 alainwolf.net, 1
 alair.cn, 0
 alamancetv.com, 1
 alamgir.works, 1
-alan.moe, 1
 alanberger.me.uk, 1
 alandoyle.com, 1
 alanhua.ng, 1
 alanhuang.name, 1
 alaninkenya.org, 1
 alaricfavier.eu, 0
+alarmat.pl, 1
 alarmcomplete.co.uk, 1
 alarna.de, 1
 alasdelalma.com.co, 1
 alaskafishinglodges.net, 1
 alaskajewelry.com, 1
 alasta.info, 1
 alastairs-place.net, 1
 alauda-home.de, 1
@@ -2821,17 +2975,16 @@ alcatelonetouch.us, 1
 alchimic.ch, 1
 alcnutrition.com, 1
 alco-united.com, 1
 alcoholapi.com, 1
 alcolecapital.com, 1
 alcorao.org, 1
 alcouponest.com, 1
 aldiabcs.com, 1
-aldien.com.br, 1
 aldo-vandini.de, 1
 aldomedia.com, 1
 aldorr.net, 0
 aldous-huxley.com, 1
 aleax.me, 1
 alecel.de, 1
 alecpap.com, 1
 alecpapierniak.com, 1
@@ -2843,17 +2996,16 @@ alela.fr, 1
 aleph.land, 1
 alerbon.net, 1
 alertboxx.com, 1
 alertonline.nl, 1
 alerts.sg, 1
 alertwire.com, 1
 alesia-formation.fr, 1
 alessandro.pw, 1
-alessandroonline.com.br, 1
 aletm.it, 1
 alex-ross.co.uk, 1
 alex4386.us, 1
 alex97000.de, 1
 alexander-beck.eu, 1
 alexanderb.info, 1
 alexandermuetzel.de, 1
 alexanderneng.de, 1
@@ -2884,16 +3036,17 @@ alexio.ml, 1
 alexisabarca.com, 1
 alexischaussy.xyz, 1
 alexiskoustoulidis.com, 1
 alexismeza.com, 1
 alexismeza.com.mx, 1
 alexismeza.dk, 1
 alexismeza.es, 1
 alexismeza.nl, 1
+alexjett.com, 1
 alexlambertz.de, 1
 alexlouden.com, 1
 alexmerkel.com, 1
 alexmerkel.me, 1
 alexmerkel.xyz, 1
 alexmol.tk, 1
 alexmroberts.net, 1
 alexn.org, 1
@@ -2944,17 +3097,16 @@ alicestudio.it, 1
 alicetone.net, 1
 alicialab.org, 1
 alieke.design, 1
 alien6.com, 1
 alienation.biz, 1
 alienflight.com, 1
 alienslab.net, 1
 alienstat.com, 1
-alienvision.com.br, 1
 alighierirescaldina.it, 1
 alignrs.com, 1
 aliim.gdn, 1
 alijammusic.com, 1
 alikulov.me, 1
 alilialili.ga, 1
 alinasmusicstudio.com, 1
 alinbu.net, 1
@@ -2966,16 +3118,17 @@ alisonlitchfield.com, 1
 alistairstowing.com, 1
 alisync.com, 1
 aliwebstore.com, 1
 alix-board.de, 1
 alize-theatre.ch, 1
 aljaspod.com, 1
 aljaspod.hu, 1
 aljaspod.net, 1
+aljoschairmer.de, 1
 aljweb.com, 1
 alkacoin.net, 1
 all-connect.net, 0
 all-fashion-schools.com, 1
 all-markup-news.com, 1
 all4hardware4u.de, 1
 all878.com, 1
 allaboutfunuk.com, 1
@@ -2987,16 +3140,17 @@ allamericanmuslim.com, 1
 allamericanpaintingplus.com, 1
 allamericanprotection.net, 1
 allamericatrans.com, 1
 allangirvan.net, 1
 allarmi.roma.it, 1
 allbenjoy.de, 1
 allbetgame.cn, 1
 allbetgaming.com, 1
+allbigdicks.com, 1
 allbounceandplay.co.uk, 1
 allbouncesurrey.co.uk, 1
 allbrandbrand.com, 1
 allbursaries.co.za, 1
 allbusiness.com, 1
 allcapa.org, 1
 allcarecorrectionalpharmacy.com, 1
 allcarepharmacy.com, 1
@@ -3041,20 +3195,22 @@ allmousepads.com, 1
 allns.fr, 1
 allo-credit.ch, 1
 allofthestops.com, 1
 allontanamentovolatili.it, 1
 allontanamentovolatili.milano.it, 1
 alloutatl.com, 1
 alloutsec.com, 1
 alloverthehill.com, 1
+allphaseclean.com, 1
 allplayer.tk, 1
 allpointsblog.com, 1
 allpointsheating.com, 1
 allproptonline.com, 1
+allpussynow.com, 1
 allrad-buck.de, 1
 allram.one, 1
 allroundpvp.net, 1
 allroundtechnology.com, 1
 allroundtechnology.nl, 1
 allsaints.church, 1
 allscammers.exposed, 1
 allsearch.io, 1
@@ -3068,16 +3224,17 @@ allstarquilts.com, 1
 allstorebrasil.com.br, 1
 allsun.online, 1
 allsync.com, 1
 allsync.nl, 1
 allteach.co.uk, 1
 allterrainfence.com, 1
 allthecryptonews.com, 1
 alltherooms.com, 1
+alltherooms.es, 1
 allthethings.co.nz, 1
 allthings.me, 1
 allthingsfpl.com, 1
 allthingssquared.com, 1
 allthingswild.co.uk, 1
 alltubedownload.net, 1
 allurebikerental.com, 1
 allurescarves.com, 1
@@ -3096,16 +3253,17 @@ almstrom.org, 1
 almut-zielonka.de, 1
 alnitech.com, 0
 alocato.com, 1
 aloesoluciones.com.ar, 1
 alohapartyevents.co.uk, 1
 alonas.ml, 1
 alonas.ovh, 1
 alonetone.com, 1
+alov.blog, 1
 alp.net.cn, 1
 alp.od.ua, 1
 alpca.org, 1
 alpe-d-or.dyn-o-saur.com, 1
 alpencam.com, 1
 alpencams.com, 1
 alpencams.net, 1
 alpengreis.ch, 1
@@ -3115,16 +3273,17 @@ alpes-deis-tools.com, 1
 alpha-assistant.com, 1
 alpha-force.net, 0
 alpha.ch, 1
 alpha88uat.com, 1
 alphaantileak.net, 1
 alphabetsigns.com, 1
 alphabouncycastles.co.uk, 1
 alphachat.net, 1
+alphadefense.co.za, 1
 alphadote.com, 1
 alphaetomega3d.fr, 1
 alphafiduciaryservices.ch, 1
 alphafitnesslibya.com, 1
 alphagateanddoor.com, 1
 alphahunks.com, 1
 alphainflatablehire.com, 1
 alphaman.ooo, 1
@@ -3140,38 +3299,41 @@ alphie.me, 1
 alphipneux.fr, 1
 alpinechaletrental.com, 1
 alpinehighlandrealty.com, 1
 alpineplanet.com, 1
 alpinepubliclibrary.org, 1
 alpinestarmassage.com, 1
 alpstarentaisetaxi.com, 1
 alpstarentaisetaxi.fr, 1
+alquds.edu, 1
 alquiaga.com, 1
 alrait.com, 1
 alre-outillage.fr, 1
 alroniks.com, 1
 als-japan.com, 1
 alstertouch.com, 1
 alstertouch.de, 1
 alstroemeria.org, 1
 alt-three.com, 1
 alt.org, 1
 altahrim.net, 1
 altair.fi, 1
 altapina.com, 0
 altaplana.be, 1
 altbinaries.com, 1
 altco.group, 1
+altea-pep18.com, 1
 altedirect.com, 1
+alteiria.fr, 1
 alter-news.fr, 1
 alterbaum.net, 1
 altered.network, 1
 altered.si, 1
-alternador.com.br, 1
+alteria.xyz, 1
 alternative.bike, 1
 alternative.hosting, 1
 alternativebit.fr, 1
 alternativedev.ca, 1
 alternativehosting.ca, 1
 alternativehosting.com, 1
 alternativeinternet.ca, 1
 alternativet.party, 1
@@ -3209,32 +3371,39 @@ alvicom.hu, 1
 alvin.cool, 1
 alvn.ga, 1
 alvosec.com, 1
 alwaysdry.com.au, 1
 alwayslookingyourbest.com, 1
 alwaysmine.fi, 1
 alwaysonssl.com, 1
 alxlegal.com, 1
-alxpresentes.com.br, 1
 alxu.ca, 1
 alyoung.com, 1
 alza.at, 1
 alza.co.uk, 1
 alza.cz, 1
 alza.de, 1
 alza.hu, 1
 alza.sk, 1
 alzashop.com, 1
 alzonaprinting.com, 1
+am-39.com, 1
 am-dd.com, 1
 am-executive-consulting.com, 1
+am156.com, 1
 am2s.fr, 1
 am3.se, 1
+am5039.com, 1
+am5199.com, 1
+am6118.com, 1
 am8.com, 1
+am8213.com, 1
+am9588.com, 1
+am9d104.com, 1
 ama.ne.jp, 1
 amadoraslindas.com, 1
 amadvice.com, 1
 amaforro.com, 1
 amagdic.com, 1
 amagical.net, 0
 amaiz.com, 1
 amal2019.com, 1
@@ -3245,29 +3414,32 @@ amalfirock.it, 1
 amalfitabula.it, 1
 amaliagamis.com, 1
 amanatrustbooks.org.uk, 1
 amandadamsphotography.com, 1
 amandasage.ca, 1
 amandaworldstudies.com, 1
 amanet.ro, 1
 amani-kinderdorf.de, 1
+amaranthinewanderlust.com, 1
 amaranthus.com.ph, 1
 amardham.org, 1
 amaresq.com, 1
 amartinz.at, 1
 amateri.com, 1
 amateurchef.co.uk, 1
+amateurpornhours.com, 1
 amateurradionotes.com, 1
 amateurvoicetalent.com, 1
 amati.solutions, 1
 amato.tk, 1
 amatsuka.com, 1
 amauf.de, 1
 amautorepairwa.com, 1
+amazetimberfurniture.com.au, 1
 amazili-communication.com, 1
 amazing-castles.co.uk, 1
 amazinginflatables.co.uk, 1
 amazingraymond.com, 1
 amazingraymond.com.au, 1
 amb.tf, 1
 amberalert.gov, 1
 amberglowleisure.co.uk, 1
@@ -3299,17 +3471,16 @@ amendine.fr, 1
 amendoeiraresort.com, 1
 america.gov, 1
 america250.gov, 1
 americafamilylawcenter.org, 1
 american-school-search.com, 1
 american.dating, 1
 americandetour.com, 1
 americanfoundationbr.com, 1
-americanindiancoc.org, 1
 americanindiannursing.com, 1
 americanmediainstitute.com, 1
 americanwater.lk, 1
 americasbasementcontractor.com, 1
 americasdirector.com, 1
 americkykongres.cz, 1
 ameriikanpoijat.org, 1
 amerika-forum.de, 1
@@ -3324,16 +3495,17 @@ ameza.com.mx, 1
 ameza.io, 1
 ameza.me, 1
 ameza.net, 1
 amf.to, 1
 amg-exterieur.fr, 1
 amg-microwave.com, 1
 amh-entertainments.co.uk, 1
 ami-de-bastanes.fr, 1
+amianto.roma.it, 1
 amica-travel.com, 1
 amica.it, 1
 amicalecanyon.ch, 1
 amiciidogrescue.org.uk, 1
 amicimar.it, 1
 amiciperlatesta.it, 1
 amifoundation.net, 1
 amihub.com, 1
@@ -3351,23 +3523,25 @@ amirmahdy.com, 1
 amisderodin.fr, 1
 amiserver.de, 1
 amisharingstuff.com, 1
 amitabhsirkiclasses.org.in, 1
 amitpatra.com, 1
 amiu.org, 1
 amj74-informatique.fr, 1
 amleather.pl, 1
+amm6e.com, 1
 ammanagingdirectors.com, 1
 amministratore.biz, 1
 amministratore.roma.it, 1
 amministratorecondominio.roma.it, 1
 amnesty-bf.org, 1
 amnesty.org.au, 1
 amnesy.fr, 1
+amok8.am, 1
 amokinio.com, 1
 amoozesh98.com, 1
 amoozesh98.ir, 1
 amorgos-aegialis.com, 1
 amorim.ca, 1
 amosng.com, 1
 ampersandnbspsemicolon.com, 1
 amphetamines.org, 1
@@ -3385,27 +3559,27 @@ ams.co.rs, 1
 amsportuk.com, 1
 amstelland.com, 1
 amsterdamian.com, 1
 amtentertainments.co.uk, 1
 amunoz.org, 1
 amuq.net, 1
 amuraimpianti.it, 1
 amv-crm.ru, 1
+amvip9.com, 1
 amyfoundhermann.com, 1
 amyharrisonline.com, 1
 amyria.jp, 1
 amyrussellhair.com, 1
 amyyeung.com, 1
 amzn.rocks, 1
 an-alles-gedacht.de, 1
 an7hrax.se, 1
 anabolic.co, 0
 anacreon.de, 1
-anadiyogacentre.com, 1
 anaethelion.fr, 1
 anaiscoachpersonal.es, 1
 anaisfae.art, 1
 anakin.ca, 1
 anakros.me, 0
 analangelsteen.com, 1
 analbleachingguide.com, 1
 analgesia.net, 1
@@ -3473,16 +3647,17 @@ andreagobetti.com, 1
 andreagourmet.it, 1
 andreahruby.it, 1
 andreamcnett.com, 1
 andreas-hecht.com, 1
 andreas-kluge.eu, 1
 andreaseracleous.com, 1
 andreasfeusi.ch, 1
 andreashecht-blog.de, 1
+andreasjanker.de, 1
 andreaskluge.eu, 1
 andreaskrasa.com, 1
 andreaslicht.nl, 1
 andreasolsson.se, 1
 andreasr.com, 1
 andree.cloud, 1
 andrehansen.de, 1
 andrei-nakov.org, 1
@@ -3531,16 +3706,17 @@ androidnovinky.cz, 1
 androidservicetool.com, 1
 androidsis.com, 1
 androidtamer.com, 1
 androidtelefony.cz, 1
 androidzone.me, 1
 andromeda.se, 1
 andromedacenter.com, 1
 andronika.net, 0
+androtech.xyz, 1
 androticsdirect.com, 1
 androzoom.com, 1
 andruvision.cz, 1
 andsat.org, 1
 andschwa.com, 1
 anduril.de, 1
 anduril.eu, 1
 andybrett.com, 1
@@ -3616,16 +3792,17 @@ anime-culture.com, 1
 anime-rg.com, 1
 anime-tip.com, 1
 anime.my, 0
 anime1.me, 1
 anime1.moe, 1
 anime1.pw, 1
 anime1.top, 1
 animeai.com, 1
+animeclub.in.ua, 1
 animefluxxx.com, 1
 animeinsights.net, 1
 animeone.me, 1
 animesharp.com, 1
 animetriad.com, 1
 animojis.es, 1
 animorphsfanforum.com, 1
 anipassion.com, 0
@@ -3689,16 +3866,17 @@ anodas.lt, 1
 anohana.org, 1
 anojan.com, 1
 anon-next.de, 1
 anonboards.com, 1
 anoncom.net, 1
 anoncrypto.org, 1
 anoneko.com, 1
 anongoth.pl, 1
+anonoriviera.com, 1
 anonrea.ch, 1
 anons.fr, 1
 anonukradio.org, 1
 anonym-surfen.de, 1
 anonyme-spieler.at, 1
 anopan.tk, 1
 anorak.tech, 1
 another.ch, 1
@@ -3760,16 +3938,17 @@ antiekboerderijgraafland.nl, 1
 antifilter.network, 1
 antihype.space, 1
 antik-trodelmarkt.de, 1
 antikvariat.ru, 1
 antikvarius.ro, 1
 antilaserpriority.com, 1
 antiled.by, 1
 antimine.me, 1
+antincendio.roma.it, 1
 antipa.ch, 1
 antipolygraph.org, 1
 antique-pedalcars.ch, 1
 antirepressionbayarea.com, 1
 antispeciesism.com, 1
 antispeciesist.com, 1
 antivirusprotection.reviews, 1
 antocom.com, 1
@@ -3781,32 +3960,30 @@ antonchen.com, 1
 antonellabb.eu, 1
 antonin.one, 1
 antonio-gartenbau.de, 1
 antonjuulnaber.dk, 1
 antonok.com, 1
 antota.lt, 1
 antragsgruen.de, 1
 antraxx.ee, 1
-antroposofica.com.br, 1
 anttitenhunen.com, 1
 antvklik.com, 1
 antyblokada.pl, 1
 anulowano.pl, 1
 anvartay.com, 0
 anvorte.com, 0
 anwalt.us, 1
 anwaltsindex.com, 1
 anxietyspace.com, 1
 anxiolytics.com, 1
 any.pm, 0
 anyad.at, 1
 anyfood.fi, 1
 anymetrix.io, 1
-anynode.net, 1
 anyon.com, 1
 anypeer.net, 1
 anyprime.net, 1
 anyquestions.govt.nz, 1
 anystack.xyz, 1
 anyways.at, 1
 anzeiger.ag, 1
 ao-dev.com, 1
@@ -3817,16 +3994,17 @@ aoaprograms.net, 1
 aobeauty.com.au, 1
 aobogo.com, 1
 aod-tech.com, 1
 aoe9.com, 1
 aoeuaoeu.com, 1
 aofusa.net, 1
 aoil.gr, 1
 aojiao.org, 1
+aokae.com, 1
 aoku3d.com, 1
 aooobo.com, 1
 aopedeure.nl, 1
 aopsy.de, 1
 aori.com, 1
 aos-llc.com, 1
 aosc.io, 0
 aostacarnavals.it, 1
@@ -3834,32 +4012,34 @@ aotearoa.maori.nz, 1
 aotearoaleaks.org, 1
 ap-swiss.ch, 1
 apac-tech.com, 0
 apache-portal.com, 1
 apachehaus.de, 0
 apachelounge.com, 1
 apadvantage.com, 1
 aparaatti.org, 1
+apartamentosemindaiatuba.com.br, 1
 apartmanicg.me, 1
 apartment-in-rijeka.com, 1
 apartmentkroatien.at, 1
 apartmentregister.com.au, 1
 apasaja.tech, 1
 apbank.ch, 1
 apbox.de, 1
 apcemporium.co.uk, 1
 apcube.com, 1
 apdfawl.com, 1
 apdx.com, 1
 apef.ch, 1
 apercloud.es, 1
 apertis.org, 1
 aperturesciencelabs.de, 1
 apervita.net, 1
+apethink.net, 1
 apexitsolutions.ca, 1
 apfelcholest.de, 1
 apgw.jp, 1
 aphelionentertainment.com, 1
 aphotrax.eu, 1
 api-connect.com, 1
 api-geek.com, 1
 api.biz.tr, 1
@@ -3869,16 +4049,17 @@ api.recurly.com, 1
 api.simple.com, 0
 api.xero.com, 0
 apiary.blog, 1
 apiary.clothing, 1
 apiary.shop, 1
 apiary.store, 1
 apiary.supplies, 1
 apiary.supply, 1
+apicruz.com, 1
 apila.care, 1
 apila.us, 1
 apiled.io, 1
 apimo.net, 1
 apimon.de, 1
 apination.com, 1
 apio.systems, 1
 apiplus.fr, 1
@@ -3918,16 +4099,17 @@ apotheke-ch.org, 1
 apothes.is, 1
 app, 1
 app-at.work, 1
 app.lookout.com, 1
 app.recurly.com, 1
 app.simpletax.ca, 1
 app.yinxiang.com, 0
 app2get.de, 1
+appagility.co.nz, 1
 appapi.link, 1
 apparelfashionwiki.com, 1
 appartement-andrea.at, 1
 appartement-evolene.net, 1
 appartementhaus-badria.de, 1
 appartementmarsum.nl, 1
 appdrinks.com, 1
 appearance-plm.de, 1
@@ -3955,77 +4137,79 @@ applicationmanager.gov, 1
 apply.eu, 1
 apply55gx.com, 1
 appmeas.co.uk, 1
 appmobile.io, 1
 appninjas.com, 1
 apponic.com, 1
 apponline.com, 1
 apprank.in, 1
+apprendre-le-russe-avec-ania.fr, 1
 apprenticeship.gov, 1
 apprenticeships.gov, 1
 approbo.com, 1
 approvedtreecare.com, 1
 apps-perso.com, 1
 apps.co, 1
 apps.facebook.com, 0
 apps.fedoraproject.org, 1
 apps.stg.fedoraproject.org, 1
 apps4all.sytes.net, 1
 apps4inter.net, 1
 appscloudplus.com, 1
+appsdisosa.com, 1
 appseccalifornia.org, 0
 appsforlondon.com, 1
 appshuttle.com, 1
 appt.ch, 1
 apptomics.com, 1
 apptoutou.com, 1
 appuals.com, 1
 appui-de-fenetre.fr, 1
 appveyor.com, 1
 appzoojoo.be, 1
 apratimsaha.com, 1
 aprefix.com, 1
 aprendiendoforexhoy.com, 1
 apretatuercas.es, 1
 aprikaner.de, 1
-aprogend.com.br, 1
 aproposcomputing.com, 1
 aprovpn.com, 1
 aprr.org, 1
 aprsdroid.org, 1
 aprz.de, 1
 apsa.paris, 1
 apstudynotes.org, 1
 aptitudetests.org, 1
 aptive.co.uk, 1
 aptumseguros.mx, 1
 apu-board.de, 1
+apunkt.dk, 1
 apv-ollon.ch, 1
 apviz.io, 1
 aqarategypt.com, 1
+aqdun.com, 1
 aqilacademy.com.au, 1
 aqqrate.com, 1
 aqsiq.net, 1
 aqua-bucht.de, 1
 aqua-fitness-nacht.de, 1
 aqua-fotowelt.de, 1
 aquabio.ch, 1
 aquadonis.ch, 1
 aquafc.com, 1
 aquagarden.com.pl, 1
 aquahomo.com, 1
 aquainfo.net, 1
-aqualife.com.gr, 1
-aqualifeprojects.com, 1
 aqualysis.nl, 1
 aquapoint.kiev.ua, 1
 aquarium-supplement.net, 1
 aquaselect.eu, 1
 aquatechnologygroup.com, 1
+aquaterm72.ru, 1
 aquaundine.net, 1
 aquavitaedayspa.com.au, 1
 aquelarreweb.com, 1
 aquila.co.uk, 1
 aquilaguild.com, 0
 aquitainebrasserie.com.au, 1
 aquitroc.com, 1
 ar-informatique.ch, 1
@@ -4039,17 +4223,16 @@ arackiralama.name.tr, 1
 arados.de, 1
 aragon.fun, 1
 arai21.net, 1
 araleeniken.com, 1
 aramido.de, 1
 aranchhomes.com, 1
 aranel.me, 1
 aranycsillag.net, 1
-araraexpress.com.br, 1
 araratour.com, 1
 araro.ch, 1
 araseifudousan.com, 1
 arawaza.com, 0
 arawaza.info, 1
 araxis.com, 1
 arbeitsch.eu, 1
 arbeitskreis-asyl-eningen.de, 1
@@ -4081,33 +4264,36 @@ archlinux.de, 1
 archlinux.org, 1
 archmediamarketing.com, 1
 archoit.org, 0
 archsec.info, 1
 arckr.com, 1
 arclandholdings.com.au, 1
 arcobalabs.ca, 1
 arcridge.ca, 1
+arctic.ca, 1
 arctic.gov, 1
 arctica.io, 1
 arcueil-cachan.fr, 0
 arcusnova.de, 1
 ardadanal.com, 1
+ardia.ovh, 1
 ardor.noip.me, 1
 ardtrade.ru, 1
 area3.org, 1
 area4pro.com, 1
 areaclienti.net, 1
 areafiftylan.nl, 1
 areallyneatwebsite.com, 1
 areatrend.com, 1
 arefidgetspinnersgay.com, 1
 arekatieandchrisgettingmarried.com, 1
 arekatieandchrisgettingmarried.today, 1
 arekatieandchrismarriedyet.com, 1
+arena-lemgo.de, 1
 arendburgers.nl, 1
 arenlor.com, 1
 arenlor.info, 1
 arenns.com, 1
 arenzanaphotography.com, 1
 areqgaming.com, 1
 ares-trading.de, 1
 arethsu.se, 1
@@ -4117,16 +4303,17 @@ argama-nature.com, 1
 arganaderm.ch, 1
 argb.de, 1
 argekultur.at, 1
 argentinatrabaja.org, 1
 argh.io, 1
 argonium.com.au, 1
 argot.com, 1
 argovpay.com, 1
+ariacreations.net, 1
 ariadermspa.com, 1
 arian.io, 1
 ariana.wtf, 1
 arias.re, 1
 ariba.info, 1
 ariege-pyrenees.net, 1
 arieswdd.com, 1
 arifburhan.online, 1
@@ -4143,16 +4330,17 @@ arisevendor.net, 1
 aristocrates.co, 1
 aritec-la.com, 1
 arivo.com.br, 1
 arizonaautomobileclub.com, 1
 arizonabondedtitle.com, 1
 arizonahomeownerinsurance.com, 1
 arjan.nl, 1
 arjandejong.eu, 1
+arjanenthijs.nl, 1
 arjansteevels.nl, 1
 arjanvaartjes.net, 1
 arjunasdaughter.pub, 1
 arjweb.co.uk, 1
 arkacrao.org, 1
 arkadelphia.gov, 1
 arkadiyt.com, 1
 arkaic.dyndns.org, 1
@@ -4168,17 +4356,16 @@ arlingtonelectric.com, 1
 arlingtonwine.net, 1
 arm-host.com, 1
 arm.gov, 1
 armadaquadrat.com, 1
 armandsdiscount.com, 1
 armanozak.com, 1
 armansfinejewellery.com, 1
 armansfinejewellery.com.au, 1
-armarinhovirtual.com.br, 1
 armazemdaminiatura.com.br, 1
 armbrust.me, 1
 armedpoet.com, 1
 armenians.online, 1
 armeo.top, 1
 armil.it, 1
 armin-cme.de, 1
 armin-cpe.de, 1
@@ -4189,17 +4376,16 @@ armor.ai, 1
 armstrongsengineering.com, 1
 army24.cz, 1
 armyprodej.cz, 1
 arnakdanielian.com, 1
 arnaudb.net, 1
 arnaudfeld.de, 1
 arnaudlanna.com, 1
 arnaudminable.net, 1
-arne.codes, 1
 arnesolutions.com, 1
 arnevankauter.com, 1
 arniescastles.co.uk, 1
 arno-klein.de, 1
 arno-klein.eu, 1
 arno-klein.fr, 1
 arno.pm, 1
 arnoldkontz-occasions.lu, 1
@@ -4262,28 +4448,26 @@ artdeco-photo.com, 1
 arte-soft.co, 1
 artea.ga, 1
 arteaga.co.uk, 1
 arteaga.eu, 1
 arteaga.me, 1
 arteaga.tech, 1
 arteaga.uk, 1
 arteaga.xyz, 1
-artebel.com.br, 1
 artecat.ch, 1
 artedellavetrina.it, 1
 artedona.com, 1
 arteequipamientos.com.uy, 1
 artefakt.es, 1
-artefeita.com.br, 1
 arteinstudio.it, 1
 artelt.com, 1
 arterienundvenen.ch, 1
+arteseideias.com.pt, 1
 arteshow.ch, 1
-artetrama.com, 0
 artfabrics.com, 1
 artforum.sk, 1
 artfullyelegant.com, 1
 arthan.me, 1
 arthermitage.org, 1
 arthurlaw.ca, 1
 arthurmelo.com, 0
 arthuryidi.com, 1
@@ -4315,19 +4499,21 @@ artlogo.biz, 1
 artlogo.cz, 1
 artlogo.sk, 1
 artmanager.dk, 1
 artmarketingnews.com, 1
 artmaxi.eu, 1
 artmoney.com, 1
 artofcode.co.uk, 1
 artofeyes.nl, 1
+artofhomeorganizing.com, 1
 artofmonitoring.com, 0
 artofwhere.com, 1
 artozoul.fr, 1
+artplasticsurgeons.com, 1
 artratio.net, 1
 artroot.jp, 1
 artroscopiaperlosport.it, 1
 arts.gov, 1
 artschmidtoptical.com, 1
 artspac.es, 1
 arturkohut.com, 1
 arturopinto.com.mx, 1
@@ -4340,16 +4526,17 @@ arubasunsetbeach.com, 1
 arunjoshua.com, 1
 arveron.ch, 1
 arvid.io, 1
 arviksa.co.uk, 1
 arvindhariharan.com, 1
 arvindhariharan.me, 1
 arvutiladu.ee, 1
 arweth.com, 1
+arx8x.net, 1
 arxell.com, 1
 aryabusines.com, 1
 aryalaroca.de, 1
 aryan-nation.com, 1
 aryasenna.net, 1
 arzid.com, 1
 arzinfo.pw, 1
 as200753.com, 1
@@ -4379,28 +4566,31 @@ asdyx.de, 1
 asec01.net, 1
 asegem.es, 1
 aseith.com, 1
 asemanhotel.com, 1
 asenno.com, 1
 aserver.co, 1
 asexualitat.cat, 1
 asgapps.co.za, 1
-asge-handel.de, 1
 ashastalent.com, 1
+ashd1.goip.de, 1
+ashd2.goip.de, 1
+ashd3.goip.de, 1
 ashessin.com, 1
 ashleakunowski.com, 1
 ashleyadum.com, 1
 ashleyedisonuk.com, 1
 ashleyfoley.photography, 1
 ashleykaryl.com, 1
 ashleymadison.com, 1
 ashleythouret.com, 1
 ashlocklawgroup.com, 1
 ashmportfolio.com, 1
+ashridgetrees.co.uk, 1
 ashtonc.ca, 1
 ashutoshmishra.org, 1
 asia-gazette.com, 1
 asia-global-risk.com, 1
 asia.dating, 1
 asiaheavens.com, 1
 asialeonding.at, 1
 asian-industry.eu, 1
@@ -4427,27 +4617,27 @@ askizzy.org.au, 1
 askkaren.gov, 1
 askmagicconch.com, 0
 askme24.de, 1
 asksatya.com, 1
 askv6.net, 1
 askvg.com, 1
 askwhy.cz, 1
 askwhy.eu, 1
+askyourdentist.com, 1
 aslinfinity.com, 1
 asm-x.com, 0
 asmbsurvey.com, 1
 asmdz.com, 1
 asmeets.nl, 1
 asmood.net, 1
 asoul.tw, 1
 aspargesgaarden.no, 1
 aspatrimoine.com, 1
 aspcl.ch, 1
-aspectcontext.com, 1
 aspectuw.com.au, 1
 asperti.com, 1
 aspformacion.com, 1
 asphaltfruehling.de, 1
 asphyxia.su, 1
 aspiescentral.com, 1
 aspiradorasbaratas.net, 1
 aspirateur-anti-pollution.fr, 1
@@ -4521,19 +4711,18 @@ asws.nl, 1
 asylbarn.no, 1
 asystent-dzierzawy.pl, 1
 at.search.yahoo.com, 0
 at1.co, 1
 at5.nl, 1
 at7s.me, 1
 ataber.pw, 1
 atac.no, 1
-atacadocervejeiro.com.br, 1
-atacadodesandalias.com.br, 1
 atacadooptico.com.br, 1
+atahualpa.com, 1
 atallo.com, 1
 atallo.es, 1
 ataton.ch, 1
 atc.cuneo.it, 1
 atc.io, 1
 atchleyjazz.com, 1
 atchleyjazz.org, 1
 atchleylab.org, 1
@@ -4622,17 +4811,16 @@ atolm.net, 1
 atom-china.org, 1
 atom.solutions, 1
 atom86.net, 1
 atombase.org, 1
 atomic-bounce.com, 1
 atomic.red, 1
 atomicbounce.co.uk, 1
 atomism.com, 1
-atorcidabrasileira.com.br, 1
 atplonline.co, 1
 atpnutrition.com, 1
 atracaosexshop.com.br, 1
 atraining.ru, 1
 atraverscugy.ch, 1
 atrevillot.com, 1
 atrinik.org, 1
 atsoftware.de, 1
@@ -4645,17 +4833,19 @@ attentigroup.com, 1
 attention.horse, 1
 attilagyorffy.com, 1
 attilavandervelde.nl, 1
 attinderdhillon.com, 1
 attiremr.tk, 1
 attitudes-bureaux.fr, 1
 attogtech.com, 1
 attorney.org.il, 1
+attuned.se, 1
 attwood.org, 1
+atuendomr.com, 1
 atviras.lt, 0
 atvirtual.at, 1
 atvsafety.gov, 1
 atwar-mod.com, 1
 atwonline.org, 1
 atxchirocoverage.com, 1
 atyourprice.net, 1
 atypicom.es, 1
@@ -4722,16 +4912,17 @@ aulasvirtualesperu.com, 1
 aulica-conseil.com, 1
 aulo.in, 0
 aumilieudumonde.gf, 1
 aunali1.com, 1
 auntie-eileens.com.au, 1
 auntmia.com, 1
 aupasdecourses.com, 1
 auplidespages.fr, 1
+aura7chakr.com, 1
 aurelieburn.fr, 1
 aurelienaltarriba.fr, 1
 aureus.pw, 1
 auri.ga, 1
 auricblue.com, 1
 auriko-games.de, 1
 aurnik.com, 1
 aurora-multimedia.co.uk, 1
@@ -4794,16 +4985,17 @@ auto1.fi, 1
 autoauctionsohio.com, 1
 autoauctionsvirginia.com, 1
 autobahnco.com, 1
 autobarn.co.nz, 1
 autobedrijfgarant.nl, 1
 autobella-hurtownia.pl, 1
 autobelle.it, 1
 autobourcier.com, 1
+autocartruck.com, 1
 autoclean-plus.ch, 1
 autocontrol.online, 1
 autocorner.com, 1
 autocrypt.org, 1
 autod.hu, 1
 autodalmacija.com, 1
 autodidactic.ai, 1
 autodidacticstudios.com, 1
@@ -4819,16 +5011,17 @@ autokeyreplacementsanantonio.com, 1
 autokovrik-diskont.ru, 1
 autolawetawroclaw.pl, 1
 autoledky.sk, 1
 automacity.com, 1
 automagischeberegening.nl, 1
 automatethis.com.au, 1
 automatic.com, 1
 automationpro.me, 1
+automationsmarthome.com, 1
 automotivegroup-usedcars.be, 1
 automotivemechanic.org, 1
 automoto-tom.net, 1
 automy.de, 1
 autonewssite.com, 1
 autonoleggio.milano.it, 1
 autoosijek.com, 1
 autopapo.com.br, 1
@@ -4962,16 +5155,17 @@ avtoforex.ru, 1
 avtogara-isperih.com, 1
 avtomarket.ru, 1
 avtoveles.by, 1
 avtovokzaly.ru, 1
 avvaterra.ch, 1
 avvcorda.com, 1
 avvocato.bologna.it, 1
 avxo.pw, 1
+aw.gov.pl, 1
 awan.tech, 1
 awardplatform.com, 1
 awardsplatform.com, 1
 awaremi-tai.com, 1
 awaresec.com, 1
 awaresec.no, 1
 awarify.io, 1
 awarify.me, 1
@@ -5016,17 +5210,16 @@ axon-toumpa.gr, 1
 axonholdingse.eu, 1
 axre.de, 1
 axrec.de, 1
 axtux.tk, 1
 axxial.tk, 1
 ay-net.jp, 1
 ayamchikchik.com, 1
 ayanomimi.com, 1
-ayatk.com, 1
 aycomba.de, 1
 ayesh.me, 1
 ayesh.win, 1
 aying.love, 1
 ayj.solutions, 1
 aykutcevik.com, 1
 aylak.com, 1
 aylavblog.com, 1
@@ -5039,29 +5232,31 @@ ayrohq.com, 1
 ayrshirebouncycastlehire.co.uk, 1
 ayumi.network, 1
 ayumindev.net, 1
 ayumix3.xyz, 1
 ayurveda-mantry.com, 1
 ayurveda101.com, 0
 az-moga.bg, 1
 az-vinyl-boden.de, 1
+az.net.au, 1
 az.search.yahoo.com, 0
 azabani.com, 1
 azadliq.info, 1
 azarus.ch, 1
 azazy.net, 0
 azgfd.com, 1
 azia.info, 1
 aziende.com.ar, 1
 azimut.fr, 1
 azino777.ru, 1
 azizvicdan.com, 0
 azlk-team.ru, 1
 azmusica.biz, 1
+aznaetelivy.ru, 1
 aznews.site, 1
 azort.com, 1
 azrazalea.net, 1
 azsgeniedev.azurewebsites.net, 1
 azso.pro, 1
 azsupport.com, 1
 aztraslochi.it, 1
 aztrix.me, 1
@@ -5103,16 +5298,17 @@ b1788.com, 1
 b1788.net, 0
 b1c1l1.com, 1
 b1rd.tk, 1
 b2486.com, 1
 b2486.net, 1
 b2and.com, 0
 b2b-nestle.com.br, 1
 b2bmuzikbank.com, 1
+b2families.com.au, 1
 b303.me, 1
 b422edu.com, 1
 b4bouncycastles.co.uk, 1
 b4ckbone.de, 1
 b4z.eu, 1
 b5189.com, 1
 b5189.net, 1
 b5289.com, 1
@@ -5155,17 +5351,17 @@ b9418.net, 1
 b9428.com, 1
 b9428.net, 1
 b9453.com, 1
 b9453.net, 1
 b9468.com, 1
 b9468.net, 1
 b9488.com, 1
 b9488.net, 1
-b9498.com, 1
+b9498.com, 0
 b9498.net, 1
 b9518.com, 1
 b9518.info, 1
 b9518.net, 1
 b9518.org, 1
 b9528.com, 1
 b9528.net, 1
 b9538.com, 1
@@ -5236,16 +5432,17 @@ babycamapp.com, 1
 babyfotograf-schweiz.ch, 1
 babymasaze.cz, 1
 babyphototime.com, 1
 babypibu.com, 1
 babyshoprimini.com, 1
 bacgrouppublishing.com, 1
 bachata.info, 1
 baches-piscines.com, 1
+bachkhoa.net.vn, 1
 baciu.ch, 1
 backeby.eu, 1
 backgroundchecks.online, 1
 backgroundz.net, 1
 backlogapp.io, 1
 backmountaingas.com, 1
 backpacken.org, 1
 backpacker.dating, 1
@@ -5271,16 +5468,17 @@ bad.pet, 1
 badai.at, 1
 badam.co, 1
 badanka.com, 1
 badanteinfamiglia.it, 1
 badaparda.com, 1
 badbee.cc, 1
 badblock.fr, 1
 badboyzclub.de, 1
+badedesign.no, 1
 badf00d.de, 1
 badgersystems.de, 1
 badges.fedoraproject.org, 1
 badges.stg.fedoraproject.org, 1
 badgesenpatches.nl, 1
 badgirlsbible.com, 1
 badgr.io, 1
 badhusky.com, 0
@@ -5316,17 +5514,16 @@ bahnbonus-praemienwelt.de, 1
 bahnenimbild.de, 1
 bahnenimbild.eu, 1
 bahnhelden.de, 1
 bahninrotweissrot.at, 1
 bahnmagazine.de, 1
 baiduo.com, 1
 baifubao.com, 1
 baiker.info, 1
-bailakomigo.com.br, 1
 baildonbouncycastles.co.uk, 1
 baildonhottubs.co.uk, 1
 baileebee.com, 1
 baileybae.com, 1
 bailonga.com, 1
 bairdzhang.com, 1
 baitap.net, 1
 baitaplamvan.com, 1
@@ -5348,30 +5545,29 @@ bakeup.be, 1
 bakhansen.com, 1
 bakibal.com, 1
 bakim.li, 1
 bakingstone.com, 1
 bakkerinjebuurt.be, 1
 bakongcondo.com, 1
 balade-commune.ch, 1
 baladecommune.ch, 1
-balancascia.com.br, 1
 balance7.jp, 1
 balancedbrawl.net, 1
 balancenaturalhealthclinic.ca, 1
 balboa.io, 1
 balcaonet.com.br, 1
 balcarek.pl, 1
 balconnr.com, 1
 balconsverdun.com, 1
 baldwin.com.au, 1
+baldy.blog, 1
 baleen.us, 1
 balia.de, 1
 balicekzdravi.cz, 1
-balidesignshop.com.br, 1
 balikonos.cz, 1
 balinese.dating, 1
 balist.es, 1
 balivillassanur.com, 1
 baliyano.com, 1
 balkonien.org, 1
 ball-bizarr.de, 1
 ball3d.es, 1
@@ -5396,28 +5592,28 @@ balticer.de, 1
 balticmed.pl, 1
 balticnetworks.com, 1
 bamahammer.com, 1
 bambambaby.com.br, 0
 bambooforest.nl, 1
 bamboorelay.com, 1
 bamily.rocks, 1
 bamtoki.com, 1
+ban.moe, 1
 bananavapes.com, 1
 bananice.moe, 1
 bananium.fr, 1
 bancacrs.it, 1
 bancobai.ao, 1
 bancoctt.pt, 1
 bancomap.ch, 1
 bancor.network, 1
 bandagastrica.es, 1
 bandally.net, 1
 bandarifamily.com, 1
-bandeira1.com.br, 1
 banderasdelmundo.xyz, 1
 bandgap.io, 1
 bandiga.it, 1
 bandito.re, 1
 banes.ch, 1
 bangdream.ga, 1
 bangkok-dark-night.com, 1
 bangkok.dating, 1
@@ -5461,17 +5657,16 @@ banningca.gov, 1
 bannisbierblog.de, 1
 bannsecurity.com, 1
 banquevanbreda.be, 1
 banri.me, 1
 bantaihost.com, 1
 banter.city, 1
 bao-in.com, 1
 bao-in.net, 1
-baobeiglass.com, 1
 baodan666.com, 1
 baofengtech.com, 1
 baopublishing.it, 1
 baosuckhoedoisong.net, 1
 baptiste-peugnez.fr, 1
 baptistedeleris.fr, 1
 bar-harcourt.com, 1
 bar.pl, 1
@@ -5480,17 +5675,16 @@ barans2239.com, 1
 baraxolka.ru, 1
 barbarabowersrealty.com, 1
 barbarafabbri.com, 1
 barbarafeldman.com, 1
 barbarians.com, 0
 barbaros.info, 1
 barbate.fr, 1
 barbershop-lasvillas.com, 1
-barbiere.it, 1
 barbosha.ru, 1
 barbu.family, 1
 barburas.com, 1
 barcamp.koeln, 1
 barcel.com.mx, 1
 barcelonabagels.cat, 1
 barcelonapremium.es, 1
 barcelonapremiummini.es, 1
@@ -5521,17 +5715,16 @@ barpodsosnami.pl, 1
 barprive.com, 1
 barqo.co, 1
 barracuda.blog, 1
 barracuda.com.tr, 1
 barrera.io, 1
 barriofut.com, 1
 barrydenicola.com, 1
 bars.kh.ua, 1
-barsashop.com.br, 1
 barsgroup.com, 1
 barslecht.com, 1
 barslecht.nl, 1
 barss.io, 1
 bart-f.com, 1
 bartbania.com, 1
 bartel.ws, 1
 bartelt.name, 1
@@ -5589,37 +5782,39 @@ bat909.net, 1
 bat9vip.com, 1
 bat9vip.net, 1
 batcave.tech, 1
 batch.com, 1
 batfoundry.com, 1
 bati-alu.fr, 1
 batiburrillo.net, 1
 batipresta.ch, 1
-batistareisfloresonline.com.br, 1
+batiskaf.ua, 1
 batlab.ch, 1
 batolis.com, 1
 batook.org, 1
 batschu.de, 1
 batten.eu.org, 1
+batteryboys.ca, 1
+batteryboys.com, 1
 batterystaple.pw, 1
 battle-game.com, 1
 battleboxx.com, 0
+battleground.com.au, 1
 battleofthegridiron.com, 1
 batvip9.net, 1
 bauer.network, 1
 bauernmarkt-fernitz.at, 1
 baugeldspezi.de, 1
 baugelitt.eu, 1
 baugemeinschaftbernstein.de, 1
 baumannfabrice.com, 1
 baumkuchen-aus-dresden.de, 1
 baur.de, 1
 bausep.de, 1
-baustils.com, 1
 bauthier-occasions.be, 1
 bautied.de, 1
 bauunternehmen-herr.de, 1
 bauwens.cloud, 1
 bavarianhiker.de, 0
 bavartec.de, 1
 bawbby.com, 1
 bayareaenergyevents.com, 1
@@ -5629,25 +5824,25 @@ bayer-stefan.com, 1
 bayer-stefan.de, 1
 bayer-stefan.eu, 1
 bayerhazard.de, 1
 bayerstefan.com, 1
 bayerstefan.de, 1
 bayerstefan.eu, 1
 bayherbalist.com, 1
 bayilelakiku.com, 1
-baykatre.com, 1
 bayly.eu, 1
 baymard.com, 1
 bayportbotswana.com, 1
 bayportfinance.com, 1
 bayportghana.com, 1
 bayporttanzania.com, 1
 bayportuganda.com, 1
 bayportzambia.com, 1
+baystreet.com.mt, 1
 baytalebaa.com, 1
 baywatch.io, 1
 bayz.de, 1
 baza-gai.com.ua, 1
 bazaarbhaav.com, 1
 bazaarcompass.com, 1
 bazdell.com, 1
 bazinga-events.nl, 1
@@ -5752,44 +5947,45 @@ beamitapp.com, 1
 beamstat.com, 1
 beanbagaa.com, 1
 beanbot.party, 1
 beanilla.com, 1
 beanjuice.me, 1
 beans-one.com, 0
 beansgalore.com.au, 1
 bearcms.com, 1
-bearcosports.com.br, 1
 bearded.sexy, 1
 beardic.cn, 1
 bearingworks.com, 1
 bearlakelife.com, 1
 beasel.biz, 1
 beastiejob.com, 1
 beastowner.li, 1
 beatfeld.de, 1
 beatnikbreaks.com, 1
 beatrizaebischer.ch, 1
 beaumelcosmetiques.fr, 1
 beaute-eternelle.ch, 1
 beauty-italy.ru, 1
 beauty-yan-enterprise.com, 1
 beauty24.de, 1
 beautybear.dk, 1
+beautybh.com, 1
 beautyby.tv, 1
+beautycarepack.com.ng, 1
 beautyevent.fr, 1
 beautykat.ru, 1
 beaverdamautos.com, 1
 beavertales.ca, 1
 bebeautiful.business, 1
 bebef.de, 1
-bebefofuxo.com.br, 1
 bebes.uno, 1
 bebest.gov, 1
 bebetrotteur.com, 1
+beboldpr.com, 1
 bebout.domains, 1
 bebout.pw, 1
 beccajoshwedding.com, 1
 beckenhamcastles.co.uk, 1
 beckerantiques.com, 1
 becklove.cn, 1
 beckyhirstconsulting.com.au, 1
 becs.ch, 1
@@ -5807,16 +6003,17 @@ bedrijfsfotoreportages.nl, 1
 bedrocklinux.org, 1
 bedste10.dk, 1
 bee-creative.nl, 1
 bee-line.org.uk, 1
 bee-removal-dublin.com, 1
 bee.clothing, 1
 bee.supply, 1
 bee.tools, 1
+beecare.ch, 1
 beechwoodmetalworks.com, 1
 beehive.govt.nz, 1
 beehive42.com, 1
 beehive42.eu, 1
 beehive42.net, 1
 beehive42.nl, 1
 beehive42.org, 1
 beehosting.pro, 1
@@ -5860,17 +6057,16 @@ befoodsafe.gov, 1
 beforesunrise.de, 1
 beforeyoueatoc.com, 1
 beframed.ch, 1
 befreewifi.info, 1
 befundonline.de, 1
 begabungsfoerderung.info, 1
 begbie.com, 1
 beginner.nl, 1
-beginwp.top, 1
 behamepresrdce.sk, 1
 behamzdarma.cz, 1
 behead.de, 1
 beherit.pl, 1
 behindertenagentur.de, 1
 behna24hodin.cz, 1
 behoreal.cz, 1
 bei18.com, 1
@@ -5892,17 +6088,16 @@ belarto.fr, 1
 belarto.it, 1
 belarto.nl, 1
 belarto.pl, 1
 belastingdienst-in-beeld.nl, 1
 belastingmiddeling.nl, 1
 belavis.com, 1
 beleggingspanden-financiering.nl, 1
 belegit.org, 1
-belezashopping.com.br, 1
 belfastbounce.co.uk, 1
 belfastlocks.com, 1
 belfasttechservices.co.uk, 1
 belfor-probleme.de, 1
 belfordroxo.net.br, 1
 belge.rs, 1
 belgers.com, 1
 belhopro.be, 1
@@ -5918,16 +6113,17 @@ bellavistaoutdoor.com, 1
 bellezzasenzalimiti.it, 1
 bellinghamdetailandglass.com, 1
 belloy.ch, 1
 belloy.net, 1
 bellthrogh.com, 1
 bellthrough.com, 1
 belly-button-piercings.com, 1
 bellyandbrain.amsterdam, 1
+belmarresort.com, 1
 belmontgoessolar.org, 1
 belos.at, 1
 belouga.org, 1
 belpbleibtbelp.ch, 1
 belt.black, 1
 beltar.nl, 1
 belvoirbouncycastles.co.uk, 1
 belwederczykow.eu, 1
@@ -5953,19 +6149,20 @@ bencorby.com, 1
 bendemaree.com, 1
 bendigoland.com.au, 1
 bendingtheending.com, 1
 bendix.co, 1
 bendyworks.com, 1
 beneathvt.com, 1
 benedict-balzer.de, 1
 benediktgeissler.de, 1
+benefits.gov, 1
+benefitsbookcase.com, 1
 benefitshub.io, 1
 benefitshub.xyz, 1
-benepiscinas.com.br, 1
 beneri.se, 1
 benevisim.com, 1
 benevita.bio, 1
 benevita.life, 1
 benevita.live, 1
 benevita.organic, 1
 benewpro.com, 1
 benfairclough.com, 1
@@ -6003,51 +6200,55 @@ bennygommers.nl, 1
 bennythink.com, 1
 benriya.shiga.jp, 1
 bensbouncycastles.co.uk, 1
 benschnarr.com, 1
 benscobie.com, 1
 benshoof.org, 1
 bensinflatables.co.uk, 1
 bensokol.com, 1
+bensoy.com, 1
 benstevinson.com, 1
 bentertain.de, 1
 bentinata.com, 1
 bentley.blog, 1
 bentley.link, 1
 bentongroup.co.uk, 1
 bentonweatherstone.co.uk, 1
 bentrask.com, 1
 benvds.com, 1
 benz-hikaku.com, 1
 benzi.io, 1
+benzina.cn, 1
 benzou-space.com, 1
 beoordelingen.be, 1
 bep.gov, 1
 bepenak.com, 1
 bephoenix.org.uk, 1
 bepsvpt.me, 1
 bequiia.com, 1
 beranovi.com, 1
 berasavocate.com, 1
 beraten-entwickeln-steuern.de, 1
 berati.tv, 1
 beratungswelt.dvag, 1
 berdaguermontes.eu, 0
 berdu.id, 1
+bereaplumber.co.za, 1
 bereginy.com.ua, 1
 bergenhave.nl, 1
 berger-chiro.com, 1
 bergevoet-fa.nl, 1
 berglust-pur.de, 1
 bergmanbeachproperties.com, 1
 bergstoneware.com, 1
 berichtsheft-vorlage.de, 1
 berikod.ru, 1
 beringsoegaard.dk, 1
+berlin-cuisine.com, 1
 berlin.dating, 1
 bermeitinger.eu, 1
 bermos.net, 1
 bermytraq.bm, 1
 berna.fr, 1
 bernadetteanderes.ch, 1
 bernar.do, 1
 bernardcontainers.be, 1
@@ -6057,17 +6258,16 @@ bernardgo.com, 1
 bernardo.fm, 1
 bernat.ch, 1
 bernat.im, 1
 bernd-leitner-fotodesign.com, 1
 bernd-leitner-fotodesign.de, 1
 bernd-leitner.de, 1
 berndklaus.at, 1
 bernhard-seidenspinner.de, 1
-bernhardkau.de, 1
 bernhardluginbuehl.ch, 1
 bernhardluginbuehl.com, 1
 bernieware.de, 1
 bernyweb.net, 1
 berodes.be, 1
 berr.yt, 1
 berra.se, 1
 berruezoabogados.com, 1
@@ -6133,20 +6333,18 @@ best66.me, 1
 bestattungen-kammerer.de, 1
 bestattungshaus-kammerer.de, 1
 bestautoinsurance.com, 1
 bestbatteriesonline.com, 1
 bestbefore.com, 1
 bestbestbitcoin.com, 1
 bestbrakes.com, 1
 bestbrokerindia.com, 1
-bestbyte.com.br, 1
 bestcellular.com, 0
 bestdating.today, 1
-bestdoc.com.br, 1
 bestdownloadscenter.com, 1
 bestelectricnd.com, 1
 bestellipticalmachinereview.info, 1
 bestemailmarketingsoftware.org, 1
 bestesb.com, 1
 bestesb.net, 1
 bestessaycheap.com, 1
 bestessayhelp.com, 1
@@ -6200,16 +6398,17 @@ betgo9.cc, 1
 bethanyduke.com, 1
 bethpage.net, 1
 betkoo.com, 1
 betleakbot.com, 1
 betobaccofree.gov, 1
 betonbit.com, 1
 betonmarkets.info, 1
 betonmoney.com, 1
+betor.cz, 1
 betpamm.com, 1
 betrifft-mich-dsgvo.ch, 1
 bets.gg, 1
 betseybuckheit.com, 1
 betsharpangles.com, 1
 betshoot.com, 1
 betsonlinefree.com.au, 1
 betsyshilling.com, 1
@@ -6242,42 +6441,46 @@ betulashop.ch, 1
 betwalker.com, 1
 betwin9.com, 1
 betwin9.net, 1
 beulen.email, 1
 beulen.link, 1
 beulen.pro, 1
 beuteugeu.com, 1
 bevedo.cz, 1
+bevedo.sk, 1
 beveiligingscamerawestland.nl, 1
 bevelpix.com, 1
 beverlyinternational.com, 1
 bevinco2020.com, 1
 bevinsco.org, 1
 bevnut.com, 1
 bewegigsruum.ch, 1
 bewegungsfluss.com, 0
 bewerbungsfibel.de, 1
 bewerbungsfoto-deinfoto.ch, 1
 bewertet.de, 1
+bewished.co, 1
 bewonderen.com, 1
 bexit-hosting.nl, 1
 bexit-security.eu, 1
 bexit-security.nl, 1
 bexit.nl, 1
 bexithosting.nl, 1
 bexleycastles.co.uk, 1
 bey.io, 1
 beybiz.com, 1
 beyerautomation.com, 1
+beyerm.de, 1
 beylikduzuvaillant.com, 1
 beyond-infinity.org, 0
 beyond-rational.com, 1
 beyondalderaan.net, 1
 beyondbounce.co.uk, 1
+beyondordinarylife.com, 1
 beyondpricing.com, 1
 beyondthecode.io, 1
 beyondtodaymediagroup.com, 1
 beyondweb.net, 1
 beyonic.com, 1
 beyours.be, 1
 bez-energie.de, 1
 bezahlbare-praemien.ch, 1
@@ -6289,16 +6492,17 @@ bezpecnostsiti.cf, 1
 bezposrednio.net.pl, 1
 bezr.co.uk, 1
 bezzia.com, 1
 bf7088.com, 1
 bf7877.com, 1
 bfam.tv, 1
 bfcgermania88.de, 1
 bfem.gov, 1
+bfkcloud.ddns.net, 1
 bflix.tv, 1
 bfob.gg, 1
 bforb.sk, 1
 bfp-mail.de, 1
 bfpg.org, 1
 bfrailwayclub.cf, 1
 bft-media.com, 1
 bftbradio.com, 1
@@ -6325,25 +6529,26 @@ bh.sb, 1
 bharath-g.in, 1
 bhodisoft.com, 1
 bhserralheria.com.br, 1
 bhtelecom.ba, 1
 bhuntr.com, 1
 bhxch.moe, 1
 bi.search.yahoo.com, 0
 bi1gif.radio, 1
+bi8cku.club, 1
 bia.gov, 0
 biaggeo.com, 1
 bianinapiccanovias.com, 1
 biano-ai.com, 1
 biasmath.es, 1
 biathloncup.ru, 1
 bibica.net, 1
 bible-maroc.com, 1
-biblethoughts.blog, 0
+bibleversesfordailyliving.com, 1
 bibliaon.com, 1
 biblio.wiki, 1
 biblioblog.fr, 1
 bibliomarkt.ch, 1
 biblionaut.net, 1
 biblioporn.com, 1
 bibliotekarien.se, 1
 biboumail.fr, 1
@@ -6387,29 +6592,29 @@ bieumau.net, 1
 bifrost.cz, 1
 biftin.net, 1
 big-andy.co.uk, 1
 big-bounce.co.uk, 1
 big-fluglaerm-hamburg.de, 1
 bigadcompany.com, 1
 bigbendguide.com, 1
 bigbluedoor.net, 1
+bigboris.tk, 1
 bigbouncebouncycastles.co.uk, 1
 bigbouncetheory.co.uk, 1
 bigbounceuk.com, 1
 bigbrotherawards.nl, 1
 bigcakes.dk, 1
 bigclassaction.com, 1
 bigdinosaur.org, 1
 bigerbio.com, 1
 biggreenexchange.com, 1
 bighouse-events.co.uk, 1
 bight.ca, 1
 bigideasnetwork.com, 1
-bigio.com.br, 1
 biglou.com, 0
 bigorbitgallery.org, 1
 bigpicture-learning.com, 1
 bigserp.com, 1
 bigshopper.com, 1
 bigshopper.nl, 1
 bigshort.org, 1
 bigsisterchannel.com, 1
@@ -6455,19 +6660,39 @@ billhartzer.com, 1
 billiger-mietwagen.de, 1
 billigerfinder.de, 1
 billigpoker.dk, 1
 billin.net, 1
 billionaire365.com, 1
 billionairemailinglist.com, 0
 billionkiaparts.com, 1
 billkochman.com, 1
+billogr.am, 1
+billogram.be, 1
+billogram.ch, 1
+billogram.co, 1
+billogram.co.uk, 1
 billogram.com, 1
+billogram.de, 1
+billogram.es, 1
+billogram.eu, 1
+billogram.fi, 1
+billogram.fr, 1
+billogram.io, 1
+billogram.it, 1
+billogram.me, 1
+billogram.net, 1
+billogram.nl, 1
+billogram.nu, 1
+billogram.org, 1
+billogram.se, 1
 billograminternal.com, 1
 billogramstatic.com, 1
+billogramtest.com, 1
+billopay.com, 1
 billpro.com, 0
 billpro.com.au, 1
 billrobinson.io, 1
 billsqualityautocare.com, 1
 billy.pictures, 1
 billyoh.com, 1
 billysbouncycastlehire.co.uk, 1
 billywig.stream, 1
@@ -6512,16 +6737,17 @@ binding-problem.com, 1
 binfind.com, 1
 bing.com, 1
 bingcheung.com, 1
 bingo-wear.com, 1
 bingo9.net, 1
 bingobank.org, 1
 bingofriends.com, 1
 binhex.net, 1
+binhp.com, 1
 binimo.com, 1
 biniou.net, 1
 binkanhada.biz, 1
 binkconsulting.be, 1
 binnenmeer.de, 1
 binsp.net, 1
 bintangsyurga.com, 1
 bintelligence.info, 1
@@ -6536,16 +6762,17 @@ biobuttons.ch, 1
 biocheminee.com, 1
 biocrafting.net, 0
 biodiagnostiki.clinic, 1
 biodieseldata.com, 1
 biodots.at, 1
 biodots.eu, 1
 biodots.info, 1
 biodots.it, 1
+bioedilizia.roma.it, 1
 bioemsan.cz, 1
 bioequivalence.design, 1
 bioetco.ch, 1
 bioexploratorium.pl, 1
 biogecho.ch, 1
 biogecho.swiss, 1
 biogeist.de, 1
 biogeniq.ca, 1
@@ -6608,16 +6835,17 @@ birthright.website, 1
 birzan.org, 1
 bisa-sis.net, 1
 bischoff-mathey.family, 1
 biscoint.io, 1
 biscuitcute.com.br, 1
 biscuits-rec.com, 1
 biscuits-shop.com, 1
 biser-borisov.eu, 1
+biser.online, 1
 bishopscourt-hawarden.co.uk, 1
 bismarck-tb.de, 1
 biso.ga, 1
 bison.co, 1
 bisq.community, 1
 bissalama.org, 1
 bisschopssteeg.nl, 1
 bistrocean.com, 1
@@ -6660,32 +6888,34 @@ bitcoincasinos.pro, 1
 bitcoincore.org, 1
 bitcoinec.info, 1
 bitcoinfees.net, 1
 bitcoinindia.com, 1
 bitcoinjpn.com, 1
 bitcoinkarlsruhe.de, 1
 bitcoinrealestate.com.au, 1
 bitcointhefts.com, 1
+bitcointrade.com.br, 1
 bitcoinwalletscript.tk, 1
 bitcoinx.gr, 1
 bitcoinx.ro, 1
 bitcork.io, 1
 bitcqr.io, 1
 bitenose.com, 1
 bitenose.net, 1
 bitenose.org, 1
 bitex.la, 1
 bitfasching.de, 0
 bitfehler.net, 1
 bitfence.io, 1
 bitfinder.nl, 1
 bitfuse.net, 1
 bitgo.com, 1
 bitgrapes.com, 1
+bitguerrilla.com, 1
 bithir.co.uk, 1
 bititrain.com, 1
 bitlish.com, 1
 bitlo.com, 1
 bitlo.com.tr, 1
 bitlo.io, 1
 bitlo.org, 1
 bitmain.com.ua, 1
@@ -6809,25 +7039,27 @@ black-mail.nl, 1
 black-pool.net, 1
 black-raven.fr, 1
 black.dating, 1
 black.host, 1
 black1ce.com, 1
 blackandpony.de, 1
 blackapron.com.br, 1
 blackbag.nl, 1
+blackbam.at, 1
 blackberrycentral.com, 1
 blackbird-whitebird.com, 1
 blackboxconnections.com, 1
 blackburn.link, 0
 blackbyte.it, 1
 blackcat.ca, 1
 blackcatinformatics.ca, 1
 blackcatinformatics.com, 1
 blackcicada.com, 1
+blackcountrymetalworks.co.uk, 1
 blackdotbrewery.com, 1
 blackdown.de, 1
 blackdragoninc.org, 1
 blackedbyte.com, 1
 blackevent.be, 1
 blackfire.io, 1
 blackgamelp.de, 1
 blackgate.org, 1
@@ -6990,45 +7222,48 @@ bloggytalky.com, 1
 bloginbeeld.nl, 1
 blogit.fi, 1
 bloglines.co.za, 1
 bloglogistics.com, 1
 bloglyric.com, 1
 blognr.com, 1
 blogom.at, 1
 blogpentrusuflet.ro, 1
-blogpronto.com.br, 1
 blogreen.org, 1
 blogsdna.com, 1
 blogthedayaway.com, 1
 blogtroterzy.pl, 1
+blok56.nl, 1
 blokmy.com, 1
 blood4pets.tk, 1
 bloodhunt.pl, 1
 bloodsports.org, 1
 bloody.pw, 1
 bloom-avenue.com, 1
 bloom.sh, 0
+bloombrown.com, 1
 blopezabogado.es, 1
 bltc.co.uk, 1
 bltc.com, 1
 bltc.net, 1
 bltc.org, 1
 bltc.org.uk, 1
 bltdirect.com, 1
 blubbablasen.de, 1
 blubberladen.de, 1
 blubop.fr, 1
 bludnykoren.ml, 1
 blue-gmbh-erfahrungen.de, 1
 blue-gmbh.de, 1
 blue-leaf81.net, 1
 blue42.net, 1
+blueangel.org.tw, 1
 bluebahari.gq, 1
 blueblou.com, 1
+bluecanvas.io, 1
 bluechilli.com, 1
 bluecrazii.nl, 1
 blued.moe, 1
 bluedeck.org, 1
 blueflare.org, 1
 bluefrag.com, 1
 bluefuzz.nl, 1
 bluehelixmusic.com, 1
@@ -7060,16 +7295,17 @@ blueswandaily.com, 1
 bluetexservice.com, 1
 bluewavewebdesign.com, 1
 bluewizardart.net, 1
 bluex.im, 1
 bluex.info, 1
 bluex.net, 1
 bluex.org, 1
 blueyed.eu, 1
+bluffplumber.co.za, 1
 bluiandaj.ml, 1
 bluicraft.tk, 1
 bluimedia.com, 1
 bluinet.com, 1
 blumen-garage.de, 1
 blumenfeldart.com, 1
 blumiges-fischbachtal.de, 0
 blundell.wedding, 1
@@ -7191,16 +7427,18 @@ bolektro.de, 1
 boleyn.su, 1
 bolgarnyelv.hu, 1
 bolivarfm.com.ve, 1
 bologna-disinfestazioni.it, 1
 bolovegna.it, 1
 bolt.cm, 0
 boltbeat.com, 1
 bolte.org, 1
+boltenergy.ca, 1
+boltmobile.ca, 1
 bomb.codes, 1
 bombe-lacrymogene.fr, 1
 bomberus.de, 1
 bomboniere.roma.it, 1
 bombsquad.studio, 1
 bomhard.de, 1
 bonaccorso.eu, 1
 bonami.cz, 1
@@ -7214,16 +7452,17 @@ bonbonmania.com, 1
 bondagefetishstore.com, 1
 bondank.com, 1
 bondarenko.dn.ua, 1
 bondingwithbaby.ca, 1
 bondlink.com, 1
 bondpro.gov, 1
 bondskampeerder.nl, 1
 bonebunny.de, 1
+boneko.de, 1
 bonesserver.com, 1
 bonfi.net, 1
 bongbabyhouse.vn, 1
 bongloy.com, 1
 bongo.cat, 1
 bonifacius.be, 1
 bonita.com.br, 1
 bonito.pl, 1
@@ -7327,16 +7566,17 @@ borysenko.se, 1
 borzoi.com.br, 1
 bosabosa.org, 1
 boschee.net, 1
 boscoyacht.ch, 1
 boskeopolis-stories.com, 1
 boss.az, 1
 bostadsportal.se, 1
 bostonadvisors.com, 1
+bostonaoii.com, 1
 bosufitness.cz, 1
 bosun.io, 1
 bot-manager.pl, 1
 botezdepoveste.ro, 1
 botguard.net, 1
 bothellwaygarage.net, 1
 botlab.ch, 1
 botmanager.pl, 1
@@ -7476,17 +7716,16 @@ bourasse.fr, 1
 bourdon.fr.eu.org, 1
 bourgeoisdoorco.com, 1
 bournefun.co.uk, 1
 bourqu.in, 1
 bourse-aux-jouets.org, 0
 bourse-aux-vetements.org, 0
 bourse-puericulture.org, 0
 bourseauxservices.com, 1
-boutiquedecanetas.com.br, 1
 boutiqueguenaelleverdin.com, 1
 boutoncoupdepoing.fr, 1
 bouw.live, 1
 bouzouada.com, 1
 bouzouks.net, 1
 bovenwebdesign.nl, 1
 bovworkplacepensions.com, 1
 bowdens.me, 1
@@ -7499,16 +7738,17 @@ bownty.co.uk, 1
 bownty.de, 1
 bownty.dk, 1
 bownty.es, 1
 bownty.fr, 1
 bownty.it, 1
 bownty.nl, 1
 bowntycdn.net, 1
 bowtie.com.hk, 1
+boxcritters.wiki, 1
 boxcryptor.com, 0
 boxdevigneron.fr, 1
 boxpeg.com, 1
 boxpirates.to, 1
 boxspringbett-160x200.de, 1
 boxvergelijker.nl, 1
 boxview.com, 1
 boyerassoc.com, 1
@@ -7521,17 +7761,16 @@ boz.nl, 0
 bozdoz.com, 1
 bozit.com.au, 1
 bozosbouncycastles.co.uk, 1
 bpa.gov, 1
 bpadvisors.eu, 1
 bpastudies.org, 1
 bpo.ovh, 1
 bpol-forum.de, 1
-bpreguica.com.br, 1
 bps.vc, 1
 bpvboekje.nl, 1
 bqcp.net, 1
 bqp.io, 1
 bqr.ch, 1
 bqtoolbox.com, 1
 br-miyamoto.spdns.org, 1
 br.search.yahoo.com, 0
@@ -7566,17 +7805,16 @@ brainhub.nl, 1
 brainserve.ch, 1
 brainserve.com, 1
 brainserve.swiss, 1
 brainsik.net, 1
 brainster.co, 1
 braintensive.com, 1
 brainvoyagermusic.com, 1
 brainwav.es, 1
-brainwork.space, 1
 brainyapp.net, 1
 braithwaites.ltd, 1
 brakemanpro.com, 1
 brakpanplumber24-7.co.za, 1
 brakstad.org, 1
 bralnik.com, 1
 brambogaerts.nl, 1
 bramburek.net, 1
@@ -7610,17 +7848,16 @@ brandweerfraneker.nl, 1
 brandweertrainingen.nl, 1
 brandweeruitgeest.nl, 1
 brank.as, 1
 branno.org, 1
 branw.xyz, 0
 brasal.ma, 1
 brasalcosmetics.com, 1
 brashear.me, 1
-brasilbombas.com.br, 1
 brasildxn.com.br, 1
 brasileiro.ca, 1
 brasserie-mino.fr, 1
 brasspipedreams.org, 1
 bratislava-airport-taxi.com, 1
 bratteng.me, 1
 bratteng.xyz, 1
 bratvanov.com, 1
@@ -7634,24 +7871,25 @@ brave-foods.ch, 1
 brave-foods.com, 1
 brave.com, 1
 bravebaby.com.au, 1
 bravehearts.org.au, 1
 braviskindenjeugd.nl, 1
 bravisziekenhuis.nl, 0
 bravor.pe, 1
 brazilian.dating, 1
-brazillens.com, 1
+braziliex.com, 1
 brazoriabar.org, 1
 brb.city, 1
 brck.nl, 1
 brd.ro, 1
 breadandlife.org, 1
 breadofgod.org, 1
 breakingtech.it, 0
+breakingvap.fr, 1
 breakwall.ml, 1
 breaky.de, 1
 breard.tf, 1
 breathedreamgo.com, 1
 breathingblanket.com, 1
 brecht.ch, 1
 breckle.com.ua, 1
 brecknell.biz, 1
@@ -7669,29 +7907,32 @@ brefy.com, 1
 brege.org, 1
 breitband.bz.it, 1
 breizh.me, 1
 brejoc.com, 1
 brelahotelberulia.com, 1
 bremen-restaurants.de, 1
 bremensaki.com, 1
 bremerfriedensforum.de, 1
+brenbarnes.com, 1
+brenbarnes.com.au, 1
 brendanbatliner.com, 1
 brendanscherer.com, 1
 brenden.net.au, 1
 brentacampbell.com, 1
 brentnewbury.com, 1
 bressier.fr, 1
 bretcarmichael.com, 1
 brettabel.com, 1
 brettcornwall.com, 1
 brettlawyer.com, 1
 brettw.xyz, 1
 bretzner.fr, 1
 brevboxar.se, 1
+brewercollinsleadership.com, 1
 brewsouth.com, 1
 brewvo.com, 1
 breznet.com, 1
 brfvh24.se, 1
 brgins.com, 1
 brian-gordon.name, 1
 brianalaway.com, 1
 brianalawayconsulting.com, 1
@@ -7714,17 +7955,16 @@ bricolajeux.ch, 1
 brid.gy, 0
 bridalshoes.com, 1
 bridesmagazine.co.uk, 1
 bridgedirectoutreach.com, 1
 bridgeglobalmarketing.com, 1
 bridgehomeloans.com, 1
 bridgement.com, 1
 bridgeout.com, 1
-bridgevest.com, 1
 bridgingdirectory.com, 1
 bridholm.se, 1
 bridltaceng.com, 1
 brie.tech, 1
 briefassistant.com, 1
 briefhansa.de, 1
 briefvorlagen-papierformat.de, 1
 brier.me, 1
@@ -7736,16 +7976,17 @@ brightendofleasecleaning.com.au, 1
 brightfuturemadebyme.com, 1
 brightonbank.com, 1
 brightonbouncycastles.net, 1
 brightonchilli.org.uk, 1
 brightonzhang.com, 1
 brightside.com, 1
 brightworkcreative.com, 1
 brigidaarie.com, 1
+brigitte.nyc, 1
 brigittebutt.tk, 1
 brilliantbouncyfun.co.uk, 1
 brilliantproductions.co.nz, 1
 brimspark.com, 1
 brimspark.systems, 1
 brinkhu.is, 1
 brio-shop.ch, 1
 brio-ukraine.store, 1
@@ -7787,17 +8028,16 @@ brody.digital, 1
 brody.ninja, 1
 broersma.com, 1
 broerweb.nl, 1
 broeselei.at, 1
 brokenhands.io, 1
 brokernet.ie, 0
 brokervalues.com, 1
 brompton-cocktail.com, 1
-bronetb2b.com.br, 1
 bronevichok.ru, 1
 bronwynlewis.com, 1
 broodbesteld.nl, 1
 brookehatton.com, 0
 brookframework.org, 1
 brooklynrealestateblog.com, 1
 brookworth.com, 1
 brossman.it, 1
@@ -7900,26 +8140,23 @@ bt780.com, 1
 bta.lv, 0
 btc2secure.com, 1
 btcarmory.com, 1
 btcbolsa.com, 1
 btcontract.com, 1
 btcp.space, 1
 btcpop.co, 1
 btine.tk, 1
-btio.pw, 0
 btku.org, 1
-btmstore.com.br, 1
 btnissanparts.com, 1
 btorrent.xyz, 1
 btrb.ml, 1
 btsapem.com, 1
 btshe.net, 1
 btsoft.eu, 1
-btsow.com, 0
 bttc.co.uk, 1
 btth.live, 1
 btth.pl, 1
 btth.tv, 1
 btth.xyz, 1
 bttorj45.com, 1
 bturboo.com, 1
 buayacorp.com, 1
@@ -7940,16 +8177,17 @@ buck-hydro.de, 1
 buckelewrealtygroup.com, 1
 bucketlist.co.ke, 1
 buckypaper.com, 1
 budaev-shop.ru, 1
 buddhismus.net, 1
 buddhistische-weisheiten.org, 1
 buddie5.com, 1
 buddlycrafts.com, 1
+buddycompany.net, 1
 buddyworks.net, 1
 budeanu.com, 1
 buderus-family.be, 1
 budger.nl, 1
 budget.gov, 1
 budgetalk.com, 1
 budgetcastlehire.co.uk, 1
 budgetenergievriendenvoordeel.nl, 1
@@ -7986,17 +8224,17 @@ bugzil.la, 1
 bugzilla.mozilla.org, 1
 buhayguro.com, 1
 build.chromium.org, 1
 buildbox.io, 1
 buildbytes.com, 1
 buildhoscaletraingi.com, 1
 buildingclouds.de, 1
 buildingcostestimators.co.uk, 1
-builditfl.com, 1
+builditfl.com, 0
 builditsolutions.net, 1
 buildkite.com, 1
 buildmorebuslanes.com, 1
 buildplease.com, 1
 buileo.com, 1
 builtory.my, 1
 builtvisible.com, 1
 builtwith.com, 1
@@ -8041,38 +8279,39 @@ bungee.pw, 1
 bungee.systems, 1
 bungeetaco.com, 1
 bunix.de, 1
 bunkyo-life.com, 1
 bunny-rabbits.com, 1
 bunny.parts, 1
 bunnycarenotes.com, 1
 bunnydiamond.de, 1
+bunnymud.com, 1
 bunnyvishal.com, 1
 bunq.love, 1
 bunzy.ca, 1
 buonventosbt.eu, 1
 bupropion.com, 1
-bupu.ml, 1
 buqi.cc, 1
 buradangonder.com, 1
 burakogun.com, 1
 burakogun.com.tr, 1
 burakogun.net, 1
 burakogun.net.tr, 1
 burakogun.org, 1
 burcevo.info, 1
 burfordbedandbreakfast.co.uk, 1
 burg-hohnstein.com, 1
 burgawnc.gov, 1
 burgernet.nl, 1
 burgers.io, 1
 burghardt.pl, 1
 burialinsurancenetwork.com, 1
 buricloud.fr, 1
+burienergy.com, 1
 burke.services, 1
 burkhardt.at, 1
 burlapsac.ca, 1
 burncorp.org, 1
 burnerfitness.com, 1
 burnhamonseabouncycastles.co.uk, 1
 burningbird.net, 1
 burningflipside.com, 0
@@ -8097,16 +8336,17 @@ burzum.ch, 1
 busanhs.bid, 1
 buscandolosmejores.com, 1
 buserror.cn, 1
 bushbaby.com, 1
 bushcraftfriends.com, 1
 busindre.com, 1
 business-garden.com, 1
 business.facebook.com, 0
+business.gov, 1
 businessadviceperth.com.au, 0
 businessamongus.com, 1
 businesscentermarin.ch, 1
 businessesdirectory.eu, 1
 businessetmarketing.com, 1
 businessfactors.de, 1
 businessfurs.info, 1
 businesshub.cz, 0
@@ -8128,16 +8368,17 @@ busuttil.org.uk, 1
 busybee360.com, 1
 busyon.cloud, 1
 butarque.es, 1
 buthowdoyoubuygroceries.com, 1
 butikvip.ru, 1
 butlercountyhistory.org, 1
 butlerfm.dk, 1
 butt.repair, 1
+butter.horse, 1
 butteramotors.com, 1
 buttermilk.cf, 1
 buttonline.ch, 1
 buttonrun.com, 1
 butts-are.cool, 1
 butzies.ddnss.org, 1
 buurtgenotencollectief.nl, 1
 buurtpreventiefraneker.nl, 1
@@ -8243,27 +8484,29 @@ byteflies.com, 1
 bytegoing.com, 1
 bytejail.com, 1
 bytema.cz, 1
 bytema.eu, 1
 bytema.re, 1
 bytema.sk, 1
 bytemix.cloud, 1
 bytenoc.nl, 1
+bytepark.de, 1
 bytepen.com, 1
 bytes.co, 1
 bytes.fyi, 1
 bytesatwork.de, 1
 byteshark.org, 1
 byteshift.ca, 1
 bytesign.de, 1
 bytesizedalex.com, 1
 bytesofcode.de, 1
 bytesunlimited.com, 1
 bytesystems.com, 1
+byteterrace.com, 1
 bythisverse.com, 1
 bytrain.net, 1
 byvshie.com, 1
 bywin9.com, 1
 bzh.tf, 1
 bzhub.bid, 1
 bziaks.xyz, 1
 bzsparks.com, 0
@@ -8276,21 +8519,23 @@ c-ma-copro.com, 1
 c-path.org, 1
 c-rom.fr, 1
 c-rtx.com, 1
 c-shock.org, 1
 c-webdesign.net, 1
 c-world.co.uk, 1
 c.cc, 1
 c00ke.com, 1
+c0o.cc, 1
 c0rn3j.com, 1
 c0rporation.com, 1
 c16t.uk, 1
 c2design.it, 1
 c2lab.net, 1
+c2media.de, 1
 c2o-library.net, 1
 c2o2.xyz, 1
 c3.pm, 1
 c3hv.cn, 1
 c3sign.de, 0
 c3vo.de, 1
 c3w.at, 1
 c3wien.at, 1
@@ -8313,20 +8558,20 @@ cabarave.com, 1
 cabforum.org, 1
 cabineritten.nl, 1
 cabinet-bedin.com, 1
 cabinetfurnituree.com, 1
 cablehighspeed.net, 1
 cablemod.com, 1
 cablesandkits.com, 1
 cabotfinancial.co.uk, 1
+cabuna.hr, 1
 cacao-chocolate.com, 1
 cacao.supply, 1
 cacaolalina.com, 1
-cacaumidade.com.br, 1
 cacd.eu, 1
 caceis.bank, 1
 cachacacha.com, 1
 cachedview.nl, 1
 cachetagalong.com, 1
 cachethome.com, 1
 cachetur.no, 1
 cackette.com, 1
@@ -8339,17 +8584,17 @@ cadcreations.co.ke, 1
 cadetsge.ch, 1
 cadmail.nl, 1
 cadman.pw, 1
 cadmanlaw.ca, 1
 cadmanlaw.com, 1
 cadooz.com, 1
 cadorama.fr, 1
 cadoth.net, 1
-cadra.nl, 0
+cadra.nl, 1
 cadre.com, 1
 cadsys.net, 1
 cadusilva.com, 1
 caerostris.com, 1
 caerus.ws, 1
 caesarkabalan.com, 1
 cafe-service.ru, 0
 cafechesscourt.com, 1
@@ -8367,27 +8612,29 @@ cafericoy.com, 1
 cafesdomundo.pt, 1
 cafeterasbaratas.net, 1
 caffeinatedcode.com, 1
 caffeinefiend.org, 1
 cafled.org, 1
 cagalogluyayinevi.com, 0
 caglarcakici.com, 1
 caibi.io, 1
+caijunyi.net, 0
 cainhosting.com, 0
 caipai.fm, 1
 cairnterrier.com.br, 1
 caitcs.com, 1
 caiwenjian.xyz, 1
 caizx.com, 0
 caja-pdf.es, 1
 cajio.ru, 1
 cajunuk.co.uk, 1
 cake-time.co.uk, 1
 cakearific.com, 1
+cakeoffencesact.uk, 1
 cakestart.net, 1
 caketoindia.com, 1
 cakingandbaking.com, 1
 cakirlarshipyard.com, 1
 cal.goip.de, 1
 cal9000.com, 1
 calaad.net, 1
 calabasaselectric.com, 1
@@ -8418,32 +8665,33 @@ caleb.cx, 1
 caleb.host, 1
 calebthompson.io, 1
 calehoo.com, 1
 calendar.cf, 1
 calendar.google.com, 1
 calendarr.com, 1
 calendarsnow.com, 1
 calendly.com, 1
+calendriergratuit.fr, 1
 calenfil.com, 1
 caletka.cz, 1
 calgoty.com, 1
 calibreapp.com, 1
 calibso.net, 1
 calidadelectronica.com, 1
 caliderumba.com, 1
 calidoinvierno.com, 1
 calixte-concept.fr, 1
-calkinsmusic.com, 1
 call.me, 1
 callabs.net, 1
 callanan.nl, 1
 callantonia.com, 1
 callawayracing.se, 0
 callear.org, 1
+callerstrom.se, 1
 calleveryday.com, 1
 callfunc.com, 1
 callhub.io, 1
 callidus-vulpes.de, 1
 callsigns.ca, 1
 calltoar.ms, 1
 calltothepen.com, 1
 callumsilcock.com, 1
@@ -8483,17 +8731,17 @@ cambridgesecuritygroup.org, 1
 cambuslangharriers.org, 1
 camcapital.com, 1
 camconn.cc, 1
 camdesign.pl, 1
 camel2243.com, 1
 camelforensics.com, 1
 camelservers.com, 1
 cameo-membership.uk, 1
-cameraviva.com.br, 1
+cameronthomson.racing, 1
 camerweb.es, 1
 camilomodzz.net, 1
 camisetasmalwee.com.br, 1
 camolist.com, 1
 camp-pleinsoleil.ch, 1
 camp.co.uk, 1
 campaign-ad.com, 1
 campaign.gov.uk, 1
@@ -8535,16 +8783,17 @@ camshowhub.to, 1
 camshowstorage.com, 1
 camshowstorage.to, 1
 camshowverse.com, 1
 camshowverse.to, 1
 camsky.de, 0
 canada-tourisme.ch, 1
 canadabread.com, 0
 canadalife.de, 1
+canadaradon.com, 1
 canadasmotorcycle.ca, 1
 canadian-nurse.com, 1
 canadian.dating, 1
 canadianatheists.ca, 1
 canadianatheists.com, 1
 canadianoutdoorequipment.com, 1
 canadiantouristboard.com, 1
 canal-onanismo.org, 1
@@ -8712,16 +8961,17 @@ career.support, 1
 careeroptionscoach.com, 1
 careerpower.co.in, 1
 careers.plus, 1
 carefour.nl, 1
 caremad.io, 1
 carepassport.com, 1
 carespot.biz, 1
 carespot.co, 1
+carespot.com, 1
 carespot.mobi, 1
 carespot.net, 1
 carespot.org, 1
 carespot.us, 1
 carespotexpress.com, 1
 carespotexpresshealthcare.com, 1
 carespottravelmedicine.com, 1
 carespottravelmedicine.mobi, 1
@@ -8748,16 +8998,17 @@ carinsurance.es, 1
 carinthia.eu, 1
 carisenda.com, 1
 carkeysanantonio.com, 1
 carlgo11.com, 1
 carlife-at.jp, 1
 carlili.fr, 1
 carlingfordapartments.com.au, 1
 carlinmack.com, 1
+carlislepassionplay.org, 1
 carlmjohnson.net, 0
 carlo.mx, 0
 carlobiagi.de, 1
 carlocksmith--dallas.com, 1
 carlocksmithbaltimore.com, 1
 carlocksmithcarrollton.com, 1
 carlocksmithellicottcity.com, 1
 carlocksmithfallbrook.com, 1
@@ -8776,17 +9027,16 @@ carmelglenane.com, 1
 carmelrise.co.uk, 1
 carnaticalifornia.com, 1
 carnet-du-voyageur.com, 1
 carnildo.com, 1
 caroes.be, 1
 caroffer.ch, 1
 carol-lambert.com, 1
 carolcappelletti.com, 1
-carolcestas.com, 1
 caroli.biz, 1
 caroli.com, 1
 caroli.info, 1
 caroli.name, 1
 caroli.net, 1
 carolina.cz, 1
 carolinaclimatecontrolsc.com, 1
 carolineeball.com, 1
@@ -8802,20 +9052,20 @@ carriedin.com, 1
 carrierplatform.com, 1
 carringtonrealtygroup.com, 1
 carroattrezzimilanodaluiso.it, 1
 carroceriascarluis.com, 1
 carrouselcompany.fr, 1
 cars4salecy.com, 1
 carseatchecks.ca, 1
 carshippingcarriers.com, 1
+carson-aviation-adventures.com, 1
 carson-matthews.co.uk, 1
 carsoug.com, 1
 carspneu.cz, 1
-carteirasedistintivos.com.br, 1
 cartelloni.roma.it, 1
 carterdan.net, 1
 carterorland.com, 1
 carterstad.se, 1
 cartertonscouts.org.nz, 1
 cartesentreprises-unicef.fr, 1
 carthedral.com, 1
 cartierplan.ga, 0
@@ -8841,40 +9091,37 @@ casa-lunchbreak.de, 1
 casa-mea-inteligenta.ro, 1
 casaamor.ph, 1
 casaanastasia.ro, 1
 casabouquet.com, 1
 casacameo.com, 0
 casacazoleiro.com, 1
 casacochecurro.com, 1
 casadasportasejanelas.com, 1
-casadoarbitro.com.br, 1
 casadopulpo.com, 1
-casadowifi.com.br, 1
-casaessencias.com.br, 1
 casalborgo.it, 1
 casalindamex.com, 1
 casalunchbreak.de, 1
 casamariposaspi.com, 1
-casapalla.com.br, 1
 casasuara.com, 1
 casasuleletrodomesticos.com.br, 1
 casbia.info, 1
 casbuijs.nl, 1
 casburggraaf.com, 0
 casc.cz, 1
 cascadesjobcorpscca.com, 1
 cascavelle.fr, 1
 cascavelle.nl, 1
 case-vacanza-salento.com, 1
 casecoverkeygi.com, 1
 casecurity.org, 1
 caseificio.roma.it, 1
 caseof.fr, 1
 caseplus-daem.de, 1
+cases.lu, 1
 caseycapitalpartners.com, 1
 cash-4x4.com, 1
 cashati.com, 1
 cashbackcow.us, 1
 cashbook.co.tz, 1
 cashbot.cz, 1
 cashew3d.com, 1
 cashfazz.com, 1
@@ -8885,19 +9132,21 @@ cashplk.com, 1
 cashsector.ga, 1
 casian.ir, 1
 casino-cash-flow.su, 1
 casino-cashflow.ru, 1
 casino-online.info, 1
 casino-trio.com, 1
 casinobonuscodes.online, 1
 casinocashflow.ru, 1
+casinochecking.com, 1
 casinolegal.pt, 1
 casinolistings.com, 1
 casinoluck.com, 1
+casinomegaslotos.com, 1
 casinomucho.com, 1
 casinomucho.org, 1
 casinomucho.se, 1
 casinoonlinesicuri.com, 1
 casinoportugal.pt, 1
 casinoreal.com, 1
 casinorewards.info, 1
 casinovergleich.com, 1
@@ -8960,38 +9209,39 @@ catfooddispensersreviews.com, 1
 catgirl.pics, 1
 catgirl.science, 1
 catharinesomerville.com, 1
 catharisme.eu, 1
 catharisme.net, 1
 catharisme.org, 1
 catherinejf.com, 1
 catherinesofpartick.co.uk, 1
+cathiebrousse.com, 1
 catholics.dating, 1
 catholicteacherresources.com, 1
 cathosa.nl, 1
 cathosting.org, 1
 cathy.guru, 1
 cathy.website, 1
 cathyfitzpatrick.com, 1
 cathyjf.ca, 1
 cathyjf.com, 1
 cathyjf.net, 1
 cathyjf.org, 1
 cathyjfitzpatrick.com, 1
 cativa.net, 1
 catl.st, 1
+catlovingcare.com, 1
 catmoose.ca, 1
 catnet.dk, 0
 catnmeow.com, 1
 catram.org, 1
 catsmagic.pp.ua, 1
 cattivo.nl, 0
 catuniverse.org, 1
-catveteran.com, 1
 caudo.net, 1
 caudohay.com, 1
 caughtredhanded.co.nz, 1
 caulfieldeastapartments.com.au, 1
 caulfieldracecourseapartments.com.au, 1
 caulong-ao.net, 1
 cav.ac, 1
 cavac.at, 1
@@ -9048,17 +9298,17 @@ ccu.plus, 1
 cd-shopware.de, 1
 cd-sport.com, 1
 cd.search.yahoo.com, 0
 cd5k.net, 1
 cda-aigle.ch, 1
 cdasenegal.com, 1
 cdasiaonline.com, 0
 cdbf.ch, 1
-cdbtech.com, 1
+cdbtech.com, 0
 cdburnerxp.se, 1
 cdcpartners.gov, 1
 cdda.ch, 1
 cdeck.net, 1
 cdepot.eu, 1
 cdkeykopen.com, 1
 cdkeyprices.com, 1
 cdkeyworld.de, 1
@@ -9068,30 +9318,33 @@ cdn.ampproject.org, 1
 cdn6.de, 1
 cdncompanies.com, 1
 cdnjs.com, 1
 cdnk39.com, 1
 cdns.cloud, 1
 cdnsys.net, 1
 cdom.de, 1
 cdsdigital.de, 1
+cdshh.club, 1
 cdshining.com, 1
 cdu-gebhardshain.de, 1
 cduckett.net, 1
 cdvl.org, 1
 ce-agentur.de, 0
 ce-pimkie.fr, 1
+ce-webdesign.de, 1
 ceanimalhealth.com, 1
 cebz.org, 1
 cecame.ch, 1
 ceciliacolombara.com, 1
 cecipu.gob.cl, 1
 ced-services.nl, 1
 cedarcitydining.com, 1
 cedarslodge.com, 1
+cedricbonhomme.org, 1
 cedriccassimo.ch, 1
 cedriccassimo.com, 1
 cee.io, 1
 ceebee.com, 1
 cegfw.com, 1
 cegss.org.gt, 1
 ceilingpac.org, 1
 cejhon.cz, 0
@@ -9103,16 +9356,17 @@ celebrityhealthcritic.com, 1
 celebrityscope.net, 1
 celec.gob.ec, 0
 celectro-pro.com, 1
 celestebonito.pt, 1
 celiendev.ch, 1
 celine-patisserie.fr, 1
 cellartracker.com, 1
 cellebrite.com, 1
+celliberate.co.uk, 1
 celltek-server.de, 0
 celltesequ.com, 1
 celluliteorangeskin.com, 1
 celluliteremovaldiet.com, 1
 celti.ie.eu.org, 1
 celti.name, 1
 celuliteonline.com, 1
 cementscience.com, 1
@@ -9183,16 +9437,17 @@ cerberusinformatica.it, 1
 cerebelo.info, 1
 cerena-silver.ru, 1
 ceres-corp.org, 1
 cerivo.co.uk, 1
 cermak.photos, 1
 cernakova.eu, 1
 cerpus-course.com, 1
 cerrajeriaamericadelquindio.com, 1
+cerrajeriaenvillavicencio.com, 1
 cert.ee, 1
 cert.govt.nz, 1
 cert.or.id, 1
 certaintelligence.com, 1
 certbus.com, 1
 certcenter.com, 1
 certchannel.com, 1
 certevia.com, 1
@@ -9215,20 +9470,20 @@ ces-ltd.co.uk, 1
 cesantias.co, 1
 cesboard.com, 1
 cesdb.com, 1
 cesipagano.com, 1
 ceskepivnesety.sk, 1
 ceskepivnisety.cz, 1
 ceso-saco.com, 1
 cesobaly.cz, 1
-cestasedelicias.com.br, 1
 cestunmetier.ch, 1
 cetamol.com, 1
 ceu.edu, 0
+cevin.at, 1
 cevo.com.hr, 1
 cf-ide.de, 1
 cf-tm.net, 1
 cfan.space, 1
 cfc-swc.gc.ca, 1
 cfda.gov, 1
 cfdcre5.org, 1
 cfh.com, 1
@@ -9248,16 +9503,18 @@ cg-systems.hu, 1
 cg.al, 1
 cg.search.yahoo.com, 0
 cgal.org, 1
 cgan.de, 1
 cgan.pw, 1
 cgbassurances.ch, 1
 cgbilling.com, 1
 cgcookiemarkets.com, 1
+cgeceia.cf, 1
+cgelves.com, 1
 cgf-charcuterie.com, 1
 cglib.xyz, 1
 cgminc.net, 1
 cgnparts.com, 1
 cgpe.com, 1
 cgsmart.com, 1
 cgtx.us, 1
 cgurtner.ch, 1
@@ -9282,17 +9539,16 @@ chaisystems.net, 1
 chaizhikang.com, 1
 chaletdemontagne.org, 1
 chaletmanager.com, 1
 chaletpierrot.ch, 1
 chaleur.com, 1
 chalker.io, 1
 chalkfestival.org, 0
 challengeblog.org, 1
-challengeclothing.com.br, 1
 challengeskins.com, 1
 challstrom.com, 1
 chamathellawala.com, 1
 chambion.ch, 1
 chameleon-ents.co.uk, 1
 chameth.com, 0
 chamicro.com, 1
 champdogs.co.uk, 1
@@ -9513,32 +9769,34 @@ cheltenhambouncycastles.co.uk, 1
 cheltik.ru, 1
 chemco.mu, 1
 chemicalcrux.org, 1
 chemicalguys-ruhrpott.de, 1
 chemiphys.com, 1
 chemistry-schools.com, 1
 chenapartment.com, 1
 chengarda.com, 1
+chengfayun.com, 1
 chenghao360.top, 1
 chengl.com, 1
 chengxindong.com, 1
 chenkun.pro, 1
 chenky.com, 1
 chenna.me, 1
 chennien.com, 1
 chenpei.org, 1
 chenqinghua.com, 1
 chentianyi.cn, 1
 chenzhekl.me, 1
 chenzhipeng.com.cn, 1
 cheolguso.com, 1
 cheque-transitionactive.fr, 1
 cherevoiture.com, 1
 cherie-belle.com, 1
+chernevclima.bg, 1
 cherrett.digital, 1
 cherry-green.ch, 1
 cherrybread.net, 1
 cherryonit.com, 1
 cherrywoodtech.com, 1
 chertseybouncycastles.co.uk, 1
 chesapeakebaychristmas.com, 1
 chess.com, 1
@@ -9565,16 +9823,17 @@ chiaraiuola.com, 0
 chiaramail.com, 1
 chiaseeds24.com, 1
 chiboard.co, 1
 chibr.eu, 1
 chic-leather.com, 1
 chicagoemergencyclosings.com, 1
 chicagolug.org, 1
 chicagostudentactivists.org, 1
+chicback.com, 1
 chicisimo.com, 1
 chicolawfirm.com, 1
 chicurrichi.com, 1
 chif16.at, 1
 chikan-beacon.net, 1
 chikazawa.info, 1
 chikory.com, 1
 childcare.gov, 1
@@ -9623,31 +9882,31 @@ chiro-neuchatel.ch, 1
 chiropractic.gr, 1
 chiropracticwpb.com, 1
 chiropraktik-riemann.de, 1
 chiropraticien-neuchatel.ch, 1
 chiropratique-neuchatel.ch, 1
 chirosphere.ch, 1
 chirpstory.com, 1
 chiru.no, 1
+chirurgoplastico.roma.it, 1
 chisago-isantidfl.com, 1
 chit.search.yahoo.com, 0
 chksite.com, 1
 chl.la, 1
 chloeallison.co.uk, 1
 chloehorler.com, 1
 chloescastles.co.uk, 1
 chlth.com, 1
 chmielarz.it, 1
 chmsoft.com.ua, 1
 chmsoft.ru, 1
 chmurakotori.ml, 1
 choc-o-lush.co.uk, 1
 chocgu.com, 1
-chocodecor.com.br, 1
 chocolah.com.au, 0
 chocolat-suisse.ch, 1
 chocolat.work, 1
 chocolatesandhealth.com, 1
 chocolatier-tristan.ch, 1
 chocolytech.info, 1
 chocotough.nl, 1
 chocoweb.net, 1
@@ -9850,32 +10109,32 @@ cindey.io, 1
 cine-music.de, 1
 cinefilia.tk, 1
 cinefilzonen.se, 1
 cinefun.net, 1
 cinemaclub.co, 1
 cinemarxism.com, 1
 cinemasetfree.com, 1
 cinemysticism.com, 1
+cinenote.link, 1
 cineplex.my, 1
 cinicloud.com, 1
 ciniticket.com, 1
 cinkciarz.pl, 1
 cinnabon.com, 1
 cinq-elements.com, 1
 cinq-elements.fr, 1
 cinq-elements.net, 1
 cinsects.de, 1
 cinteo.com, 1
 cio-ciso-interchange.org, 1
 cio-cisointerchange.org, 1
 cio.go.jp, 1
 cio.gov, 0
 cioscloud.com, 1
-cip.md, 1
 cipartyhire.co.uk, 1
 cipher.team, 1
 cipherboy.com, 1
 ciphersuite.info, 1
 ciphrex.com, 1
 cipri.com, 1
 cipri.net, 1
 cipri.nl, 1
@@ -9892,20 +10151,16 @@ circlebox.rocks, 1
 circu.ml, 1
 circuitcityelectricaladelaide.com.au, 1
 circulatedigital.com, 1
 circule.cc, 1
 cirfi.com, 1
 ciri.com.co, 1
 cirrus0.de, 1
 cirujanooral.com, 1
-cirurgicagervasio.com.br, 1
-cirurgicalucena.com.br, 1
-cirurgicasalutar.com.br, 1
-cirurgicavirtual.com.br, 1
 cisa.gov, 1
 ciscodude.net, 0
 cisoaid.com, 1
 cisofy.com, 1
 cispeo.org, 1
 ciss.ltd, 1
 cistitguru.ru, 1
 cisum-cycling.com, 1
@@ -9921,17 +10176,16 @@ citizensbankal.com, 1
 citizenscience.gov, 0
 citizenscience.org, 1
 citizensgbr.org, 1
 citizenslasvegas.com, 1
 citizensleague.org, 1
 citizing.org, 1
 citrusui.me, 1
 cittadesign.com, 0
-citton.com.br, 1
 city-adm.lviv.ua, 1
 city-walks.info, 1
 citya.com, 1
 citybeat.de, 1
 citycreek.studio, 1
 citydance.ee, 1
 cityextra.com.au, 1
 cityfloorsupply.com, 1
@@ -9947,16 +10201,17 @@ citysportapp.com, 1
 citywalkr.com, 1
 citywidealarms.com, 1
 cityworksonline.com, 1
 ciubotaru.tk, 1
 ciuciucadou.ro, 1
 civey.com, 1
 civicamente.cl, 1
 civicforum.pl, 1
+civics.us, 1
 civicunicorn.com, 1
 civicunicorn.us, 1
 civilbikes.com, 1
 civilg20.org, 1
 civillines.nl, 1
 civiltoday.com, 1
 cj-espace-vert.fr, 1
 cj-jackson.com, 1
@@ -9977,16 +10232,17 @@ ckenely.com, 1
 ckenneley.com, 1
 ckennelley.com, 1
 ckennelly.com, 1
 ckennely.com, 1
 ckleemann.de, 1
 cklie.de, 1
 ckliemann.com, 1
 ckliemann.net, 1
+ckna.ca, 1
 ckostecki.de, 1
 ckp.io, 1
 ckrubble.co.za, 1
 cktennis.com, 1
 cl.search.yahoo.com, 0
 cl0ud.space, 1
 clacetandil.com.ar, 1
 clad.cf, 1
@@ -10015,18 +10271,20 @@ classical-guitar-school.com, 1
 classicalpilates.ca, 1
 classics.io, 1
 classictheatrecumbria.co.uk, 1
 classpoint.cz, 1
 classroom.google.com, 1
 classroomconductor.com, 1
 classroomcountdown.co.nz, 1
 classteaching.com.au, 1
+claster.it, 1
 claude.tech, 1
 claudia-urio.com, 1
+claudiney.id, 1
 claudiney.info, 1
 claudiolemos.com, 1
 claus-bahr.de, 1
 clauseriksen.net, 1
 clav1d.com, 1
 clawe.de, 1
 clawhammer.dk, 1
 clayandcottonkirkwood.com, 1
@@ -10088,16 +10346,17 @@ clickbasin.co.uk, 1
 clickclickphish.com, 1
 clickclock.cc, 1
 clickenergy.com.au, 1
 clickingmad.com, 1
 clickphish.com, 1
 clien.net, 1
 client.coach, 1
 clientboss.com, 1
+clientportal.com, 1
 clientsecure.me, 1
 clifflu.net, 1
 climaencusco.com, 1
 climaprecio.es, 1
 climateinteractive.org, 1
 climatestew.com, 1
 clindoeilmontagne.com, 1
 clingout.com, 1
@@ -10106,17 +10365,16 @@ clinicasmedicas.com.br, 1
 clinicminds.com, 1
 cliniquecomplementaire.com, 1
 cliniquevethuy.be, 1
 clintonbloodworth.com, 1
 clintonlibrary.gov, 1
 clip.ovh, 1
 clipclip.com, 1
 clippings.com, 1
-clite.ru, 1
 clive.io, 1
 clmde.de, 1
 clnc.to, 1
 clnnet.ch, 1
 clo.me, 1
 cloaked.ch, 1
 clochix.net, 1
 clockcaster.com, 1
@@ -10155,30 +10413,32 @@ cloudbreaker.de, 1
 cloudbrothers.info, 1
 cloudcactuar.com, 0
 cloudcaprice.net, 1
 cloudcert.org, 1
 cloudchart.site, 1
 cloudcite.net, 1
 cloudcloudcloud.cloud, 1
 cloudcrux.net, 1
+clouddog.com.br, 1
 cloudey.net, 1
 cloudfiles.at, 1
 cloudflare-dns.com, 1
 cloudflare.com, 1
 cloudflareonazure.com, 1
 cloudia.org, 1
 cloudily.com, 1
 cloudimproved.com, 1
 cloudimprovedtest.com, 1
 cloudkeep.nl, 1
 cloudlessdreams.com, 1
 cloudlight.biz, 1
 cloudnote.cc, 1
 cloudns.net, 1
+cloudofertas.com.br, 1
 cloudoptimizedsmb.com, 1
 cloudoptimus.com, 1
 cloudpengu.in, 1
 cloudpipes.com, 1
 cloudse.co.uk, 1
 cloudsec.tk, 1
 cloudsecurityalliance-europe.org, 1
 cloudsecurityalliance.com, 1
@@ -10194,16 +10454,17 @@ cloudspace-analytics.com, 1
 cloudspeedy.net, 1
 cloudspire.net, 1
 cloudsprt.com, 1
 cloudteam.de, 1
 cloudtocloud.tk, 1
 cloudtropia.de, 1
 cloudtskr.com, 1
 cloudup.com, 1
+cloudwallce.com, 1
 cloudwarez.xyz, 1
 cloudwellmarketing.com, 1
 clouz.de, 1
 cloveros.ga, 1
 clownindeklas.nl, 1
 clownish.co.il, 1
 cloxy.com, 1
 cloze.com, 1
@@ -10223,17 +10484,16 @@ club-jose.com, 1
 club-premiere.com, 1
 club-reduc.com, 1
 club-slow.jp, 1
 club-yy.com, 1
 club103.ch, 1
 clubcorsavenezuela.com, 1
 clubdelzapato.com, 1
 clubdeslecteurs.net, 1
-clubedalutashop.com, 1
 clubefiel.com.br, 1
 clubempleos.com, 1
 clubeohara.com, 1
 clubfamily.de, 1
 clubgalaxy.futbol, 0
 clubiconkenosha.com, 1
 clubmarina.store, 1
 clubmate.rocks, 1
@@ -10265,16 +10525,17 @@ cmitao.com, 1
 cmlachapelle.ch, 1
 cmlancy.ch, 1
 cmlignon.ch, 1
 cmn-group.com, 1
 cmn-groupe.com, 1
 cmngroup.com, 1
 cmngroupe.com, 1
 cmov-plongeurs.fr, 1
+cmoycontracts.com, 1
 cmplainpalais.ch, 1
 cmrss.com, 1
 cms-weble.jp, 1
 cmskeyholding.co.uk, 1
 cmskeyholding.com, 1
 cmskh.co.uk, 1
 cmv.gr, 1
 cmweller.com, 1
@@ -10358,22 +10619,24 @@ codabix.com, 1
 codabix.de, 1
 code-poets.co.uk, 1
 code-vikings.de, 1
 code-well.com, 1
 code.facebook.com, 0
 code.fm, 1
 code.google.com, 1
 code.taxi, 1
+code123.eu, 1
 code67.com, 1
 codeandpeace.com, 1
 codeandsupply.co, 1
 codebrahma.com, 0
 codecommunity.io, 1
 codedelarouteenligne.fr, 1
+codedo.info, 1
 codedump.net, 1
 codeeclipse.com, 1
 codeferm.com, 1
 codefordus.de, 1
 codefordus.nrw, 1
 codefoundry.it, 0
 codehz.one, 1
 codein.ca, 1
@@ -10447,29 +10710,31 @@ coentropic.com, 1
 coeus.cloud, 1
 cofbev.com, 1
 coffee-machine.reviews, 1
 coffee-mamenoki.jp, 1
 coffeeandteabrothers.com, 1
 coffeetime.fun, 1
 coffeist.com, 1
 cogala.eu, 1
+cogeneration-energy.com, 1
 cogent.cc, 1
 cogilog.com, 1
 cogitoltd.com, 1
 cognicom-gaming.com, 1
 cognitip.com, 1
 cognitivecomputingconsortium.com, 1
 cognitohq.com, 1
 cogsquad.house, 1
 cogumelosmagicos.org, 1
 coi-verify.com, 1
 coiffeurschnittstelle.ch, 1
 coigach-assynt.org, 1
 coimmvest.com, 1
+coin-exchange.cz, 1
 coin-quest.net, 1
 coin.dance, 1
 coinapult.com, 1
 coinbase.com, 1
 coinbit.trade, 1
 coincealed.com, 1
 coinchat.im, 1
 coincircle.com, 1
@@ -10487,38 +10752,39 @@ coinlist.co, 0
 coinloan.io, 1
 coinmewallet.com, 1
 coinpit.io, 1
 coinroom.com, 1
 coins2001.ru, 1
 coinsmat.com, 1
 coinsz.co, 1
 coinx.pro, 1
-coisabakana.com.br, 1
 coisasdemulher.org, 1
 cojam.ru, 1
 cojo.eu, 1
 cokebar.info, 1
 coker.com.au, 1
 col.la, 1
 colaborativa.tv, 1
+coladv.com, 1
 colantonio.homelinux.net, 1
 colapsys.net, 1
 colarelli.ch, 1
 colasjourdain.fr, 1
 colchonesmoon.com, 1
 colcomm.com, 1
 coldaddy.com, 1
 coldawn.com, 0
 coldcardwallet.com, 1
 coldfff.com, 1
 coldhak.ca, 1
 coldiario.com, 1
 coldlasers.org, 1
 coldstreamcreekfarm.com, 1
+colectivointerconductual.com, 1
 coleg.gov, 1
 colegiocierp.com.br, 0
 colemak.com, 1
 colengo.com, 1
 colf.online, 1
 colibris.xyz, 1
 colinchartier.com, 1
 colincogle.name, 1
@@ -10537,29 +10803,32 @@ collabora.uk, 1
 collaboracloudsuite.com, 1
 collaboraoffice.co.uk, 1
 collaboraoffice.com, 1
 collaborativehealthpsychology.com, 1
 collabornation.net, 1
 collaction.hk, 1
 collada.org, 1
 collage.me, 1
+collare.mx, 1
 collectdocs.com, 1
 collectfood.com, 1
 collectiblebeans.com, 1
 collectorknives.net, 1
 collectorsystems.com, 1
 colleencornez.com, 1
 collegeconnexxions.com.au, 1
+collegegirlhd.com, 1
 collegenavigator.gov, 1
 collegepaperworld.com, 1
 collegeprospectsofcentralindiana.com, 1
 collegereligionandphilosophy.com, 1
 collegesecretary.cn, 1
 collegesecretary.com, 1
+collegesexvid.com, 1
 collegestationhomes.com, 1
 collinel-hossari.com, 1
 collinelhossari.com, 1
 collinklippel.com, 1
 collinmbarrett.com, 1
 collins.kg, 1
 colloquy.mobi, 1
 colo-tech.com, 1
@@ -10607,29 +10876,29 @@ combron.nl, 1
 comchezmeme.com, 1
 comcol.nl, 1
 comdotgame.com, 1
 comdurav.com, 1
 comeals.com, 1
 comedyhuis.nl, 1
 comefollowme2016.com, 1
 comeoishii.com, 1
+comercialbelzunces.com, 1
 comercialtpv.com, 1
 comercialtrading.eu, 1
 comerford.net, 1
 comestoarra.com, 1
 cometbot.cf, 1
 cometcache.com, 1
 cometonovascotia.ca, 1
 comevius.com, 1
 comevius.org, 1
 comevius.xyz, 1
 comff.net, 1
 comfintouch.com, 1
-comflores.com.br, 1
 comfortmastersinsulation.com, 1
 comfun.net, 1
 comfy.cafe, 0
 comfypc.com, 1
 comhack.com, 1
 comicspornos.com, 1
 comicspornow.com, 1
 comicspornoxxx.com, 1
@@ -10645,16 +10914,17 @@ commechezvous.ch, 1
 commerce.gov, 1
 commercezen.com, 1
 commercia.srl, 1
 commercial-academy.fr, 1
 commeunamour.com, 1
 commissaris-vraagbaak.nl, 1
 commissionagenda.com, 1
 commitsandrebases.com, 1
+commlabindia.com, 1
 common.io, 1
 commoncode.com.au, 1
 commoncode.io, 1
 commoncore4kids.com, 1
 commonspace.la, 1
 communalconsulting.org, 1
 communityblog.fedoraproject.org, 1
 communitychurchafrica.co.za, 1
@@ -10686,18 +10956,20 @@ comp2go.com.au, 1
 compactchess.cc, 1
 compagnia-buffo.de, 1
 compagniemartin.com, 1
 companion-web.net, 1
 comparatif-moto.fr, 1
 compareandrecycle.co.uk, 1
 compareinsurance.com.au, 1
 comparesoft.com, 1
+comparewatch.com, 1
 comparexcloudcenter.com, 1
 compartir.party, 1
+compartirtrenmesaave.com, 1
 compassdirectportal.com, 1
 compassfinance.com, 1
 compassintladv.com, 1
 compasslos.com, 1
 compeat.com, 1
 compeuphoria.com, 1
 comphare.nl, 1
 compibus.fr, 1
@@ -10721,17 +10993,16 @@ componentshop.co.uk, 1
 compostatebien.com.ar, 1
 compostelle-bouddha.fr, 1
 compoundingrxusa.com, 1
 compraneta.com, 0
 compraporinternet.online, 1
 comprarefiereygana.com, 1
 comprarimpresoras-3d.com, 1
 compreair.com, 1
-compreautomacao.com.br, 1
 compree.com, 1
 comprefitasadere.com.br, 1
 comprehensiveihc.com, 1
 compromised.com, 1
 compservice.in.ua, 1
 comptablevilledequebec.com, 1
 comptrollerofthecurrency.gov, 1
 comptu.com, 1
@@ -10748,16 +11019,17 @@ computer-science-schools.com, 1
 computerassistance.co.uk, 1
 computerbas.nl, 1
 computerbase.de, 1
 computercamaccgi.com, 1
 computercraft.net, 1
 computeremergency.com.au, 0
 computerfreunde-barmbek.de, 1
 computerhilfe-feucht.de, 1
+computerinfobits.com, 1
 computernetwerkwestland.nl, 1
 computerslotopschool.nl, 1
 computersystems.guru, 0
 computerwerk.org, 1
 computop.com, 1
 comtily.com, 1
 comunidadmontepinar.es, 1
 comvos.de, 1
@@ -10781,17 +11053,16 @@ concordsoftwareleasing.com, 1
 concretehermit.com, 0
 concretelevelingsystems.com, 1
 concreterepairatlanta.com, 1
 concreterepairconcreteraising.com, 1
 concursopublico.com.br, 1
 concursos.com.br, 1
 concursosabertos.com.br, 1
 concursuri.biz, 1
-condecom.com.br, 1
 condepenalba.com, 0
 condesaelectronics.com, 1
 condolencemessages.net, 1
 condominiosi.it, 1
 condominioweb.com, 1
 condosforcash.com, 1
 condroz-motors.be, 1
 conectadev.com, 1
@@ -10804,17 +11075,16 @@ conejovalleylighting.com, 1
 conejovalleyoutdoorlighting.com, 1
 conexiontransporte.com, 1
 conference-expert.eu, 1
 conference.dnsfor.me, 1
 confiancefoundation.org, 1
 confidential.network, 1
 config.schokokeks.org, 0
 confiwall.de, 1
-conformax.com.br, 1
 conformist.jp, 1
 confucio.cl, 1
 congafasdesol.com, 1
 congineer.com, 1
 congobunkering.com, 1
 conju.cat, 1
 conjugacao.com.br, 1
 conkret.ch, 1
@@ -10826,16 +11096,17 @@ conmedapps.com, 1
 conn.cx, 1
 connect-ed.network, 1
 connect-me.com, 1
 connect.dating, 1
 connect.facebook.net, 1
 connecta.store, 1
 connectavid.com, 1
 connectedcare.md, 1
+connectivia.it, 1
 connectmath.com, 1
 connectmy.car, 1
 connecto-data.com, 1
 connectum.eu, 1
 conner.work, 1
 connexas.eu, 1
 connext.de, 1
 connictro.de, 1
@@ -10871,16 +11142,17 @@ consilium-vitae.ch, 1
 consiliumvitae.ch, 1
 consill.com, 1
 console.ninja, 1
 console.rest, 1
 consommateuraverti.com, 1
 consonare.de, 1
 conspiracyservers.com, 1
 constant-rough.de, 1
+constares.de, 1
 constituenttracker.com, 1
 constitution.website, 1
 constructexpres.ro, 1
 constructieve.nl, 1
 construction-colleges.com, 1
 construction-student.co.uk, 1
 constructionjobs.com, 0
 constructive.men, 1
@@ -10917,22 +11189,22 @@ contrabass.net, 1
 contractdigital.co.uk, 1
 contractormountain.com, 1
 contractwriters.com, 1
 contrasentido.net, 1
 contraspin.co.nz, 1
 contratatupoliza.com, 1
 contributor.google.com, 1
 controlarlaansiedad.com, 1
-controlautocom.com.br, 1
 controlbooth.com, 1
 controle.net, 1
 controleer-maar-een-ander.nl, 1
 controllertech.com, 1
 controltickets.com.br, 1
+controlvoltage.cc, 1
 contunda.de, 1
 conv2pdf.com, 1
 convergence.fi, 1
 convergencela.com, 1
 convergnce.com, 1
 conversiepartners.nl, 1
 conversiones.com, 1
 convert.im, 1
@@ -10979,16 +11251,17 @@ cooljs.me, 1
 coolprylar.se, 1
 coolrc.me, 1
 cooltang.ooo, 1
 coolvibe.org, 1
 coolvox.com, 1
 coolwallet.io, 0
 coon.fr, 1
 coonawarrawines.com.au, 1
+cooperativa-je.net, 1
 coore.jp, 1
 coorpacademy.com, 1
 coorpintr.com, 1
 copdfoundation.org, 1
 copperandtileroofing.com, 1
 copperheados.com, 1
 coppermein.co.za, 1
 copplaw.com, 1
@@ -11028,22 +11301,24 @@ coreyjmahler.com, 1
 corgi.party, 1
 coribi.com, 1
 corinastefan.ro, 1
 corinnanese.de, 1
 corintech.net, 1
 coriolis.ch, 1
 corisu.co, 1
 corkedwinebar.com, 1
+corkerscrisps.co.uk, 1
 corksoncolumbus.com, 1
 corl3ss.com, 1
 corlija.com, 1
 corlinde.nl, 1
 corlitocaffe.de, 1
 cornercircle.co.uk, 1
+cornerstone.network, 1
 cornerstonecmc.org, 1
 corniche.com, 1
 corningcu.org, 1
 cornodo.com, 1
 corona-academy.com, 1
 corona-renderer.cloud, 1
 corona-renderer.com, 1
 coropiacere.org, 1
@@ -11065,17 +11340,19 @@ corpusslayer.com, 1
 corrbee.com, 1
 correct.cf, 1
 correcthorse.cf, 1
 correctiv.org, 1
 correctpaardbatterijnietje.nl, 1
 corrick.io, 1
 corrupted.io, 1
 corsa-b.uk, 1
+corscanplus.com, 1
 corsectra.com, 1
+corsicalaw.com, 1
 corsihaccpsicurezzalavoro.it, 1
 corso-antincendio.org, 1
 cortexitrecruitment.com, 1
 cortexx.nl, 1
 cortis-consulting.ch, 1
 cortisolsupplement.com, 1
 corvax.kiev.ua, 1
 corvus.eu.org, 1
@@ -11185,16 +11462,17 @@ cpcheats.co, 1
 cpd-education.co.uk, 1
 cpe-colleg.de, 1
 cpe-registry.com, 1
 cpe-registry.net, 1
 cpe-registry.org, 1
 cperegistry.com, 1
 cperegistry.net, 1
 cperegistry.org, 1
+cpgarmor.com, 1
 cphpvb.net, 1
 cplala.com, 1
 cplus.me, 1
 cplusplus.se, 1
 cppan.org, 1
 cppressinc.com, 1
 cpqcol.gov.co, 1
 cprheartcenter.com, 1
@@ -11208,16 +11486,17 @@ cpy.pt, 1
 cqn.ch, 1
 cr.search.yahoo.com, 0
 cr0nus.net, 1
 cr9499.com, 1
 cra-bank.com, 1
 cra-search.net, 1
 craazzyman21.at, 1
 crabfactory.com.my, 1
+crabrave.space, 1
 crackcat.de, 1
 cracker.in.th, 1
 crackers4cheese.com, 1
 crackle.io, 1
 crackorsquad.in, 1
 crackpfer.de, 1
 crackslut.eu, 1
 crackstation.net, 1
@@ -11284,16 +11563,17 @@ crc-search.com, 1
 crdmendoza.net, 1
 crea-etc.net, 1
 crea-shops.ch, 1
 crea.bg, 1
 crea.me, 1
 creadstudy.com, 1
 crealogix-online.com, 1
 creamcastles.co.uk, 1
+creampiepornvids.com, 1
 creamsoft.com, 1
 creared.edu.co, 1
 create-ls.jp, 1
 createcos.com, 1
 createme.com.pl, 1
 createursdefilms.com, 1
 creaticworld.net, 1
 creatieven.com, 1
@@ -11321,23 +11601,23 @@ creativesurvey.com, 1
 creativeweb.biz, 1
 creativewolf.net, 1
 creativosonline.org, 1
 creatixx-network.de, 0
 creato.top, 1
 creators-design.com, 1
 creators.co, 1
 creators.direct, 1
+creatorswave.com, 1
 creatujoya.com, 1
 crecips.com, 1
 crecman.fr, 1
 credential.eu, 1
 credex.bg, 1
 credigo.se, 1
-creditkarma.com, 1
 creditos-rapidos.com, 1
 creditozen.es, 1
 creditozen.mx, 1
 creditproautos.com, 0
 creditscoretalk.com, 1
 creditta.com, 1
 credittoken.io, 1
 creeks-coworking.com, 1
@@ -11361,23 +11641,25 @@ crew505.org, 1
 crgalvin.com, 1
 crgm.net, 1
 cribcore.com, 1
 crickey.eu, 1
 cricklewood.condos, 1
 criena.com, 1
 criena.net, 1
 crimbotrees.co.uk, 1
+crime-lawyers.com, 1
 crimefreeliving.com, 1
 crimesolutions.gov, 1
 crimevictims.gov, 1
 criminal-attorney.ru, 1
 criminal.enterprises, 1
 crinesdanzantes.be, 1
 crip-usk.ba, 1
+criptocert.com, 1
 criptolog.com, 1
 criscitos.it, 1
 crisisactual.com, 1
 crisisnextdoor.gov, 1
 crismatthews.com, 1
 crisp.chat, 1
 crisp.email, 1
 crisp.help, 1
@@ -11430,56 +11712,56 @@ crossfunctional.com, 1
 crosslifenutrition.co.uk, 1
 crossoverit.com, 1
 crosssellguide.com, 1
 crossway.nl, 1
 crow.tw, 1
 crowd.supply, 1
 crowdbox.net, 1
 crowdcloud.be, 1
-crowdliminal.com, 1
 crowdsim3d.com, 1
 crowdspire.org, 1
 crowdsupply.com, 1
 crowleymarine.com, 1
 crownaffairs.ch, 1
 crowncastles.co.uk, 1
 crownchessclub.com, 1
 crownmarqueehire.co.uk, 1
 crownpoint.com, 1
 crows.io, 1
 crox.co, 1
 croydonapartments.com.au, 1
 croydonbouncycastles.co.uk, 1
 crrev.com, 1
 crsmsodry.cz, 1
+crsoresina.it, 1
 crstat.ru, 1
 crt.cloud, 1
 crt.sh, 1
 crt2014-2024review.gov, 1
 cruisemoab.com, 1
 crumbcontrol.com, 1
 crunchrapps.com, 1
 crunchy.rocks, 1
 crustytoothpaste.net, 1
 crute.me, 1
 cruzadobalcazarabogados.com, 1
 crvv.me, 1
 cry.nu, 0
+cryobiz.com, 1
 cryogenix.net, 1
 cryoit.com, 1
 cryothanasia.com, 1
 cryp.no, 1
 crypkit.com, 1
 crypt.is-by.us, 1
 cryptagio.com, 1
 cryptearth.de, 1
 crypted.chat, 1
 crypteianetworks.com, 1
-crypto-armory.com, 1
 crypto.cat, 0
 crypto.graphics, 1
 crypto.is, 0
 cryptobin.co, 1
 cryptocaseproject.com, 1
 cryptocon.org, 1
 cryptofan.org, 1
 cryptography.ch, 1
@@ -11578,16 +11860,17 @@ cstanley.net, 1
 cstb.ch, 1
 cstp-marketing.com, 1
 cstrong.nl, 1
 csu.st, 1
 csust.ac.cn, 1
 csuw.net, 1
 csvalpha.nl, 1
 cswarzone.com, 1
+cswgmbh.de, 1
 ct.search.yahoo.com, 0
 ctc-transportation.com, 1
 ctcom-peru.com, 1
 ctcue.com, 1
 ctf.link, 1
 cthomas.work, 1
 cthulhuden.com, 1
 ctj.im, 1
@@ -11599,16 +11882,17 @@ ctnguyen.net, 1
 ctns.de, 1
 ctoforhire.com.au, 1
 ctomp.io, 0
 ctoresms.com, 1
 ctpe.net, 1
 ctr.id, 1
 ctrl.blog, 1
 ctrld.me, 1
+cttso.gov, 1
 cu247secure.ie, 1
 cub-bouncingcastles.co.uk, 1
 cubaal.com, 1
 cube-cloud.com, 1
 cube.builders, 1
 cubebot.io, 1
 cubebuilders.net, 1
 cubecart-demo.co.uk, 1
@@ -11618,31 +11902,34 @@ cubecraftcdn.com, 1
 cubecraftstore.com, 1
 cubecraftstore.net, 1
 cubekrowd.net, 1
 cubela.tech, 1
 cubetech.co.jp, 1
 cubia.de, 1
 cubia3.com, 1
 cubia4.com, 1
+cubiest.com, 1
 cubile.xyz, 1
 cubing.net, 1
 cublick.com, 1
 cubos.io, 0
 cubostecnologia.com, 0
 cubostecnologia.com.br, 0
 cubua.com, 1
+cuchichi.es, 1
 cuckoopalace.cn, 1
+cuddlecat.io, 1
 cuddlingyaks.com, 1
-cueca.com.br, 1
-cuecasonline.com.br, 1
+cudoo.de, 1
 cuegee.com, 1
 cuentasmutualamr.org.ar, 1
 cuetoems.com, 1
 cuibonobo.com, 1
+cuio.net, 1
 cultiv.nl, 1
 cultivo.bio, 1
 cultofd50.org, 1
 cultofperf.org.uk, 1
 cultura10.com, 1
 culturedcode.com, 1
 culturerain.com, 1
 cultureroll.com, 1
@@ -11703,16 +11990,17 @@ curveprotect.com, 1
 curveprotect.cz, 1
 curveprotect.net, 1
 curveprotect.org, 1
 curvissa.co.uk, 1
 curvylove.de, 1
 custamped.com, 1
 custodian.nl, 1
 custodyxchange.com, 1
+customcontract.network, 1
 customdissertation.com, 1
 customerbox.ir, 1
 customfilmworks.com, 1
 customfitbymj.net, 1
 customfitmarketing.com, 1
 customgear.com.au, 1
 customizeyourshower.com, 1
 customizeyoursink.com, 1
@@ -11772,16 +12060,17 @@ cwrau.com, 1
 cwrau.de, 1
 cwrau.info, 1
 cwrau.io, 1
 cwrau.me, 1
 cwrau.name, 1
 cwrau.rocks, 1
 cwrau.tech, 1
 cwrcoding.com, 1
+cwwise.com, 1
 cxadd.com, 1
 cy.ax, 1
 cyanghost.com, 1
 cybbh.space, 1
 cyber-computer.club, 1
 cyber-wolfs.com, 1
 cyber.cafe, 1
 cyber.je, 1
@@ -11805,16 +12094,17 @@ cyberguerrilla.info, 1
 cyberguerrilla.org, 1
 cyberhipsters.nl, 1
 cyberianhusky.com, 0
 cyberkov.com, 1
 cyberlab.kiev.ua, 0
 cyberlegal.co, 1
 cyberlightapp.com, 1
 cybermeldpunt.nl, 1
+cybermotives.com, 1
 cyberogism.com, 1
 cyberonesol.com, 1
 cyberoptic.de, 1
 cyberpeace.nl, 1
 cyberphaze.com, 1
 cyberpioneer.net, 0
 cyberpubonline.com, 1
 cyberregister.nl, 1
@@ -11911,16 +12201,17 @@ d-toys.com.ua, 1
 d-training.de, 1
 d.nf, 1
 d.nr, 1
 d00d.de, 1
 d0g.cc, 1
 d0m41n.name, 1
 d0xq.com, 1
 d0xq.net, 1
+d166.net, 1
 d2.gg, 1
 d2ph.com, 1
 d2qa61rbluifiq.cloudfront.net, 1
 d2s.uk, 1
 d3lab.net, 1
 d3x.pw, 1
 d3xt3r01.tk, 1
 d3xx3r.de, 1
@@ -11932,19 +12223,29 @@ d4rkdeagle.tk, 1
 d4wson.com, 1
 d4x.de, 1
 d66.nl, 1
 d6c5yfulmsbv6.cloudfront.net, 1
 d7211.com, 1
 d7215.com, 1
 d7216.com, 1
 d8.io, 1
+d8181.com, 1
+d88118.com, 1
+d8812.com, 1
+d8816.com, 1
+d8853.com, 1
 d88688.com, 1
+d88818.com, 1
+d88869.com, 1
 d88871.com, 1
 d88988.com, 1
+d88agqj.com, 1
+d88d99.com, 1
+d88md04.com, 1
 d8studio.net, 1
 d9c.eu, 1
 da-sh.cc, 1
 da.hn, 1
 da42foripad.com, 1
 daallexx.eu, 1
 dabasstacija.lv, 1
 dabblegoat.com, 1
@@ -11974,17 +12275,19 @@ daevel.fr, 1
 daevel.net, 1
 dafont.com, 1