diff --git a/app/(site)/(catalogs)/[slug]/content/domain-tools/article.mdx b/app/(site)/(catalogs)/[slug]/content/domain-tools/article.mdx
index a9d33d05..0a0e18a0 100644
--- a/app/(site)/(catalogs)/[slug]/content/domain-tools/article.mdx
+++ b/app/(site)/(catalogs)/[slug]/content/domain-tools/article.mdx
@@ -18,15 +18,15 @@ Find the question you're asking.
## Is WHOIS still used?
-Mostly not. ICANN stopped requiring WHOIS for most generic endings, such as `.org`, on 28 January 2025, and RDAP replaced it. People still call it a WHOIS lookup, but the lookup tools here read RDAP only. The [domain lookup](/domain-lookup) page explains how the two differ.
+Less and less. ICANN stopped requiring WHOIS for most generic endings, such as `.org`, on 28 January 2025, and RDAP replaced it. Some country endings, such as `.it`, `.eu`, and `.jp`, still offer only WHOIS. The tools here use RDAP when the registry offers it and the registry's WHOIS server when it doesn't. The [domain lookup](/domain-lookup) page explains how the two differ.
## Can every domain ending be looked up?
-No. Some endings, mostly country endings, don't publish RDAP. For those, the tools say they can't check the name, which doesn't mean it's free. The [TLD directory](/tld-directory) shows which endings can be looked up and links each registry.
+Most can, but not all. A few endings, mostly small country endings, have no lookup service the tools can use. For those, the tools say they can't check the name, which doesn't mean it's free. The [TLD directory](/tld-directory) shows how each ending is checked and links each registry.
## Can I see who owned a domain before?
-No. RDAP returns only the current record, with no past owners or old nameservers. Sites that show history use copies they saved over time.
+No. The registry returns only the current record, with no past owners or old nameservers. Sites that show history use copies they saved over time.
## What happens to the names I look up?
diff --git a/app/(site)/(directories)/tld-directory/content/lookups.mdx b/app/(site)/(directories)/tld-directory/content/lookups.mdx
index d07e5369..a0520ba6 100644
--- a/app/(site)/(directories)/tld-directory/content/lookups.mdx
+++ b/app/(site)/(directories)/tld-directory/content/lookups.mdx
@@ -1,11 +1,12 @@
## Why can't some domain extensions be looked up?
-Our domain tools read registration data over RDAP, and some registries don't offer it. The Lookups column shows where each ending stands.
+Our domain tools ask each ending's registry over RDAP when it offers it, and over WHOIS when it doesn't. A few registries offer neither in a form we can use. The Lookups column shows where each ending stands.
| Lookups | What it means |
| --- | --- |
| Yes | The registry is in [IANA's RDAP directory](https://data.iana.org/rdap/dns.json). |
| Via our own list | The registry runs RDAP but isn't in IANA's directory. We added it after testing it with a real domain. The name under the label runs the service. |
-| Cannot check | We know of no RDAP service for this ending, so our lookup and availability tools can't answer for it. |
+| Via WHOIS | The registry has no RDAP service we know of, so we read its WHOIS server. We added it after testing it with a real domain and a made-up one. WHOIS text can leave out fields that RDAP would show. |
+| Cannot check | We know of no RDAP service, and the WHOIS server is missing or didn't pass our tests. Our lookup and availability tools can't answer for this ending. |
-A "Cannot check" ending may still have a WHOIS server or a lookup on the registry's website. Its page in [IANA's root zone database](https://www.iana.org/domains/root/db) lists both. [Domain lookup](/domain-lookup) explains how RDAP and WHOIS differ.
+A "Cannot check" ending may still have a lookup on the registry's website. Its page in [IANA's root zone database](https://www.iana.org/domains/root/db) links to it. [Domain lookup](/domain-lookup) explains how RDAP and WHOIS differ.
diff --git a/app/(site)/(directories)/tld-directory/content/sources.mdx b/app/(site)/(directories)/tld-directory/content/sources.mdx
index e4426092..3089ae6a 100644
--- a/app/(site)/(directories)/tld-directory/content/sources.mdx
+++ b/app/(site)/(directories)/tld-directory/content/sources.mdx
@@ -2,6 +2,6 @@
- Type and operator: [IANA's root zone database](https://www.iana.org/domains/root/db).
- DNSSEC: DS records in the [root zone file](https://www.internic.net/domain/root.zone).
-- Lookups: [IANA's RDAP directory](https://data.iana.org/rdap/dns.json), plus the few registries we added by hand.
+- Lookups: [IANA's RDAP directory](https://data.iana.org/rdap/dns.json), the RDAP services we added by hand, and WHOIS servers listed in IANA's root zone database that passed our tests.
A script rebuilds the table from these sources. If a source changes shape, the script stops instead of saving a partial list.
diff --git a/app/(site)/(directories)/tld-directory/tld-table.tsx b/app/(site)/(directories)/tld-directory/tld-table.tsx
index 6fe236ad..0324d29b 100644
--- a/app/(site)/(directories)/tld-directory/tld-table.tsx
+++ b/app/(site)/(directories)/tld-directory/tld-table.tsx
@@ -8,7 +8,7 @@ export type TldRow = {
unicode: string | null;
type: string | null;
organisation: string | null;
- rdap: "bootstrap" | "override" | "none";
+ rdap: "bootstrap" | "override" | "whois" | "none";
rdapOperator: string | null;
dnssec: boolean;
isIdn: boolean;
@@ -124,6 +124,8 @@ export function TldTable({ rows }: { rows: TldRow[] }) {
Cannot check
) : row.rdap === "override" ? (
Via our own list
+ ) : row.rdap === "whois" ? (
+ Via WHOIS
) : (
Yes
)}
diff --git a/app/(site)/(tools)/domain-age/domain-age-tool.tsx b/app/(site)/(tools)/domain-age/domain-age-tool.tsx
index 54229fcb..0ad910fe 100644
--- a/app/(site)/(tools)/domain-age/domain-age-tool.tsx
+++ b/app/(site)/(tools)/domain-age/domain-age-tool.tsx
@@ -75,7 +75,7 @@ function unavailableResult(result: DomainRegistration) {
if (result.status === "no_service") {
return (
- See RDAP coverage in the TLD directory.
+ See which endings we can check in the TLD directory.
) : null}
diff --git a/app/(site)/(tools)/domain-availability/domain-availability-view.ts b/app/(site)/(tools)/domain-availability/domain-availability-view.ts
index 3506079c..63fc4797 100644
--- a/app/(site)/(tools)/domain-availability/domain-availability-view.ts
+++ b/app/(site)/(tools)/domain-availability/domain-availability-view.ts
@@ -15,7 +15,7 @@ export function formatAvailabilityDate(value: string | null) {
}
function failureDetail(status: RdapFetchStatus, tld: string) {
- if (status === "no_service") return `stack127 has no known RDAP service for .${tld}.`;
+ if (status === "no_service") return `stack127 has no lookup service it can use for .${tld}.`;
if (status === "rate_limited") return "The registry limited this request. Try again shortly.";
if (status === "blocked") return "The registry refused this request. Try again shortly.";
if (status === "timeout") return "The registry did not answer in time. Try again.";
diff --git a/app/(site)/(tools)/domain-expiry/domain-expiry-tool.tsx b/app/(site)/(tools)/domain-expiry/domain-expiry-tool.tsx
index 8a225bc9..4a6d2d59 100644
--- a/app/(site)/(tools)/domain-expiry/domain-expiry-tool.tsx
+++ b/app/(site)/(tools)/domain-expiry/domain-expiry-tool.tsx
@@ -143,7 +143,7 @@ function unavailableAnswer(result: DomainRegistration) {
return ;
}
if (result.status === "no_service") {
- return ;
+ return ;
}
if (result.status === "rate_limited" || result.status === "blocked") {
return ;
diff --git a/app/(site)/(tools)/domain-lookup/content/article.mdx b/app/(site)/(tools)/domain-lookup/content/article.mdx
index 4e84473a..059217a4 100644
--- a/app/(site)/(tools)/domain-lookup/content/article.mdx
+++ b/app/(site)/(tools)/domain-lookup/content/article.mdx
@@ -2,9 +2,11 @@
RDAP is the newer way to read public domain registration data, and it replaced WHOIS for generic endings such as `.com` and `.org`. Both read the same registry records. RDAP returns labeled fields and standard event dates, and can declare which data is withheld. WHOIS returns free text that differs by provider.
-Since 28 January 2025, ICANN no longer requires generic registries and registrars to run WHOIS, except for `.com`, `.name`, and `.post`. [ICANN's RDAP page](https://www.icann.org/rdap) explains the change. This lookup uses RDAP only.
+Since 28 January 2025, ICANN no longer requires generic registries and registrars to run WHOIS, except for `.com`, `.name`, and `.post`. [ICANN's RDAP page](https://www.icann.org/rdap) explains the change. This lookup uses RDAP whenever the registry offers it.
-Country endings such as `.uk` or `.de` set their own rules. Some publish RDAP and some don't. When an ending has none, the result shows `Cannot determine`, which says nothing about whether the name is registered. Use the registry's own lookup, which the ending's page in [IANA's root zone database](https://www.iana.org/domains/root/db) links to. The [TLD directory](/tld-directory) shows which endings have RDAP.
+Country endings such as `.uk` or `.it` set their own rules. Many publish RDAP, and some offer only WHOIS. For those, the lookup asks the registry's WHOIS server and reads the text into the same fields: dates, registrar, statuses, and nameservers. A field the text doesn't clearly state stays unknown, and the source line names the server, such as `whois.nic.it`.
+
+A few endings offer neither, or their WHOIS server didn't pass our tests. For those, the result shows `Cannot determine`, which says nothing about whether the name is registered. Use the registry's own lookup, which the ending's page in [IANA's root zone database](https://www.iana.org/domains/root/db) links to. The [TLD directory](/tld-directory) shows how each ending is checked.
A WHOIS site can show different details because it reads WHOIS text or an older saved copy. Owner details are a separate question, covered in the [registrant lookup](/domain-owner).
diff --git a/app/(site)/(tools)/domain-lookup/domain-lookup-tool.tsx b/app/(site)/(tools)/domain-lookup/domain-lookup-tool.tsx
index 5aa8e0a7..727d157b 100644
--- a/app/(site)/(tools)/domain-lookup/domain-lookup-tool.tsx
+++ b/app/(site)/(tools)/domain-lookup/domain-lookup-tool.tsx
@@ -195,7 +195,7 @@ function LookupResult({ result }: { result: DomainRegistration }) {
{registrarFailure ? The registrar response was incomplete. Registry facts remain available. : null}
{registered ? <> > : null}
- {result.status === "no_service" ? See RDAP coverage in the TLD directory.
: null}
+ {result.status === "no_service" ? See which endings we can check in the TLD directory.
: null}
{notes.length ? {notes.map((note) => {note} )} : null}
diff --git a/app/(site)/(tools)/domain-lookup/domain-lookup-view.ts b/app/(site)/(tools)/domain-lookup/domain-lookup-view.ts
index 633f0b15..015806a7 100644
--- a/app/(site)/(tools)/domain-lookup/domain-lookup-view.ts
+++ b/app/(site)/(tools)/domain-lookup/domain-lookup-view.ts
@@ -35,7 +35,7 @@ function statusClause(result: DomainRegistration) {
}
function unavailableDetail(status: RdapFetchStatus, tld: string) {
- if (status === "no_service") return `stack127 has no known RDAP service for .${tld}.`;
+ if (status === "no_service") return `stack127 has no lookup service it can use for .${tld}.`;
if (status === "rate_limited") return "The registry limited this request. Try again shortly.";
if (status === "blocked") return "The registry refused this request. Try again shortly.";
if (status === "timeout") return "The registry did not answer in time. Try again.";
diff --git a/app/(site)/(tools)/domain-owner/domain-owner-tool.tsx b/app/(site)/(tools)/domain-owner/domain-owner-tool.tsx
index b47788c1..c48f931c 100644
--- a/app/(site)/(tools)/domain-owner/domain-owner-tool.tsx
+++ b/app/(site)/(tools)/domain-owner/domain-owner-tool.tsx
@@ -184,7 +184,7 @@ function OwnerResult({ result }: { result: DomainRegistration }) {
{registrarFailure ? {result.registrarFetch ? "The registrar response failed." : "The registry did not advertise a registrar response."} Retry the lookup before treating missing contact data as unpublished. : null}
{registered ? <> See the full registration record for dates, status, nameservers, and DNSSEC.
> : null}
- {result.status === "no_service" ? See RDAP coverage in the TLD directory.
: null}
+ {result.status === "no_service" ? See which endings we can check in the TLD directory.
: null}
{notes.length ? {notes.map((note) => {note} )} : null}
diff --git a/app/(site)/(tools)/domain-owner/domain-owner-view.ts b/app/(site)/(tools)/domain-owner/domain-owner-view.ts
index da510ae0..bfd80330 100644
--- a/app/(site)/(tools)/domain-owner/domain-owner-view.ts
+++ b/app/(site)/(tools)/domain-owner/domain-owner-view.ts
@@ -48,7 +48,7 @@ function identityValues(result: DomainRegistration) {
}
function failureDetail(status: RdapFetchStatus, tld: string) {
- if (status === "no_service") return `stack127 has no known RDAP service for .${tld}.`;
+ if (status === "no_service") return `stack127 has no lookup service it can use for .${tld}.`;
if (status === "rate_limited") return "The registry limited this request. Try again shortly.";
if (status === "blocked") return "The registry refused this request. Try again shortly.";
if (status === "timeout") return "The registry did not answer in time. Try again.";
@@ -56,6 +56,8 @@ function failureDetail(status: RdapFetchStatus, tld: string) {
}
export function isRegistrarHopIncomplete(result: DomainRegistration) {
+ // WHOIS registries have no registrar hop, so nothing is missing.
+ if (result.registryFetch?.protocol === "whois") return false;
if (result.registrarFetch) return result.registrarFetch.status !== "registered";
return Boolean(result.registrar.name || result.registrar.ianaId || result.registrar.rdapUrl);
}
@@ -101,6 +103,13 @@ export function ownerVerdict(result: DomainRegistration) {
};
}
+ if (result.registryFetch?.protocol === "whois") {
+ return {
+ detail: `The registry's WHOIS record for ${result.query.unicode} names no registrant. WHOIS doesn't say why a field is left out.`,
+ value: "Not published",
+ };
+ }
+
const declared = declaredSources(result);
if (declared.length) {
const providers = declared.length === 2 ? "The registry and registrar declared redaction" : `${declared[0]} declared redaction`;
diff --git a/app/(site)/(tools)/domain-registrar/domain-registrar-tool.tsx b/app/(site)/(tools)/domain-registrar/domain-registrar-tool.tsx
index 389cbc89..c4694bd3 100644
--- a/app/(site)/(tools)/domain-registrar/domain-registrar-tool.tsx
+++ b/app/(site)/(tools)/domain-registrar/domain-registrar-tool.tsx
@@ -130,7 +130,7 @@ function RegistrarResult({ result }: { result: DomainRegistration }) {
{registered ? : null}
{registered && !identity.conflict ? : null}
{registrarHopFailed ? {result.registrarFetch ? "The registrar response failed." : "The registry did not advertise a registrar response."} Website, alternate-name, and additional abuse details may be missing. : null}
- {result.status === "no_service" ? See RDAP coverage in the TLD directory.
: null}
+ {result.status === "no_service" ? See which endings we can check in the TLD directory.
: null}
{registered && !identity.name && !identity.id ? Check the wider domain registration record.
: null}
diff --git a/app/(site)/(tools)/domain-registrar/domain-registrar-view.ts b/app/(site)/(tools)/domain-registrar/domain-registrar-view.ts
index ff5b40b1..2f2ccdfc 100644
--- a/app/(site)/(tools)/domain-registrar/domain-registrar-view.ts
+++ b/app/(site)/(tools)/domain-registrar/domain-registrar-view.ts
@@ -23,7 +23,7 @@ export function registrarIdentity(result: DomainRegistration) {
}
if (result.status !== "registered") {
const reason = result.status === "no_service"
- ? `stack127 has no known RDAP service for .${result.query.tld}.`
+ ? `stack127 has no lookup service it can use for .${result.query.tld}.`
: result.status === "timeout"
? "The registry did not answer in time. Try again."
: result.status === "rate_limited" || result.status === "blocked"
@@ -61,6 +61,8 @@ export function registrarIdentity(result: DomainRegistration) {
export function isRegistrarHopIncomplete(result: DomainRegistration) {
if (result.status !== "registered") return false;
+ // WHOIS registries have no registrar hop, so nothing is missing.
+ if (result.registryFetch?.protocol === "whois") return false;
if (result.registrarFetch) return result.registrarFetch.status !== "registered";
return Boolean(result.registrar.name || result.registrar.ianaId || result.registrar.rdapUrl);
}
diff --git a/app/(site)/(tools)/domain-report/domain-report-view.ts b/app/(site)/(tools)/domain-report/domain-report-view.ts
index 12e41b66..8dd40f67 100644
--- a/app/(site)/(tools)/domain-report/domain-report-view.ts
+++ b/app/(site)/(tools)/domain-report/domain-report-view.ts
@@ -43,7 +43,7 @@ export function coverageRows(result: DomainReport) {
id: "registration",
check: "Registration record",
state: registrationDone ? "Completed" : "Unavailable",
- source: result.registration?.registryFetch ? host(result.registration.registryFetch.url) ?? "Registry RDAP" : "Not available",
+ source: result.registration?.registryFetch ? host(result.registration.registryFetch.url) ?? "Registry" : "Not available",
note: registrationDone ? (result.registration?.registryFetch?.fromCache ? "Cached response" : "Registry response") : skippedReason(result, "Registration record"),
},
{
@@ -120,8 +120,9 @@ export function findingDetail(finding: ReportFinding) {
export function reportSourceRows(result: DomainReport) {
const rows: Array<{ id: string; label: string; value: string }> = [];
- for (const [label, fetch] of [["Registry RDAP", result.registration?.registryFetch], ["Registrar RDAP", result.registration?.registrarFetch]] as const) {
+ for (const [party, fetch] of [["Registry", result.registration?.registryFetch], ["Registrar", result.registration?.registrarFetch]] as const) {
if (!fetch || fetch.status === "no_service") continue;
+ const label = `${party} ${fetch.protocol === "whois" ? "WHOIS" : "RDAP"}`;
rows.push({ id: label, label, value: `${host(fetch.url) ?? "Host not reported"}, fetched ${formatReportDate(fetch.fetchedAt)}, ${fetch.fromCache ? "cached" : "live response"}` });
}
if (result.delegation) rows.push({ id: "dns", label: "DNS delegation", value: `${result.delegation.zone} via parent .${result.delegation.parentZone}, checked ${formatReportDate(result.delegation.checkedAt)}` });
diff --git a/app/(site)/(tools)/multi-tld-availability/multi-tld-tool.tsx b/app/(site)/(tools)/multi-tld-availability/multi-tld-tool.tsx
index f199ab47..676cd11a 100644
--- a/app/(site)/(tools)/multi-tld-availability/multi-tld-tool.tsx
+++ b/app/(site)/(tools)/multi-tld-availability/multi-tld-tool.tsx
@@ -14,9 +14,8 @@ import {
} from "./multi-tld-view";
import styles from "./multi-tld-tool.module.css";
-const OPTIONAL_TLDS = ["co", "me", "us", "de", "uk", "site", "online", "tech"];
+const OPTIONAL_TLDS = ["co", "me", "so", "sh", "gg", "to", "eu", "us", "de", "uk", "site", "online", "tech"];
const ALL_TLDS = [...DEFAULT_TLDS, ...OPTIONAL_TLDS];
-const NO_RDAP_SERVICE = new Set(["co", "me"]);
class MultiTldRequestError extends Error {
constructor(message: string, readonly fieldError = false) {
@@ -290,7 +289,7 @@ export function MultiTldTool() {
key={tld}
onChange={() => toggle(tld)}
>
- .{tld}{NO_RDAP_SERVICE.has(tld) ? No RDAP service : null}
+ .{tld}
);
})}
diff --git a/app/(site)/(tools)/multi-tld-availability/multi-tld-view.ts b/app/(site)/(tools)/multi-tld-availability/multi-tld-view.ts
index bcacfaea..0dcd2552 100644
--- a/app/(site)/(tools)/multi-tld-availability/multi-tld-view.ts
+++ b/app/(site)/(tools)/multi-tld-availability/multi-tld-view.ts
@@ -36,7 +36,7 @@ export function multiTldSummary(rows: MultiTldRow[]) {
}
export function resultDetail(row: MultiTldRow) {
- if (row.state === "cannot_check") return `No known RDAP service for .${row.tld}`;
+ if (row.state === "cannot_check") return `No lookup service for .${row.tld}`;
if (row.state === "check_failed") return row.detail || "The registry check failed.";
return null;
}
@@ -56,7 +56,7 @@ export function formatMultiTldDate(value: string) {
}
export function sourceAndFreshness(row: MultiTldRow) {
- if (row.state === "cannot_check") return { freshness: null, source: "No RDAP service" };
+ if (row.state === "cannot_check") return { freshness: null, source: "No lookup service" };
return {
freshness: row.fetchedAt ? `Fetched ${formatMultiTldDate(row.fetchedAt)}${row.fromCache ? ", from cache" : ", live response"}` : null,
source: row.sourceHost ?? "Registry source not reported",
diff --git a/app/(site)/(tools)/transfer-readiness/transfer-readiness-view.ts b/app/(site)/(tools)/transfer-readiness/transfer-readiness-view.ts
index d6db2aa6..943ddc6e 100644
--- a/app/(site)/(tools)/transfer-readiness/transfer-readiness-view.ts
+++ b/app/(site)/(tools)/transfer-readiness/transfer-readiness-view.ts
@@ -17,7 +17,7 @@ export function transferConclusion(result: TransferReadiness) {
const { registration } = result;
const domain = registration.query.unicode ?? registration.query.domain;
if (registration.status === "not_registered") return `${domain} has no registry record, so there is no registered domain to transfer.`;
- if (registration.status === "no_service") return `No RDAP service is available for .${registration.query.tld}, so public transfer readiness cannot be checked.`;
+ if (registration.status === "no_service") return `stack127 has no lookup service it can use for .${registration.query.tld}, so public transfer readiness cannot be checked.`;
if (registration.status !== "registered") return `Public transfer readiness could not be checked for ${domain}.`;
if (!transferPolicyApplies(result)) return `ICANN's gTLD Transfer Policy does not govern .${registration.query.tld}. Check the transfer rules for this country-code ending.`;
diff --git a/app/ui/tools/domain/domain-lookup-client.tsx b/app/ui/tools/domain/domain-lookup-client.tsx
index d3fc18f2..0c96487f 100644
--- a/app/ui/tools/domain/domain-lookup-client.tsx
+++ b/app/ui/tools/domain/domain-lookup-client.tsx
@@ -278,8 +278,8 @@ export function UnavailableNote({ registration }: { registration: DomainRegistra
We cannot check {registration.query.domain}.
- Nobody publishes a machine readable registration service for .{registration.query.tld}, so there
- is nothing for us to ask. That is a gap in what the ending offers, not a problem with the domain. The{" "}
+ We have no lookup service we can use for .{registration.query.tld}. Its registry offers none, or its
+ WHOIS server didn't pass our tests. That is a gap in what the ending offers, not a problem with the domain. The{" "}
TLD directory lists which endings we can and cannot check.
diff --git a/lib/domain/bootstrap.ts b/lib/domain/bootstrap.ts
index 39759a09..0f7cdf5c 100644
--- a/lib/domain/bootstrap.ts
+++ b/lib/domain/bootstrap.ts
@@ -1,11 +1,14 @@
/**
- * RDAP endpoint discovery: committed IANA bootstrap, then reviewed overrides,
- * then nothing. Nothing here touches the network.
+ * Registration endpoint discovery: IANA RDAP, reviewed RDAP, reviewed WHOIS.
+ * Nothing here touches the network. Unreviewed WHOIS discovery never enables it.
*/
import bootstrapData from "./data/rdap-bootstrap.json" with { type: "json" };
import overrideData from "./data/rdap-overrides.json" with { type: "json" };
import tldData from "./data/tlds.json" with { type: "json" };
+import whoisData from "./data/whois-reviewed.json" with { type: "json" };
+import whoisDiscovery from "./data/whois-servers.json" with { type: "json" };
+import type { WhoisService } from "./whois-parser.ts";
const services = bootstrapData.services as Record;
const overrides = overrideData.overrides as Record<
@@ -13,42 +16,64 @@ const overrides = overrideData.overrides as Record<
{ url: string; operator: string; verifiedWith: string; verifiedAt: string }
>;
const rootZoneTlds = tldData.tlds as string[];
+const rootZoneSet = new Set(rootZoneTlds);
export const BOOTSTRAP_PUBLICATION = bootstrapData.publication as string;
export const BOOTSTRAP_FETCHED_AT = bootstrapData.fetchedAt as string;
export const TLD_LIST_VERSION = tldData.version as string;
-export type CoverageSource = "bootstrap" | "override" | "none";
+export type CoverageSource = "bootstrap" | "override" | "whois" | "none";
export type TldCoverage = {
tld: string;
source: CoverageSource;
url: string | null;
+ host: string | null;
/** Named only for overrides, where a human chose the endpoint. */
operator: string | null;
/** True when the TLD is not in the current root zone at all. */
unknownTld: boolean;
};
-export function rdapServiceForTld(tld: string): TldCoverage {
+const whoisServices = whoisData.services as Record;
+const discoveredWhois = whoisDiscovery.services as Record;
+
+export function whoisServiceForTld(tld: string): WhoisService | null {
+ const key = tld.toLowerCase().replace(/^\./, "");
+ const service = whoisServices[key];
+ if (!rootZoneSet.has(key) || services[key] || overrides[key] || !service) return null;
+ if (discoveredWhois[key] !== service.server) return null;
+ // Missing verification is never coverage, even if an entry was added by mistake.
+ if (!service.server || !service.verifiedWith || !service.notFoundWith || !service.notFoundPattern || !service.verifiedAt) return null;
+ return service;
+}
+
+export function registrationServiceForTld(tld: string): TldCoverage {
const key = tld.toLowerCase().replace(/^\./, "");
- const unknownTld = !rootZoneTlds.includes(key);
+ const unknownTld = !rootZoneSet.has(key);
const bootstrapUrl = services[key];
- if (bootstrapUrl) return { tld: key, source: "bootstrap", url: bootstrapUrl, operator: null, unknownTld };
+ if (bootstrapUrl) return { tld: key, source: "bootstrap", url: bootstrapUrl, host: new URL(bootstrapUrl).hostname, operator: null, unknownTld };
const override = overrides[key];
if (override) {
- return { tld: key, source: "override", url: override.url, operator: override.operator, unknownTld };
+ return { tld: key, source: "override", url: override.url, host: new URL(override.url).hostname, operator: override.operator, unknownTld };
}
- return { tld: key, source: "none", url: null, operator: null, unknownTld };
+ const whois = whoisServiceForTld(key);
+ if (whois) return { tld: key, source: "whois", url: `whois://${whois.server}/`, host: whois.server, operator: null, unknownTld };
+
+ return { tld: key, source: "none", url: null, host: null, operator: null, unknownTld };
}
+/** Compatibility name; callers should use registrationServiceForTld for new work. */
+export const rdapServiceForTld = registrationServiceForTld;
+
export type CoverageSummary = {
rootZoneTlds: number;
bootstrapCovered: number;
overrideCovered: number;
+ whoisCovered: number;
covered: number;
uncovered: number;
checkedAt: string;
@@ -68,17 +93,22 @@ export function coverageSummary(): CoverageSummary {
if (cachedSummary) return cachedSummary;
let bootstrapCovered = 0;
let overrideCovered = 0;
+ let whoisCovered = 0;
for (const tld of rootZoneTlds) {
if (services[tld]) bootstrapCovered += 1;
else if (overrides[tld]) overrideCovered += 1;
+ else if (whoisServiceForTld(tld)) whoisCovered += 1;
}
cachedSummary = {
rootZoneTlds: rootZoneTlds.length,
bootstrapCovered,
overrideCovered,
- covered: bootstrapCovered + overrideCovered,
- uncovered: rootZoneTlds.length - bootstrapCovered - overrideCovered,
- checkedAt: BOOTSTRAP_FETCHED_AT,
+ whoisCovered,
+ covered: bootstrapCovered + overrideCovered + whoisCovered,
+ uncovered: rootZoneTlds.length - bootstrapCovered - overrideCovered - whoisCovered,
+ checkedAt: [BOOTSTRAP_FETCHED_AT, tldData.fetchedAt, whoisDiscovery.fetchedAt,
+ ...Object.values(overrides).map(entry => entry.verifiedAt),
+ ...Object.values(whoisServices).map(entry => entry.verifiedAt)].sort().at(-1) ?? BOOTSTRAP_FETCHED_AT,
tldListVersion: TLD_LIST_VERSION,
};
return cachedSummary;
diff --git a/lib/domain/cache.ts b/lib/domain/cache.ts
index 80021b16..607fa420 100644
--- a/lib/domain/cache.ts
+++ b/lib/domain/cache.ts
@@ -1,5 +1,5 @@
/**
- * Read through cache for RDAP responses.
+ * Read through cache for RDAP responses and parsed WHOIS registration facts.
*
* The DNS tools cache nothing. RDAP has to, because registries throttle by source
* IP and the whole site leaves through one address.
@@ -69,6 +69,7 @@ export async function readCachedRdap(url: string, source: RdapFetch["source"]):
httpStatus: row.http_status,
url,
source,
+ protocol: url.startsWith("whois://") ? "whois" : "rdap",
body: row.body,
error: null,
fetchedAt: new Date(row.fetched_at).toISOString(),
diff --git a/lib/domain/data/public-suffix.json b/lib/domain/data/public-suffix.json
index 47c6e51b..bdc9b01d 100644
--- a/lib/domain/data/public-suffix.json
+++ b/lib/domain/data/public-suffix.json
@@ -1,6 +1,6 @@
{
"source": "https://publicsuffix.org/list/public_suffix_list.dat",
- "fetchedAt": "2026-07-28",
+ "fetchedAt": "2026-10-14",
"section": "ICANN",
"exceptions": [
"www.ck",
@@ -383,6 +383,7 @@
"ecologia.bo",
"economia.bo",
"empresa.bo",
+ "ia.bo",
"indigena.bo",
"industria.bo",
"info.bo",
@@ -4863,9 +4864,11 @@
"org.pn",
"post",
"pr",
+ "ac.pr",
"biz.pr",
"com.pr",
"edu.pr",
+ "est.pr",
"gov.pr",
"info.pr",
"isla.pr",
@@ -4873,8 +4876,6 @@
"net.pr",
"org.pr",
"pro.pr",
- "ac.pr",
- "est.pr",
"prof.pr",
"pro",
"aaa.pro",
@@ -6326,7 +6327,6 @@
"jpmorgan",
"jprs",
"juegos",
- "juniper",
"kaufen",
"kddi",
"kerryhotels",
diff --git a/lib/domain/data/rdap-bootstrap.json b/lib/domain/data/rdap-bootstrap.json
index 52d3788a..56f08d37 100644
--- a/lib/domain/data/rdap-bootstrap.json
+++ b/lib/domain/data/rdap-bootstrap.json
@@ -1,7 +1,7 @@
{
"source": "https://data.iana.org/rdap/dns.json",
- "fetchedAt": "2026-07-28",
- "publication": "2026-07-23T02:00:03Z",
+ "fetchedAt": "2026-10-14",
+ "publication": "2026-09-30T23:00:03Z",
"services": {
"kg": "http://rdap.cctld.kg/",
"mg": "http://rdap.nic.mg/",
@@ -58,6 +58,8 @@
"zip": "https://pubapi.registry.google/rdap/",
"merck": "https://rdap-merck.dns.business/rdap/",
"alibaba": "https://rdap.aliregistry.cn/rdap/",
+ "bh": "https://rdap.bhregistry.bh/rdap/",
+ "xn--mgbcpq6gpa1a": "https://rdap.bhregistry.bh/rdap/",
"blog": "https://rdap.blog.fury.ca/rdap/",
"ca": "https://rdap.ca.fury.ca/rdap/",
"au": "https://rdap.cctld.au/rdap/",
@@ -127,6 +129,7 @@
"protection": "https://rdap.centralnic.com/protection/",
"qpon": "https://rdap.centralnic.com/qpon/",
"quest": "https://rdap.centralnic.com/quest/",
+ "radio": "https://rdap.centralnic.com/radio/",
"reit": "https://rdap.centralnic.com/reit/",
"rent": "https://rdap.centralnic.com/rent/",
"ruhr": "https://rdap.centralnic.com/ruhr/",
@@ -430,7 +433,6 @@
"jll": "https://rdap.identitydigital.services/rdap/",
"jot": "https://rdap.identitydigital.services/rdap/",
"juegos": "https://rdap.identitydigital.services/rdap/",
- "juniper": "https://rdap.identitydigital.services/rdap/",
"kaufen": "https://rdap.identitydigital.services/rdap/",
"kerryhotels": "https://rdap.identitydigital.services/rdap/",
"kerryproperties": "https://rdap.identitydigital.services/rdap/",
@@ -883,6 +885,8 @@
"olayangroup": "https://rdap.nic.olayangroup/",
"one": "https://rdap.nic.one/",
"open": "https://rdap.nic.open/",
+ "kr": "https://rdap.nic.or.kr/",
+ "xn--3e0b707e": "https://rdap.nic.or.kr/",
"osaka": "https://rdap.nic.osaka/",
"ovh": "https://rdap.nic.ovh/",
"paris": "https://rdap.nic.paris/",
@@ -901,7 +905,6 @@
"prudential": "https://rdap.nic.prudential/",
"quebec": "https://rdap.nic.quebec/",
"racing": "https://rdap.nic.racing/",
- "radio": "https://rdap.nic.radio/",
"re": "https://rdap.nic.re/",
"review": "https://rdap.nic.review/",
"rodeo": "https://rdap.nic.rodeo/",
diff --git a/lib/domain/data/rdap-overrides.json b/lib/domain/data/rdap-overrides.json
index 7bbe3949..eb90c542 100644
--- a/lib/domain/data/rdap-overrides.json
+++ b/lib/domain/data/rdap-overrides.json
@@ -1,23 +1,207 @@
{
- "comment": "Hand reviewed RDAP services for TLDs that run RDAP but have no IANA bootstrap entry. Every entry must be verified against a real domain before it is added, and the verification recorded here. Never guess a URL from a registry name.",
+ "comment": "Reviewed RDAP services missing from the IANA bootstrap. New entries require a real domain returning HTTP 200 with a domain object and a made-up name returning HTTP 404. Never guess an endpoint.",
"overrides": {
+ "ac": {
+ "url": "https://rdap.identitydigital.services/rdap/",
+ "operator": "Identity Digital",
+ "verifiedWith": "nic.ac",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ac",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "af": {
+ "url": "https://rdap.nic.af/",
+ "operator": "Ministry of Communications and IT",
+ "verifiedWith": "nic.af",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.af",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "ag": {
+ "url": "https://rdap.identitydigital.services/rdap/",
+ "operator": "Identity Digital",
+ "verifiedWith": "nic.ag",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ag",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "aw": {
+ "url": "https://rdap.nic.aw/",
+ "operator": "SETAR",
+ "verifiedWith": "nic.aw",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.aw",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "bz": {
+ "url": "https://rdap.identitydigital.services/rdap/",
+ "operator": "Identity Digital",
+ "verifiedWith": "google.bz",
+ "notFoundWith": "qxvbnmtlzra.bz",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "ch": {
+ "url": "https://rdap.nic.ch/",
+ "operator": "SWITCH The Swiss Education & Research Network",
+ "verifiedWith": "google.ch",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ch",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "ci": {
+ "url": "https://rdap.nic.ci/",
+ "operator": "Autorité de Régulation des Télécommunications/TIC de Côte d’lvoire (ARTCI)",
+ "verifiedWith": "nic.ci",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ci",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "co": {
+ "url": "https://rdap.registry.co/co/",
+ "operator": "Ministry of Information and Communications Technologies (MinTIC)",
+ "verifiedWith": "google.co",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.co",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "de": {
+ "url": "https://rdap.denic.de/",
+ "operator": "DENIC eG",
+ "verifiedWith": "denic.de",
+ "verifiedAt": "2026-07-28"
+ },
+ "ga": {
+ "url": "https://rdap.nic.ga/",
+ "operator": "Agence Nationale des Infrastructures Numériques et des Fréquences (ANINF)",
+ "verifiedWith": "nic.ga",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ga",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "gi": {
+ "url": "https://rdap.identitydigital.services/rdap/",
+ "operator": "Identity Digital",
+ "verifiedWith": "nic.gi",
+ "notFoundWith": "qxvbnmtlzra.gi",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "gl": {
+ "url": "https://rdap.centralnic.com/gl/",
+ "operator": "CentralNic",
+ "verifiedWith": "nic.gl",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.gl",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
"io": {
"url": "https://rdap.identitydigital.services/rdap/",
"operator": "Identity Digital",
"verifiedWith": "github.io",
"verifiedAt": "2026-07-28"
},
+ "lc": {
+ "url": "https://rdap.identitydigital.services/rdap/",
+ "operator": "Identity Digital",
+ "verifiedWith": "google.lc",
+ "notFoundWith": "qxvbnmtlzra.lc",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "li": {
+ "url": "https://rdap.nic.ch/",
+ "operator": "SWITCH The Swiss Education & Research Network",
+ "verifiedWith": "google.li",
+ "notFoundWith": "qxvbnmtlzra.li",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "me": {
+ "url": "https://rdap.identitydigital.services/rdap/",
+ "operator": "Identity Digital",
+ "verifiedWith": "about.me",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.me",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "mn": {
+ "url": "https://rdap.identitydigital.services/rdap/",
+ "operator": "Identity Digital",
+ "verifiedWith": "nic.mn",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.mn",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "my": {
+ "url": "https://rdap.centralnic.com/my/",
+ "operator": "CentralNic",
+ "verifiedWith": "nic.my",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.my",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "mz": {
+ "url": "https://rdap.nic.mz/",
+ "operator": "Centro de Informatica de Universidade Eduardo Mondlane",
+ "verifiedWith": "nic.mz",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.mz",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "pr": {
+ "url": "https://rdap.identitydigital.services/rdap/",
+ "operator": "Identity Digital",
+ "verifiedWith": "nic.pr",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.pr",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "sb": {
+ "url": "https://rdap.nic.sb/",
+ "operator": "Solomon Telekom Company Limited",
+ "verifiedWith": "nic.sb",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.sb",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "sc": {
+ "url": "https://rdap.identitydigital.services/rdap/",
+ "operator": "Identity Digital",
+ "verifiedWith": "nic.sc",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.sc",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "sh": {
+ "url": "https://rdap.identitydigital.services/rdap/",
+ "operator": "Identity Digital",
+ "verifiedWith": "nic.sh",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.sh",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
+ "so": {
+ "url": "https://rdap.nic.so/",
+ "operator": "Ministry of Post and Telecommunications",
+ "verifiedWith": "notion.so",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.so",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
+ },
"us": {
"url": "https://rdap.nic.us/",
"operator": "Registry Services, LLC",
"verifiedWith": "about.us",
"verifiedAt": "2026-07-28"
},
- "de": {
- "url": "https://rdap.denic.de/",
- "operator": "DENIC eG",
- "verifiedWith": "denic.de",
- "verifiedAt": "2026-07-28"
+ "vc": {
+ "url": "https://rdap.identitydigital.services/rdap/",
+ "operator": "Identity Digital",
+ "verifiedWith": "nic.vc",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.vc",
+ "notFoundStatus": 404,
+ "verifiedAt": "2026-10-14"
}
}
}
diff --git a/lib/domain/data/tld-directory.json b/lib/domain/data/tld-directory.json
index 69516306..5db9ff00 100644
--- a/lib/domain/data/tld-directory.json
+++ b/lib/domain/data/tld-directory.json
@@ -3,12 +3,15 @@
"rootDb": "https://www.iana.org/domains/root/db",
"rootZone": "https://www.internic.net/domain/root.zone"
},
- "fetchedAt": "2026-07-28",
- "tldListVersion": "2026072702",
+ "fetchedAt": "2026-10-14",
+ "tldListVersion": "2026101300",
"counts": {
- "total": 1438,
- "signed": 1349,
- "rdapCovered": 1203,
+ "total": 1437,
+ "signed": 1351,
+ "rdapCovered": 1229,
+ "whoisCovered": 77,
+ "lookupCovered": 1306,
+ "uncovered": 131,
"unassigned": 0,
"missingType": 0
},
@@ -21,6 +24,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.aaa",
"dnssec": true,
"isIdn": false
},
@@ -32,6 +37,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.aarp",
"dnssec": true,
"isIdn": false
},
@@ -43,6 +50,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -54,6 +63,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -65,6 +76,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -76,6 +89,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -87,6 +102,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.able",
"dnssec": true,
"isIdn": false
},
@@ -98,6 +115,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.abogado",
"dnssec": true,
"isIdn": false
},
@@ -109,6 +128,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.abudhabi",
"dnssec": true,
"isIdn": false
},
@@ -118,8 +139,10 @@
"type": "country-code",
"organisation": "Internet Computer Bureau Limited",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -131,6 +154,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -142,6 +167,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -153,6 +180,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.accountant",
"dnssec": true,
"isIdn": false
},
@@ -164,6 +193,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -175,6 +206,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.aco",
"dnssec": true,
"isIdn": false
},
@@ -186,6 +219,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -197,6 +232,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ad",
"dnssec": true,
"isIdn": false
},
@@ -208,6 +245,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -219,6 +258,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.adult",
"dnssec": true,
"isIdn": false
},
@@ -228,8 +269,10 @@
"type": "country-code",
"organisation": "Telecommunications and Digital Government Regulatory Authority (TDRA)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.aeda.net.ae",
"dnssec": false,
"isIdn": false
},
@@ -241,6 +284,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -252,6 +297,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -263,6 +310,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.aetna",
"dnssec": true,
"isIdn": false
},
@@ -272,8 +321,10 @@
"type": "country-code",
"organisation": "Ministry of Communications and IT",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Ministry of Communications and IT",
+ "lookupSource": "override",
+ "lookupHost": "rdap.nic.af",
"dnssec": true,
"isIdn": false
},
@@ -285,6 +336,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.afl",
"dnssec": true,
"isIdn": false
},
@@ -296,6 +349,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.africa",
"dnssec": true,
"isIdn": false
},
@@ -305,8 +360,10 @@
"type": "country-code",
"organisation": "UHSA School of Medicine",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -318,6 +375,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -329,6 +388,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -340,6 +401,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -351,6 +414,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.aig",
"dnssec": true,
"isIdn": false
},
@@ -362,6 +427,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -373,6 +440,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -384,6 +453,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.airtel",
"dnssec": true,
"isIdn": false
},
@@ -395,6 +466,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -406,7 +479,9 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
- "dnssec": false,
+ "lookupSource": "none",
+ "lookupHost": null,
+ "dnssec": true,
"isIdn": false
},
{
@@ -417,6 +492,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.aliregistry.cn",
"dnssec": true,
"isIdn": false
},
@@ -428,6 +505,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -439,6 +518,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -450,6 +531,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -461,6 +544,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ally",
"dnssec": true,
"isIdn": false
},
@@ -472,6 +557,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.alsace",
"dnssec": true,
"isIdn": false
},
@@ -483,6 +570,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.alstom",
"dnssec": true,
"isIdn": false
},
@@ -492,8 +581,10 @@
"type": "country-code",
"organisation": "\"Internet Society\" Non-governmental Organization",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.amnic.net",
"dnssec": true,
"isIdn": false
},
@@ -505,6 +596,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -516,6 +609,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.americanexpress",
"dnssec": true,
"isIdn": false
},
@@ -527,6 +622,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.americanfamily",
"dnssec": true,
"isIdn": false
},
@@ -538,6 +635,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.amex",
"dnssec": true,
"isIdn": false
},
@@ -549,6 +648,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.amfam",
"dnssec": true,
"isIdn": false
},
@@ -560,6 +661,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.amica",
"dnssec": true,
"isIdn": false
},
@@ -571,6 +674,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.amsterdam",
"dnssec": true,
"isIdn": false
},
@@ -582,6 +687,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.analytics",
"dnssec": true,
"isIdn": false
},
@@ -593,6 +700,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -604,6 +713,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.teleinfo.cn",
"dnssec": true,
"isIdn": false
},
@@ -615,6 +726,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.anz",
"dnssec": true,
"isIdn": false
},
@@ -626,6 +739,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -637,6 +752,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -648,6 +765,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -659,6 +778,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -670,6 +791,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.apple",
"dnssec": true,
"isIdn": false
},
@@ -681,6 +804,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -692,6 +817,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.aquarelle",
"dnssec": true,
"isIdn": false
},
@@ -703,6 +830,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ar",
"dnssec": true,
"isIdn": false
},
@@ -714,6 +843,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.arab",
"dnssec": true,
"isIdn": false
},
@@ -725,6 +856,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.aramco",
"dnssec": true,
"isIdn": false
},
@@ -736,6 +869,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -747,6 +882,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -758,6 +895,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -769,6 +908,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -780,6 +921,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -791,6 +934,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.as",
"dnssec": true,
"isIdn": false
},
@@ -802,6 +947,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -813,6 +960,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -824,6 +973,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -833,8 +984,10 @@
"type": "country-code",
"organisation": "nic.at GmbH",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.at",
"dnssec": true,
"isIdn": false
},
@@ -846,6 +999,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.athleta",
"dnssec": true,
"isIdn": false
},
@@ -857,6 +1012,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -868,6 +1025,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.cctld.au",
"dnssec": true,
"isIdn": false
},
@@ -879,6 +1038,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -890,6 +1051,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -901,6 +1064,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -912,6 +1077,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -923,6 +1090,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.auspost",
"dnssec": true,
"isIdn": false
},
@@ -934,6 +1103,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -945,6 +1116,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -956,6 +1129,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -965,8 +1140,10 @@
"type": "country-code",
"organisation": "SETAR",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "SETAR",
+ "lookupSource": "override",
+ "lookupHost": "rdap.nic.aw",
"dnssec": true,
"isIdn": false
},
@@ -978,6 +1155,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -987,8 +1166,10 @@
"type": "country-code",
"organisation": "Ålands landskapsregering",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.ax",
"dnssec": true,
"isIdn": false
},
@@ -1000,6 +1181,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.axa",
"dnssec": true,
"isIdn": false
},
@@ -1011,6 +1194,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -1022,6 +1207,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -1033,6 +1220,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -1044,6 +1233,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -1055,6 +1246,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": false
},
@@ -1066,6 +1259,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.banamex",
"dnssec": true,
"isIdn": false
},
@@ -1077,6 +1272,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1088,6 +1285,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.bank",
"dnssec": true,
"isIdn": false
},
@@ -1099,6 +1298,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.bar",
"dnssec": true,
"isIdn": false
},
@@ -1110,6 +1311,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.barcelona",
"dnssec": true,
"isIdn": false
},
@@ -1121,6 +1324,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1132,6 +1337,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1143,6 +1350,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1154,6 +1363,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1165,6 +1376,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.baseball",
"dnssec": true,
"isIdn": false
},
@@ -1176,6 +1389,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.basketball",
"dnssec": true,
"isIdn": false
},
@@ -1187,6 +1402,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.bauhaus",
"dnssec": true,
"isIdn": false
},
@@ -1198,6 +1415,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.bayern",
"dnssec": true,
"isIdn": false
},
@@ -1209,6 +1428,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -1220,6 +1441,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -1231,6 +1454,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1242,6 +1467,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -1253,6 +1480,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1264,6 +1493,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.bcn",
"dnssec": true,
"isIdn": false
},
@@ -1275,6 +1506,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -1284,8 +1517,10 @@
"type": "country-code",
"organisation": "DNS Belgium vzw/asbl",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.dns.be",
"dnssec": true,
"isIdn": false
},
@@ -1297,6 +1532,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1308,6 +1545,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -1319,6 +1558,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.beer",
"dnssec": true,
"isIdn": false
},
@@ -1330,6 +1571,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.berlin",
"dnssec": true,
"isIdn": false
},
@@ -1341,6 +1584,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -1352,6 +1597,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1363,6 +1610,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1372,8 +1621,10 @@
"type": "country-code",
"organisation": "Autorité de Régulation des Communications Electroniques et des Postes (ARCEP)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.registre.bf",
"dnssec": true,
"isIdn": false
},
@@ -1383,8 +1634,10 @@
"type": "country-code",
"organisation": "Register.BG",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.register.bg",
"dnssec": true,
"isIdn": false
},
@@ -1394,8 +1647,10 @@
"type": "country-code",
"organisation": "Telecommunications Regulatory Authority (TRA)",
"assigned": true,
- "rdap": "none",
+ "rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.bhregistry.bh",
"dnssec": true,
"isIdn": false
},
@@ -1407,6 +1662,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.bharti",
"dnssec": true,
"isIdn": false
},
@@ -1416,8 +1673,10 @@
"type": "country-code",
"organisation": "Centre National de l'Informatique",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois1.nic.bi",
"dnssec": true,
"isIdn": false
},
@@ -1429,6 +1688,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.bible",
"dnssec": true,
"isIdn": false
},
@@ -1440,6 +1701,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.bid",
"dnssec": true,
"isIdn": false
},
@@ -1451,6 +1714,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1462,6 +1727,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -1473,6 +1740,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1484,6 +1753,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1495,6 +1766,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.biz",
"dnssec": true,
"isIdn": false
},
@@ -1504,8 +1777,10 @@
"type": "country-code",
"organisation": "Autorité de Régulation des Communications Electroniques et de la Poste du Bénin (ARCEP BENIN)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.bj",
"dnssec": true,
"isIdn": false
},
@@ -1517,6 +1792,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1528,6 +1805,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.blackfriday",
"dnssec": true,
"isIdn": false
},
@@ -1539,6 +1818,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -1550,6 +1831,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.blog.fury.ca",
"dnssec": true,
"isIdn": false
},
@@ -1561,6 +1844,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1572,6 +1857,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1583,6 +1870,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1594,6 +1883,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1605,6 +1896,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -1614,8 +1907,10 @@
"type": "country-code",
"organisation": "Authority for Info-communications Technology Industry of Brunei Darussalam (AITI)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.bnnic.bn",
"dnssec": true,
"isIdn": false
},
@@ -1627,6 +1922,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1634,10 +1931,12 @@
"tld": "bo",
"unicode": null,
"type": "country-code",
- "organisation": "Agencia para el Desarrollo de la Información de la Sociedad en Bolivia",
+ "organisation": "Agencia de Gobierno Electrónico y Tecnologías de Información y Comunicación",
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -1649,6 +1948,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -1660,6 +1961,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1671,6 +1974,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1682,6 +1987,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gtlds.nic.br",
"dnssec": true,
"isIdn": false
},
@@ -1693,6 +2000,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -1704,6 +2013,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -1715,6 +2026,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -1726,6 +2039,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.booking",
"dnssec": true,
"isIdn": false
},
@@ -1737,6 +2052,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1748,6 +2065,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.bostik",
"dnssec": true,
"isIdn": false
},
@@ -1759,6 +2078,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.boston",
"dnssec": true,
"isIdn": false
},
@@ -1770,6 +2091,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -1781,6 +2104,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1792,6 +2117,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -1803,6 +2130,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registro.br",
"dnssec": true,
"isIdn": false
},
@@ -1814,6 +2143,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1825,6 +2156,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -1836,6 +2169,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -1847,6 +2182,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1858,6 +2195,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -1869,6 +2208,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.brussels",
"dnssec": true,
"isIdn": false
},
@@ -1880,6 +2221,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -1891,6 +2234,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -1902,6 +2247,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -1913,6 +2260,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1924,6 +2273,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -1935,6 +2286,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -1946,6 +2299,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.buzz",
"dnssec": true,
"isIdn": false
},
@@ -1957,6 +2312,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -1968,6 +2325,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -1977,8 +2336,10 @@
"type": "country-code",
"organisation": "Belarusian Cloud Technologies LLC",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.cctld.by",
"dnssec": true,
"isIdn": false
},
@@ -1988,8 +2349,10 @@
"type": "country-code",
"organisation": "University of Belize",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2001,6 +2364,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.bzh",
"dnssec": true,
"isIdn": false
},
@@ -2012,6 +2377,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ca.fury.ca",
"dnssec": true,
"isIdn": false
},
@@ -2023,6 +2390,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2034,6 +2403,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2045,6 +2416,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -2056,6 +2429,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -2067,6 +2442,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.calvinklein",
"dnssec": true,
"isIdn": false
},
@@ -2078,6 +2455,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -2089,6 +2468,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2100,6 +2481,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2111,6 +2494,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -2122,6 +2507,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.capetown",
"dnssec": true,
"isIdn": false
},
@@ -2133,6 +2520,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2144,6 +2533,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.capitalone",
"dnssec": true,
"isIdn": false
},
@@ -2155,6 +2546,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -2166,6 +2559,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.caravan",
"dnssec": true,
"isIdn": false
},
@@ -2177,6 +2572,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2188,6 +2585,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2199,6 +2598,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -2210,6 +2611,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2221,6 +2624,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -2232,6 +2637,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.casa",
"dnssec": true,
"isIdn": false
},
@@ -2243,6 +2650,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -2254,6 +2663,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2265,6 +2676,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2276,6 +2689,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cat",
"dnssec": true,
"isIdn": false
},
@@ -2287,6 +2702,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2298,6 +2715,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.catholic",
"dnssec": true,
"isIdn": false
},
@@ -2309,6 +2728,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cba",
"dnssec": true,
"isIdn": false
},
@@ -2320,6 +2741,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cbn",
"dnssec": true,
"isIdn": false
},
@@ -2331,6 +2754,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cbre",
"dnssec": true,
"isIdn": false
},
@@ -2342,6 +2767,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": false
},
@@ -2353,6 +2780,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -2364,6 +2793,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2375,6 +2806,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -2386,6 +2819,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2397,6 +2832,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -2408,6 +2845,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2419,6 +2858,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -2430,6 +2871,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -2439,8 +2882,10 @@
"type": "country-code",
"organisation": "SWITCH The Swiss Education & Research Network",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "SWITCH The Swiss Education & Research Network",
+ "lookupSource": "override",
+ "lookupHost": "rdap.nic.ch",
"dnssec": true,
"isIdn": false
},
@@ -2452,6 +2897,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2463,6 +2910,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -2474,6 +2923,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.publicinterestregistry.org",
"dnssec": true,
"isIdn": false
},
@@ -2485,6 +2936,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.chase",
"dnssec": true,
"isIdn": false
},
@@ -2496,6 +2949,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2507,6 +2962,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2518,6 +2975,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.chintai",
"dnssec": true,
"isIdn": false
},
@@ -2529,6 +2988,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -2540,6 +3001,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -2551,6 +3014,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2560,8 +3025,10 @@
"type": "country-code",
"organisation": "Autorité de Régulation des Télécommunications/TIC de Côte d’lvoire (ARTCI)",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Autorité de Régulation des Télécommunications/TIC de Côte d’lvoire (ARTCI)",
+ "lookupSource": "override",
+ "lookupHost": "rdap.nic.ci",
"dnssec": true,
"isIdn": false
},
@@ -2573,6 +3040,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2584,6 +3053,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2595,6 +3066,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cisco",
"dnssec": true,
"isIdn": false
},
@@ -2606,6 +3079,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2617,6 +3092,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.citi",
"dnssec": true,
"isIdn": false
},
@@ -2628,6 +3105,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": false
},
@@ -2639,6 +3118,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2650,6 +3131,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -2659,8 +3142,10 @@
"type": "country-code",
"organisation": "NIC Chile (University of Chile)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.cl",
"dnssec": true,
"isIdn": false
},
@@ -2672,6 +3157,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2683,6 +3170,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2694,6 +3183,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -2705,6 +3196,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2716,6 +3209,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2727,6 +3222,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2738,6 +3235,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.cloud",
"dnssec": true,
"isIdn": false
},
@@ -2749,6 +3248,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.club",
"dnssec": true,
"isIdn": false
},
@@ -2760,6 +3261,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2771,6 +3274,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cm",
"dnssec": true,
"isIdn": false
},
@@ -2780,8 +3285,10 @@
"type": "country-code",
"organisation": "China Internet Network Information Center (CNNIC)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.cnnic.cn",
"dnssec": true,
"isIdn": false
},
@@ -2791,8 +3298,10 @@
"type": "country-code",
"organisation": "Ministry of Information and Communications Technologies (MinTIC)",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Ministry of Information and Communications Technologies (MinTIC)",
+ "lookupSource": "override",
+ "lookupHost": "rdap.registry.co",
"dnssec": true,
"isIdn": false
},
@@ -2804,6 +3313,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2815,6 +3326,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2826,6 +3339,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2837,6 +3352,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -2848,6 +3365,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ryce-rsp.com",
"dnssec": true,
"isIdn": false
},
@@ -2859,6 +3378,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.verisign.com",
"dnssec": true,
"isIdn": false
},
@@ -2870,6 +3391,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.commbank",
"dnssec": true,
"isIdn": false
},
@@ -2881,6 +3404,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2892,6 +3417,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2903,6 +3430,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.compare",
"dnssec": true,
"isIdn": false
},
@@ -2914,6 +3443,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2925,6 +3456,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": false
},
@@ -2936,6 +3469,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2947,6 +3482,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2958,6 +3495,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2969,6 +3508,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2980,6 +3521,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -2991,6 +3534,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cooking",
"dnssec": true,
"isIdn": false
},
@@ -3002,6 +3547,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3013,6 +3560,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.coop",
"dnssec": true,
"isIdn": false
},
@@ -3024,6 +3573,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.corsica",
"dnssec": true,
"isIdn": false
},
@@ -3035,6 +3586,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -3046,6 +3599,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3057,6 +3612,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3068,6 +3625,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.courses",
"dnssec": true,
"isIdn": false
},
@@ -3079,6 +3638,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cpa",
"dnssec": true,
"isIdn": false
},
@@ -3090,6 +3651,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cr",
"dnssec": true,
"isIdn": false
},
@@ -3101,6 +3664,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3112,6 +3677,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3123,6 +3690,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.coop",
"dnssec": true,
"isIdn": false
},
@@ -3134,6 +3703,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cricket",
"dnssec": true,
"isIdn": false
},
@@ -3145,6 +3716,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.crown.fury.ca",
"dnssec": true,
"isIdn": false
},
@@ -3156,6 +3729,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3167,6 +3742,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3178,6 +3755,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3189,6 +3768,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -3200,6 +3781,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cuisinella",
"dnssec": true,
"isIdn": false
},
@@ -3211,6 +3794,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cv",
"dnssec": false,
"isIdn": false
},
@@ -3222,6 +3807,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -3233,6 +3820,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cx",
"dnssec": true,
"isIdn": false
},
@@ -3244,6 +3833,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -3255,6 +3846,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -3266,6 +3859,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -3277,6 +3872,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.cz",
"dnssec": true,
"isIdn": false
},
@@ -3288,6 +3885,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -3299,6 +3898,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3310,6 +3911,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -3321,6 +3924,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.date",
"dnssec": true,
"isIdn": false
},
@@ -3332,6 +3937,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3343,6 +3950,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -3354,6 +3963,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -3365,6 +3976,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -3376,6 +3989,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.dds",
"dnssec": true,
"isIdn": false
},
@@ -3387,6 +4002,8 @@
"assigned": true,
"rdap": "override",
"rdapOperator": "DENIC eG",
+ "lookupSource": "override",
+ "lookupHost": "rdap.denic.de",
"dnssec": true,
"isIdn": false
},
@@ -3398,6 +4015,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -3409,6 +4028,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -3420,6 +4041,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3431,6 +4054,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3442,6 +4067,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3453,6 +4080,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.dell",
"dnssec": true,
"isIdn": false
},
@@ -3464,6 +4093,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -3475,6 +4106,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3486,6 +4119,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3497,6 +4132,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3508,6 +4145,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3519,6 +4158,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -3530,6 +4171,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.design",
"dnssec": true,
"isIdn": false
},
@@ -3541,6 +4184,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -3552,6 +4197,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -3563,6 +4210,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3574,6 +4223,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -3585,6 +4236,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3596,6 +4249,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3607,6 +4262,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3618,6 +4275,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3629,6 +4288,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3640,6 +4301,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -3651,6 +4314,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -3662,7 +4327,9 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
- "dnssec": false,
+ "lookupSource": "none",
+ "lookupHost": null,
+ "dnssec": true,
"isIdn": false
},
{
@@ -3671,8 +4338,10 @@
"type": "country-code",
"organisation": "Dansk Internet Forum",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.punktum.dk",
"dnssec": true,
"isIdn": false
},
@@ -3682,8 +4351,10 @@
"type": "country-code",
"organisation": "DotDM Corporation",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.dmdomains.dm",
"dnssec": true,
"isIdn": false
},
@@ -3695,6 +4366,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -3704,8 +4377,10 @@
"type": "country-code",
"organisation": "Pontificia Universidad Catolica Madre y Maestra, Recinto Santo Tomas de Aquino",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.do",
"dnssec": false,
"isIdn": false
},
@@ -3717,6 +4392,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -3728,6 +4405,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3739,6 +4418,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3750,6 +4431,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3761,6 +4444,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -3772,6 +4457,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.download",
"dnssec": true,
"isIdn": false
},
@@ -3783,6 +4470,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -3794,6 +4483,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -3805,6 +4496,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.dubai",
"dnssec": true,
"isIdn": false
},
@@ -3816,6 +4509,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.dupont",
"dnssec": true,
"isIdn": false
},
@@ -3827,6 +4522,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.durban",
"dnssec": true,
"isIdn": false
},
@@ -3838,6 +4535,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -3849,6 +4548,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -3858,8 +4559,10 @@
"type": "country-code",
"organisation": "CERIST",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.dz",
"dnssec": true,
"isIdn": false
},
@@ -3871,6 +4574,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.earth",
"dnssec": true,
"isIdn": false
},
@@ -3882,6 +4587,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -3893,6 +4600,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.ec",
"dnssec": true,
"isIdn": false
},
@@ -3904,6 +4613,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.eco.fury.ca",
"dnssec": true,
"isIdn": false
},
@@ -3915,6 +4626,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3924,8 +4637,10 @@
"type": "sponsored",
"organisation": "EDUCAUSE",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.educause.edu",
"dnssec": true,
"isIdn": false
},
@@ -3937,6 +4652,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3946,8 +4663,10 @@
"type": "country-code",
"organisation": "Eesti Interneti Sihtasutus (EIS)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.tld.ee",
"dnssec": true,
"isIdn": false
},
@@ -3959,6 +4678,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -3970,6 +4691,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3981,6 +4704,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -3992,6 +4717,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4003,6 +4730,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4014,6 +4743,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4025,6 +4756,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4036,6 +4769,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -4047,6 +4782,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4058,6 +4795,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -4069,6 +4808,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4080,6 +4821,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.erni",
"dnssec": true,
"isIdn": false
},
@@ -4091,6 +4834,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -4102,6 +4847,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -4113,6 +4860,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4124,6 +4873,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -4133,8 +4884,10 @@
"type": "country-code",
"organisation": "EURid vzw",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.eu",
"dnssec": true,
"isIdn": false
},
@@ -4146,6 +4899,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.eurovision",
"dnssec": true,
"isIdn": false
},
@@ -4157,6 +4912,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.eus",
"dnssec": true,
"isIdn": false
},
@@ -4168,6 +4925,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4179,6 +4938,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4190,6 +4951,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4201,6 +4964,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4212,6 +4977,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4223,6 +4990,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4234,6 +5003,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4245,6 +5016,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4256,6 +5029,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -4267,6 +5042,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.faith",
"dnssec": true,
"isIdn": false
},
@@ -4278,6 +5055,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4289,6 +5068,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4300,6 +5081,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -4311,6 +5094,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4322,6 +5107,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.farmers",
"dnssec": true,
"isIdn": false
},
@@ -4333,6 +5120,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.fashion",
"dnssec": true,
"isIdn": false
},
@@ -4344,6 +5133,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -4355,6 +5146,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4366,6 +5159,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -4377,6 +5172,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4388,6 +5185,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ferrero",
"dnssec": true,
"isIdn": false
},
@@ -4399,6 +5198,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.fi",
"dnssec": true,
"isIdn": false
},
@@ -4410,6 +5211,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4421,6 +5224,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4432,6 +5237,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.film",
"dnssec": true,
"isIdn": false
},
@@ -4443,6 +5250,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gtlds.nic.br",
"dnssec": true,
"isIdn": false
},
@@ -4454,6 +5263,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4465,6 +5276,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4476,6 +5289,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -4487,6 +5302,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -4498,6 +5315,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.firmdale",
"dnssec": true,
"isIdn": false
},
@@ -4509,6 +5328,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4520,6 +5341,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.fishing",
"dnssec": true,
"isIdn": false
},
@@ -4531,6 +5354,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.fit",
"dnssec": true,
"isIdn": false
},
@@ -4542,6 +5367,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4553,6 +5380,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "www.rdap.fj",
"dnssec": true,
"isIdn": false
},
@@ -4564,6 +5393,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -4575,6 +5406,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.flickr",
"dnssec": true,
"isIdn": false
},
@@ -4586,6 +5419,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4597,6 +5432,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.flir",
"dnssec": true,
"isIdn": false
},
@@ -4608,6 +5445,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4619,6 +5458,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -4630,6 +5471,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -4641,6 +5484,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -4652,6 +5497,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -4663,6 +5510,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -4674,6 +5523,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -4685,6 +5536,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4696,6 +5549,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ford",
"dnssec": true,
"isIdn": false
},
@@ -4707,6 +5562,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4718,6 +5575,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4729,6 +5588,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -4740,6 +5601,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.publicinterestregistry.org",
"dnssec": true,
"isIdn": false
},
@@ -4751,6 +5614,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.fox",
"dnssec": true,
"isIdn": false
},
@@ -4762,6 +5627,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.fr",
"dnssec": true,
"isIdn": false
},
@@ -4773,6 +5640,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -4784,6 +5653,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -4795,6 +5666,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -4806,6 +5679,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4817,6 +5692,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.frontier",
"dnssec": true,
"isIdn": false
},
@@ -4828,6 +5705,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ftr",
"dnssec": true,
"isIdn": false
},
@@ -4839,6 +5718,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -4850,6 +5731,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.radix.host",
"dnssec": true,
"isIdn": false
},
@@ -4861,6 +5744,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4872,6 +5757,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4883,6 +5770,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4894,6 +5783,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4903,8 +5794,10 @@
"type": "country-code",
"organisation": "Agence Nationale des Infrastructures Numériques et des Fréquences (ANINF)",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Agence Nationale des Infrastructures Numériques et des Fréquences (ANINF)",
+ "lookupSource": "override",
+ "lookupHost": "rdap.nic.ga",
"dnssec": true,
"isIdn": false
},
@@ -4916,6 +5809,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.gal",
"dnssec": true,
"isIdn": false
},
@@ -4927,6 +5822,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4938,6 +5835,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4949,6 +5848,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4960,6 +5861,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -4971,6 +5874,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -4982,6 +5887,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.gap",
"dnssec": true,
"isIdn": false
},
@@ -4993,6 +5900,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.garden",
"dnssec": true,
"isIdn": false
},
@@ -5004,6 +5913,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.gay",
"dnssec": true,
"isIdn": false
},
@@ -5015,6 +5926,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -5026,6 +5939,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -5037,6 +5952,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -5048,6 +5965,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.gdn",
"dnssec": true,
"isIdn": false
},
@@ -5057,8 +5976,10 @@
"type": "country-code",
"organisation": "Caucasus Online LLC",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.ge",
"dnssec": true,
"isIdn": false
},
@@ -5070,6 +5991,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.gea",
"dnssec": true,
"isIdn": false
},
@@ -5081,6 +6004,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -5092,6 +6017,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5103,6 +6030,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.george",
"dnssec": true,
"isIdn": false
},
@@ -5112,8 +6041,10 @@
"type": "country-code",
"organisation": "CANAL+ TELECOM",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.mediaserv.net",
"dnssec": false,
"isIdn": false
},
@@ -5123,8 +6054,10 @@
"type": "country-code",
"organisation": "Island Networks Ltd.",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.gg",
"dnssec": true,
"isIdn": false
},
@@ -5136,6 +6069,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -5145,8 +6080,10 @@
"type": "country-code",
"organisation": "Network Computer Systems Limited",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.gh",
"dnssec": false,
"isIdn": false
},
@@ -5156,8 +6093,10 @@
"type": "country-code",
"organisation": "Sapphire Networks",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5169,6 +6108,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.gift",
"dnssec": true,
"isIdn": false
},
@@ -5180,6 +6121,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5191,6 +6134,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.publicinterestregistry.org",
"dnssec": true,
"isIdn": false
},
@@ -5202,6 +6147,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.publicinterestregistry.org",
"dnssec": true,
"isIdn": false
},
@@ -5211,8 +6158,10 @@
"type": "country-code",
"organisation": "TELE Greenland A/S",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "CentralNic",
+ "lookupSource": "override",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -5224,6 +6173,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5235,6 +6186,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -5246,6 +6199,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5257,6 +6212,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gtlds.nic.br",
"dnssec": true,
"isIdn": false
},
@@ -5268,6 +6225,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -5279,6 +6238,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -5290,6 +6251,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5301,6 +6264,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -5312,6 +6277,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.gmx",
"dnssec": true,
"isIdn": false
},
@@ -5321,8 +6288,10 @@
"type": "country-code",
"organisation": "Centre National des Sciences Halieutiques de Boussoura",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.ande.gov.gn",
"dnssec": true,
"isIdn": false
},
@@ -5334,6 +6303,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.godaddy",
"dnssec": true,
"isIdn": false
},
@@ -5345,6 +6316,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5356,6 +6329,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -5367,6 +6342,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5378,6 +6355,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5389,6 +6368,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -5400,6 +6381,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -5411,6 +6394,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -5422,6 +6407,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5433,6 +6420,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.gov",
"dnssec": true,
"isIdn": false
},
@@ -5444,6 +6433,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -5455,6 +6446,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -5466,6 +6459,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -5477,6 +6472,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.grainger",
"dnssec": true,
"isIdn": false
},
@@ -5488,6 +6485,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5499,6 +6498,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5510,6 +6511,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5521,6 +6524,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5532,6 +6537,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.grocery",
"dnssec": true,
"isIdn": false
},
@@ -5543,6 +6550,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5554,6 +6563,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.gs",
"dnssec": true,
"isIdn": false
},
@@ -5565,6 +6576,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -5576,6 +6589,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -5587,6 +6602,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -5598,6 +6615,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -5609,6 +6628,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5620,6 +6641,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -5631,6 +6654,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5642,6 +6667,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -5653,6 +6680,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.gy",
"dnssec": true,
"isIdn": false
},
@@ -5664,6 +6693,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -5675,6 +6706,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.hamburg",
"dnssec": true,
"isIdn": false
},
@@ -5686,6 +6719,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -5697,6 +6732,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5708,6 +6745,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.hbo",
"dnssec": true,
"isIdn": false
},
@@ -5719,6 +6758,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5730,6 +6771,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5741,6 +6784,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.health",
"dnssec": true,
"isIdn": false
},
@@ -5752,6 +6797,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5763,6 +6810,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -5774,6 +6823,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5785,6 +6836,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -5796,6 +6849,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5807,6 +6862,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.hiphop",
"dnssec": true,
"isIdn": false
},
@@ -5818,6 +6875,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -5829,6 +6888,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -5840,6 +6901,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -5849,8 +6912,10 @@
"type": "country-code",
"organisation": "Hong Kong Internet Registration Corporation Ltd.",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.hkirc.hk",
"dnssec": true,
"isIdn": false
},
@@ -5862,6 +6927,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5873,6 +6940,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -5884,6 +6953,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.hn",
"dnssec": true,
"isIdn": false
},
@@ -5895,6 +6966,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5906,6 +6979,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5917,6 +6992,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5928,6 +7005,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -5939,6 +7018,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.homegoods",
"dnssec": true,
"isIdn": false
},
@@ -5950,6 +7031,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -5961,6 +7044,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.homesense",
"dnssec": true,
"isIdn": false
},
@@ -5972,6 +7057,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -5983,6 +7070,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.horse",
"dnssec": true,
"isIdn": false
},
@@ -5994,6 +7083,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6005,6 +7096,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.radix.host",
"dnssec": true,
"isIdn": false
},
@@ -6016,6 +7109,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -6027,6 +7122,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -6038,6 +7135,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.hotels",
"dnssec": true,
"isIdn": false
},
@@ -6049,6 +7148,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -6060,6 +7161,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6071,6 +7174,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -6080,8 +7185,10 @@
"type": "country-code",
"organisation": "CARNet - Croatian Academic and Research Network",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.dns.hr",
"dnssec": true,
"isIdn": false
},
@@ -6093,6 +7200,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.hsbc",
"dnssec": true,
"isIdn": false
},
@@ -6104,6 +7213,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ht",
"dnssec": true,
"isIdn": false
},
@@ -6115,6 +7226,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -6126,6 +7239,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6137,6 +7252,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.hyatt",
"dnssec": true,
"isIdn": false
},
@@ -6148,6 +7265,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -6159,6 +7278,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ibm",
"dnssec": true,
"isIdn": false
},
@@ -6170,6 +7291,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": false
},
@@ -6181,6 +7304,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6192,6 +7317,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -6203,6 +7330,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.pandi.id",
"dnssec": true,
"isIdn": false
},
@@ -6212,8 +7341,10 @@
"type": "country-code",
"organisation": "IE Domain Registry CLG",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.weare.ie",
"dnssec": true,
"isIdn": false
},
@@ -6225,6 +7356,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -6236,6 +7369,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ifm",
"dnssec": true,
"isIdn": false
},
@@ -6247,6 +7382,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ikano",
"dnssec": true,
"isIdn": false
},
@@ -6258,6 +7395,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -6267,8 +7406,10 @@
"type": "country-code",
"organisation": "Isle of Man Government",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.im",
"dnssec": false,
"isIdn": false
},
@@ -6280,6 +7421,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6291,6 +7434,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -6302,6 +7447,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6313,6 +7460,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6324,6 +7473,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nixiregistry.in",
"dnssec": true,
"isIdn": false
},
@@ -6335,6 +7486,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -6346,6 +7499,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6357,6 +7512,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -6368,6 +7525,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6379,6 +7538,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -6390,6 +7551,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ink",
"dnssec": true,
"isIdn": false
},
@@ -6401,6 +7564,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6412,6 +7577,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.insurance",
"dnssec": true,
"isIdn": false
},
@@ -6423,6 +7590,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6434,6 +7603,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.iana.org",
"dnssec": true,
"isIdn": false
},
@@ -6445,6 +7616,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6456,6 +7629,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.intuit",
"dnssec": true,
"isIdn": false
},
@@ -6467,6 +7642,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6478,6 +7655,8 @@
"assigned": true,
"rdap": "override",
"rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6489,6 +7668,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ipiranga",
"dnssec": true,
"isIdn": false
},
@@ -6500,6 +7681,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -6509,8 +7692,10 @@
"type": "country-code",
"organisation": "Institute for Research in Fundamental Sciences",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.ir",
"dnssec": true,
"isIdn": false
},
@@ -6522,6 +7707,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6533,6 +7720,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.isnic.is",
"dnssec": true,
"isIdn": false
},
@@ -6544,6 +7733,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6555,6 +7746,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6566,6 +7759,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6575,8 +7770,10 @@
"type": "country-code",
"organisation": "IIT - CNR",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.it",
"dnssec": true,
"isIdn": false
},
@@ -6588,6 +7785,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.itau",
"dnssec": true,
"isIdn": false
},
@@ -6599,6 +7798,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6610,6 +7811,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6621,6 +7824,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6632,6 +7837,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -6641,8 +7848,10 @@
"type": "country-code",
"organisation": "Island Networks (Jersey) Ltd.",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.je",
"dnssec": true,
"isIdn": false
},
@@ -6654,6 +7863,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6665,6 +7876,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6676,6 +7889,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6687,6 +7902,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6698,6 +7915,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6709,6 +7928,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -6720,6 +7941,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.jmp",
"dnssec": true,
"isIdn": false
},
@@ -6731,6 +7954,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnicregistry.com",
"dnssec": true,
"isIdn": false
},
@@ -6740,8 +7965,10 @@
"type": "country-code",
"organisation": "Ministry of Digital Economy and Entrepreneurship (MoDEE)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.net.jo",
"dnssec": false,
"isIdn": false
},
@@ -6753,6 +7980,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -6764,6 +7993,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.joburg",
"dnssec": true,
"isIdn": false
},
@@ -6775,6 +8006,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6786,6 +8019,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -6795,8 +8030,10 @@
"type": "country-code",
"organisation": "Japan Registry Services Co., Ltd.",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.jprs.jp",
"dnssec": true,
"isIdn": false
},
@@ -6808,6 +8045,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.jpmorgan",
"dnssec": true,
"isIdn": false
},
@@ -6819,6 +8058,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.jprs",
"dnssec": true,
"isIdn": false
},
@@ -6830,17 +8071,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
- "dnssec": true,
- "isIdn": false
- },
- {
- "tld": "juniper",
- "unicode": null,
- "type": "generic",
- "organisation": "JUNIPER NETWORKS, INC.",
- "assigned": true,
- "rdap": "bootstrap",
- "rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6852,6 +8084,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6863,6 +8097,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -6874,6 +8110,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.kenic.or.ke",
"dnssec": true,
"isIdn": false
},
@@ -6885,6 +8123,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6896,6 +8136,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6907,6 +8149,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.kfh",
"dnssec": true,
"isIdn": false
},
@@ -6918,6 +8162,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.cctld.kg",
"dnssec": true,
"isIdn": false
},
@@ -6929,6 +8175,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -6938,8 +8186,10 @@
"type": "country-code",
"organisation": "Ministry of Information, Communications and Transport (MICT)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.ki",
"dnssec": true,
"isIdn": false
},
@@ -6951,6 +8201,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -6962,6 +8214,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6973,6 +8227,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -6984,6 +8240,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -6995,6 +8253,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7006,6 +8266,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.kiwi.fury.ca",
"dnssec": true,
"isIdn": false
},
@@ -7017,6 +8279,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -7026,8 +8290,10 @@
"type": "country-code",
"organisation": "Ministry of Finance, Sustainable Development Information & Technology",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.kn",
"dnssec": false,
"isIdn": false
},
@@ -7039,6 +8305,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ryce-rsp.com",
"dnssec": true,
"isIdn": false
},
@@ -7050,6 +8318,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -7061,6 +8331,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7072,6 +8344,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -7083,6 +8357,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.kpmg",
"dnssec": true,
"isIdn": false
},
@@ -7094,6 +8370,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -7103,8 +8381,10 @@
"type": "country-code",
"organisation": "Korea Internet & Security Agency (KISA)",
"assigned": true,
- "rdap": "none",
+ "rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.or.kr",
"dnssec": true,
"isIdn": false
},
@@ -7116,6 +8396,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.krd",
"dnssec": true,
"isIdn": false
},
@@ -7127,6 +8409,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -7138,6 +8422,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7149,6 +8435,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -7160,6 +8448,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "whois.kyregistry.ky",
"dnssec": true,
"isIdn": false
},
@@ -7171,6 +8461,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -7180,8 +8472,10 @@
"type": "country-code",
"organisation": "Association of IT Companies of Kazakhstan",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.kz",
"dnssec": true,
"isIdn": false
},
@@ -7191,8 +8485,10 @@
"type": "country-code",
"organisation": "Lao National Internet Center (LANIC), Ministry of Technology and Communications",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.la",
"dnssec": true,
"isIdn": false
},
@@ -7204,6 +8500,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.lacaixa",
"dnssec": true,
"isIdn": false
},
@@ -7215,6 +8513,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7226,6 +8526,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7237,6 +8539,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7248,6 +8552,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7259,6 +8565,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.lanxess",
"dnssec": true,
"isIdn": false
},
@@ -7270,6 +8578,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7281,6 +8591,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -7292,6 +8604,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -7303,6 +8617,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.latrobe",
"dnssec": true,
"isIdn": false
},
@@ -7314,6 +8630,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.law",
"dnssec": true,
"isIdn": false
},
@@ -7325,6 +8643,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7336,6 +8656,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.lbdr.org.lb",
"dnssec": true,
"isIdn": false
},
@@ -7345,8 +8667,10 @@
"type": "country-code",
"organisation": "University of Puerto Rico",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7358,6 +8682,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7369,6 +8695,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7380,6 +8708,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.leclerc",
"dnssec": true,
"isIdn": false
},
@@ -7391,6 +8721,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7402,6 +8734,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7413,6 +8747,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7424,6 +8760,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -7435,6 +8773,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7444,8 +8784,10 @@
"type": "country-code",
"organisation": "SWITCH The Swiss Education & Research Network",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "SWITCH The Swiss Education & Research Network",
+ "lookupSource": "override",
+ "lookupHost": "rdap.nic.ch",
"dnssec": true,
"isIdn": false
},
@@ -7457,6 +8799,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -7468,6 +8812,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7479,6 +8825,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.lifeinsurance",
"dnssec": true,
"isIdn": false
},
@@ -7490,6 +8838,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -7501,6 +8851,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7512,6 +8864,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -7523,6 +8877,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.lilly",
"dnssec": true,
"isIdn": false
},
@@ -7534,6 +8890,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7545,6 +8903,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7556,6 +8916,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.lincoln",
"dnssec": true,
"isIdn": false
},
@@ -7567,6 +8929,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.uniregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -7578,6 +8942,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7589,6 +8955,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -7600,6 +8968,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -7611,6 +8981,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7622,6 +8994,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -7633,6 +9007,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.loan",
"dnssec": true,
"isIdn": false
},
@@ -7644,6 +9020,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7655,6 +9033,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.locker",
"dnssec": true,
"isIdn": false
},
@@ -7666,6 +9046,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -7677,6 +9059,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -7688,6 +9072,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -7699,6 +9085,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -7710,6 +9098,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7721,6 +9111,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.love",
"dnssec": true,
"isIdn": false
},
@@ -7732,6 +9124,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -7743,6 +9137,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -7754,6 +9150,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -7763,8 +9161,10 @@
"type": "country-code",
"organisation": "Lesotho Network Information Centre Proprietary (LSNIC)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.ls",
"dnssec": true,
"isIdn": false
},
@@ -7774,8 +9174,10 @@
"type": "country-code",
"organisation": "Kaunas University of Technology",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.domreg.lt",
"dnssec": true,
"isIdn": false
},
@@ -7787,6 +9189,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7798,6 +9202,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7807,8 +9213,10 @@
"type": "country-code",
"organisation": "RESTENA",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.dns.lu",
"dnssec": true,
"isIdn": false
},
@@ -7820,6 +9228,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7831,6 +9241,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.luxe",
"dnssec": true,
"isIdn": false
},
@@ -7842,6 +9254,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -7851,8 +9265,10 @@
"type": "country-code",
"organisation": "University of Latvia, Institute of Mathematics and Computer Science, Department of Network Solutions (DNS)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.lv",
"dnssec": true,
"isIdn": false
},
@@ -7864,6 +9280,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ly",
"dnssec": true,
"isIdn": false
},
@@ -7873,8 +9291,10 @@
"type": "country-code",
"organisation": "Agence Nationale de Réglementation des Télécommunications (ANRT)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.registre.ma",
"dnssec": true,
"isIdn": false
},
@@ -7886,6 +9306,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.madrid",
"dnssec": true,
"isIdn": false
},
@@ -7897,6 +9319,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7908,6 +9332,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7919,6 +9345,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -7930,6 +9358,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.man",
"dnssec": true,
"isIdn": false
},
@@ -7941,6 +9371,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7952,6 +9384,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.mango",
"dnssec": true,
"isIdn": false
},
@@ -7963,6 +9397,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -7974,6 +9410,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7985,6 +9423,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -7996,6 +9436,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8007,6 +9449,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8018,6 +9462,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.marshalls",
"dnssec": true,
"isIdn": false
},
@@ -8029,6 +9475,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.mattel",
"dnssec": true,
"isIdn": false
},
@@ -8040,6 +9488,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8049,8 +9499,10 @@
"type": "country-code",
"organisation": "Direction des Plateformes et des Ressources Numériques",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.mc",
"dnssec": true,
"isIdn": false
},
@@ -8062,6 +9514,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8071,8 +9525,10 @@
"type": "country-code",
"organisation": "IP Serviciul Tehnologia Informatiei si Securitate Cibernetica",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.md",
"dnssec": true,
"isIdn": false
},
@@ -8082,8 +9538,10 @@
"type": "country-code",
"organisation": "Government of Montenegro",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8095,6 +9553,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -8106,6 +9566,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8117,6 +9579,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -8128,6 +9592,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.melbourne",
"dnssec": true,
"isIdn": false
},
@@ -8139,6 +9605,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -8150,6 +9618,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8161,6 +9631,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.men",
"dnssec": true,
"isIdn": false
},
@@ -8172,6 +9644,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.menu",
"dnssec": true,
"isIdn": false
},
@@ -8183,6 +9657,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap-merck.dns.business",
"dnssec": true,
"isIdn": false
},
@@ -8194,6 +9670,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.merckmsd",
"dnssec": true,
"isIdn": false
},
@@ -8205,6 +9683,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.mg",
"dnssec": true,
"isIdn": false
},
@@ -8216,6 +9696,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -8227,6 +9709,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.miami",
"dnssec": true,
"isIdn": false
},
@@ -8238,6 +9722,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -8249,6 +9735,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -8260,6 +9748,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -8271,6 +9761,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.mint",
"dnssec": true,
"isIdn": false
},
@@ -8282,6 +9774,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8293,6 +9787,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -8302,8 +9798,10 @@
"type": "country-code",
"organisation": "Macedonian Academic Research Network Skopje",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.marnet.mk",
"dnssec": false,
"isIdn": false
},
@@ -8315,6 +9813,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ml",
"dnssec": true,
"isIdn": false
},
@@ -8326,6 +9826,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.mlb",
"dnssec": true,
"isIdn": false
},
@@ -8337,6 +9839,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mls.fury.ca",
"dnssec": true,
"isIdn": false
},
@@ -8346,8 +9850,10 @@
"type": "country-code",
"organisation": "Ministry of Transport and Communications",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.registry.gov.mm",
"dnssec": true,
"isIdn": false
},
@@ -8359,6 +9865,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.mma",
"dnssec": true,
"isIdn": false
},
@@ -8368,8 +9876,10 @@
"type": "country-code",
"organisation": "Datacom Co., Ltd.",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8381,6 +9891,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -8392,6 +9904,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8403,6 +9917,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -8414,6 +9930,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8425,6 +9943,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.moe",
"dnssec": true,
"isIdn": false
},
@@ -8436,6 +9956,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -8447,6 +9969,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -8458,6 +9982,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.monash",
"dnssec": true,
"isIdn": false
},
@@ -8469,6 +9995,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8480,6 +10008,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -8491,6 +10021,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8502,6 +10034,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8513,6 +10047,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.flexireg.net",
"dnssec": true,
"isIdn": false
},
@@ -8524,6 +10060,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.moto",
"dnssec": true,
"isIdn": false
},
@@ -8535,6 +10073,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -8546,6 +10086,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -8557,6 +10099,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8568,6 +10112,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -8577,8 +10123,10 @@
"type": "country-code",
"organisation": "CANAL+ TELECOM",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.mediaserv.net",
"dnssec": false,
"isIdn": false
},
@@ -8588,8 +10136,10 @@
"type": "country-code",
"organisation": "Université de Nouakchott Al Aasriya",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.mr",
"dnssec": true,
"isIdn": false
},
@@ -8601,6 +10151,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ms",
"dnssec": true,
"isIdn": false
},
@@ -8612,6 +10164,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.msd",
"dnssec": true,
"isIdn": false
},
@@ -8623,6 +10177,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -8634,6 +10190,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -8645,6 +10203,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "whois.nic.mtr",
"dnssec": true,
"isIdn": false
},
@@ -8656,6 +10216,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8667,6 +10229,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.museum",
"dnssec": true,
"isIdn": false
},
@@ -8678,6 +10242,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registryservices.music",
"dnssec": true,
"isIdn": false
},
@@ -8689,6 +10255,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -8700,6 +10268,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -8709,8 +10279,10 @@
"type": "country-code",
"organisation": "NIC-Mexico ITESM - Campus Monterrey",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.mx",
"dnssec": true,
"isIdn": false
},
@@ -8720,8 +10292,10 @@
"type": "country-code",
"organisation": "MYNIC Berhad",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "CentralNic",
+ "lookupSource": "override",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -8731,8 +10305,10 @@
"type": "country-code",
"organisation": "Centro de Informatica de Universidade Eduardo Mondlane",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Centro de Informatica de Universidade Eduardo Mondlane",
+ "lookupSource": "override",
+ "lookupHost": "rdap.nic.mz",
"dnssec": false,
"isIdn": false
},
@@ -8744,6 +10320,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "keetmans.omadhina.co.na",
"dnssec": true,
"isIdn": false
},
@@ -8755,6 +10333,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8766,6 +10346,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -8777,6 +10359,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": false
},
@@ -8788,6 +10372,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8799,6 +10385,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.nba",
"dnssec": true,
"isIdn": false
},
@@ -8810,6 +10398,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -8817,10 +10407,12 @@
"tld": "ne",
"unicode": null,
"type": "country-code",
- "organisation": "SONITEL",
+ "organisation": "Niger Télécoms SA (NIGERTELECOMS)",
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -8832,6 +10424,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -8843,6 +10437,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.verisign.com",
"dnssec": true,
"isIdn": false
},
@@ -8854,6 +10450,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.netbank",
"dnssec": true,
"isIdn": false
},
@@ -8865,6 +10463,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.netflix",
"dnssec": true,
"isIdn": false
},
@@ -8876,6 +10476,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8887,6 +10489,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.neustar",
"dnssec": true,
"isIdn": false
},
@@ -8898,6 +10502,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -8909,6 +10515,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8920,6 +10528,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8931,6 +10541,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -8942,6 +10554,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -8953,6 +10567,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.nf",
"dnssec": true,
"isIdn": false
},
@@ -8964,6 +10580,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.nfl",
"dnssec": true,
"isIdn": false
},
@@ -8975,6 +10593,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.net.ng",
"dnssec": true,
"isIdn": false
},
@@ -8986,6 +10606,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.publicinterestregistry.org",
"dnssec": true,
"isIdn": false
},
@@ -8997,6 +10619,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -9008,6 +10632,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -9019,6 +10645,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -9030,6 +10658,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.nike",
"dnssec": true,
"isIdn": false
},
@@ -9041,6 +10671,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9052,6 +10684,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9063,6 +10697,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -9074,6 +10710,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9085,6 +10723,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.sidn.nl",
"dnssec": true,
"isIdn": false
},
@@ -9096,6 +10736,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.norid.no",
"dnssec": true,
"isIdn": false
},
@@ -9107,6 +10749,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -9118,6 +10762,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.norton",
"dnssec": true,
"isIdn": false
},
@@ -9129,6 +10775,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -9140,6 +10788,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -9151,6 +10801,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9162,6 +10814,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -9173,6 +10827,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -9184,6 +10840,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9195,6 +10853,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.nrw",
"dnssec": true,
"isIdn": false
},
@@ -9206,6 +10866,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ntt",
"dnssec": true,
"isIdn": false
},
@@ -9215,8 +10877,10 @@
"type": "country-code",
"organisation": "The IUSN Foundation",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.iis.nu",
"dnssec": true,
"isIdn": false
},
@@ -9228,6 +10892,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.nyc",
"dnssec": true,
"isIdn": false
},
@@ -9237,8 +10903,10 @@
"type": "country-code",
"organisation": "InternetNZ",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.irs.net.nz",
"dnssec": true,
"isIdn": false
},
@@ -9250,6 +10918,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9261,6 +10931,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -9272,6 +10944,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -9283,6 +10957,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -9294,6 +10970,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.olayan",
"dnssec": true,
"isIdn": false
},
@@ -9305,6 +10983,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.olayangroup",
"dnssec": true,
"isIdn": false
},
@@ -9316,6 +10996,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -9325,8 +11007,10 @@
"type": "country-code",
"organisation": "Telecommunications Regulatory Authority (TRA)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.registry.om",
"dnssec": false,
"isIdn": false
},
@@ -9338,6 +11022,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -9349,6 +11035,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.one",
"dnssec": true,
"isIdn": false
},
@@ -9360,6 +11048,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.publicinterestregistry.org",
"dnssec": true,
"isIdn": false
},
@@ -9371,6 +11061,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9382,6 +11074,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.radix.host",
"dnssec": true,
"isIdn": false
},
@@ -9393,6 +11087,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -9404,6 +11100,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.open",
"dnssec": true,
"isIdn": false
},
@@ -9415,6 +11113,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9426,6 +11126,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9437,6 +11139,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.publicinterestregistry.org",
"dnssec": true,
"isIdn": false
},
@@ -9448,6 +11152,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9459,6 +11165,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9470,6 +11178,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.osaka",
"dnssec": true,
"isIdn": false
},
@@ -9481,6 +11191,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -9492,6 +11204,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -9503,6 +11217,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ovh",
"dnssec": true,
"isIdn": false
},
@@ -9514,6 +11230,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -9525,6 +11243,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -9536,6 +11256,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -9547,6 +11269,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.paris",
"dnssec": true,
"isIdn": false
},
@@ -9558,6 +11282,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -9569,6 +11295,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9580,6 +11308,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9591,6 +11321,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.party",
"dnssec": true,
"isIdn": false
},
@@ -9602,6 +11334,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -9613,6 +11347,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9622,8 +11358,10 @@
"type": "country-code",
"organisation": "Red Cientifica Peruana",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "kero.yachay.pe",
"dnssec": true,
"isIdn": false
},
@@ -9635,6 +11373,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9646,6 +11386,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -9657,6 +11399,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.pfizer",
"dnssec": true,
"isIdn": false
},
@@ -9668,6 +11412,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.pg",
"dnssec": true,
"isIdn": false
},
@@ -9679,6 +11425,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -9690,6 +11438,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -9701,6 +11451,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -9712,6 +11464,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.philips",
"dnssec": true,
"isIdn": false
},
@@ -9723,6 +11477,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -9734,6 +11490,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.photo",
"dnssec": true,
"isIdn": false
},
@@ -9745,6 +11503,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9756,6 +11516,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9767,6 +11529,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.physio",
"dnssec": true,
"isIdn": false
},
@@ -9778,6 +11542,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -9789,6 +11555,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9800,6 +11568,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9811,6 +11581,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -9822,6 +11594,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -9833,6 +11607,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ping",
"dnssec": true,
"isIdn": false
},
@@ -9844,6 +11620,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9855,6 +11633,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -9866,6 +11646,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9875,9 +11657,11 @@
"type": "country-code",
"organisation": "PKNIC",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
- "dnssec": false,
+ "lookupSource": "whois",
+ "lookupHost": "whois.pknic.net.pk",
+ "dnssec": true,
"isIdn": false
},
{
@@ -9888,6 +11672,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.dns.pl",
"dnssec": true,
"isIdn": false
},
@@ -9899,6 +11685,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9910,6 +11698,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -9921,6 +11711,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -9932,6 +11724,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9943,6 +11737,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9954,6 +11750,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.pm",
"dnssec": true,
"isIdn": false
},
@@ -9965,6 +11763,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": false,
"isIdn": false
},
@@ -9976,6 +11776,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -9987,6 +11789,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -9998,6 +11802,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10009,6 +11815,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.politie",
"dnssec": true,
"isIdn": false
},
@@ -10020,6 +11828,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.porn",
"dnssec": true,
"isIdn": false
},
@@ -10031,6 +11841,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10040,8 +11852,10 @@
"type": "country-code",
"organisation": "Gauss Research Laboratory Inc.",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10053,6 +11867,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.praxi",
"dnssec": true,
"isIdn": false
},
@@ -10064,6 +11880,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.radix.host",
"dnssec": true,
"isIdn": false
},
@@ -10075,6 +11893,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -10086,6 +11906,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10097,6 +11919,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -10108,6 +11932,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10119,6 +11945,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -10130,6 +11958,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10141,6 +11971,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10152,6 +11984,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10163,6 +11997,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -10174,6 +12010,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -10185,6 +12023,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.pru",
"dnssec": true,
"isIdn": false
},
@@ -10196,6 +12036,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.prudential",
"dnssec": true,
"isIdn": false
},
@@ -10207,6 +12049,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -10216,8 +12060,10 @@
"type": "country-code",
"organisation": "Associação DNS.PT",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.dns.pt",
"dnssec": true,
"isIdn": false
},
@@ -10229,6 +12075,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10240,6 +12088,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.radix.host",
"dnssec": true,
"isIdn": false
},
@@ -10251,6 +12101,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10262,6 +12114,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -10271,8 +12125,10 @@
"type": "country-code",
"organisation": "Communications Regulatory Authority",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.registry.qa",
"dnssec": false,
"isIdn": false
},
@@ -10284,6 +12140,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -10295,6 +12153,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.quebec",
"dnssec": true,
"isIdn": false
},
@@ -10306,6 +12166,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -10317,6 +12179,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.racing",
"dnssec": true,
"isIdn": false
},
@@ -10328,6 +12192,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -10339,6 +12205,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.re",
"dnssec": true,
"isIdn": false
},
@@ -10350,6 +12218,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -10361,6 +12231,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -10372,6 +12244,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -10383,6 +12257,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -10394,6 +12270,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10405,6 +12283,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10416,6 +12296,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10427,6 +12309,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10438,6 +12322,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10449,6 +12335,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10460,6 +12348,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -10471,6 +12361,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10482,6 +12374,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": false
},
@@ -10493,6 +12387,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -10504,6 +12400,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10515,6 +12413,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10526,6 +12426,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10537,6 +12439,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10548,6 +12452,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.bar",
"dnssec": true,
"isIdn": false
},
@@ -10559,6 +12465,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10570,6 +12478,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.review",
"dnssec": true,
"isIdn": false
},
@@ -10581,6 +12491,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10592,6 +12504,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10603,6 +12517,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10614,6 +12530,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10625,6 +12543,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -10636,6 +12556,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10647,6 +12569,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gtlds.nic.br",
"dnssec": true,
"isIdn": false
},
@@ -10658,6 +12582,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10669,6 +12595,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -10680,6 +12608,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10691,6 +12621,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.rodeo",
"dnssec": true,
"isIdn": false
},
@@ -10702,6 +12634,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10713,6 +12647,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -10722,8 +12658,10 @@
"type": "country-code",
"organisation": "Serbian National Internet Domain Registry (RNIDS)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.rnids.rs",
"dnssec": true,
"isIdn": false
},
@@ -10735,6 +12673,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -10744,8 +12684,10 @@
"type": "country-code",
"organisation": "Coordination Center for TLD RU",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.tcinet.ru",
"dnssec": true,
"isIdn": false
},
@@ -10757,6 +12699,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.rugby",
"dnssec": true,
"isIdn": false
},
@@ -10768,6 +12712,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -10779,6 +12725,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10790,6 +12738,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ricta.org.rw",
"dnssec": true,
"isIdn": false
},
@@ -10801,6 +12751,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10812,6 +12764,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -10821,8 +12775,10 @@
"type": "country-code",
"organisation": "Communications, Space and Technology Commission",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.net.sa",
"dnssec": true,
"isIdn": false
},
@@ -10834,6 +12790,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -10845,6 +12803,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -10856,6 +12816,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10867,6 +12829,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sakura",
"dnssec": true,
"isIdn": false
},
@@ -10878,6 +12842,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10889,6 +12855,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10900,6 +12868,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.samsclub",
"dnssec": true,
"isIdn": false
},
@@ -10911,6 +12881,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "nic.samsung",
"dnssec": true,
"isIdn": false
},
@@ -10922,6 +12894,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sandvik",
"dnssec": true,
"isIdn": false
},
@@ -10933,6 +12907,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sandvikcoromant",
"dnssec": true,
"isIdn": false
},
@@ -10944,6 +12920,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10955,6 +12933,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sap",
"dnssec": true,
"isIdn": false
},
@@ -10966,6 +12946,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -10977,6 +12959,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sas",
"dnssec": true,
"isIdn": false
},
@@ -10988,6 +12972,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -10999,6 +12985,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11008,8 +12996,10 @@
"type": "country-code",
"organisation": "Solomon Telekom Company Limited",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Solomon Telekom Company Limited",
+ "lookupSource": "override",
+ "lookupHost": "rdap.nic.sb",
"dnssec": true,
"isIdn": false
},
@@ -11021,6 +13011,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11032,6 +13024,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -11041,8 +13035,10 @@
"type": "country-code",
"organisation": "VCS Pty Ltd",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11054,6 +13050,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.scb",
"dnssec": true,
"isIdn": false
},
@@ -11065,6 +13063,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.schaeffler",
"dnssec": true,
"isIdn": false
},
@@ -11076,6 +13076,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.schmidt",
"dnssec": true,
"isIdn": false
},
@@ -11087,6 +13089,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11098,6 +13102,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11109,6 +13115,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11120,6 +13128,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -11131,6 +13141,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.science",
"dnssec": true,
"isIdn": false
},
@@ -11142,6 +13154,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.scot",
"dnssec": true,
"isIdn": false
},
@@ -11153,6 +13167,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sd",
"dnssec": false,
"isIdn": false
},
@@ -11162,8 +13178,10 @@
"type": "country-code",
"organisation": "The Internet Infrastructure Foundation",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.iis.se",
"dnssec": true,
"isIdn": false
},
@@ -11175,6 +13193,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -11186,6 +13206,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.seat",
"dnssec": true,
"isIdn": false
},
@@ -11197,6 +13219,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -11208,6 +13232,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -11219,6 +13245,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.seek",
"dnssec": true,
"isIdn": false
},
@@ -11230,6 +13258,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.select",
"dnssec": true,
"isIdn": false
},
@@ -11241,6 +13271,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11252,6 +13284,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11263,6 +13297,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.seven",
"dnssec": true,
"isIdn": false
},
@@ -11274,6 +13310,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11285,6 +13323,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sex",
"dnssec": true,
"isIdn": false
},
@@ -11296,6 +13336,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -11307,6 +13349,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -11318,6 +13362,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.sgnic.sg",
"dnssec": true,
"isIdn": false
},
@@ -11327,8 +13373,10 @@
"type": "country-code",
"organisation": "Government of St. Helena",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11340,6 +13388,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11351,6 +13401,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -11362,6 +13414,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -11373,6 +13427,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -11384,6 +13440,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11395,6 +13453,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11406,6 +13466,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -11417,6 +13479,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11428,6 +13492,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.teleinfo.cn",
"dnssec": true,
"isIdn": false
},
@@ -11439,6 +13505,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11450,6 +13518,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.register.si",
"dnssec": true,
"isIdn": false
},
@@ -11461,6 +13531,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -11472,6 +13544,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ngtld.cn",
"dnssec": true,
"isIdn": false
},
@@ -11483,6 +13557,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11494,6 +13570,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.radix.host",
"dnssec": true,
"isIdn": false
},
@@ -11505,6 +13583,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -11514,8 +13594,10 @@
"type": "country-code",
"organisation": "SK-NIC, a.s.",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.sk-nic.sk",
"dnssec": true,
"isIdn": false
},
@@ -11527,6 +13609,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11538,6 +13622,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -11549,6 +13635,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -11560,6 +13648,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -11571,6 +13661,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -11582,6 +13674,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.mobile-registry.com",
"dnssec": true,
"isIdn": false
},
@@ -11591,8 +13685,10 @@
"type": "country-code",
"organisation": "Telecom Italia San Marino S.p.A.",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.sm",
"dnssec": false,
"isIdn": false
},
@@ -11604,6 +13700,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -11615,6 +13713,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -11626,6 +13726,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sn",
"dnssec": true,
"isIdn": false
},
@@ -11637,6 +13739,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sncf",
"dnssec": true,
"isIdn": false
},
@@ -11646,8 +13750,10 @@
"type": "country-code",
"organisation": "Ministry of Post and Telecommunications",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Ministry of Post and Telecommunications",
+ "lookupSource": "override",
+ "lookupHost": "rdap.nic.so",
"dnssec": false,
"isIdn": false
},
@@ -11659,6 +13765,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11670,6 +13778,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11681,6 +13791,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -11692,6 +13804,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11703,6 +13817,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": false
},
@@ -11714,6 +13830,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11725,6 +13843,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11736,6 +13856,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11747,6 +13869,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -11758,6 +13882,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -11769,6 +13895,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11780,6 +13908,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.radix.host",
"dnssec": true,
"isIdn": false
},
@@ -11791,6 +13921,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sport",
"dnssec": true,
"isIdn": false
},
@@ -11802,6 +13934,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -11813,6 +13947,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "whois.sr",
"dnssec": true,
"isIdn": false
},
@@ -11824,6 +13960,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11835,6 +13973,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.ss",
"dnssec": true,
"isIdn": false
},
@@ -11844,8 +13984,10 @@
"type": "country-code",
"organisation": "Tecnisys",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.st",
"dnssec": false,
"isIdn": false
},
@@ -11857,6 +13999,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11868,6 +14012,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.staples",
"dnssec": true,
"isIdn": false
},
@@ -11879,6 +14025,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11890,6 +14038,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11901,6 +14051,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.statefarm",
"dnssec": true,
"isIdn": false
},
@@ -11912,6 +14064,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -11923,6 +14077,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -11934,6 +14090,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11945,6 +14103,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -11956,6 +14116,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.radix.host",
"dnssec": true,
"isIdn": false
},
@@ -11967,6 +14129,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.stream",
"dnssec": true,
"isIdn": false
},
@@ -11978,6 +14142,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -11989,6 +14155,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.study",
"dnssec": true,
"isIdn": false
},
@@ -12000,6 +14168,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12009,8 +14179,10 @@
"type": "country-code",
"organisation": "Russian Institute for Development of Public Networks (ROSNIIROS)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.tcinet.ru",
"dnssec": true,
"isIdn": false
},
@@ -12022,6 +14194,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sucks",
"dnssec": true,
"isIdn": false
},
@@ -12033,6 +14207,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12044,6 +14220,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12055,6 +14233,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12066,6 +14246,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.surf",
"dnssec": true,
"isIdn": false
},
@@ -12077,6 +14259,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12088,6 +14272,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -12099,6 +14285,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -12110,6 +14298,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -12121,6 +14311,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.swiss",
"dnssec": true,
"isIdn": false
},
@@ -12130,8 +14322,10 @@
"type": "country-code",
"organisation": "SX Registry SA B.V.",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.sx",
"dnssec": true,
"isIdn": false
},
@@ -12143,6 +14337,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -12154,6 +14350,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.sydney",
"dnssec": true,
"isIdn": false
},
@@ -12165,6 +14363,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12176,6 +14376,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -12187,6 +14389,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.tab",
"dnssec": true,
"isIdn": false
},
@@ -12198,6 +14402,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.taipei",
"dnssec": true,
"isIdn": false
},
@@ -12209,6 +14415,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -12220,6 +14428,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12231,6 +14441,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.target",
"dnssec": true,
"isIdn": false
},
@@ -12242,6 +14454,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12253,6 +14467,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "whois.nic.tatar",
"dnssec": true,
"isIdn": false
},
@@ -12264,6 +14480,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.tattoo",
"dnssec": true,
"isIdn": false
},
@@ -12275,6 +14493,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12286,6 +14506,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12295,8 +14517,10 @@
"type": "country-code",
"organisation": "Melrex TC",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.tc",
"dnssec": true,
"isIdn": false
},
@@ -12308,6 +14532,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -12317,8 +14543,10 @@
"type": "country-code",
"organisation": "l'Agence de Développement des Technologies de l'Information et de la Communication (ADETIC)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.td",
"dnssec": false,
"isIdn": false
},
@@ -12330,6 +14558,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.tdk",
"dnssec": true,
"isIdn": false
},
@@ -12341,6 +14571,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12352,6 +14584,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.radix.host",
"dnssec": true,
"isIdn": false
},
@@ -12363,6 +14597,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12374,6 +14610,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.tel",
"dnssec": true,
"isIdn": false
},
@@ -12385,6 +14623,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12396,6 +14636,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12407,6 +14649,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.teva",
"dnssec": true,
"isIdn": false
},
@@ -12418,6 +14662,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.tf",
"dnssec": true,
"isIdn": false
},
@@ -12427,8 +14673,10 @@
"type": "country-code",
"organisation": "Autorité de Régulation des Communications Electroniques et des Postes (ARCEP)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.tg",
"dnssec": false,
"isIdn": false
},
@@ -12440,6 +14688,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.thains.co.th",
"dnssec": true,
"isIdn": false
},
@@ -12451,6 +14701,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12462,6 +14714,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12473,6 +14727,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -12484,6 +14740,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12495,6 +14753,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -12506,6 +14766,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12517,6 +14779,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12528,6 +14792,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12539,6 +14805,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ryce-rsp.com",
"dnssec": true,
"isIdn": false
},
@@ -12550,6 +14818,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -12561,6 +14831,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.tjmaxx",
"dnssec": true,
"isIdn": false
},
@@ -12572,6 +14844,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.tjx",
"dnssec": true,
"isIdn": false
},
@@ -12583,6 +14857,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -12594,6 +14870,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.tkmaxx",
"dnssec": true,
"isIdn": false
},
@@ -12603,8 +14881,10 @@
"type": "country-code",
"organisation": "Autoridade Nacional de Comunicações",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.tl",
"dnssec": true,
"isIdn": false
},
@@ -12614,8 +14894,10 @@
"type": "country-code",
"organisation": "TM Domain Registry Ltd",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.nic.tm",
"dnssec": true,
"isIdn": false
},
@@ -12627,6 +14909,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12636,8 +14920,10 @@
"type": "country-code",
"organisation": "Agence Tunisienne d'Internet",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.ati.tn",
"dnssec": true,
"isIdn": false
},
@@ -12649,6 +14935,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.tonicregistry.to",
"dnssec": false,
"isIdn": false
},
@@ -12660,6 +14948,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12671,6 +14961,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -12682,6 +14974,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12693,6 +14987,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": false
},
@@ -12704,6 +15000,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -12715,6 +15013,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -12726,6 +15026,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.total",
"dnssec": true,
"isIdn": false
},
@@ -12737,6 +15039,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12748,6 +15052,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12759,6 +15065,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -12770,6 +15078,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12779,8 +15089,10 @@
"type": "country-code",
"organisation": "Bilgi Teknolojileri ve İletişim Kurumu (BTK)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.trabis.gov.tr",
"dnssec": true,
"isIdn": false
},
@@ -12792,6 +15104,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.trade",
"dnssec": true,
"isIdn": false
},
@@ -12803,6 +15117,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12814,6 +15130,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12825,6 +15143,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12836,6 +15156,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12847,6 +15169,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12858,6 +15182,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -12869,6 +15195,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12880,6 +15208,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -12891,6 +15221,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.tube",
"dnssec": true,
"isIdn": false
},
@@ -12902,6 +15234,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -12913,6 +15247,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -12924,6 +15260,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -12935,6 +15273,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.tv",
"dnssec": true,
"isIdn": false
},
@@ -12946,6 +15286,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -12957,6 +15299,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "ccrdap.twnic.tw",
"dnssec": true,
"isIdn": false
},
@@ -12968,6 +15312,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.tznic.or.tz",
"dnssec": true,
"isIdn": false
},
@@ -12979,6 +15325,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.hostmaster.ua",
"dnssec": true,
"isIdn": false
},
@@ -12990,6 +15338,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13001,6 +15351,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13010,8 +15362,10 @@
"type": "country-code",
"organisation": "Uganda Online Ltd.",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.co.ug",
"dnssec": true,
"isIdn": false
},
@@ -13023,6 +15377,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -13034,6 +15390,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": false
},
@@ -13045,6 +15403,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13056,6 +15416,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.radix.host",
"dnssec": true,
"isIdn": false
},
@@ -13067,6 +15429,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gtlds.nic.br",
"dnssec": true,
"isIdn": false
},
@@ -13078,6 +15442,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13089,6 +15455,8 @@
"assigned": true,
"rdap": "override",
"rdapOperator": "Registry Services, LLC",
+ "lookupSource": "override",
+ "lookupHost": "rdap.nic.us",
"dnssec": true,
"isIdn": false
},
@@ -13100,6 +15468,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -13111,6 +15481,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.cctld.uz",
"dnssec": true,
"isIdn": false
},
@@ -13122,6 +15494,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
},
@@ -13133,6 +15507,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13144,6 +15520,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.click",
"dnssec": true,
"isIdn": false
},
@@ -13155,6 +15533,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13164,8 +15544,10 @@
"type": "country-code",
"organisation": "Ministry of Telecommunications, Science, Technology and Industry",
"assigned": true,
- "rdap": "none",
- "rdapOperator": null,
+ "rdap": "override",
+ "rdapOperator": "Identity Digital",
+ "lookupSource": "override",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13177,6 +15559,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -13188,6 +15572,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13199,6 +15585,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13210,6 +15598,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": false
},
@@ -13221,6 +15611,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.versicherung",
"dnssec": true,
"isIdn": false
},
@@ -13232,6 +15624,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13243,6 +15637,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": false,
"isIdn": false
},
@@ -13254,6 +15650,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.vi",
"dnssec": false,
"isIdn": false
},
@@ -13265,6 +15663,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13276,6 +15676,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13287,6 +15689,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13298,6 +15702,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13309,6 +15715,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13320,6 +15728,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13331,6 +15741,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.vip",
"dnssec": true,
"isIdn": false
},
@@ -13342,6 +15754,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -13353,6 +15767,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13364,6 +15780,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13375,6 +15793,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -13386,6 +15806,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.vivo",
"dnssec": true,
"isIdn": false
},
@@ -13397,6 +15819,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.vlaanderen",
"dnssec": true,
"isIdn": false
},
@@ -13408,6 +15832,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -13419,6 +15845,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.vodka",
"dnssec": true,
"isIdn": false
},
@@ -13430,6 +15858,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13441,6 +15871,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13452,6 +15884,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.voting",
"dnssec": true,
"isIdn": false
},
@@ -13463,6 +15897,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13474,6 +15910,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13483,8 +15921,10 @@
"type": "country-code",
"organisation": "Telecommunications Radiocommunications and Broadcasting Regulator (TRBR)",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.dnrs.vu",
"dnssec": true,
"isIdn": false
},
@@ -13496,6 +15936,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -13507,6 +15949,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.walmart",
"dnssec": true,
"isIdn": false
},
@@ -13518,6 +15962,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.walter",
"dnssec": true,
"isIdn": false
},
@@ -13529,6 +15975,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": false
},
@@ -13540,6 +15988,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -13551,6 +16001,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13562,6 +16014,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13573,6 +16027,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.weather",
"dnssec": true,
"isIdn": false
},
@@ -13584,6 +16040,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.weatherchannel",
"dnssec": true,
"isIdn": false
},
@@ -13595,6 +16053,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": false
},
@@ -13606,6 +16066,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.webcam",
"dnssec": true,
"isIdn": false
},
@@ -13617,6 +16079,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13628,6 +16092,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.radix.host",
"dnssec": true,
"isIdn": false
},
@@ -13639,6 +16105,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -13650,6 +16118,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.wedding",
"dnssec": true,
"isIdn": false
},
@@ -13661,6 +16131,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ngtld.cn",
"dnssec": true,
"isIdn": false
},
@@ -13672,6 +16144,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13683,6 +16157,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.wf",
"dnssec": true,
"isIdn": false
},
@@ -13694,6 +16170,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.whoswho",
"dnssec": true,
"isIdn": false
},
@@ -13705,6 +16183,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ryce-rsp.com",
"dnssec": true,
"isIdn": false
},
@@ -13716,6 +16196,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.wiki",
"dnssec": true,
"isIdn": false
},
@@ -13727,6 +16209,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.williamhill",
"dnssec": true,
"isIdn": false
},
@@ -13738,6 +16222,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.win",
"dnssec": true,
"isIdn": false
},
@@ -13749,6 +16235,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -13760,6 +16248,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13771,6 +16261,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.winners",
"dnssec": true,
"isIdn": false
},
@@ -13782,6 +16274,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -13793,6 +16287,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.woodside",
"dnssec": true,
"isIdn": false
},
@@ -13804,6 +16300,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.work",
"dnssec": true,
"isIdn": false
},
@@ -13815,6 +16313,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13826,6 +16326,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13837,6 +16339,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -13846,8 +16350,10 @@
"type": "country-code",
"organisation": "Government of Samoa Ministry of Foreign Affairs & Trade",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.website.ws",
"dnssec": true,
"isIdn": false
},
@@ -13859,6 +16365,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.wtc",
"dnssec": true,
"isIdn": false
},
@@ -13870,6 +16378,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13881,6 +16391,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -13892,6 +16404,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xerox",
"dnssec": true,
"isIdn": false
},
@@ -13903,6 +16417,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.teleinfo.cn",
"dnssec": true,
"isIdn": false
},
@@ -13914,6 +16430,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -13925,6 +16443,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": true
},
@@ -13936,6 +16456,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -13947,6 +16469,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "restwhois.ngtld.cn",
"dnssec": true,
"isIdn": true
},
@@ -13958,6 +16482,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -13969,6 +16495,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -13980,6 +16508,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -13991,6 +16521,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.teleinfo.cn",
"dnssec": true,
"isIdn": true
},
@@ -14000,8 +16532,10 @@
"type": "country-code",
"organisation": "KISA (Korea Internet & Security Agency)",
"assigned": true,
- "rdap": "none",
+ "rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.or.kr",
"dnssec": true,
"isIdn": true
},
@@ -14013,6 +16547,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14024,6 +16560,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": true
},
@@ -14035,6 +16573,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": true
},
@@ -14046,6 +16586,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14057,6 +16599,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14068,6 +16612,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -14079,6 +16625,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14090,6 +16638,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": true
},
@@ -14101,6 +16651,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14112,6 +16664,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ngtld.cn",
"dnssec": true,
"isIdn": true
},
@@ -14123,6 +16677,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ngtld.cn",
"dnssec": true,
"isIdn": true
},
@@ -14134,6 +16690,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14141,10 +16699,12 @@
"tld": "xn--5tzm5g",
"unicode": "网站",
"type": "generic",
- "organisation": "Global Website TLD Asia Limited",
+ "organisation": "Jolly Host, LLC",
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14156,6 +16716,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14167,6 +16729,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -14178,6 +16742,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.flexireg.net",
"dnssec": true,
"isIdn": true
},
@@ -14189,6 +16755,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14200,6 +16768,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--80aqecdr1a",
"dnssec": true,
"isIdn": true
},
@@ -14211,6 +16781,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--80asehdb",
"dnssec": true,
"isIdn": true
},
@@ -14222,6 +16794,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--80aswg",
"dnssec": true,
"isIdn": true
},
@@ -14233,6 +16807,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -14244,6 +16820,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14255,6 +16833,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14266,6 +16846,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14277,6 +16859,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": true
},
@@ -14288,6 +16872,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -14299,6 +16885,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ngtld.cn",
"dnssec": true,
"isIdn": true
},
@@ -14310,6 +16898,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14321,6 +16911,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14332,6 +16924,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.publicinterestregistry.org",
"dnssec": true,
"isIdn": true
},
@@ -14343,6 +16937,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": true
},
@@ -14354,6 +16950,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14365,6 +16963,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": true
},
@@ -14376,6 +16976,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "nic.samsung",
"dnssec": true,
"isIdn": true
},
@@ -14387,6 +16989,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ta.sgnic.sg",
"dnssec": true,
"isIdn": true
},
@@ -14398,6 +17002,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -14409,6 +17015,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14420,6 +17028,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -14431,6 +17041,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "whois.nic.xn--d1acj3b",
"dnssec": true,
"isIdn": true
},
@@ -14442,6 +17054,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -14453,6 +17067,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14464,6 +17080,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14475,6 +17093,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -14486,6 +17106,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14497,6 +17119,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": true
},
@@ -14508,6 +17132,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.teleinfo.cn",
"dnssec": true,
"isIdn": true
},
@@ -14519,6 +17145,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -14530,6 +17158,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14541,6 +17171,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14552,6 +17184,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14563,6 +17197,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": true
},
@@ -14574,6 +17210,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14585,6 +17223,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -14596,6 +17236,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14607,6 +17249,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--g2xx48c",
"dnssec": true,
"isIdn": true
},
@@ -14618,6 +17262,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14629,6 +17275,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14640,6 +17288,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14651,6 +17301,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14662,6 +17314,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14673,6 +17327,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14684,6 +17340,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -14695,6 +17353,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.publicinterestregistry.org",
"dnssec": true,
"isIdn": true
},
@@ -14706,6 +17366,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -14717,6 +17379,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ngtld.cn",
"dnssec": true,
"isIdn": true
},
@@ -14728,6 +17392,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": true
},
@@ -14739,6 +17405,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -14750,6 +17418,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14761,6 +17431,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": true
},
@@ -14772,6 +17444,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -14783,6 +17457,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--kcrx77d1x4a",
"dnssec": true,
"isIdn": true
},
@@ -14794,6 +17470,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14805,6 +17483,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "ccrdap.twnic.tw",
"dnssec": true,
"isIdn": true
},
@@ -14816,6 +17496,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.teleinfo.cn",
"dnssec": true,
"isIdn": true
},
@@ -14827,6 +17509,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14838,6 +17522,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -14849,6 +17535,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -14860,6 +17548,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--mgba3a3ejt",
"dnssec": true,
"isIdn": true
},
@@ -14871,6 +17561,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -14882,6 +17574,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--mgba7c0bbn0a",
"dnssec": true,
"isIdn": true
},
@@ -14893,6 +17587,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -14904,6 +17600,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--mgbab2bd",
"dnssec": true,
"isIdn": true
},
@@ -14915,6 +17613,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14926,6 +17626,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14937,6 +17639,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14948,6 +17652,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14959,6 +17665,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -14970,6 +17678,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -14981,6 +17691,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--mgbca7dzdo",
"dnssec": true,
"isIdn": true
},
@@ -14990,8 +17702,10 @@
"type": "country-code",
"organisation": "Telecommunications Regulatory Authority (TRA)",
"assigned": true,
- "rdap": "none",
+ "rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.bhregistry.bh",
"dnssec": true,
"isIdn": true
},
@@ -15003,6 +17717,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15014,6 +17730,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15025,6 +17743,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--mgbi4ecexp",
"dnssec": true,
"isIdn": true
},
@@ -15036,6 +17756,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -15047,6 +17769,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": true
},
@@ -15058,6 +17782,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -15069,6 +17795,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15080,6 +17808,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -15091,6 +17821,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": true
},
@@ -15102,6 +17834,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.twnic.tw",
"dnssec": true,
"isIdn": true
},
@@ -15113,6 +17847,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--ngbc5azd",
"dnssec": true,
"isIdn": true
},
@@ -15124,6 +17860,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.registry.kfh",
"dnssec": true,
"isIdn": true
},
@@ -15135,6 +17873,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--ngbrx",
"dnssec": true,
"isIdn": true
},
@@ -15146,6 +17886,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -15157,6 +17899,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.publicinterestregistry.org",
"dnssec": true,
"isIdn": true
},
@@ -15168,6 +17912,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.publicinterestregistry.org",
"dnssec": true,
"isIdn": true
},
@@ -15179,6 +17925,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.teleinfo.cn",
"dnssec": true,
"isIdn": true
},
@@ -15190,6 +17938,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.thains.co.th",
"dnssec": true,
"isIdn": true
},
@@ -15201,6 +17951,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -15212,6 +17964,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -15223,6 +17977,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--p1acf",
"dnssec": true,
"isIdn": true
},
@@ -15232,8 +17988,10 @@
"type": "country-code",
"organisation": "Coordination Center for TLD RU",
"assigned": true,
- "rdap": "none",
+ "rdap": "whois",
"rdapOperator": null,
+ "lookupSource": "whois",
+ "lookupHost": "whois.tcinet.ru",
"dnssec": true,
"isIdn": true
},
@@ -15245,6 +18003,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15256,6 +18016,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": true
},
@@ -15267,6 +18029,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15278,6 +18042,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": true
},
@@ -15289,6 +18055,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": true
},
@@ -15300,6 +18068,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15311,6 +18081,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15322,6 +18094,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.teleinfo.cn",
"dnssec": true,
"isIdn": true
},
@@ -15333,6 +18107,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -15344,6 +18120,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15355,6 +18133,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15366,6 +18146,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zdnsgtld.com",
"dnssec": true,
"isIdn": true
},
@@ -15377,6 +18159,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": true
},
@@ -15388,6 +18172,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "tld-rdap.verisign.com",
"dnssec": true,
"isIdn": true
},
@@ -15399,6 +18185,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xn--tiq49xqyj",
"dnssec": true,
"isIdn": true
},
@@ -15410,6 +18198,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -15421,6 +18211,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": true
},
@@ -15432,6 +18224,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": true
},
@@ -15443,6 +18237,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -15454,6 +18250,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.teleinfo.cn",
"dnssec": true,
"isIdn": true
},
@@ -15465,6 +18263,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -15476,6 +18276,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": true
},
@@ -15487,6 +18289,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15498,6 +18302,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -15509,6 +18315,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "restwhois.ngtld.cn",
"dnssec": true,
"isIdn": true
},
@@ -15520,6 +18328,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15531,6 +18341,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15542,6 +18354,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": true
},
@@ -15553,6 +18367,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.zh.sgnic.sg",
"dnssec": true,
"isIdn": true
},
@@ -15564,6 +18380,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": true
},
@@ -15575,6 +18393,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.ngtld.cn",
"dnssec": true,
"isIdn": true
},
@@ -15586,6 +18406,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.xxx",
"dnssec": true,
"isIdn": false
},
@@ -15597,6 +18419,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -15608,6 +18432,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -15619,6 +18445,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -15630,6 +18458,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -15641,6 +18471,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.yandex",
"dnssec": true,
"isIdn": false
},
@@ -15652,6 +18484,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.y.net.ye",
"dnssec": false,
"isIdn": false
},
@@ -15663,6 +18497,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -15674,6 +18510,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.yoga",
"dnssec": true,
"isIdn": false
},
@@ -15685,6 +18523,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.gmoregistry.net",
"dnssec": true,
"isIdn": false
},
@@ -15696,6 +18536,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -15707,6 +18549,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -15718,6 +18562,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.yt",
"dnssec": true,
"isIdn": false
},
@@ -15729,6 +18575,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.teleinfo.cn",
"dnssec": true,
"isIdn": false
},
@@ -15740,6 +18588,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": true,
"isIdn": false
},
@@ -15751,6 +18601,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nominet.uk",
"dnssec": true,
"isIdn": false
},
@@ -15762,6 +18614,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -15773,6 +18627,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -15784,6 +18640,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "pubapi.registry.google",
"dnssec": true,
"isIdn": false
},
@@ -15795,6 +18653,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.nic.zm",
"dnssec": true,
"isIdn": false
},
@@ -15806,6 +18666,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.identitydigital.services",
"dnssec": true,
"isIdn": false
},
@@ -15817,6 +18679,8 @@
"assigned": true,
"rdap": "bootstrap",
"rdapOperator": null,
+ "lookupSource": "bootstrap",
+ "lookupHost": "rdap.centralnic.com",
"dnssec": true,
"isIdn": false
},
@@ -15828,6 +18692,8 @@
"assigned": true,
"rdap": "none",
"rdapOperator": null,
+ "lookupSource": "none",
+ "lookupHost": null,
"dnssec": false,
"isIdn": false
}
diff --git a/lib/domain/data/tlds.json b/lib/domain/data/tlds.json
index 9e997312..904a3268 100644
--- a/lib/domain/data/tlds.json
+++ b/lib/domain/data/tlds.json
@@ -1,7 +1,7 @@
{
"source": "https://data.iana.org/TLD/tlds-alpha-by-domain.txt",
- "fetchedAt": "2026-07-28",
- "version": "2026072702",
+ "fetchedAt": "2026-10-14",
+ "version": "2026101300",
"tlds": [
"aaa",
"aarp",
@@ -623,7 +623,6 @@
"jpmorgan",
"jprs",
"juegos",
- "juniper",
"kaufen",
"kddi",
"ke",
diff --git a/lib/domain/data/whois-reviewed.json b/lib/domain/data/whois-reviewed.json
new file mode 100644
index 00000000..61ce0c42
--- /dev/null
+++ b/lib/domain/data/whois-reviewed.json
@@ -0,0 +1,640 @@
+{
+ "comment": "Reviewed official IANA WHOIS services. Each entry was tested with the real and made-up domains recorded here. Only the observed, anchored not-found pattern decides availability; reserved, throttled, ambiguous and unreachable responses remain non-answers.",
+ "services": {
+ "ae": {
+ "server": "whois.aeda.net.ae",
+ "parser": "key-value",
+ "notFoundPattern": "^No Data Found[\\t ]*\\r?$",
+ "verifiedWith": "google.ae",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ae",
+ "verifiedAt": "2026-10-14"
+ },
+ "am": {
+ "server": "whois.amnic.net",
+ "parser": "key-value",
+ "domainFields": ["registered", "last modified"],
+ "notFoundPattern": "^No match[\\t ]*\\r?$",
+ "verifiedWith": "nic.am",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.am",
+ "verifiedAt": "2026-10-14"
+ },
+ "at": {
+ "server": "whois.nic.at",
+ "parser": "key-value",
+ "notFoundPattern": "^% nothing found[\\t ]*\\r?$",
+ "verifiedWith": "google.at",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.at",
+ "verifiedAt": "2026-10-14"
+ },
+ "ax": {
+ "server": "whois.ax",
+ "parser": "key-value",
+ "notFoundPattern": "^Domain not found[\\t ]*\\r?$",
+ "dateOrder": "dmy",
+ "verifiedWith": "nic.ax",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ax",
+ "verifiedAt": "2026-10-14"
+ },
+ "be": {
+ "server": "whois.dns.be",
+ "parser": "blocks",
+ "notFoundPattern": "^Status:[\\t ]*AVAILABLE[\\t ]*\\r?$",
+ "verifiedWith": "google.be",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.be",
+ "verifiedAt": "2026-10-14"
+ },
+ "bf": {
+ "server": "whois.registre.bf",
+ "parser": "key-value",
+ "notFoundPattern": "^Domain Status:[\\t ]*No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.bf",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.bf",
+ "verifiedAt": "2026-10-14"
+ },
+ "bg": {
+ "server": "whois.register.bg",
+ "parser": "blocks",
+ "notFoundPattern": "^registration status:[\\t ]*available[\\t ]*\\r?$",
+ "verifiedWith": "google.bg",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.bg",
+ "verifiedAt": "2026-10-14"
+ },
+ "bi": {
+ "server": "whois1.nic.bi",
+ "parser": "key-value",
+ "notFoundPattern": "^Domain Status:[\\t ]*No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.bi",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.bi",
+ "verifiedAt": "2026-10-14"
+ },
+ "bj": {
+ "server": "whois.nic.bj",
+ "parser": "key-value",
+ "notFoundPattern": "^Domain Status:[\\t ]*No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.bj",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.bj",
+ "verifiedAt": "2026-10-14"
+ },
+ "bn": {
+ "server": "whois.bnnic.bn",
+ "parser": "blocks",
+ "notFoundPattern": "^Domain Not Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.bn",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.bn",
+ "verifiedAt": "2026-10-14"
+ },
+ "by": {
+ "server": "whois.cctld.by",
+ "parser": "key-value",
+ "notFoundPattern": "^object does not exist[\\t ]*\\r?$",
+ "verifiedWith": "nic.by",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.by",
+ "verifiedAt": "2026-10-14"
+ },
+ "cl": {
+ "server": "whois.nic.cl",
+ "parser": "key-value",
+ "notFoundPattern": "^{domain}: no entries found\\.[\\t ]*\\r?$",
+ "domainEcho": false,
+ "verifiedWith": "google.cl",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.cl",
+ "verifiedAt": "2026-10-14"
+ },
+ "cn": {
+ "server": "whois.cnnic.cn",
+ "parser": "key-value",
+ "notFoundPattern": "^No matching record\\.[\\t ]*\\r?$",
+ "verifiedWith": "baidu.cn",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.cn",
+ "verifiedAt": "2026-10-14"
+ },
+ "dk": {
+ "server": "whois.punktum.dk",
+ "parser": "key-value",
+ "notFoundPattern": "^No entries found for the selected source\\.[\\t ]*\\r?$",
+ "verifiedWith": "google.dk",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.dk",
+ "verifiedAt": "2026-10-14"
+ },
+ "dm": {
+ "server": "whois.dmdomains.dm",
+ "parser": "key-value",
+ "notFoundPattern": "^>>> Domain {domain} is available for registration[\\t ]*\\r?$",
+ "verifiedWith": "google.dm",
+ "notFoundWith": "qxvbnmtlzra.dm",
+ "verifiedAt": "2026-10-14"
+ },
+ "do": {
+ "server": "whois.nic.do",
+ "parser": "key-value",
+ "notFoundPattern": "^The queried object does not exist: No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.do",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.do",
+ "verifiedAt": "2026-10-14"
+ },
+ "dz": {
+ "server": "whois.nic.dz",
+ "parser": "key-value",
+ "notFoundPattern": "^% No match for domain '{domain}'\\.[\\t ]*\\r?$",
+ "verifiedWith": "nic.dz",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.dz",
+ "verifiedAt": "2026-10-14"
+ },
+ "edu": {
+ "server": "whois.educause.edu",
+ "parser": "blocks",
+ "notFoundPattern": "^The domain name you requested was not found in our database\\.[\\t ]*\\r?$",
+ "verifiedWith": "nic.edu",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.edu",
+ "verifiedAt": "2026-10-14"
+ },
+ "ee": {
+ "server": "whois.tld.ee",
+ "parser": "blocks",
+ "notFoundPattern": "^Domain not found[\\t ]*\\r?$",
+ "verifiedWith": "google.ee",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ee",
+ "verifiedAt": "2026-10-14"
+ },
+ "eu": {
+ "server": "whois.eu",
+ "parser": "blocks",
+ "notFoundPattern": "^Status:[\\t ]*AVAILABLE[\\t ]*\\r?$",
+ "verifiedWith": "europa.eu",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.eu",
+ "verifiedAt": "2026-10-14"
+ },
+ "ge": {
+ "server": "whois.nic.ge",
+ "parser": "key-value",
+ "notFoundPattern": "^No match for \"{domain}\"\\.[\\t ]*\\r?$",
+ "verifiedWith": "nic.ge",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ge",
+ "verifiedAt": "2026-10-14"
+ },
+ "gf": {
+ "server": "whois.mediaserv.net",
+ "parser": "key-value",
+ "notFoundPattern": "^NO OBJECT FOUND!\\r?\\nobject:[\\t ]*{domain}\\r?\\ntype:[\\t ]*domain[\\t ]*\\r?$",
+ "verifiedWith": "nic.gf",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.gf",
+ "verifiedAt": "2026-10-14"
+ },
+ "gg": {
+ "server": "whois.gg",
+ "parser": "blocks",
+ "notFoundPattern": "^NOT FOUND[\\t ]*\\r?$",
+ "verifiedWith": "google.gg",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.gg",
+ "verifiedAt": "2026-10-14"
+ },
+ "gh": {
+ "server": "whois.nic.gh",
+ "parser": "key-value",
+ "notFoundPattern": "^Domain Status:[\\t ]*No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.gh",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.gh",
+ "verifiedAt": "2026-10-14"
+ },
+ "gn": {
+ "server": "whois.ande.gov.gn",
+ "parser": "key-value",
+ "notFoundPattern": "^The queried object does not exist: No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.gn",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.gn",
+ "verifiedAt": "2026-10-14"
+ },
+ "hk": {
+ "server": "whois.hkirc.hk",
+ "parser": "key-value",
+ "notFoundPattern": "^The domain has not been registered\\.[\\t ]*\\r?$",
+ "verifiedWith": "google.com.hk",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.hk",
+ "verifiedAt": "2026-10-14"
+ },
+ "hr": {
+ "server": "whois.dns.hr",
+ "parser": "key-value",
+ "notFoundPattern": "^%ERROR: No entries found[\\t ]*\\r?$",
+ "verifiedWith": "google.hr",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.hr",
+ "verifiedAt": "2026-10-14"
+ },
+ "ie": {
+ "server": "whois.weare.ie",
+ "parser": "key-value",
+ "notFoundPattern": "^Not found: {domain}[\\t ]*\\r?$",
+ "verifiedWith": "google.ie",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ie",
+ "verifiedAt": "2026-10-14"
+ },
+ "im": {
+ "server": "whois.nic.im",
+ "parser": "key-value",
+ "domainSections": ["domain details"],
+ "notFoundPattern": "^The domain {domain} was not found\\.[\\t ]*\\r?$",
+ "dateOrder": "dmy",
+ "verifiedWith": "google.im",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.im",
+ "verifiedAt": "2026-10-14"
+ },
+ "ir": {
+ "server": "whois.nic.ir",
+ "parser": "key-value",
+ "notFoundPattern": "^%ERROR:101: no entries found[\\t ]*\\r?$",
+ "verifiedWith": "nic.ir",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ir",
+ "verifiedAt": "2026-10-14"
+ },
+ "it": {
+ "server": "whois.nic.it",
+ "parser": "blocks",
+ "notFoundPattern": "^Status:[\\t ]*AVAILABLE[\\t ]*\\r?$",
+ "verifiedWith": "google.it",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.it",
+ "verifiedAt": "2026-10-14"
+ },
+ "je": {
+ "server": "whois.je",
+ "parser": "blocks",
+ "notFoundPattern": "^NOT FOUND[\\t ]*\\r?$",
+ "verifiedWith": "google.je",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.je",
+ "verifiedAt": "2026-10-14"
+ },
+ "jo": {
+ "server": "whois.nic.net.jo",
+ "parser": "key-value",
+ "notFoundPattern": "^No match for domain \"{domain}\"[\\t ]*\\r?$",
+ "verifiedWith": "google.jo",
+ "notFoundWith": "qxvbnmtlzra.jo",
+ "verifiedAt": "2026-10-14"
+ },
+ "jp": {
+ "server": "whois.jprs.jp",
+ "parser": "bracket",
+ "notFoundPattern": "^No match!![\\t ]*\\r?$",
+ "querySuffix": "/e",
+ "verifiedWith": "google.jp",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.jp",
+ "verifiedAt": "2026-10-14"
+ },
+ "ki": {
+ "server": "whois.nic.ki",
+ "parser": "key-value",
+ "notFoundPattern": "^The queried object does not exist: No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.ki",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ki",
+ "verifiedAt": "2026-10-14"
+ },
+ "kn": {
+ "server": "whois.nic.kn",
+ "parser": "key-value",
+ "notFoundPattern": "^The queried object does not exist: No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.kn",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.kn",
+ "verifiedAt": "2026-10-14"
+ },
+ "kz": {
+ "server": "whois.nic.kz",
+ "parser": "key-value",
+ "domainFields": ["last modified", "expiration date"],
+ "notFoundPattern": "^\\*\\*\\* Nothing found for this query\\.[\\t ]*\\r?$",
+ "verifiedWith": "google.kz",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.kz",
+ "verifiedAt": "2026-10-14"
+ },
+ "la": {
+ "server": "whois.nic.la",
+ "parser": "key-value",
+ "notFoundPattern": "^The queried object does not exist: DOMAIN NOT FOUND[\\t ]*\\r?$",
+ "verifiedWith": "google.la",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.la",
+ "verifiedAt": "2026-10-14"
+ },
+ "ls": {
+ "server": "whois.nic.ls",
+ "parser": "key-value",
+ "notFoundPattern": "^No record found for '{domain}'\\.[\\t ]*\\r?$",
+ "dateOrder": "dmy",
+ "verifiedWith": "nic.ls",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ls",
+ "verifiedAt": "2026-10-14",
+ "registrarField": "handle"
+ },
+ "lt": {
+ "server": "whois.domreg.lt",
+ "parser": "blocks",
+ "notFoundPattern": "^Status:[\\t ]*AVAILABLE[\\t ]*\\r?$",
+ "verifiedWith": "google.lt",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.lt",
+ "verifiedAt": "2026-10-14"
+ },
+ "lu": {
+ "server": "whois.dns.lu",
+ "parser": "key-value",
+ "notFoundPattern": "^% No such domain[\\t ]*\\r?$",
+ "verifiedWith": "google.lu",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.lu",
+ "verifiedAt": "2026-10-14"
+ },
+ "lv": {
+ "server": "whois.nic.lv",
+ "parser": "key-value",
+ "notFoundPattern": "^Status:[\\t ]*free[\\t ]*\\r?$",
+ "verifiedWith": "google.lv",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.lv",
+ "verifiedAt": "2026-10-14"
+ },
+ "ma": {
+ "server": "whois.registre.ma",
+ "parser": "key-value",
+ "notFoundPattern": "^The queried object does not exist: No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "google.co.ma",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ma",
+ "verifiedAt": "2026-10-14"
+ },
+ "mc": {
+ "server": "whois.nic.mc",
+ "parser": "key-value",
+ "notFoundPattern": "^>> No data found for domain : {domain}[\\t ]*\\r?$",
+ "verifiedWith": "nic.mc",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.mc",
+ "verifiedAt": "2026-10-14"
+ },
+ "md": {
+ "server": "whois.nic.md",
+ "parser": "key-value",
+ "notFoundPattern": "^No entries found \\[ No match for \\][\\t ]*\\r?$",
+ "verifiedWith": "google.md",
+ "notFoundWith": "qxvbnmtlzra.md",
+ "verifiedAt": "2026-10-14"
+ },
+ "mk": {
+ "server": "whois.marnet.mk",
+ "parser": "key-value",
+ "notFoundPattern": "^%ERROR:101: no entries found[\\t ]*\\r?$",
+ "dateOrder": "dmy",
+ "verifiedWith": "nic.mk",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.mk",
+ "verifiedAt": "2026-10-14",
+ "registrarField": "handle"
+ },
+ "mm": {
+ "server": "whois.registry.gov.mm",
+ "parser": "key-value",
+ "notFoundPattern": "^The queried object does not exist: DOMAIN NOT FOUND[\\t ]*\\r?$",
+ "verifiedWith": "google.com.mm",
+ "notFoundWith": "qxvbnmtlzra.mm",
+ "verifiedAt": "2026-10-14"
+ },
+ "mq": {
+ "server": "whois.mediaserv.net",
+ "parser": "key-value",
+ "notFoundPattern": "^NO OBJECT FOUND!\\r?\\nobject:[\\t ]*{domain}\\r?\\ntype:[\\t ]*domain[\\t ]*\\r?$",
+ "verifiedWith": "nic.mq",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.mq",
+ "verifiedAt": "2026-10-14"
+ },
+ "mr": {
+ "server": "whois.nic.mr",
+ "parser": "key-value",
+ "notFoundPattern": "^The queried object does not exist: No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.mr",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.mr",
+ "verifiedAt": "2026-10-14"
+ },
+ "mx": {
+ "server": "whois.mx",
+ "parser": "blocks",
+ "notFoundPattern": "^No_Se_Encontro_El_Objeto/Object_Not_Found[\\t ]*\\r?$",
+ "verifiedWith": "google.com.mx",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.mx",
+ "verifiedAt": "2026-10-14"
+ },
+ "nu": {
+ "server": "whois.iis.nu",
+ "parser": "key-value",
+ "notFoundPattern": "^domain \"{domain}\" not found\\.[\\t ]*\\r?$",
+ "verifiedWith": "google.nu",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.nu",
+ "verifiedAt": "2026-10-14"
+ },
+ "nz": {
+ "server": "whois.irs.net.nz",
+ "parser": "key-value",
+ "notFoundPattern": "^Not found: {domain}[\\t ]*\\r?$",
+ "verifiedWith": "google.co.nz",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.nz",
+ "verifiedAt": "2026-10-14"
+ },
+ "om": {
+ "server": "whois.registry.om",
+ "parser": "key-value",
+ "notFoundPattern": "^No Data Found[\\t ]*\\r?$",
+ "verifiedWith": "google.com.om",
+ "notFoundWith": "qxvbnmtlzra.om",
+ "verifiedAt": "2026-10-14"
+ },
+ "pe": {
+ "server": "kero.yachay.pe",
+ "parser": "key-value",
+ "notFoundPattern": "^Domain Status:[\\t ]*No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.pe",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.pe",
+ "verifiedAt": "2026-10-14"
+ },
+ "pk": {
+ "server": "whois.pknic.net.pk",
+ "parser": "key-value",
+ "notFoundPattern": "^[\\t ]*Status:[\\t ]*Not Registered, and may be available if valid[\\t ]*\\r?$",
+ "verifiedWith": "google.com.pk",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.pk",
+ "verifiedAt": "2026-10-14"
+ },
+ "pt": {
+ "server": "whois.dns.pt",
+ "parser": "key-value",
+ "notFoundPattern": "^{domain} - No Match[\\t ]*\\r?$",
+ "dateOrder": "dmy",
+ "verifiedWith": "google.pt",
+ "notFoundWith": "qxvbnmtlzra.pt",
+ "verifiedAt": "2026-10-14"
+ },
+ "qa": {
+ "server": "whois.registry.qa",
+ "parser": "key-value",
+ "notFoundPattern": "^No Data Found[\\t ]*\\r?$",
+ "verifiedWith": "google.com.qa",
+ "notFoundWith": "qxvbnmtlzra.qa",
+ "verifiedAt": "2026-10-14"
+ },
+ "rs": {
+ "server": "whois.rnids.rs",
+ "parser": "key-value",
+ "notFoundPattern": "^%ERROR:103: Domain is not registered[\\t ]*\\r?$",
+ "dateOrder": "dmy",
+ "verifiedWith": "google.rs",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.rs",
+ "verifiedAt": "2026-10-14"
+ },
+ "ru": {
+ "server": "whois.tcinet.ru",
+ "parser": "key-value",
+ "notFoundPattern": "^No entries found for the selected source\\(s\\)\\.[\\t ]*\\r?$",
+ "verifiedWith": "yandex.ru",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ru",
+ "verifiedAt": "2026-10-14",
+ "registrarField": "handle"
+ },
+ "sa": {
+ "server": "whois.nic.net.sa",
+ "parser": "key-value",
+ "notFoundPattern": "^No Match for domain: {domain}[\\t ]*\\r?$",
+ "verifiedWith": "google.com.sa",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.sa",
+ "verifiedAt": "2026-10-14"
+ },
+ "se": {
+ "server": "whois.iis.se",
+ "parser": "key-value",
+ "notFoundPattern": "^domain \"{domain}\" not found\\.[\\t ]*\\r?$",
+ "verifiedWith": "google.se",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.se",
+ "verifiedAt": "2026-10-14"
+ },
+ "sk": {
+ "server": "whois.sk-nic.sk",
+ "parser": "blocks",
+ "notFoundPattern": "^Domain not found\\.[\\t ]*\\r?$",
+ "verifiedWith": "google.sk",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.sk",
+ "verifiedAt": "2026-10-14",
+ "registrarField": "handle"
+ },
+ "sm": {
+ "server": "whois.nic.sm",
+ "parser": "blocks",
+ "notFoundPattern": "^No entries found\\.[\\t ]*\\r?$",
+ "dateOrder": "dmy",
+ "verifiedWith": "nic.sm",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.sm",
+ "verifiedAt": "2026-10-14"
+ },
+ "st": {
+ "server": "whois.nic.st",
+ "parser": "key-value",
+ "notFoundPattern": "^No entries found for domain {domain}[\\t ]*\\r?$",
+ "verifiedWith": "nic.st",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.st",
+ "verifiedAt": "2026-10-14"
+ },
+ "su": {
+ "server": "whois.tcinet.ru",
+ "parser": "key-value",
+ "notFoundPattern": "^No entries found for the selected source\\(s\\)\\.[\\t ]*\\r?$",
+ "verifiedWith": "nic.su",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.su",
+ "verifiedAt": "2026-10-14",
+ "registrarField": "handle"
+ },
+ "sx": {
+ "server": "whois.sx",
+ "parser": "key-value",
+ "notFoundPattern": "^Not found: {domain}[\\t ]*\\r?$",
+ "verifiedWith": "nic.sx",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.sx",
+ "verifiedAt": "2026-10-14"
+ },
+ "tc": {
+ "server": "whois.nic.tc",
+ "parser": "key-value",
+ "notFoundPattern": "^Domain Status:[\\t ]*No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.tc",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.tc",
+ "verifiedAt": "2026-10-14"
+ },
+ "td": {
+ "server": "whois.nic.td",
+ "parser": "key-value",
+ "notFoundPattern": "^The queried object does not exist: No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.td",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.td",
+ "verifiedAt": "2026-10-14"
+ },
+ "tg": {
+ "server": "whois.nic.tg",
+ "parser": "key-value",
+ "notFoundPattern": "^NO OBJECT FOUND!\\r?\\nobject:[.]*{domain}\\r?\\ntype:[.]*domain[\\t ]*\\r?$",
+ "verifiedWith": "nic.tg",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.tg",
+ "verifiedAt": "2026-10-14"
+ },
+ "tl": {
+ "server": "whois.nic.tl",
+ "parser": "key-value",
+ "notFoundPattern": "^The queried object does not exist: No Object Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.tl",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.tl",
+ "verifiedAt": "2026-10-14"
+ },
+ "tm": {
+ "server": "whois.nic.tm",
+ "parser": "key-value",
+ "notFoundPattern": "^Domain {domain} is available for purchase[\\t ]*\\r?$",
+ "verifiedWith": "google.tm",
+ "notFoundWith": "qxvbnmtlzra.tm",
+ "verifiedAt": "2026-10-14"
+ },
+ "tn": {
+ "server": "whois.ati.tn",
+ "parser": "key-value",
+ "domainFields": ["dnssec"],
+ "notFoundPattern": "^NO OBJECT FOUND![\\t ]*\\r?$",
+ "verifiedWith": "google.tn",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.tn",
+ "verifiedAt": "2026-10-14"
+ },
+ "tr": {
+ "server": "whois.trabis.gov.tr",
+ "parser": "blocks",
+ "notFoundPattern": "^No match found for {domain}[\\t ]*\\r?$",
+ "verifiedWith": "google.com.tr",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.tr",
+ "verifiedAt": "2026-10-14"
+ },
+ "ug": {
+ "server": "whois.co.ug",
+ "parser": "key-value",
+ "notFoundPattern": "^[\\t ]*>>> Domain not Found[\\t ]*\\r?$",
+ "verifiedWith": "google.co.ug",
+ "notFoundWith": "qxvbnmtlzra.ug",
+ "verifiedAt": "2026-10-14"
+ },
+ "vu": {
+ "server": "whois.dnrs.vu",
+ "parser": "key-value",
+ "notFoundPattern": "^No Data Found[\\t ]*\\r?$",
+ "verifiedWith": "nic.vu",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.vu",
+ "verifiedAt": "2026-10-14"
+ },
+ "ws": {
+ "server": "whois.website.ws",
+ "parser": "key-value",
+ "notFoundPattern": "^The queried object does not exist: {domain}\\.[\\t ]*\\r?$",
+ "verifiedWith": "google.ws",
+ "notFoundWith": "stack127-check-a7f8c9e2d4b6.ws",
+ "verifiedAt": "2026-10-14"
+ },
+ "xn--p1ai": {
+ "server": "whois.tcinet.ru",
+ "parser": "key-value",
+ "notFoundPattern": "^No entries found for the selected source\\(s\\)\\.[\\t ]*\\r?$",
+ "verifiedWith": "xn--d1acpjx3f.xn--p1ai",
+ "notFoundWith": "qxvbnmtlzra.xn--p1ai",
+ "verifiedAt": "2026-10-14",
+ "registrarField": "handle"
+ }
+ }
+}
diff --git a/lib/domain/data/whois-servers.json b/lib/domain/data/whois-servers.json
new file mode 100644
index 00000000..55bcb7f1
--- /dev/null
+++ b/lib/domain/data/whois-servers.json
@@ -0,0 +1,216 @@
+{
+ "source": "whois.iana.org:43",
+ "fetchedAt": "2026-10-14",
+ "comment": "IANA discovery only. A server is enabled only by whois-reviewed.json.",
+ "services": {
+ "ae": "whois.aeda.net.ae",
+ "al": null,
+ "am": "whois.amnic.net",
+ "ao": null,
+ "aq": null,
+ "arpa": "whois.iana.org",
+ "at": "whois.nic.at",
+ "ax": "whois.ax",
+ "az": null,
+ "ba": null,
+ "bb": null,
+ "bd": null,
+ "be": "whois.dns.be",
+ "bf": "whois.registre.bf",
+ "bg": "whois.register.bg",
+ "bi": "whois1.nic.bi",
+ "bj": "whois.nic.bj",
+ "bn": "whois.bnnic.bn",
+ "bo": "whois.nic.bo",
+ "bs": null,
+ "bt": null,
+ "bv": null,
+ "bw": "whois.nic.net.bw",
+ "by": "whois.cctld.by",
+ "cd": null,
+ "cf": "whois.dot.cf",
+ "cg": null,
+ "ck": null,
+ "cl": "whois.nic.cl",
+ "cn": "whois.cnnic.cn",
+ "cu": null,
+ "cw": null,
+ "cy": null,
+ "dj": null,
+ "dk": "whois.punktum.dk",
+ "dm": "whois.dmdomains.dm",
+ "do": "whois.nic.do",
+ "dz": "whois.nic.dz",
+ "edu": "whois.educause.edu",
+ "ee": "whois.tld.ee",
+ "eg": null,
+ "er": null,
+ "es": "whois.nic.es",
+ "et": null,
+ "eu": "whois.eu",
+ "fk": null,
+ "gb": null,
+ "ge": "whois.nic.ge",
+ "gf": "whois.mediaserv.net",
+ "gg": "whois.gg",
+ "gh": "whois.nic.gh",
+ "gm": null,
+ "gn": "whois.ande.gov.gn",
+ "gp": "whois.nic.gp",
+ "gq": "whois.dominio.gq",
+ "gr": null,
+ "gt": null,
+ "gu": null,
+ "gw": null,
+ "hk": "whois.hkirc.hk",
+ "hm": "whois.registry.hm",
+ "hr": "whois.dns.hr",
+ "hu": "whois.nic.hu",
+ "ie": "whois.weare.ie",
+ "il": "whois.isoc.org.il",
+ "im": "whois.nic.im",
+ "iq": "whois.cmc.iq",
+ "ir": "whois.nic.ir",
+ "it": "whois.nic.it",
+ "je": "whois.je",
+ "jm": null,
+ "jo": "whois.nic.net.jo",
+ "jp": "whois.jprs.jp",
+ "kh": null,
+ "ki": "whois.nic.ki",
+ "km": null,
+ "kn": "whois.nic.kn",
+ "kp": null,
+ "kw": null,
+ "kz": "whois.nic.kz",
+ "la": "whois.nic.la",
+ "lk": null,
+ "lr": null,
+ "ls": "whois.nic.ls",
+ "lt": "whois.domreg.lt",
+ "lu": "whois.dns.lu",
+ "lv": "whois.nic.lv",
+ "ma": "whois.registre.ma",
+ "mc": "whois.nic.mc",
+ "md": "whois.nic.md",
+ "mh": null,
+ "mil": null,
+ "mk": "whois.marnet.mk",
+ "mm": "whois.registry.gov.mm",
+ "mo": "whois.monic.mo",
+ "mp": null,
+ "mq": "whois.mediaserv.net",
+ "mr": "whois.nic.mr",
+ "mt": null,
+ "mv": null,
+ "mw": "whois.nic.mw",
+ "mx": "whois.mx",
+ "nc": "whois.nc",
+ "ne": null,
+ "ni": null,
+ "np": null,
+ "nr": null,
+ "nu": "whois.iis.nu",
+ "nz": "whois.irs.net.nz",
+ "om": "whois.registry.om",
+ "pa": null,
+ "pe": "kero.yachay.pe",
+ "pf": "whois.registry.pf",
+ "ph": null,
+ "pk": "whois.pknic.net.pk",
+ "ps": null,
+ "pt": "whois.dns.pt",
+ "py": null,
+ "qa": "whois.registry.qa",
+ "ro": "whois.rotld.ro",
+ "rs": "whois.rnids.rs",
+ "ru": "whois.tcinet.ru",
+ "sa": "whois.nic.net.sa",
+ "se": "whois.iis.se",
+ "sj": null,
+ "sk": "whois.sk-nic.sk",
+ "sl": null,
+ "sm": "whois.nic.sm",
+ "st": "whois.nic.st",
+ "su": "whois.tcinet.ru",
+ "sv": null,
+ "sx": "whois.sx",
+ "sy": "whois.tld.sy",
+ "sz": null,
+ "tc": "whois.nic.tc",
+ "td": "whois.nic.td",
+ "tg": "whois.nic.tg",
+ "tj": null,
+ "tk": "whois.dot.tk",
+ "tl": "whois.nic.tl",
+ "tm": "whois.nic.tm",
+ "tn": "whois.ati.tn",
+ "tr": "whois.trabis.gov.tr",
+ "tt": null,
+ "ug": "whois.co.ug",
+ "uy": "whois.nic.org.uy",
+ "va": null,
+ "ve": "whois.nic.ve",
+ "vn": null,
+ "vu": "whois.dnrs.vu",
+ "ws": "whois.website.ws",
+ "xn--2scrj9c": "whois.nixiregistry.in",
+ "xn--3hcrj9c": "whois.nixiregistry.in",
+ "xn--45br5cyl": "whois.nixiregistry.in",
+ "xn--45brj9c": "whois.nixiregistry.in",
+ "xn--4dbrk0ce": "whois.isoc.org.il",
+ "xn--54b7fta0cc": null,
+ "xn--80ao21a": "whois.nic.kz",
+ "xn--90a3ac": "whois.rnids.rs",
+ "xn--90ae": "whois.imena.bg",
+ "xn--90ais": "whois.cctld.by",
+ "xn--d1alf": "whois.marnet.mk",
+ "xn--e1a4c": "whois.eu",
+ "xn--fiqs8s": "whois.cnnic.cn",
+ "xn--fiqz9s": "whois.cnnic.cn",
+ "xn--fpcrj9c3d": "whois.nixiregistry.in",
+ "xn--fzc2c9e2c": null,
+ "xn--gecrj9c": "whois.nixiregistry.in",
+ "xn--h2breg3eve": "whois.nixiregistry.in",
+ "xn--h2brj9c": "whois.nixiregistry.in",
+ "xn--h2brj9c8c": "whois.nixiregistry.in",
+ "xn--j1amh": "whois.dotukr.com",
+ "xn--j6w193g": "whois.hkirc.hk",
+ "xn--kprw13d": "whois.twnic.net.tw",
+ "xn--l1acc": "whois.mn",
+ "xn--lgbbat1ad8j": "whois.nic.dz",
+ "xn--mgb9awbf": "whois.registry.om",
+ "xn--mgba3a4f16a": "whois.nic.ir",
+ "xn--mgbaam7a8h": "whois.aeda.net.ae",
+ "xn--mgbah1a3hjkrd": "whois.nic.mr",
+ "xn--mgbai9azgqp6j": null,
+ "xn--mgbayh7gpa": null,
+ "xn--mgbbh1a": "whois.nixiregistry.in",
+ "xn--mgbbh1a71e": "whois.nixiregistry.in",
+ "xn--mgbc0a9azcg": null,
+ "xn--mgberp4a5d4ar": "whois.nic.net.sa",
+ "xn--mgbgu82a": "whois.nixiregistry.in",
+ "xn--mgbpl2fh": null,
+ "xn--mgbtx2b": "whois.cmc.iq",
+ "xn--mgbx4cd0ab": "whois.mynic.my",
+ "xn--mix891f": "whois.monic.mo",
+ "xn--node": null,
+ "xn--ogbpf8fl": "whois.tld.sy",
+ "xn--p1ai": "whois.tcinet.ru",
+ "xn--pgbs0dh": "whois.ati.tn",
+ "xn--q7ce6a": "whois.nic.la",
+ "xn--qxa6a": "whois.eu",
+ "xn--qxam": null,
+ "xn--rvc1e0am3e": "whois.nixiregistry.in",
+ "xn--s9brj9c": "whois.nixiregistry.in",
+ "xn--wgbh1c": null,
+ "xn--wgbl6a": "whois.registry.qa",
+ "xn--xkc2al3hye2a": null,
+ "xn--xkc2dl3a5ee0h": "whois.nixiregistry.in",
+ "xn--y9a3aq": "whois.amnic.net",
+ "xn--ygbi2ammx": "whois.pnina.ps",
+ "za": null,
+ "zw": null
+ },
+ "failedTlds": []
+}
diff --git a/lib/domain/lookup.ts b/lib/domain/lookup.ts
index e172f44e..b1788f6e 100644
--- a/lib/domain/lookup.ts
+++ b/lib/domain/lookup.ts
@@ -17,11 +17,11 @@ export async function lookupDomain(rawInput: string, options: LookupOptions = {}
const { coverage, fetch: registry } = await fetchRegistry(query.domain, query.tld, options);
let registrar = null;
- if (options.includeRegistrar !== false && registry.status === "registered") {
+ if (options.includeRegistrar !== false && registry.status === "registered" && coverage.source !== "whois") {
const registrarUrl = registrarUrlFrom(registry.body);
// The hop is optional. A failure degrades the page quietly and never fails
// the lookup, so it is deliberately not awaited inside a try that rethrows.
- if (registrarUrl) registrar = await fetchRegistrar(registrarUrl, options);
+ if (registrarUrl) registrar = await fetchRegistrar(registrarUrl, options, query.tld);
}
return buildRegistration({
@@ -40,6 +40,7 @@ export async function lookupDomain(rawInput: string, options: LookupOptions = {}
source: coverage.source,
operator: coverage.operator,
url: coverage.url,
+ host: coverage.host,
unknownTld: coverage.unknownTld,
},
registry,
diff --git a/lib/domain/multi-tld-shared.ts b/lib/domain/multi-tld-shared.ts
index ccdbc062..4e37c53a 100644
--- a/lib/domain/multi-tld-shared.ts
+++ b/lib/domain/multi-tld-shared.ts
@@ -1,3 +1,5 @@
+import type { CoverageSource } from "./bootstrap.ts";
+
/**
* Constants and types the multi-TLD page needs on both sides.
*
@@ -22,6 +24,7 @@ export type MultiTldRow = {
registrar: string | null;
expiryDate: string | null;
sourceHost: string | null;
+ coverageSource?: CoverageSource;
fetchedAt: string | null;
fromCache: boolean;
};
diff --git a/lib/domain/multi-tld.ts b/lib/domain/multi-tld.ts
index 76544058..b52bae3e 100644
--- a/lib/domain/multi-tld.ts
+++ b/lib/domain/multi-tld.ts
@@ -37,7 +37,7 @@ function rowFor(tld: string, domain: string, status: RdapFetchStatus, extra: Par
return { ...base, state: "registered", detail: "Already registered." };
}
if (status === "no_service") {
- return { ...base, state: "cannot_check", detail: `We do not know of an RDAP service for .${tld}.` };
+ return { ...base, state: "cannot_check", detail: `We do not know of a verified registration service for .${tld}.` };
}
if (status === "rate_limited") {
return { ...base, state: "check_failed", detail: "We are being rate limited by this registry right now." };
@@ -84,7 +84,7 @@ export async function checkMultipleTlds(rawName: string, requestedTlds: string[]
const domain = `${name.ascii}.${tld}`;
const coverage = rdapServiceForTld(tld);
if (coverage.source === "none") {
- rows[index] = rowFor(tld, domain, "no_service", {});
+ rows[index] = rowFor(tld, domain, "no_service", { coverageSource: "none" });
continue;
}
const { fetch: result } = await fetchRegistry(domain, tld, { signal });
@@ -113,7 +113,8 @@ export async function checkMultipleTlds(rawName: string, requestedTlds: string[]
rows[index] = rowFor(tld, domain, result.status, {
registrar,
expiryDate,
- sourceHost: coverage.url ? new URL(coverage.url).host : null,
+ sourceHost: coverage.host,
+ coverageSource: coverage.source,
fetchedAt: result.fetchedAt,
fromCache: result.fromCache,
});
diff --git a/lib/domain/normalize.ts b/lib/domain/normalize.ts
index 962842ee..97943cc0 100644
--- a/lib/domain/normalize.ts
+++ b/lib/domain/normalize.ts
@@ -171,6 +171,9 @@ export function buildRegistration(input: BuildInput): DomainRegistration {
if (query.guessedSuffix) {
notes.push("This ending is not in our copy of the public suffix list, so the registrable part is a best guess.");
}
+ if (coverage.source === "whois") {
+ notes.push("This answer came from the registry's WHOIS service. Fields it did not clearly publish are unknown.");
+ }
return {
query,
diff --git a/lib/domain/public-suffix.ts b/lib/domain/public-suffix.ts
index e17e89ed..19315466 100644
--- a/lib/domain/public-suffix.ts
+++ b/lib/domain/public-suffix.ts
@@ -123,6 +123,16 @@ export class DomainInputError extends Error {
const IPV4 = /^\d{1,3}(\.\d{1,3}){3}$/;
+/** Validate the final ASCII query before it can reach an RDAP or WHOIS server. */
+export function assertValidDomainLabels(domain: string): void {
+ const labels = domain.split(".");
+ if (domain.length > 253 || labels.length < 2 ||
+ labels.some(label => !/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i.test(label)) ||
+ (labels.some(label => /^xn--/i.test(label)) && convertName(domain, mapLabel).problems.length > 0)) {
+ throw new DomainInputError("invalid_name", "Domain labels must use letters, numbers, or hyphens, and cannot start or end with a hyphen.");
+ }
+}
+
/**
* Turn whatever the reader typed into the exact name we query.
*
@@ -176,6 +186,7 @@ export function normalizeDomainInput(raw: string): NormalizedInput {
}
const reducedName = found.registrableDomain;
+ assertValidDomainLabels(reducedName);
const tld = reducedName.slice(reducedName.lastIndexOf(".") + 1);
return {
diff --git a/lib/domain/rdap.ts b/lib/domain/rdap.ts
index 1f19b977..c086cc74 100644
--- a/lib/domain/rdap.ts
+++ b/lib/domain/rdap.ts
@@ -7,10 +7,11 @@
* parser that requires an error object breaks on .com.
*/
-import { rdapServiceForTld, type TldCoverage } from "./bootstrap.ts";
+import { rdapServiceForTld, whoisServiceForTld, type TldCoverage } from "./bootstrap.ts";
import { readCachedRdap, writeCachedRdap } from "./cache.ts";
import { acquireEndpointSlot, reportEndpointResult } from "./throttle.ts";
import type { RdapFetch, RdapFetchStatus, RdapSource } from "./types.ts";
+import { fetchWhois } from "./whois.ts";
const USER_AGENT = "Stack127-domain-tools/1.0 (+https://stack127.com/domain-tools)";
const MAX_RESPONSE_BYTES = 1_000_000;
@@ -63,7 +64,7 @@ export type FetchOptions = {
bypassCache?: boolean;
};
-async function fetchRdapUrl(url: string, source: RdapSource, options: FetchOptions = {}): Promise {
+async function fetchRdapUrl(url: string, source: RdapSource, options: FetchOptions = {}, tld?: string): Promise {
const now = new Date().toISOString();
if (!options.bypassCache) {
@@ -71,13 +72,15 @@ async function fetchRdapUrl(url: string, source: RdapSource, options: FetchOptio
if (cached) return { ...cached, fromCache: true };
}
- const slot = acquireEndpointSlot(url);
+ const slot = acquireEndpointSlot(url, Date.now(), tld);
if (!slot.allowed) {
return {
status: "rate_limited",
httpStatus: null,
url,
source,
+ protocol: "rdap",
+ retryAfterSeconds: slot.retryAfterSeconds,
body: null,
error:
slot.reason === "circuit_open"
@@ -90,7 +93,9 @@ async function fetchRdapUrl(url: string, source: RdapSource, options: FetchOptio
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), options.timeoutMs ?? DEFAULT_TIMEOUT_MS);
- options.signal?.addEventListener("abort", () => controller.abort(), { once: true });
+ const abort = () => controller.abort();
+ options.signal?.addEventListener("abort", abort, { once: true });
+ if (options.signal?.aborted) controller.abort();
try {
const response = await fetch(url, {
@@ -98,21 +103,28 @@ async function fetchRdapUrl(url: string, source: RdapSource, options: FetchOptio
redirect: "follow",
signal: controller.signal,
});
- reportEndpointResult(url, response.status);
+ reportEndpointResult(url, response.status, Date.now(), response.headers.get("retry-after"));
const { body } = await readBounded(response);
- const status = statusFromHttp(response.status);
+ let status = statusFromHttp(response.status);
+ // A successful HTTP response is not necessarily a domain record (HTML, error
+ // objects and redirects to generic landing pages must remain non-answers).
+ if (status === "registered" && (!body || typeof body !== "object" ||
+ !("objectClassName" in body) || !(tld ? ["domain"] : ["domain", "ip network", "autnum"]).includes(String(body.objectClassName)))) {
+ status = "registry_error";
+ }
const result: RdapFetch = {
status,
httpStatus: response.status,
url,
source,
+ protocol: "rdap",
body,
- error: status === "registered" && body === null ? "The registry returned a response we could not read." : null,
+ error: response.status === 200 && status === "registry_error" ? "The registry returned a response we could not read." : null,
fetchedAt: now,
fromCache: false,
};
// Never cache a throttle or a block as if it were an answer.
- if (status === "registered" || status === "not_registered") await writeCachedRdap(url, result);
+ if (!options.bypassCache && (status === "registered" || status === "not_registered")) await writeCachedRdap(url, result);
return result;
} catch (error) {
const aborted = controller.signal.aborted;
@@ -122,6 +134,7 @@ async function fetchRdapUrl(url: string, source: RdapSource, options: FetchOptio
httpStatus: null,
url,
source,
+ protocol: "rdap",
body: null,
error: aborted
? "The registry did not answer in time."
@@ -133,17 +146,20 @@ async function fetchRdapUrl(url: string, source: RdapSource, options: FetchOptio
};
} finally {
clearTimeout(timeout);
+ options.signal?.removeEventListener("abort", abort);
}
}
export function registryUrlFor(coverage: TldCoverage, domain: string) {
- if (!coverage.url) return null;
+ if (!coverage.url || coverage.source === "whois") return null;
return `${coverage.url}domain/${encodeURIComponent(domain)}`;
}
/** Query the registry that operates this TLD. */
export async function fetchRegistry(domain: string, tld: string, options?: FetchOptions) {
const coverage = rdapServiceForTld(tld);
+ const whois = whoisServiceForTld(tld);
+ if (coverage.source === "whois" && whois) return { coverage, fetch: await fetchWhois(domain, tld, whois, options) };
const url = registryUrlFor(coverage, domain);
if (!url) {
const fetchResult: RdapFetch = {
@@ -152,13 +168,13 @@ export async function fetchRegistry(domain: string, tld: string, options?: Fetch
url: null,
source: "registry",
body: null,
- error: `We do not know of an RDAP service for .${coverage.tld}.`,
+ error: `We do not know of a verified registration service for .${coverage.tld}.`,
fetchedAt: new Date().toISOString(),
fromCache: false,
};
return { coverage, fetch: fetchResult };
}
- return { coverage, fetch: await fetchRdapUrl(url, "registry", options) };
+ return { coverage, fetch: await fetchRdapUrl(url, "registry", options, tld) };
}
/**
@@ -181,8 +197,8 @@ export function registrarUrlFrom(registryBody: unknown): string | null {
return null;
}
-export async function fetchRegistrar(url: string, options?: FetchOptions) {
- return fetchRdapUrl(url, "registrar", { ...options, timeoutMs: options?.timeoutMs ?? 8_000 });
+export async function fetchRegistrar(url: string, options?: FetchOptions, tld?: string) {
+ return fetchRdapUrl(url, "registrar", { ...options, timeoutMs: options?.timeoutMs ?? 8_000 }, tld);
}
/** IP and ASN objects use the same client but a different bootstrap. Exposed for reuse. */
diff --git a/lib/domain/throttle.ts b/lib/domain/throttle.ts
index 9e143a0f..b402dc24 100644
--- a/lib/domain/throttle.ts
+++ b/lib/domain/throttle.ts
@@ -19,6 +19,8 @@ type EndpointState = {
/** Set when the breaker is open; no requests go out until this passes. */
openUntil: number;
consecutiveRejections: number;
+ /** One busy extension cannot spend the entire shared host budget. */
+ tlds: Map;
};
const endpoints = new Map();
@@ -26,13 +28,14 @@ const endpoints = new Map();
const WINDOW_MS = 60_000;
/** Conservative. Registries do not publish their limits, so stay well under. */
const MAX_PER_WINDOW = 60;
+const MAX_PER_TLD_WINDOW = 20;
const BREAKER_THRESHOLD = 3;
-const BREAKER_COOLDOWN_MS = 5 * 60_000;
+const BREAKER_COOLDOWN_MS = 60_000;
const MAX_ENDPOINTS = 500;
function keyFor(url: string) {
try {
- return new URL(url).host;
+ return new URL(url).hostname.toLowerCase();
} catch {
return url;
}
@@ -46,22 +49,23 @@ function stateFor(key: string, now: number): EndpointState {
if (value.openUntil <= now && now - value.windowStartedAt > WINDOW_MS) endpoints.delete(existing);
}
}
- state = { used: 0, windowStartedAt: now, openUntil: 0, consecutiveRejections: 0 };
+ state = { used: 0, windowStartedAt: now, openUntil: 0, consecutiveRejections: 0, tlds: new Map() };
endpoints.set(key, state);
}
if (now - state.windowStartedAt >= WINDOW_MS) {
state.used = 0;
state.windowStartedAt = now;
+ state.tlds.clear();
}
return state;
}
export type ThrottleDecision =
| { allowed: true }
- | { allowed: false; reason: "circuit_open" | "budget_exhausted"; retryAfterSeconds: number };
+ | { allowed: false; reason: "circuit_open" | "budget_exhausted" | "tld_budget_exhausted"; retryAfterSeconds: number };
/** Ask whether one request may go out to this endpoint right now. */
-export function acquireEndpointSlot(url: string, now = Date.now()): ThrottleDecision {
+export function acquireEndpointSlot(url: string, now = Date.now(), tld?: string): ThrottleDecision {
const key = keyFor(url);
const state = stateFor(key, now);
@@ -72,18 +76,26 @@ export function acquireEndpointSlot(url: string, now = Date.now()): ThrottleDeci
const retry = Math.ceil((state.windowStartedAt + WINDOW_MS - now) / 1000);
return { allowed: false, reason: "budget_exhausted", retryAfterSeconds: Math.max(1, retry) };
}
+ const share = tld?.toLowerCase().replace(/^\./, "");
+ if (share && (state.tlds.get(share) ?? 0) >= MAX_PER_TLD_WINDOW) {
+ return { allowed: false, reason: "tld_budget_exhausted",
+ retryAfterSeconds: Math.max(1, Math.ceil((state.windowStartedAt + WINDOW_MS - now) / 1000)) };
+ }
state.used += 1;
+ if (share) state.tlds.set(share, (state.tlds.get(share) ?? 0) + 1);
return { allowed: true };
}
/** Report the outcome so the breaker can open on repeated rejection. */
-export function reportEndpointResult(url: string, httpStatus: number | null, now = Date.now()) {
+export function reportEndpointResult(url: string, httpStatus: number | null, now = Date.now(), retryAfter?: string | null) {
const key = keyFor(url);
const state = stateFor(key, now);
if (httpStatus === 429 || httpStatus === 403) {
state.consecutiveRejections += 1;
+ const retryMs = retryAfterMs(retryAfter, now);
+ if (retryMs !== null) state.openUntil = Math.max(state.openUntil, now + retryMs);
if (state.consecutiveRejections >= BREAKER_THRESHOLD) {
- state.openUntil = now + BREAKER_COOLDOWN_MS;
+ state.openUntil = Math.max(state.openUntil, now + (retryMs ?? BREAKER_COOLDOWN_MS));
state.consecutiveRejections = 0;
}
return;
@@ -91,6 +103,14 @@ export function reportEndpointResult(url: string, httpStatus: number | null, now
if (httpStatus !== null) state.consecutiveRejections = 0;
}
+/** HTTP delta-seconds or date; a bad header must not poison the host forever. */
+function retryAfterMs(value: string | null | undefined, now: number): number | null {
+ if (!value?.trim()) return null;
+ const trimmed = value.trim();
+ const ms = /^\d+$/.test(trimmed) ? Number(trimmed) * 1000 : Date.parse(trimmed) - now;
+ return Number.isFinite(ms) && ms >= 0 ? Math.min(3_600_000, Math.max(1000, ms)) : null;
+}
+
export function endpointStateForTests(url: string) {
return endpoints.get(keyFor(url)) ?? null;
}
@@ -102,6 +122,7 @@ export function clearThrottleForTests() {
export const THROTTLE_SETTINGS = {
WINDOW_MS,
MAX_PER_WINDOW,
+ MAX_PER_TLD_WINDOW,
BREAKER_THRESHOLD,
BREAKER_COOLDOWN_MS,
};
diff --git a/lib/domain/transfer-readiness.ts b/lib/domain/transfer-readiness.ts
index 90f630ab..0e13c606 100644
--- a/lib/domain/transfer-readiness.ts
+++ b/lib/domain/transfer-readiness.ts
@@ -27,6 +27,8 @@ export type TransferReadiness = {
registration: DomainRegistration;
policy: TransferPolicyVersion;
pendingPolicyChange: TransferPolicyVersion | null;
+ /** ccTLD and infrastructure transfer rules come from their registry. */
+ policyApplies?: boolean;
findings: TransferFinding[];
/** What we cannot see at all, listed so the answer is not mistaken for complete. */
cannotCheck: string[];
@@ -45,6 +47,7 @@ export function assessTransfer(registration: DomainRegistration, now = new Date(
const findings: TransferFinding[] = [];
const statuses = registration.statuses.map((status) => status.rdap);
const has = (value: string) => statuses.includes(value);
+ const policyApplies = registration.query.tldType !== "country-code" && registration.query.tldType !== "infrastructure";
// Registrar lock. The most common blocker and the one the reader owns.
if (has("client transfer prohibited")) {
@@ -254,6 +257,20 @@ export function assessTransfer(registration: DomainRegistration, now = new Date(
});
}
+ const whoisStatusListComplete = (registration.registryFetch?.body as { whois?: { statusesComplete?: boolean } } | null)?.whois?.statusesComplete === true;
+ if (registration.coverage?.source === "whois" && !whoisStatusListComplete) {
+ for (const finding of findings.filter(finding => finding.state === "clear" && ["client-lock", "server-lock", "pending-transfer", "lifecycle"].includes(finding.id))) {
+ finding.state = "unknown";
+ finding.detail = "This WHOIS record does not publish a reviewed complete EPP status list, so we cannot rule out this condition.";
+ finding.evidence = null;
+ }
+ }
+ if (!policyApplies) {
+ for (const finding of findings.filter(finding => ["registration-lock", "transfer-lock"].includes(finding.id))) {
+ finding.state = "unknown";
+ finding.detail = "This ending follows its registry's transfer rules. ICANN's transfer waiting periods do not establish whether it can move.";
+ }
+ }
const blocked = findings.filter((finding) => finding.state === "blocked");
const summary = blocked.length
? blocked.some((finding) => finding.selfServiceable)
@@ -264,6 +281,7 @@ export function assessTransfer(registration: DomainRegistration, now = new Date(
return {
registration,
policy,
+ policyApplies,
pendingPolicyChange: pendingPolicy(),
findings,
cannotCheck: [
diff --git a/lib/domain/types.ts b/lib/domain/types.ts
index 7cea0798..67d7ef22 100644
--- a/lib/domain/types.ts
+++ b/lib/domain/types.ts
@@ -17,6 +17,9 @@ export type RdapFetch = {
httpStatus: number | null;
url: string | null;
source: RdapSource;
+ /** Transport; source continues to identify the registry/registrar role. */
+ protocol?: "rdap" | "whois";
+ retryAfterSeconds?: number;
body: unknown;
error: string | null;
/** When this response was retrieved. Differs from the registry's own publish time. */
@@ -105,6 +108,7 @@ export type DomainRegistration = {
source: CoverageSource;
operator: string | null;
url: string | null;
+ host?: string | null;
unknownTld: boolean;
};
/** registered, not_registered, or one of the failure states. Never guess. */
diff --git a/lib/domain/whois-parser.ts b/lib/domain/whois-parser.ts
new file mode 100644
index 00000000..a4a3cea4
--- /dev/null
+++ b/lib/domain/whois-parser.ts
@@ -0,0 +1,315 @@
+/** Conservative WHOIS parsing: a domain echo alone is never a registration. */
+import { domainToASCII } from "node:url";
+import { STATUS_CODES } from "./status-codes.ts";
+import type { RdapFetchStatus } from "./types.ts";
+
+export type WhoisService = {
+ server: string;
+ parser: "key-value" | "bracket" | "blocks";
+ verifiedWith: string;
+ notFoundWith: string;
+ /** Anchored, observed registry text; {domain} is replaced with the escaped query. */
+ notFoundPattern: string;
+ verifiedAt: string;
+ queryPrefix?: string;
+ querySuffix?: string;
+ /** Enable only for a server whose day/month/year convention was verified. */
+ dateOrder?: "dmy";
+ /** Some verified key-value servers (NIC Chile) omit the domain echo entirely. */
+ domainEcho?: false;
+ /** Reviewed registrar field semantics; registry handles are never names or IANA IDs. */
+ registrarField?: "handle";
+ /** True only after reviewing that the server publishes the whole EPP status list. */
+ completeStatusList?: boolean;
+ /** Reviewed footer fields belonging to the domain even after contact sections. */
+ domainFields?: string[];
+ /** Reviewed headings that return from contacts to the domain record. */
+ domainSections?: string[];
+};
+
+type Fields = Map;
+function key(value: string) { return value.toLowerCase().replace(/^\*+[\t ]*/, "").replace(/\.+$/, "").replace(/[\s_-]+/g, " ").trim(); }
+const SECTION_NAMES: Record = {
+ "domain": "domain", "domain information": "domain", "additional info": "domain",
+ "domain managers": "contact", "domain owners / registrant": "registrant",
+ "registrant": "registrant", "domain registrant": "registrant", "registrant contact information": "registrant",
+ "registrar": "registrar", "holder": "contact", "owner": "contact", "owner contact": "contact", "contact information": "contact",
+ "admin contact": "admin contact", "administrative contact": "admin contact", "administrative contact information": "admin contact",
+ "administrativ contact": "admin contact",
+ "technical contact": "technical contacts", "technical contacts": "technical contacts", "technical contact information": "technical contacts",
+ "technical": "technical contacts", "tech": "technical contacts", "registrar technical contacts": "technical contacts",
+ "billing contact": "contact", "contact": "contact",
+ "nameservers": "nameservers", "name servers": "name servers", "name server information": "name server information",
+ "domain servers": "domain servers", "dns servers": "dns servers", "relevant dates": "relevant dates",
+ "whois server": "database", "whois": "database", "admin c": "contact", "tech c": "contact", "zone c": "contact",
+};
+const RAW_BLOCKS = ["registrar", "nameservers", "name servers", "domain servers", "dns servers", "name server information"];
+
+function fieldsFrom(text: string, service: WhoisService): Fields {
+ const { parser } = service;
+ const fields: Fields = new Map();
+ let lastKey: string | null = null;
+ let block: string | null = null;
+ // A blank line separates formatting, not ownership. Contact sections remain
+ // contact sections until an explicit domain/nameserver section starts.
+ let section = "domain";
+ const domainFields = new Set((service.domainFields ?? []).map(key));
+ const domainSections = new Set((service.domainSections ?? []).map(key));
+ const isDomainField = (name: string) => domainKeys.includes(name) || nsKeys.includes(name) ||
+ explicitDomainFields.includes(name) || domainFields.has(name);
+ const isRoleField = (name: string) => /^(?:registrant|registrar|admin|technical)(?: |$)/.test(name);
+ const add = (name: string, value: string) => {
+ if (value) fields.set(name, [...(fields.get(name) ?? []), value]);
+ };
+ for (const line of text.split(/\r?\n/)) {
+ if (!line.trim()) continue;
+ if (/^[%#>]/.test(line.trim())) { lastKey = null; block = null; continue; }
+ const heading = key(line.trim().replace(/:$/, "").replace(/^\[([^\]]+)\]$/, "$1"));
+ if (domainSections.has(heading)) {
+ section = "domain"; block = null; lastKey = null; continue;
+ }
+ // Domain-labelled status blocks stay global even inside a contact section.
+ // Their presence must be checked before accepting an availability answer.
+ if (explicitStatusKeys.includes(heading)) { block = heading; lastKey = heading; continue; }
+ if (SECTION_NAMES[heading]) {
+ section = SECTION_NAMES[heading]; block = heading; lastKey = heading; continue;
+ }
+ if (block === "relevant dates" && /^\s*Registered on /.test(line)) {
+ add(block, line.trim()); continue;
+ }
+ const match = parser === "bracket"
+ ? line.match(/^\s*\[([^\]]+)\][\t ]*(.*)$/) ?? line.match(/^\s*([^:]+):[\t ]*(.*)$/)
+ : line.match(/^\s*([^:]+):[\t ]*(.*)$/);
+ // Block values can contain colons in URLs and IPv6 addresses. Recognized
+ // fields, including domain statuses, must still escape a raw-value block.
+ const fieldName = match ? key(match[1]) : null;
+ const structuredField = fieldName && (isDomainField(fieldName) || isRoleField(fieldName) ||
+ statusKeys.includes(fieldName) || DATE_FIELDS.some(([, names]) => (names as readonly string[]).includes(fieldName)) ||
+ ["name", "organisation", "organization", "website", "web", "url", "dnssec"].includes(fieldName));
+ if (parser === "blocks" && lastKey === block && RAW_BLOCKS.includes(block ?? "") &&
+ /^\s+\S/.test(line) && !structuredField) {
+ add(lastKey!, line.trim()); continue;
+ }
+ if (match) {
+ let name = key(match[1]);
+ const value = match[2].trim().replace(/^\.+/, "");
+ if (domainKeys.includes(name)) { section = "domain"; block = null; }
+ // Inline reference headers in SK-NIC's section format carry handles;
+ // their following Name/Organization/Created belong to that entity.
+ if (parser === "blocks" && name === "domain registrant") {
+ section = "registrant"; block = null; lastKey = null; add("registrant handle", value); continue;
+ }
+ if (name === "registrar" && service.registrarField === "handle") {
+ add("registrar handle", value);
+ if (parser === "blocks") section = "registrar";
+ block = null; lastKey = null; continue;
+ }
+ if (["contact", "person", "personname", "nic hdl"].includes(name)) { section = "contact"; block = null; }
+ if (section !== "domain" && !isDomainField(name)) {
+ // Fields already explicitly labelled with a role retain that role.
+ if (!isRoleField(name)) name = `${section} ${name}`;
+ } else if (section === "domain" && name === "name") name = "domain name";
+ lastKey = name;
+ add(name, value);
+ } else if (lastKey && (/^\s+\S/.test(line) || ["domain servers", "dns servers", "name server information"].includes(block ?? ""))) {
+ add(lastKey, line.trim());
+ } else { lastKey = null; block = null; }
+ }
+ return fields;
+}
+
+function values(fields: Fields, names: string[]) { return names.flatMap(name => fields.get(name) ?? []); }
+function first(fields: Fields, names: string[]) { return values(fields, names)[0] ?? null; }
+
+/** Reject ambiguous local timestamps and invalid/rolled-over calendar dates. */
+export function parseWhoisDate(value: string | null, dateOrder?: "dmy"): string | null {
+ if (!value) return null;
+ const trimmed = value.trim();
+ // Without a timezone we know the published calendar day, not the instant.
+ const local = trimmed.match(/^(\d{4})[-/.](\d{2})[-/.](\d{2})[T ](?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\s*\([^)]*\))?$/);
+ if (local) return parseWhoisDate(`${local[1]}-${local[2]}-${local[3]}`);
+ const compact = trimmed.match(/^(\d{4})(\d{2})(\d{2})(?: [0-2]\d:[0-5]\d:[0-5]\d)?$/);
+ if (compact) return parseWhoisDate(`${compact[1]}-${compact[2]}-${compact[3]}`);
+ const dmy = dateOrder === "dmy" && trimmed.match(/^(\d{2})[\/.-](\d{2})[\/.-](\d{4})(?: [0-2]\d:[0-5]\d:[0-5]\d)?$/);
+ if (dmy) return parseWhoisDate(`${dmy[3]}-${dmy[2]}-${dmy[1]}`);
+ const months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];
+ const named = trimmed.match(/^(?:[A-Za-z]{3} )?([A-Za-z]{3}) (\d{1,2}) (\d{4})$/)
+ ?? trimmed.match(/^(\d{4})-([A-Za-z]{3})-(\d{1,2})\.?$/)
+ ?? trimmed.match(/^(\d{1,2})(?:st|nd|rd|th)?[- ]([A-Za-z]+)[- ](\d{4})(?:(?: at)? [\d:.]+)?$/);
+ if (named) {
+ const monthName = named.slice(1).find(part => /^[a-z]+$/i.test(part));
+ const month = months.indexOf(monthName?.slice(0, 3).toLowerCase() ?? "") + 1;
+ const year = named.slice(1).find(part => /^\d{4}$/.test(part));
+ const day = named.slice(1).find(part => /^\d{1,2}$/.test(part));
+ return month && year && day ? parseWhoisDate(`${year}-${String(month).padStart(2, "0")}-${day.padStart(2, "0")}`) : null;
+ }
+ const date = trimmed.match(/^(\d{4})[-/.](\d{2})[-/.](\d{2})(?:\s*\([^)]*\))?$/);
+ if (date) {
+ const iso = `${date[1]}-${date[2]}-${date[3]}`;
+ const parsed = new Date(`${iso}T00:00:00Z`);
+ return Number.isFinite(parsed.getTime()) && parsed.toISOString().startsWith(iso) ? iso : null;
+ }
+ if (!/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})$/i.test(trimmed)) return null;
+ const normalized = trimmed.replace(" ", "T");
+ const time = Date.parse(normalized);
+ const day = normalized.slice(0, 10);
+ const calendar = new Date(`${day}T00:00:00Z`);
+ return Number.isFinite(time) && Number.isFinite(calendar.getTime()) && calendar.toISOString().startsWith(day)
+ ? new Date(time).toISOString() : null;
+}
+
+const DATE_FIELDS = [
+ ["registration", ["creation date", "created", "created on", "created date", "created at", "domain created", "registered", "registered on", "registration date", "registration time", "registered date", "domain dateregistered", "domain record activated"]],
+ ["expiration", ["registry expiry date", "expiry", "expiry date", "expire date", "expiration", "expiration date", "expiration time", "expires", "expires on", "expires at", "domain expires", "paid till", "paid till date", "renewal date", "renew by date", "expire", "valid until"]],
+ ["registrar expiration", ["registrar registration expiration date"]],
+ ["last changed", ["updated date", "updated", "last updated", "last updated on", "last modified", "last update", "modified", "changed", "changed on", "last modified date", "modification date", "domain datemodified"]],
+] as const;
+
+const domainKeys = ["domain", "domain name", "domainname", "domain name ascii", "domain name unicode"];
+const nsKeys = ["name server", "name servers", "nameserver", "nameservers", "nserver", "domain nameservers", "domain servers", "dns servers", "name server information", "name server (db)"];
+const registrarKeys = ["registrar organization", "registrar organisation", "registrar company name", "registrar name", "registrar", "sponsoring registrar"];
+const statusKeys = ["domain status", "status", "state", "flags", "lock status", "transfer status", "registration status"];
+// Generic Status/State may describe a contact; explicit domain labels cannot.
+const explicitStatusKeys = ["domain status", "flags", "lock status", "transfer status", "registration status"];
+const explicitDomainFields = [...explicitStatusKeys, "domain created", "domain dateregistered", "domain datemodified",
+ "domain record activated", "domain record last updated", "domain expires"];
+
+/** Reviewed refusal formats. Scan complete lines; response size is bounded by the client. */
+function failureFrom(text: string, notFoundPattern: RegExp): RdapFetchStatus | null {
+ let failure: RdapFetchStatus | null = null;
+ for (const line of text.split(/\r?\n/)) {
+ let tooMany = false;
+ for (const match of line.matchAll(/\btoo many (?:queries|requests|connections)\b/gi)) {
+ if (!/\b(?:if|when)[\t ]*$/i.test(line.slice(Math.max(0, match.index - 32), match.index))) { tooMany = true; break; }
+ }
+ const quotaExceeded = /\b(?:quota|limits?|maximum (?:number of )?(?:queries|requests|connections))\b/i.test(line) &&
+ /\b(?:exceeded|reached|exhausted)\b/i.test(line);
+ if (quotaExceeded || tooMany ||
+ /^[\t ]*(?:[%#][\t ]*)?(?:error[:\t \d]*)?rate[- ]limited[.!\t ]*$/i.test(line) || /temporarily blocked/i.test(line)) return "rate_limited";
+ if (/access denied|requests of this client are not permitted|permission denied/i.test(line)) failure = "blocked";
+ // Some registries spell a verified not-found as %ERROR:101. An unrelated
+ // error anywhere else must override availability, including in a long line.
+ if ((/^[\t ]*(?:[%#][\t ]*)?error\b|\berror:|\b(?:internal|server|registry) error\b|\b(?:query|lookup) failed\b|\b(?:whois|service) (?:is )?(?:temporarily )?unavailable\b/i.test(line)) && !notFoundPattern.test(line)) failure ??= "registry_error";
+ }
+ return failure;
+}
+
+// A privacy marker is required: filler words alone can be real names (Law, Na).
+// Private and masked retain the previously reviewed standalone privacy labels.
+const PRIVACY_MARKERS = new Set([
+ "redacted", "hidden", "protected", "protection", "privacy", "gdpr", "undisclosed", "disclosed", "withheld",
+ "confidential", "private", "masked",
+]);
+// Organization words such as Trust, Design, Ltd and International stay outside.
+const PRIVACY_TOKENS = new Set([
+ "protected", "protection", "privacy", "private", "gdpr", "redacted", "hidden", "undisclosed", "not", "disclosed",
+ "withheld", "confidential", "data", "for", "by", "purposes", "purpose", "reason", "reasons", "per", "policy", "request",
+ "registry", "registrar", "none", "null", "masked", "non", "public", "shown", "published", "available", "unavailable",
+ "due", "to", "under", "the", "law", "laws", "regulation", "regulations",
+]);
+// Reviewed absence values are separate from privacy labels. N/A is normalized
+// to unavailable; the real name Na never takes that path without the slash.
+const NO_VALUE_TEXT = new Set(["none", "null", "unavailable", "not shown", "not published", "not available", "non public data"]);
+function publishedContactValue(value: string | null): string | null {
+ if (!value) return null;
+ const normalized = value.normalize("NFKC").toLowerCase().replace(/\bn\s*\/\s*a\b/g, "unavailable");
+ const tokens = normalized.match(/[\p{L}\p{N}]+/gu) ?? [];
+ if (!tokens.length || NO_VALUE_TEXT.has(tokens.join(" "))) return null;
+ if (tokens.some(token => PRIVACY_MARKERS.has(token)) && tokens.every(token => PRIVACY_TOKENS.has(token))) return null;
+ // Preserve the reviewed suppression of registry instructions containing a URL;
+ // these explanatory sentences are not identities or privacy-only word values.
+ if (/^(?:not disclosed|not shown|data protected|redacted)(?:[!.,]|\s*-\s*|\s+)[\t ]*(?:please|visit)\b/i.test(value)) return null;
+ return value;
+}
+
+export function parseWhoisResponse(text: string, domain: string, service: WhoisService): {
+ status: RdapFetchStatus; body: unknown; error: string | null;
+} {
+ // These signals take precedence over the domain echo and the not-found pattern.
+ const escapedDomain = domain.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
+ const notFoundPattern = new RegExp(service.notFoundPattern.replaceAll("{domain}", escapedDomain), "im");
+ const failure = failureFrom(text, notFoundPattern);
+ if (failure) return { status: failure, body: null, error: failure === "rate_limited" ? "The WHOIS server is limiting our requests."
+ : failure === "blocked" ? "The WHOIS server refused our request." : "The WHOIS server did not provide a registration answer." };
+ if (/^[\t ]*(?:[%#][\t ]*)?(?:(?:domain )?status:[\t ]*)?(?:reserved|blocked|restricted)[\t ]*\r?$|^.*(?:domain|name) (?:is|has been) (?:reserved|blocked)\b/im.test(text)) {
+ return { status: "registry_error", body: null, error: "The WHOIS server did not provide a registration answer." };
+ }
+ const fields = fieldsFrom(text, service);
+ const domainValues = values(fields, domainKeys);
+ const matchesDomain = domainValues.some(value => {
+ const match = value.match(/^(\S+)(?: \((\S+)\))?$/);
+ return match && [match[1], ...(match[2] ? [match[2]] : [])].every(name => domainToASCII(name.toLowerCase().replace(/\.$/, "")) === domain.toLowerCase());
+ });
+ if (domainValues.length && !matchesDomain) {
+ return { status: "registry_error", body: null, error: "The WHOIS server did not answer for the requested domain." };
+ }
+ const registrar = first(fields, registrarKeys);
+ const registrarHandle = first(fields, ["registrar handle"]);
+ const nameservers = [...new Set([...values(fields, nsKeys),
+ ...[...fields].filter(([name]) => /^ns name \d+$/.test(name)).flatMap(([, values]) => values)]
+ .map(value => value.split(/\s+/)[0].toLowerCase().replace(/\.$/, ""))
+ .filter(value => /^(?=.{1,253}$)[a-z0-9-]+(?:\.[a-z0-9-]+)+$/.test(value)))];
+ const events = DATE_FIELDS.flatMap(([action, names]) => {
+ const date = parseWhoisDate(first(fields, [...names]), service.dateOrder);
+ return date ? [{ eventAction: action, eventDate: date }] : [];
+ });
+ const registeredOn = first(fields, ["relevant dates"])?.match(/^Registered on (.+)$/)?.[1];
+ if (registeredOn && !events.some(event => event.eventAction === "registration")) {
+ const date = parseWhoisDate(registeredOn);
+ if (date) events.push({ eventAction: "registration", eventDate: date });
+ }
+ const statusValues = values(fields, statusKeys);
+ if (statusValues.some(value => /\b(?:reserved|blocked|restricted)\b/i.test(value))) {
+ return { status: "registry_error", body: null, error: "The WHOIS server did not provide a registration answer." };
+ }
+ // Only exact EPP tokens (possibly followed by their documentation URL) map.
+ const statuses = statusValues.flatMap(value => value.split(/,[\t ]*/)).flatMap(value => {
+ const token = value.replace(/\s+https?:\/\/\S+$/, "").trim();
+ const known = STATUS_CODES.find(code => code.epp === token);
+ return known ? [known.rdap] : [];
+ });
+ const hasRecord = Boolean((matchesDomain || (!domainValues.length && service.domainEcho === false && registrar && nameservers.length))
+ && (registrar || registrarHandle || nameservers.length || events.length || statusValues.some(value => value === "Registered" || value === "registered" || value === "ok")));
+ const notFound = notFoundPattern.test(text);
+ const contradictoryStatus = statusKeys.some(name => (fields.get(name) ?? []).some(value => !notFoundPattern.test(`${name}: ${value}`)));
+ if (notFound && (hasRecord || contradictoryStatus)) {
+ return { status: "registry_error", body: null, error: "The WHOIS server returned conflicting registration signals." };
+ }
+ if (notFound) return { status: "not_registered", body: null, error: null };
+ if (!hasRecord) return { status: "registry_error", body: null, error: "The WHOIS server did not provide a registration answer." };
+
+ const dnssec = first(fields, ["dnssec", "signed", "dnssec signed delegation"]);
+ const signed = dnssec && /^(?:signedDelegation|signed delegation|signed|yes|true)$/i.test(dnssec) ? true
+ : dnssec && /^(?:unsigned|unsigned delegation|no|false)$/i.test(dnssec) ? false : null;
+ const entities = [];
+ if (registrar) entities.push({ roles: ["registrar"],
+ handle: /^\d+$/.test(first(fields, ["registrar iana id"]) ?? "") ? first(fields, ["registrar iana id"]) : null,
+ vcardArray: ["vcard", [["fn", {}, "text", registrar],
+ ...(first(fields, ["registrar url", "registrar website", "registrar web"]) ? [["url", {}, "uri", first(fields, ["registrar url", "registrar website", "registrar web"])]] : [])]] });
+ const abuseEmail = first(fields, ["registrar abuse contact email"]);
+ const abusePhone = first(fields, ["registrar abuse contact phone"]);
+ if (abuseEmail || abusePhone) entities.push({ roles: ["abuse"], vcardArray: ["vcard", [
+ ...(abuseEmail && /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(abuseEmail) ? [["email", {}, "text", abuseEmail]] : []),
+ ...(abusePhone && /\d/.test(abusePhone) ? [["tel", {}, "text", abusePhone]] : []),
+ ]] });
+ const registrantFields = [
+ ["fn", "registrant name"], ["org", "registrant organization"], ["email", "registrant email"], ["tel", "registrant phone"],
+ ].flatMap(([property, name]) => {
+ const value = publishedContactValue(first(fields, name === "registrant name" ? [name, "registrant"]
+ : name === "registrant organization" ? [name, "registrant organisation"] : [name]));
+ if (!value) return [];
+ if (property === "email" && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) return [];
+ return [[property, {}, "text", value]];
+ });
+ if (registrantFields.length) entities.push({ roles: ["registrant"], vcardArray: ["vcard", registrantFields] });
+ // RDAP-shaped facts let every existing tool share normalization; protocol says
+ // where they came from. Do not store or return the raw contact-heavy WHOIS text.
+ return { status: "registered", error: null, body: {
+ objectClassName: "domain", ldhName: domain, events, status: [...new Set(statuses)],
+ nameservers: nameservers.map(ldhName => ({ ldhName })), entities,
+ ...(signed === null ? {} : { secureDNS: { delegationSigned: signed } }),
+ whois: { server: service.server, parser: service.parser, rawStatuses: statusValues, registrarHandle,
+ statusesComplete: service.completeStatusList === true && statusValues.length > 0 &&
+ statusValues.flatMap(value => value.split(/,[\t ]*/)).every(value => STATUS_CODES.some(code => code.epp === value.replace(/\s+https?:\/\/\S+$/, "").trim())) },
+ } };
+}
diff --git a/lib/domain/whois-query.ts b/lib/domain/whois-query.ts
new file mode 100644
index 00000000..2025d559
--- /dev/null
+++ b/lib/domain/whois-query.ts
@@ -0,0 +1,8 @@
+import { assertValidDomainLabels } from "./public-suffix.ts";
+import type { WhoisService } from "./whois-parser.ts";
+
+/** Only reviewed query syntax can decorate a valid, normalized domain. */
+export function whoisQueryFor(domain: string, service: Pick): string {
+ assertValidDomainLabels(domain);
+ return (service.queryPrefix ?? "") + domain + (service.querySuffix ?? "");
+}
diff --git a/lib/domain/whois-transport.ts b/lib/domain/whois-transport.ts
new file mode 100644
index 00000000..069b9025
--- /dev/null
+++ b/lib/domain/whois-transport.ts
@@ -0,0 +1,60 @@
+/** Bounded port-43 transport, shared by live lookups and IANA discovery. */
+import { createConnection, type Socket } from "node:net";
+
+export const MAX_WHOIS_RESPONSE_BYTES = 1_000_000;
+
+export type WhoisTransportOptions = {
+ signal?: AbortSignal;
+ timeoutMs?: number;
+ connectTimeoutMs?: number;
+};
+
+/** No referrals: only the reviewed host is contacted, and only on port 43. */
+export function readWhois(
+ host: string,
+ query: string,
+ options: WhoisTransportOptions = {},
+ connect: (options: { host: string; port: number }) => Socket = createConnection,
+): Promise {
+ return new Promise((resolve, reject) => {
+ if (!/^[a-z0-9.-]+$/i.test(host) || /[\r\n\0]/.test(query) || query.length > 512) {
+ reject(new Error("invalid_whois_query"));
+ return;
+ }
+ if (options.signal?.aborted) { reject(new Error("whois_aborted")); return; }
+ const socket = connect({ host, port: 43 });
+ const chunks: Buffer[] = [];
+ let length = 0;
+ let settled = false;
+ const finish = (error?: Error) => {
+ if (settled) return;
+ settled = true;
+ clearTimeout(totalTimer);
+ clearTimeout(connectTimer);
+ options.signal?.removeEventListener("abort", abort);
+ socket.destroy();
+ if (error) { reject(error); return; }
+ const bytes = Buffer.concat(chunks);
+ // Prefer UTF-8; legacy ccTLD servers sometimes return ISO-8859-1.
+ try { resolve(new TextDecoder("utf-8", { fatal: true }).decode(bytes)); }
+ catch { resolve(bytes.toString("latin1")); }
+ };
+ const abort = () => finish(new Error("whois_aborted"));
+ const totalTimer = setTimeout(() => finish(new Error("whois_timeout")), options.timeoutMs ?? 12_000);
+ const connectTimer = setTimeout(() => finish(new Error("whois_timeout")),
+ Math.min(options.connectTimeoutMs ?? 4_000, options.timeoutMs ?? 12_000));
+ options.signal?.addEventListener("abort", abort, { once: true });
+ socket.on("connect", () => {
+ clearTimeout(connectTimer);
+ socket.write(`${query}\r\n`);
+ });
+ socket.on("data", (chunk: Buffer) => {
+ length += chunk.byteLength;
+ if (length > MAX_WHOIS_RESPONSE_BYTES) { finish(new Error("oversized_response")); return; }
+ chunks.push(chunk);
+ });
+ socket.on("end", () => finish());
+ socket.on("error", () => finish(new Error("whois_connection_failed")));
+ socket.on("close", () => { if (!settled) finish(new Error("whois_connection_failed")); });
+ });
+}
diff --git a/lib/domain/whois.ts b/lib/domain/whois.ts
new file mode 100644
index 00000000..408f3064
--- /dev/null
+++ b/lib/domain/whois.ts
@@ -0,0 +1,43 @@
+/** Port-43 fallback for reviewed TLDs only. RDAP always takes precedence. */
+import { readCachedRdap, writeCachedRdap } from "./cache.ts";
+import { acquireEndpointSlot, reportEndpointResult } from "./throttle.ts";
+import { readWhois } from "./whois-transport.ts";
+import { parseWhoisResponse, type WhoisService } from "./whois-parser.ts";
+import type { FetchOptions } from "./rdap.ts";
+import type { RdapFetch } from "./types.ts";
+import { whoisQueryFor } from "./whois-query.ts";
+
+export async function fetchWhois(domain: string, tld: string, service: WhoisService, options: FetchOptions = {}): Promise {
+ // Changing the parser or query format invalidates previously interpreted text.
+ const query = whoisQueryFor(domain, service);
+ // Older versions may have mistaken contact data or privacy labels for facts.
+ const url = `whois://${service.server}/${encodeURIComponent(domain)}?query=${encodeURIComponent(query)}&parser=5&review=${service.verifiedAt}`;
+ const base = { httpStatus: null, url, source: "registry" as const, protocol: "whois" as const,
+ fetchedAt: new Date().toISOString(), fromCache: false };
+ if (!options.bypassCache) {
+ const cached = await readCachedRdap(url, "registry");
+ if (cached) return { ...cached, protocol: "whois", fromCache: true };
+ }
+ const slot = acquireEndpointSlot(url, Date.now(), tld);
+ if (!slot.allowed) return { ...base, status: "rate_limited", body: null,
+ retryAfterSeconds: slot.retryAfterSeconds,
+ error: slot.reason === "circuit_open" ? "This WHOIS server recently refused our requests, so we have paused contacting it."
+ : "We are contacting this WHOIS server too often right now." };
+ try {
+ const raw = await readWhois(service.server, query, options);
+ const parsed = parseWhoisResponse(raw, domain, service);
+ reportEndpointResult(url, parsed.status === "rate_limited" ? 429 : parsed.status === "blocked" ? 403
+ : parsed.status === "registered" || parsed.status === "not_registered" ? 200 : null);
+ const result: RdapFetch = { ...base, ...parsed };
+ if (!options.bypassCache && (result.status === "registered" || result.status === "not_registered")) await writeCachedRdap(url, result);
+ return result;
+ } catch (error) {
+ reportEndpointResult(url, null);
+ const message = error instanceof Error ? error.message : "";
+ const timeout = message === "whois_timeout" || message === "whois_aborted";
+ return { ...base, status: timeout ? "timeout" : "registry_error", body: null,
+ error: timeout ? "The WHOIS server did not answer in time."
+ : message === "oversized_response" ? "The WHOIS server sent a response that was too large to read."
+ : "We could not reach the WHOIS server." };
+ }
+}
diff --git a/package.json b/package.json
index 91ee6c45..17d173fd 100644
--- a/package.json
+++ b/package.json
@@ -61,8 +61,8 @@
"self-host-apps:audit-summary-quality": "node scripts/self-host-apps/audit-summary-quality.mjs",
"self-host-apps:sync-prod-to-local": "node scripts/self-host-apps/sync-prod-to-local.mjs",
"self-host-apps:sync-local-to-prod": "node scripts/self-host-apps/sync-local-to-prod.mjs",
- "domain-tools:refresh-datasets": "node scripts/domain-tools/refresh-datasets.mjs",
- "domain-tools:check-datasets": "node scripts/domain-tools/refresh-datasets.mjs --check",
+ "domain-tools:refresh-datasets": "node --experimental-strip-types scripts/domain-tools/refresh-datasets.mjs",
+ "domain-tools:check-datasets": "node --experimental-strip-types scripts/domain-tools/refresh-datasets.mjs --check",
"domain-tools:refresh-tld-directory": "node --experimental-strip-types scripts/domain-tools/refresh-tld-directory.mjs",
"domain-tools:check-tld-directory": "node --experimental-strip-types scripts/domain-tools/refresh-tld-directory.mjs --check",
"stack127:marker-art": "node scripts/stack127/marker-art/generate.mjs",
diff --git a/scripts/domain-tools/iana-whois.mjs b/scripts/domain-tools/iana-whois.mjs
new file mode 100644
index 00000000..a7e316e2
--- /dev/null
+++ b/scripts/domain-tools/iana-whois.mjs
@@ -0,0 +1,13 @@
+import { domainToASCII } from "node:url";
+
+/** Empty fields must never consume the next line (\s includes newlines). */
+export function parseIanaWhoisServer(text) {
+ const value = text.match(/^whois:[\t ]*([^\r\n]*)$/mi)?.[1]?.trim().toLowerCase();
+ return value && /^(?=.{1,253}$)[a-z0-9-]+(?:\.[a-z0-9-]+)+$/.test(value) ? value : null;
+}
+
+export function parseIanaDomain(text) {
+ const value = text.match(/^domain-ace:[\t ]*([^\r\n]+)/mi)?.[1]
+ ?? text.match(/^domain:[\t ]*([^\r\n]+)/mi)?.[1];
+ return value ? domainToASCII(value.trim().toLowerCase()) : null;
+}
diff --git a/scripts/domain-tools/refresh-datasets.mjs b/scripts/domain-tools/refresh-datasets.mjs
index d35676f7..abb84289 100644
--- a/scripts/domain-tools/refresh-datasets.mjs
+++ b/scripts/domain-tools/refresh-datasets.mjs
@@ -7,20 +7,27 @@
* Sources, all public and stable:
* IANA RDAP bootstrap (dns, ipv4, ipv6, asn) endpoint discovery
* IANA root zone TLD list coverage denominator
+ * IANA port-43 WHOIS discovery for RDAP gaps (serial)
* Public Suffix List registrable-domain reduction
* Unicode IdnaMappingTable + Scripts IDN conversion and script checks
*
* Run: npm run domain-tools:refresh-datasets
* Pass --check to fail when a committed file is out of date instead of writing.
+ * --whois-only refreshes discovery; --whois-retry-failed resumes interrupted
+ * discovery; --skip-whois refreshes HTTP datasets without a port-43 scan.
*/
import { readFile, writeFile } from "node:fs/promises";
import path from "node:path";
+import { readWhois } from "../../lib/domain/whois-transport.ts";
+import { parseIanaDomain, parseIanaWhoisServer } from "./iana-whois.mjs";
const root = process.cwd();
const dataDir = path.join(root, "lib/domain/data");
const checkOnly = process.argv.includes("--check");
const fetchedAt = new Date().toISOString().slice(0, 10);
+const whoisOnly = process.argv.includes("--whois-only");
+const skipWhois = process.argv.includes("--skip-whois");
const UNICODE_VERSION = "16.0.0";
@@ -61,7 +68,7 @@ async function emit(name, value) {
// The fetch date changes on every run and would make --check permanently dirty,
// so compare everything except that field.
- const strip = (text) => text.replace(/"fetchedAt": "[^"]*",?\n/, "");
+ const strip = (text) => JSON.stringify({ ...JSON.parse(text), fetchedAt: undefined });
if (current !== null && strip(current) === strip(next)) {
console.log(` unchanged ${name}`);
return false;
@@ -191,6 +198,13 @@ function parseScripts(raw) {
async function main() {
console.log(checkOnly ? "Checking committed datasets" : "Refreshing committed datasets");
+ if (whoisOnly) {
+ const bootstrap = JSON.parse(await readFile(path.join(dataDir, "rdap-bootstrap.json"), "utf8"));
+ const tldList = JSON.parse(await readFile(path.join(dataDir, "tlds.json"), "utf8"));
+ if (await refreshWhois(bootstrap, tldList)) process.exitCode = 1;
+ return;
+ }
+
const [dns, ipv4, ipv6, asn, tlds, psl, idna, scripts] = await Promise.all([
get(SOURCES.rdapDns), get(SOURCES.rdapIpv4), get(SOURCES.rdapIpv6), get(SOURCES.rdapAsn),
get(SOURCES.tlds), get(SOURCES.psl), get(SOURCES.idnaMapping), get(SOURCES.scripts),
@@ -227,6 +241,14 @@ async function main() {
ranges: parseScripts(scripts),
}) || stale;
+ // An IANA entry always wins. Retire reviewed URLs when the bootstrap catches up.
+ const overrideData = JSON.parse(await readFile(path.join(dataDir, "rdap-overrides.json"), "utf8"));
+ for (const tld of Object.keys(overrideData.overrides)) {
+ if (bootstrap.services[tld]) delete overrideData.overrides[tld];
+ }
+ stale = await emit("rdap-overrides.json", overrideData) || stale;
+ if (!skipWhois) stale = await refreshWhois(bootstrap, tldList) || stale;
+
const covered = tldList.tlds.filter((tld) => bootstrap.services[tld]).length;
console.log(`\nRoot zone TLDs: ${tldList.tlds.length}`);
console.log(`With an IANA bootstrap RDAP entry: ${covered}`);
@@ -238,6 +260,45 @@ async function main() {
}
}
+/** Discovery is not permission to query a registry; whois-reviewed.json owns that. */
+async function refreshWhois(bootstrap, tldList) {
+ const { overrides } = JSON.parse(await readFile(path.join(dataDir, "rdap-overrides.json"), "utf8"));
+ const gaps = tldList.tlds.filter(tld => !bootstrap.services[tld] && !overrides[tld]);
+ const reviewed = JSON.parse(await readFile(path.join(dataDir, "whois-reviewed.json"), "utf8"));
+ // Retire fallback profiles when RDAP takes over; discovery never creates one.
+ for (const tld of Object.keys(reviewed.services)) {
+ if (!gaps.includes(tld)) delete reviewed.services[tld];
+ }
+ const reviewedStale = await emit("whois-reviewed.json", reviewed);
+ let services = {};
+ if (process.argv.includes("--whois-retry-failed")) {
+ const prior = JSON.parse(await readFile(path.join(dataDir, "whois-servers.json"), "utf8"));
+ services = Object.fromEntries(Object.entries(prior.services).filter(([tld]) => gaps.includes(tld)));
+ }
+ const failedTlds = [];
+ for (const [index, tld] of gaps.entries()) {
+ if (Object.hasOwn(services, tld)) continue;
+ try {
+ const raw = await readWhois("whois.iana.org", tld, { timeoutMs: 8_000 });
+ // An empty, throttled or unrelated answer is not an empty whois field.
+ const returnedTld = parseIanaDomain(raw);
+ if (returnedTld !== tld) throw new Error("iana_non_answer");
+ services[tld] = parseIanaWhoisServer(raw);
+ } catch {
+ failedTlds.push(tld);
+ }
+ if ((index + 1) % 20 === 0) console.log(` IANA WHOIS ${index + 1}/${gaps.length}`);
+ // Parallel IANA queries are throttled hard. Keep this serial, including failures.
+ await new Promise(resolve => setTimeout(resolve, 700));
+ }
+ const stale = await emit("whois-servers.json", { source: "whois.iana.org:43", fetchedAt,
+ comment: "IANA discovery only. A server is enabled only by whois-reviewed.json.",
+ services: Object.fromEntries(Object.entries(services).sort(([a], [b]) => a.localeCompare(b))), failedTlds });
+ console.log(`IANA WHOIS servers: ${Object.values(services).filter(Boolean).length}; failed queries: ${failedTlds.length}`);
+ if (failedTlds.length) throw new Error(`IANA WHOIS discovery incomplete: ${failedTlds.join(", ")}. Retry before committing.`);
+ return stale || reviewedStale;
+}
+
main().catch((error) => {
console.error(error.message);
process.exit(1);
diff --git a/scripts/domain-tools/refresh-tld-directory.mjs b/scripts/domain-tools/refresh-tld-directory.mjs
index afcbbdd5..852d615b 100644
--- a/scripts/domain-tools/refresh-tld-directory.mjs
+++ b/scripts/domain-tools/refresh-tld-directory.mjs
@@ -6,7 +6,7 @@
* Three sources, all public:
* IANA root zone database type and sponsoring organisation (HTML, parsed)
* The root zone file which endings are signed, from real DS records
- * Our committed bootstrap whether we can look the ending up at all
+ * Our committed services RDAP bootstrap, reviewed RDAP and reviewed WHOIS
*
* The root zone file is used rather than 1,438 individual DS queries: it is one
* fetch and it is the same data the queries would return.
@@ -153,6 +153,8 @@ async function main() {
assigned: info?.assigned ?? null,
rdap: coverage.source,
rdapOperator: coverage.operator,
+ lookupSource: coverage.source,
+ lookupHost: coverage.host,
dnssec: signed.has(tld),
isIdn: tld.startsWith("xn--"),
});
@@ -166,7 +168,10 @@ async function main() {
counts: {
total: rows.length,
signed: rows.filter((row) => row.dnssec).length,
- rdapCovered: rows.filter((row) => row.rdap !== "none").length,
+ rdapCovered: rows.filter((row) => row.lookupSource === "bootstrap" || row.lookupSource === "override").length,
+ whoisCovered: rows.filter((row) => row.lookupSource === "whois").length,
+ lookupCovered: rows.filter((row) => row.lookupSource !== "none").length,
+ uncovered: rows.filter((row) => row.lookupSource === "none").length,
unassigned: rows.filter((row) => row.assigned === false).length,
missingType,
},
@@ -192,7 +197,7 @@ async function main() {
console.log(`\nEndings: ${payload.counts.total}`);
console.log(`Signed with DNSSEC: ${payload.counts.signed}`);
- console.log(`We can look up: ${payload.counts.rdapCovered}`);
+ console.log(`We can look up: ${payload.counts.lookupCovered} (${payload.counts.rdapCovered} RDAP, ${payload.counts.whoisCovered} WHOIS)`);
console.log(`Delegated but not assigned: ${payload.counts.unassigned}`);
if (missingType) console.log(`No type from IANA: ${missingType}`);
}
diff --git a/stack127_docs/rdap.md b/stack127_docs/rdap.md
index 0b915c19..2971e8b2 100644
--- a/stack127_docs/rdap.md
+++ b/stack127_docs/rdap.md
@@ -2,11 +2,11 @@
This is the shared engine contract for every stack127 tool that reads domain, IP, or ASN registration data. Page-specific behavior lives in `content_docs//README.md`. This file owns the parts every tool depends on.
-Status: plan. Once `lib/domain/` exists, update this file to describe the built engine.
+Status: built. RDAP is the first choice. Reviewed port-43 WHOIS services cover some of the remaining TLDs.
-Every fact below was checked against a primary source on 28 July 2026. Where a value can drift, the source and check date are recorded. Re-verify them instead of trusting them.
+Protocol references were checked on 28 July 2026. Service verification dates live with each committed dataset and reviewed entry. Re-verify values that can drift.
-## Why RDAP and not WHOIS
+## RDAP first, WHOIS fallback
ICANN ended the port 43 WHOIS requirement for gTLD registries and registrars on 28 January 2025. RDAP replaces it: structured JSON over HTTPS.
@@ -18,11 +18,18 @@ So WHOIS is a documented fallback, not the main path. Never quote WHOIS when RDA
## Endpoint discovery
-Find the endpoint in three layers, in order:
+Find the endpoint in four layers, in order:
-1. IANA bootstrap. `https://data.iana.org/rdap/dns.json` maps a TLD to one or more RDAP base URLs. Checked 28 July 2026: publication `2026-07-23`, 590 service entries, 1,200 distinct TLDs.
-2. Reviewed overrides. The root zone had 1,438 TLDs on 27 July 2026 (`https://data.iana.org/TLD/tlds-alpha-by-domain.txt`, version `2026072601`). So 238 have no bootstrap entry, and some of those still run RDAP. `.io` is the important one: no bootstrap entry, but `https://rdap.identitydigital.services/rdap/domain/github.io` returned 200. Overrides are a hand-reviewed file in the repo, never discovered at request time.
-3. Nothing. If neither layer knows the TLD, the answer is unknown. Don't guess a URL from the registry name. Don't fall back to a third-party aggregator to make the page look complete.
+1. IANA bootstrap. `https://data.iana.org/rdap/dns.json` maps a TLD to RDAP base URLs. The committed file records its publication and fetch dates. The root-zone list supplies the denominator.
+2. Reviewed RDAP overrides in `lib/domain/data/rdap-overrides.json`. New entries require a real domain returning HTTP 200 with a domain object and a made-up name returning 404. Record both names and the verification date. Remove overrides when IANA adds their TLD.
+3. Reviewed WHOIS services in `lib/domain/data/whois-reviewed.json`. Discovery in `whois-servers.json` comes from the root TLD's `whois:` field at `whois.iana.org`. Discovery alone never enables coverage. Each reviewed entry records a real domain, a made-up name, its observed not-found pattern, its parser family and any query quirks.
+4. Nothing. If no verified service is known, return `no_service`. Never guess an endpoint or use a third-party aggregator.
+
+`registrationServiceForTld()` resolves these layers. `rdapServiceForTld()` remains an alias for existing callers. RDAP responses and failures never trigger a WHOIS hop; fallback is only for TLDs without an RDAP service. WHOIS never follows a referral or a registrar's RDAP link.
+
+Run `npm run domain-tools:refresh-datasets` to refresh the HTTP datasets and serial WHOIS discovery, with a 700 ms pause between IANA queries. Failed discovery queries fail the command and are recorded separately. Resume with `-- --whois-only --whois-retry-failed`. An empty `whois:` line means no server; parsing must not consume the next line. IDN records use `domain-ace` or their Unicode domain name for identity checks.
+
+Run `npm run domain-tools:refresh-tld-directory` after changing coverage. Rows expose `lookupSource` and `lookupHost`; the old `rdap` field remains a coverage-source alias and can now contain `whois`. Counts distinguish `rdapCovered`, `whoisCovered`, `lookupCovered`, and `uncovered`.
Don't route lookups through `rdap.org` or any other public redirector, for three reasons:
@@ -38,21 +45,22 @@ Refresh the bootstrap and TLD list with a script under `scripts/domain-tools/` a
Bootstrap coverage and real coverage are different numbers. The gap grows each time we add an override.
-`.io` is one of the 238 without a bootstrap entry, and it's also checkable. Both are true. A page that says "we cannot check 238 TLDs" while it checks `.io` contradicts itself.
+`.io` has no bootstrap entry and is checkable through a reviewed override. A page must count all verified service sources before saying how many TLDs it cannot check.
-So exactly one function, `coverageSummary()` in `lib/domain/bootstrap.ts`, returns the covered count, the uncovered count, and the check date. It computes them from the committed bootstrap plus the committed overrides.
+So exactly one function, `coverageSummary()` in `lib/domain/bootstrap.ts`, returns `bootstrapCovered`, `overrideCovered`, `whoisCovered`, `covered`, `uncovered`, and the check date. It computes them from the root zone and the three committed service sources.
Every page reads that function. No page hardcodes a number, and no page-owned doc should be quoted as the source of one.
-For each TLD, the engine returns one of three states. Write page copy against these states, not against a count:
+For each TLD, the engine returns one of four sources. Write page copy against these states, not against a count:
| State | Meaning |
| --- | --- |
| `bootstrap` | Covered by the IANA file. |
| `override` | Covered by our reviewed override, with the operator named. |
-| `none` | No known RDAP service. |
+| `whois` | Covered by a reviewed official WHOIS service. |
+| `none` | No verified registration service. |
-Add a test that fails if any route source contains a hardcoded coverage number.
+Lookup results add `coverage.host` and `registryFetch.protocol` (`rdap` or `whois`). WHOIS uses a `whois://` source URL and has no HTTP status. Existing result status values and registry/registrar source roles remain unchanged. Multi-TLD rows add `coverageSource`.
## Event actions
@@ -165,7 +173,7 @@ Map statuses explicitly:
| Status | Meaning |
| --- | --- |
-| 200 | Registered |
+| 200 with a valid RDAP object | Registered |
| 404 | Not in this registry |
| 429 | Rate limited |
| 403 | Blocked |
@@ -174,6 +182,16 @@ Map statuses explicitly:
Rate limited and blocked aren't availability answers. They must never render as available.
+### WHOIS answers
+
+Only the reviewed server's anchored not-found pattern produces `not_registered`. A domain echo alone is insufficient for `registered`; require registration fields such as nameservers, registrar or a date. NIC Chile's reviewed profile permits an omitted domain echo only when registrar and nameserver fields establish a record. Quota text, access refusal, conflicting signals, reservations, empty responses and connection failures are non-answers.
+
+The parser supports key-value, bracket and block families. It returns RDAP-shaped facts for shared normalization, labelled with the WHOIS protocol. Dates without a timezone keep calendar-day precision; ambiguous numeric dates remain null unless the server's date order was reviewed. Registry and registrar expiry stay distinct. Only exact EPP tokens map to EPP statuses. Other status text stays in `registryFetch.body.whois.rawStatuses` and does not imply a lock code.
+
+The port-43 client sends a CRLF-terminated query, has a 4-second connect timeout and 12-second total timeout, and stops responses over 1 MB. It decodes UTF-8 first and falls back to Latin-1. Raw WHOIS text is neither cached nor returned; parsed registration facts use the existing cache.
+
+Transfer readiness leaves lock checks unknown when WHOIS publishes no exact EPP statuses. For country-code and infrastructure endings, `policyApplies` is false and ICANN waiting-period checks remain unknown. Registry-specific rules still need to be checked with the registrar.
+
## Caching
The DNS tools cache nothing on purpose and send `cache-control: no-store`. RDAP has to be different. Registry servers throttle by source IP, and the whole site leaves the OVH VPS through one address.
@@ -181,9 +199,9 @@ The DNS tools cache nothing on purpose and send `cache-control: no-store`. RDAP
Store responses in Postgres through `lib/db.ts`:
- Key on the normalized lowercase domain, object type, and which server answered.
-- Store the raw response, the HTTP status, and the fetch time.
-- Suggested freshness: 24 hours for a registered domain, 1 hour for a not-registered answer, 5 minutes for an error.
-- Never cache 429 or 403 as a result. Cache only the fact that we were throttled, so we back off.
+- Store the RDAP response or parsed WHOIS facts, the HTTP status (null for WHOIS), and the fetch time.
+- Freshness: 24 hours for a registered domain, 1 hour for a not-registered answer. Errors are not cached.
+- Never cache throttles or blocks as results. The in-process breaker handles backoff.
- When the answer came from cache, show the reader the fetch time.
## Global throttling
@@ -201,6 +219,10 @@ Before any tool that fans out across registries goes live, it needs:
Both limiters run. The per-visitor one stops abuse. The global one stops us from becoming the abuser.
+The shared limiter allows 60 outbound requests per host per minute, with a 20-request share per TLD. Registrar hops use the same TLD share. Three consecutive rejections open the host breaker for 60 seconds; a valid HTTP `Retry-After` pauses the host immediately, bounded to one hour. WHOIS quota and block messages feed the same breaker. This state is for one application instance; scaling requires shared state.
+
+Before release, verify outbound TCP port 43 from the OVH application container. A successful check from a developer machine does not establish production connectivity. A failed connection returns `registry_error` or `timeout` and is never treated as availability.
+
## Privacy, stated accurately
The DNS pages say stack127 doesn't store lookup history. Don't copy that sentence here. Don't replace it with an equally absolute claim the other way either.
diff --git a/tests/pages/domain-tools/shared/bootstrap.test.mjs b/tests/pages/domain-tools/shared/bootstrap.test.mjs
index 343ec357..09d006cd 100644
--- a/tests/pages/domain-tools/shared/bootstrap.test.mjs
+++ b/tests/pages/domain-tools/shared/bootstrap.test.mjs
@@ -16,9 +16,9 @@ test("resolves an overridden TLD and names who runs it", () => {
});
test("reports no service rather than guessing", () => {
- const co = rdapServiceForTld("co");
- assert.equal(co.source, "none");
- assert.equal(co.url, null);
+ const aq = rdapServiceForTld("aq");
+ assert.equal(aq.source, "none");
+ assert.equal(aq.url, null);
});
test("accepts a leading dot and mixed case", () => {
@@ -33,12 +33,27 @@ test("flags an ending that is not in the root zone", () => {
test("coverage is derived from the data, not hardcoded", () => {
const summary = coverageSummary();
assert.equal(summary.covered + summary.uncovered, summary.rootZoneTlds);
- assert.equal(summary.covered, summary.bootstrapCovered + summary.overrideCovered);
+ assert.equal(summary.covered, summary.bootstrapCovered + summary.overrideCovered + summary.whoisCovered);
assert.equal(summary.rootZoneTlds, allRootZoneTlds().length);
assert.ok(summary.overrideCovered >= 1, "at least one override should count toward coverage");
assert.match(summary.checkedAt, /^\d{4}-\d{2}-\d{2}$/);
});
+test("WHOIS coverage enables only reviewed services and exposes the transport host", () => {
+ const eu = rdapServiceForTld("eu");
+ assert.equal(eu.source, "whois");
+ assert.equal(eu.host, "whois.eu");
+ assert.equal(eu.url, "whois://whois.eu/");
+ assert.equal(rdapServiceForTld("co").source, "override");
+ const counts = { bootstrap: 0, override: 0, whois: 0, none: 0 };
+ for (const tld of allRootZoneTlds()) counts[rdapServiceForTld(tld).source] += 1;
+ const summary = coverageSummary();
+ assert.equal(summary.bootstrapCovered, counts.bootstrap);
+ assert.equal(summary.overrideCovered, counts.override);
+ assert.equal(summary.whoisCovered, counts.whois);
+ assert.equal(summary.uncovered, counts.none);
+});
+
test("every override records how it was verified", () => {
for (const entry of overrideEntries()) {
assert.ok(entry.url.startsWith("https://"), `${entry.tld} needs an https URL`);
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/am.txt b/tests/pages/domain-tools/shared/fixtures/whois/am.txt
new file mode 100644
index 00000000..5ee9f063
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/am.txt
@@ -0,0 +1,15 @@
+# Trimmed whois.amnic.net response for nic.am, 2026-10-14. Contacts omitted.
+ Domain name: nic.am
+ Registrar: amnic
+ Status: active
+
+ Registrant:
+
+ Administrative contact:
+
+ Technical contact:
+
+ No name servers provided
+
+ Registered: 1997-01-01
+ Last modified: 2017-12-28
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/ax.txt b/tests/pages/domain-tools/shared/fixtures/whois/ax.txt
new file mode 100644
index 00000000..02c177f3
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/ax.txt
@@ -0,0 +1,19 @@
+# Trimmed whois.ax response for nic.ax, 2026-10-14. Contacts omitted.
+domain...............: nic.ax
+status...............: Registered
+created..............: 05.09.2016
+expires..............: 05.09.2027
+available............: 06.10.2027
+modified.............: 29.08.2026
+RegistryLock.........: no
+
+Nameservers
+
+Holder
+
+Registrar
+
+registrar............: NETIM
+www..................: https://www.netim.com/en/domain-name/ax-domain
+
+Copyright (c) Ålands Landskapsregering
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/be.txt b/tests/pages/domain-tools/shared/fixtures/whois/be.txt
new file mode 100644
index 00000000..82821455
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/be.txt
@@ -0,0 +1,25 @@
+# Trimmed whois.dns.be response for google.be, 2026-10-14. Contacts omitted.
+Domain: google.be
+Status: NOT AVAILABLE
+Registered: Tue Dec 12 2000
+
+Registrant:
+
+Registrar Technical Contacts:
+
+Registrar:
+ Name: Markmonitor Inc.
+ Website: https://www.markmonitor.com
+
+Nameservers:
+ ns3.google.com
+ ns1.google.com
+ ns2.google.com
+ ns4.google.com
+
+Keys:
+
+Flags:
+ clientTransferProhibited
+
+Please visit www.dnsbelgium.be for more info.
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/bf.txt b/tests/pages/domain-tools/shared/fixtures/whois/bf.txt
new file mode 100644
index 00000000..087770b4
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/bf.txt
@@ -0,0 +1,13 @@
+# Trimmed whois.registre.bf response for nic.bf, 2026-10-14. Contact values redacted by the registry.
+Domain Name: nic.bf
+Creation Date: 2021-01-01T00:00:00.0Z
+Registry Expiry Date: 2022-12-31T00:00:00.0Z
+Domain Status: ok https://icann.org/epp#ok
+Registrant Name: Redacted | Registry Policy
+Registrant Organization: MIGRATION-ORG
+Registrant Phone: Redacted | Registry Policy
+Registrant Email: Redacted | Registry Policy
+Name Server: ns1.nic.bf
+Name Server: ns1.arcep.bf
+Name Server: ns2.arcep.bf
+DNSSEC: unsigned
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/eu.txt b/tests/pages/domain-tools/shared/fixtures/whois/eu.txt
new file mode 100644
index 00000000..046810cb
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/eu.txt
@@ -0,0 +1,13 @@
+# Trimmed whois.eu response for europa.eu, 2026-10-14. Contact sections omitted.
+Domain: europa.eu
+Script: LATIN
+
+Registrar:
+ Name: ClearMedia NV
+ Website: https://www.clearmedia.be
+
+Name servers:
+ ans1.cw.net
+ ns1bru.europa.eu (147.67.250.2)
+ ns1lux.europa.eu (147.67.12.2)
+ ns4az1.europa.eu (2a05:d018:c5f:3701:cc8a:9177:b28:c034)
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/gg.txt b/tests/pages/domain-tools/shared/fixtures/whois/gg.txt
new file mode 100644
index 00000000..b82db608
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/gg.txt
@@ -0,0 +1,23 @@
+# Trimmed whois.gg response for google.gg, 2026-10-14. Contacts omitted.
+Domain:
+ google.gg
+
+Domain Status:
+ Active
+ Delete Prohibited by Registrar
+ Update Prohibited by Registrar
+ Transfer Prohibited by Registrar
+
+Registrar:
+ MarkMonitor Inc. (http://www.markmonitor.com)
+
+Relevant dates:
+ Registered on 30th April 2003 at 00:00:00.000
+ Registry fee due on 30th April each year
+
+Registration status:
+ Registered until cancelled
+
+Name servers:
+ ns1.google.com
+ ns2.google.com
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/im.txt b/tests/pages/domain-tools/shared/fixtures/whois/im.txt
new file mode 100644
index 00000000..bcd850b5
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/im.txt
@@ -0,0 +1,18 @@
+# Trimmed whois.nic.im response for google.im, 2026-10-14. Contacts omitted.
+Domain Name: google.im
+Domain Managers
+Redacted
+Domain Owners / Registrant
+Redacted
+Administrative Contact
+Redacted
+Billing Contact
+Redacted
+Technical Contact
+Redacted
+Domain Details
+Expiry Date: 16/08/2027 23:59:39
+Name Server:ns1.google.com.
+Name Server:ns2.google.com.
+Name Server:ns3.google.com.
+Name Server:ns4.google.com.
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/it.txt b/tests/pages/domain-tools/shared/fixtures/whois/it.txt
new file mode 100644
index 00000000..32156f95
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/it.txt
@@ -0,0 +1,17 @@
+# Trimmed whois.nic.it response for google.it, 2026-10-14. Contact sections omitted.
+Domain: google.it
+Status: ok
+Signed: no
+Created: 1999-12-10 00:00:00
+Last Update: 2026-06-09 23:13:34
+Expire Date: 2027-04-21
+
+Registrar
+ Organization: MarkMonitor International Limited
+ Name: MARKMONITOR-REG
+ Web: https://www.markmonitor.com/
+ DNSSEC: no
+
+Nameservers
+ ns1.google.com
+ ns2.google.com
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/jp.txt b/tests/pages/domain-tools/shared/fixtures/whois/jp.txt
new file mode 100644
index 00000000..b172aad9
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/jp.txt
@@ -0,0 +1,11 @@
+# Trimmed whois.jprs.jp response for google.jp/e, 2026-10-14. Contacts omitted.
+[Domain Name] GOOGLE.JP
+[Name Server] ns1.google.com
+[Name Server] ns2.google.com
+[Signing Key]
+[Created on] 2005/05/30
+[Expires on] 2027/05/31
+[Status] Active
+[Lock Status] DomainTransferLocked
+[Lock Status] AgentChangeLocked
+[Last Updated] 2026/06/01 01:05:03 (JST)
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/kz.txt b/tests/pages/domain-tools/shared/fixtures/whois/kz.txt
new file mode 100644
index 00000000..2281a741
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/kz.txt
@@ -0,0 +1,20 @@
+# Trimmed whois.nic.kz response for google.kz, 2026-10-14. Contacts omitted.
+Domain Name............: google.kz
+
+Registrant
+
+Administrative Contact
+
+Name Server list
+
+Name Server............: ns1.google.com
+Name Server............: ns2.google.com
+
+Domain created.........: 1999-06-07 14:01:43 (GMT+0:00)
+Last modified..........: 2012-11-28 04:16:59 (GMT+0:00)
+Expiration date........: 2027-06-06 19:00:00 (GMT+0:00)
+
+Domain status..........: ok - Normal state.
+
+Registrar created......: KAZNIC
+Current Registrar......: KAZNIC
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/se.txt b/tests/pages/domain-tools/shared/fixtures/whois/se.txt
new file mode 100644
index 00000000..a1a409dc
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/se.txt
@@ -0,0 +1,13 @@
+# Trimmed whois.iis.se response for google.se, 2026-10-14. Contacts omitted.
+state: active
+domain: google.se
+created: 2003-08-27
+modified: 2026-09-18
+expires: 2027-10-20
+nserver: ns1.google.com
+nserver: ns2.google.com
+dnssec: unsigned delegation
+status: serverUpdateProhibited
+status: serverDeleteProhibited
+status: serverTransferProhibited
+registrar: MarkMonitor Inc
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/sk.txt b/tests/pages/domain-tools/shared/fixtures/whois/sk.txt
new file mode 100644
index 00000000..cbb2c1f5
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/sk.txt
@@ -0,0 +1,17 @@
+# Trimmed whois.sk-nic.sk response for google.sk, 2026-10-14. Personal contacts omitted.
+Domain: google.sk
+Created: 2003-07-24
+Valid Until: 2027-07-24
+Updated: 2026-06-22
+Domain Status: clientTransferProhibited, clientUpdateProhibited, clientDeleteProhibited
+
+Domain registrant: mmr-170347
+Organization: Google Ireland Holdings Unlimited Company
+Created: 2019-06-07
+Updated: 2019-06-07
+
+Registrar: MARK-0292
+Name: MarkMonitor International Limited
+Organization: MarkMonitor International Limited
+Created: 2018-06-27
+Updated: 2026-10-01
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/tn.txt b/tests/pages/domain-tools/shared/fixtures/whois/tn.txt
new file mode 100644
index 00000000..a2b1e494
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/tn.txt
@@ -0,0 +1,16 @@
+# Trimmed whois.ati.tn response for google.tn, 2026-10-14. Contacts omitted.
+Domain name.........: google.tn
+Details:
+Creation date.......: 05-12-2018 11:02:02 GMT+1
+Domain status.......: Active
+Registrar...........: ELB
+
+Owner Contact
+
+Administrativ contact
+
+Technical contact
+
+dnssec..............: unsigned
+
+DNS servers
diff --git a/tests/pages/domain-tools/shared/fixtures/whois/ws.txt b/tests/pages/domain-tools/shared/fixtures/whois/ws.txt
new file mode 100644
index 00000000..0d82c95f
--- /dev/null
+++ b/tests/pages/domain-tools/shared/fixtures/whois/ws.txt
@@ -0,0 +1,11 @@
+# Trimmed whois.website.ws response for google.ws, 2026-10-14. Contacts omitted.
+Domain Name: GOOGLE.WS
+Registrar URL: http://www.markmonitor.com/whois.asp
+Updated Date: 2026-01-31T10:43:38Z
+Creation Date: 2002-03-03T18:00:26Z
+Registrar Registration Expiration Date: 2027-03-04T00:00:26Z
+Registrar: MarkMonitor Inc.
+Registrar IANA ID: 292
+Domain Status: clientTransferProhibited
+Name Server: ns1.google.com
+DNSSEC: unsigned
diff --git a/tests/pages/domain-tools/shared/throttle.test.mjs b/tests/pages/domain-tools/shared/throttle.test.mjs
index c9782c0d..8ef9235f 100644
--- a/tests/pages/domain-tools/shared/throttle.test.mjs
+++ b/tests/pages/domain-tools/shared/throttle.test.mjs
@@ -86,3 +86,40 @@ test("endpoints are keyed by host, not full URL", () => {
acquireEndpointSlot("https://rdap.example-a.test/domain/two", now);
assert.equal(endpointStateForTests(A).used, 2, "both paths share the registry's budget");
});
+
+test("a busy TLD leaves host capacity for other TLDs", () => {
+ const now = 1_000_000;
+ for (let i = 0; i < THROTTLE_SETTINGS.MAX_PER_TLD_WINDOW; i += 1) assert.equal(acquireEndpointSlot(A, now, "me").allowed, true);
+ assert.equal(acquireEndpointSlot(A, now, "me").reason, "tld_budget_exhausted");
+ assert.equal(acquireEndpointSlot(A, now, "sh").allowed, true);
+ assert.equal(acquireEndpointSlot(A, now, "ai").allowed, true);
+ assert.equal(acquireEndpointSlot(A, now + THROTTLE_SETTINGS.WINDOW_MS, "me").allowed, true);
+});
+
+test("TLD shares still respect the single-IP host ceiling", () => {
+ const now = 1_000_000;
+ for (let i = 0; i < THROTTLE_SETTINGS.MAX_PER_WINDOW; i += 1) assert.equal(acquireEndpointSlot(A, now, `tld${i}`).allowed, true);
+ assert.equal(acquireEndpointSlot(A, now, "another").reason, "budget_exhausted");
+});
+
+test("the rejection breaker is shared across extensions and RDAP/WHOIS on the host", () => {
+ const now = 1_000_000;
+ for (let i = 0; i < THROTTLE_SETTINGS.BREAKER_THRESHOLD; i += 1) reportEndpointResult(A, 429, now);
+ assert.equal(acquireEndpointSlot(A, now, "sh").reason, "circuit_open");
+ assert.equal(acquireEndpointSlot("whois://rdap.example-a.test/one", now, "me").reason, "circuit_open");
+});
+
+test("Retry-After delta seconds and HTTP dates pause the whole host immediately", () => {
+ const now = 1_000_000;
+ reportEndpointResult(A, 429, now, "120");
+ assert.equal(acquireEndpointSlot(A, now, "me").retryAfterSeconds, 120);
+ assert.equal(acquireEndpointSlot(A, now + 120_001, "me").allowed, true);
+ reportEndpointResult(B, 429, now, new Date(now + 90_000).toUTCString());
+ assert.equal(acquireEndpointSlot(B, now).retryAfterSeconds, 90);
+});
+
+test("invalid Retry-After falls back to the short rejection cooldown", () => {
+ const now = 1_000_000;
+ for (let i = 0; i < THROTTLE_SETTINGS.BREAKER_THRESHOLD; i += 1) reportEndpointResult(A, 403, now, "invalid");
+ assert.equal(acquireEndpointSlot(A, now).retryAfterSeconds, THROTTLE_SETTINGS.BREAKER_COOLDOWN_MS / 1000);
+});
diff --git a/tests/pages/domain-tools/shared/tld-directory.test.mjs b/tests/pages/domain-tools/shared/tld-directory.test.mjs
index 31ff79e0..bf75d0ae 100644
--- a/tests/pages/domain-tools/shared/tld-directory.test.mjs
+++ b/tests/pages/domain-tools/shared/tld-directory.test.mjs
@@ -34,7 +34,12 @@ test("bidi control characters are stripped from displayed names", () => {
});
test("coverage agrees with the bootstrap", () => {
- assert.equal(directory.counts.rdapCovered, coverageSummary().covered);
+ const summary = coverageSummary();
+ assert.equal(directory.counts.rdapCovered, summary.bootstrapCovered + summary.overrideCovered);
+ assert.equal(directory.counts.whoisCovered, summary.whoisCovered);
+ assert.equal(directory.counts.lookupCovered, summary.covered);
+ assert.equal(directory.counts.uncovered, summary.uncovered);
+ assert.equal(directory.rows.filter(row => row.lookupSource === "whois").length, summary.whoisCovered);
const io = directory.rows.find((row) => row.tld === "io");
assert.equal(io?.rdap, "override");
assert.equal(io?.rdapOperator, "Identity Digital");
diff --git a/tests/pages/domain-tools/shared/transfer-policy.test.mjs b/tests/pages/domain-tools/shared/transfer-policy.test.mjs
index 16ec0dcd..97b366de 100644
--- a/tests/pages/domain-tools/shared/transfer-policy.test.mjs
+++ b/tests/pages/domain-tools/shared/transfer-policy.test.mjs
@@ -79,3 +79,22 @@ test("it always states what it cannot see", () => {
assert.ok(result.cannotCheck.length >= 3);
assert.ok(result.cannotCheck.some((item) => item.includes("authorization code")));
});
+
+test("WHOIS without exact EPP statuses leaves public lock checks unknown", () => {
+ const result = assessTransfer(registrationWith({ coverage: { source: "whois" }, query: { domain: "google.gg", tldType: "country-code" } }));
+ for (const id of ["client-lock", "server-lock", "pending-transfer", "lifecycle"]) {
+ assert.equal(result.findings.find(f => f.id === id).state, "unknown");
+ }
+ assert.equal(result.policyApplies, false);
+});
+
+test("ccTLD dates do not imply an ICANN waiting-period block", () => {
+ const result = assessTransfer(registrationWith({
+ query: { domain: "new.it", tldType: "country-code" }, coverage: { source: "whois" },
+ registrationDate: "2026-10-13", transferDate: "2026-10-13",
+ statuses: [{ rdap: "client transfer prohibited" }],
+ }), new Date("2026-10-14T00:00:00Z"));
+ assert.equal(result.findings.find(f => f.id === "client-lock").state, "blocked");
+ assert.equal(result.findings.find(f => f.id === "registration-lock").state, "unknown");
+ assert.equal(result.findings.find(f => f.id === "transfer-lock").state, "unknown");
+});
diff --git a/tests/pages/domain-tools/shared/whois-query.test.mjs b/tests/pages/domain-tools/shared/whois-query.test.mjs
new file mode 100644
index 00000000..8d2d191f
--- /dev/null
+++ b/tests/pages/domain-tools/shared/whois-query.test.mjs
@@ -0,0 +1,23 @@
+import { test } from "node:test";
+import assert from "node:assert/strict";
+import { normalizeDomainInput, DomainInputError } from "../../../../lib/domain/public-suffix.ts";
+import { whoisQueryFor } from "../../../../lib/domain/whois-query.ts";
+import { readWhois } from "../../../../lib/domain/whois-transport.ts";
+
+test("ASCII and mapped fullwidth hyphens cannot produce option-shaped WHOIS domains", () => {
+ for (const input of ["-x.eu", "-x.eu", "x-.eu", "x-.eu"]) {
+ assert.throws(() => normalizeDomainInput(input), error => error instanceof DomainInputError && error.code === "invalid_name", input);
+ }
+});
+
+test("outbound WHOIS label validation runs before decoration or any socket", async () => {
+ let sockets = 0;
+ const profile = { queryPrefix: "-T dn ", querySuffix: "/e" };
+ for (const domain of ["-x.eu", "x-.eu", "example..eu", "a_b.eu", "a/b.eu", "a\r\n.eu", "é.eu", "example.eu.", "a".repeat(64) + ".eu", "xn--.eu"]) {
+ await assert.rejects(async () => readWhois("whois.example.test", whoisQueryFor(domain, profile), {}, () => { sockets += 1; assert.fail("must not connect"); }), DomainInputError, domain);
+ }
+ assert.equal(sockets, 0);
+ assert.equal(whoisQueryFor("a-b.eu", profile), "-T dn a-b.eu/e");
+ const idn = normalizeDomainInput("bücher.eu");
+ assert.equal(whoisQueryFor(idn.domain, { querySuffix: "/e" }), "xn--bcher-kva.eu/e");
+});
diff --git a/tests/pages/domain-tools/shared/whois-transport.test.mjs b/tests/pages/domain-tools/shared/whois-transport.test.mjs
new file mode 100644
index 00000000..3e18b83f
--- /dev/null
+++ b/tests/pages/domain-tools/shared/whois-transport.test.mjs
@@ -0,0 +1,53 @@
+import { test } from "node:test";
+import assert from "node:assert/strict";
+import { EventEmitter } from "node:events";
+import { readWhois, MAX_WHOIS_RESPONSE_BYTES } from "../../../../lib/domain/whois-transport.ts";
+
+class FakeSocket extends EventEmitter {
+ writes = [];
+ destroyed = false;
+ write(query) { this.writes.push(query); return true; }
+ destroy() { this.destroyed = true; }
+}
+function connection(socket, events) {
+ return () => { queueMicrotask(() => events(socket)); return socket; };
+}
+
+test("WHOIS sends CRLF, reads all chunks until end and safely decodes latin-1", async () => {
+ const socket = new FakeSocket();
+ const result = await readWhois("whois.example.test", "example.test/e", {}, connection(socket, s => {
+ s.emit("connect"); s.emit("data", Buffer.from("Domain: example.test\nRegistrar: Caf"));
+ s.emit("data", Buffer.from([0xe9])); s.emit("end");
+ }));
+ assert.deepEqual(socket.writes, ["example.test/e\r\n"]);
+ assert.match(result, /Café$/);
+ assert.equal(socket.destroyed, true);
+});
+
+test("large responses are stopped and partial answers are rejected on socket error", async () => {
+ for (const events of [s => s.emit("data", Buffer.alloc(MAX_WHOIS_RESPONSE_BYTES + 1)), s => { s.emit("data", Buffer.from("Domain: example.test")); s.emit("error", new Error("private socket details")); }, s => s.emit("close")]) {
+ const socket = new FakeSocket();
+ await assert.rejects(readWhois("whois.example.test", "example.test", {}, connection(socket, events)), /oversized_response|whois_connection_failed/);
+ assert.equal(socket.destroyed, true);
+ }
+});
+
+test("connection and total timeouts close the socket", async () => {
+ for (const connected of [false, true]) {
+ const socket = new FakeSocket();
+ await assert.rejects(readWhois("whois.example.test", "example.test", { timeoutMs: 20, connectTimeoutMs: 10 }, connection(socket, s => { if (connected) s.emit("connect"); })), /whois_timeout/);
+ assert.equal(socket.destroyed, true);
+ }
+});
+
+test("abort closes the socket and an already-aborted query never connects", async () => {
+ const controller = new AbortController();
+ const socket = new FakeSocket();
+ await assert.rejects(readWhois("whois.example.test", "example.test", { signal: controller.signal }, connection(socket, s => { s.emit("connect"); controller.abort(); })), /whois_aborted/);
+ assert.equal(socket.destroyed, true);
+ await assert.rejects(readWhois("whois.example.test", "example.test", { signal: controller.signal }, () => { assert.fail("must not connect"); }), /whois_aborted/);
+});
+
+test("query newlines are rejected before any outbound socket", async () => {
+ await assert.rejects(readWhois("whois.example.test", "example.test\r\nother", {}, () => assert.fail("must not connect")), /invalid_whois_query/);
+});
diff --git a/tests/pages/domain-tools/shared/whois.test.mjs b/tests/pages/domain-tools/shared/whois.test.mjs
new file mode 100644
index 00000000..3b478589
--- /dev/null
+++ b/tests/pages/domain-tools/shared/whois.test.mjs
@@ -0,0 +1,443 @@
+import { test } from "node:test";
+import assert from "node:assert/strict";
+import { readFile } from "node:fs/promises";
+import { parseWhoisResponse, parseWhoisDate } from "../../../../lib/domain/whois-parser.ts";
+import { buildRegistration } from "../../../../lib/domain/normalize.ts";
+import { parseIanaDomain, parseIanaWhoisServer } from "../../../../scripts/domain-tools/iana-whois.mjs";
+import { assessTransfer } from "../../../../lib/domain/transfer-readiness.ts";
+import reviewed from "../../../../lib/domain/data/whois-reviewed.json" with { type: "json" };
+
+const services = {
+ it: { parser: "blocks", notFoundPattern: "^Status:[\\t ]*AVAILABLE[\\t ]*\\r?$" },
+ eu: { parser: "blocks", notFoundPattern: "^Status:[\\t ]*AVAILABLE[\\t ]*\\r?$" },
+ jp: { parser: "bracket", notFoundPattern: "^No match!![\\t ]*\\r?$" },
+ se: { parser: "key-value", notFoundPattern: '^domain "{domain}" not found\\.[\\t ]*\\r?$' },
+ gg: { parser: "blocks", notFoundPattern: "^NOT FOUND[\\t ]*\\r?$" },
+ ws: { parser: "key-value", notFoundPattern: "^The queried object does not exist: {domain}\\.[\\t ]*\\r?$" },
+ sk: reviewed.services.sk,
+};
+async function fixture(tld) { return readFile(new URL(`./fixtures/whois/${tld}.txt`, import.meta.url), "utf8"); }
+function normalized(tld, domain, text, profile = {}) {
+ const parsed = parseWhoisResponse(text, domain, { server: `whois.${tld}`, ...reviewed.services[tld], ...services[tld], ...profile });
+ return buildRegistration({
+ query: { input: domain, domain, unicode: domain, tld, suffix: tld, reduced: false, isIdn: false, guessedSuffix: false },
+ coverage: { source: "whois", operator: null, url: `whois://whois.${tld}/`, host: `whois.${tld}`, unknownTld: false },
+ registry: { ...parsed, protocol: "whois", source: "registry", httpStatus: null, fetchedAt: "2026-10-14T00:00:00Z", fromCache: false, url: `whois://whois.${tld}/${domain}` },
+ registrar: null, startedAt: Date.now(),
+ });
+}
+
+test("Italian blocks keep domain dates separate from contacts and parse registrar and DNSSEC", async () => {
+ const text = (await fixture("it")).replace("\nRegistrar\n", "\nRegistrant\n Created: 2018-03-02 19:04:02\n\nRegistrar\n");
+ const result = normalized("it", "google.it", text);
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrationDate, "1999-12-10");
+ assert.equal(result.registryExpiryDate, "2027-04-21");
+ assert.equal(result.lastChangedDate, "2026-06-09");
+ assert.equal(result.registrar.name, "MarkMonitor International Limited");
+ assert.equal(result.dnssecSigned, false);
+ assert.equal(result.nameservers.length, 2);
+});
+
+test("EU blocks publish nameservers and registrar, while dates and DNSSEC remain unknown", async () => {
+ const result = normalized("eu", "europa.eu", await fixture("eu"));
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrar.name, "ClearMedia NV");
+ assert.equal(result.nameservers[1].hostname, "ns1bru.europa.eu");
+ assert.equal(result.nameservers[3].hostname, "ns4az1.europa.eu");
+ assert.equal(result.registrationDate, null);
+ assert.equal(result.registryExpiryDate, null);
+ assert.equal(result.dnssecSigned, null);
+ assert.equal(result.registrarFetch, null);
+});
+
+test("Japanese bracket fields keep local dates and never invent EPP codes from lock text", async () => {
+ const result = normalized("jp", "google.jp", await fixture("jp"));
+ assert.equal(result.registrationDate, "2005-05-30");
+ assert.equal(result.registryExpiryDate, "2027-05-31");
+ assert.equal(result.lastChangedDate, "2026-06-01");
+ assert.deepEqual(result.statuses, []);
+ assert.equal(result.registrar.name, null);
+});
+
+test("Swedish key-value fields map only exact EPP tokens", async () => {
+ const result = normalized("se", "google.se", await fixture("se"));
+ assert.equal(result.registrationDate, "2003-08-27");
+ assert.equal(result.lastChangedDate, "2026-09-18");
+ assert.equal(result.registryExpiryDate, "2027-10-20");
+ assert.equal(result.dnssecSigned, false);
+ assert.deepEqual(result.statuses.map(s => s.epp), ["serverUpdateProhibited", "serverDeleteProhibited", "serverTransferProhibited"]);
+});
+
+test("Channel Islands prose gives a registration date, never a made-up yearly expiry or lock code", async () => {
+ const result = normalized("gg", "google.gg", await fixture("gg"));
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrationDate, "2003-04-30");
+ assert.equal(result.registrar.name, "MarkMonitor Inc. (http://www.markmonitor.com)");
+ assert.equal(result.registryExpiryDate, null);
+ assert.deepEqual(result.statuses, []);
+});
+
+test("registrar expiry stays distinct from registry expiry in WHOIS", async () => {
+ const result = normalized("ws", "google.ws", await fixture("ws"));
+ assert.equal(result.registryExpiryDate, null);
+ assert.equal(result.registrarExpiryDate, "2027-03-04T00:00:26.000Z");
+ assert.equal(result.registrar.ianaId, "292");
+});
+
+test("only verified not-found patterns decide availability", () => {
+ for (const [tld, text] of [["it", "Domain: missing.it\nStatus: AVAILABLE\n"], ["eu", "Domain: missing.eu\nStatus: AVAILABLE\n"], ["jp", "No match!!\r\n"], ["gg", "NOT FOUND\r\n"], ["se", 'domain "missing.se" not found.\n']]) {
+ assert.equal(parseWhoisResponse(text, `missing.${tld}`, services[tld]).status, "not_registered");
+ }
+ for (const text of ["", "Domain: missing.it\n", "No match!!\n", "Domain: other.it\nRegistrar: Example\n", "Domain: other.it\nStatus: AVAILABLE\n", "Status: RESERVED\n", "Domain is blocked\n", "WHOIS temporarily unavailable\n"]) {
+ assert.equal(parseWhoisResponse(text, "missing.it", services.it).status, "registry_error", text);
+ }
+});
+
+test("quota, blocks and conflicting responses are non-answers, even with domain echoes", () => {
+ for (const text of ["Domain: missing.it\nStatus: AVAILABLE\nQuota exceeded\n", "Too many requests", "WHOIS LIMIT EXCEEDED", "Rate limited\n"]) {
+ assert.equal(parseWhoisResponse(text, "missing.it", services.it).status, "rate_limited");
+ }
+ assert.equal(parseWhoisResponse("Requests of this client are not permitted.", "missing.it", services.it).status, "blocked");
+ assert.equal(parseWhoisResponse("Domain: missing.it\nStatus: AVAILABLE\nName Server: ns.example.com", "missing.it", services.it).status, "registry_error");
+ assert.equal(parseWhoisResponse("Domain: missing.it\nStatus: Reserved by the registry\nRegistrar: Example\nName Server: ns.example.com", "missing.it", services.it).status, "registry_error");
+});
+
+test("a rate-limit policy in a footer is not an actual throttle", () => {
+ const text = "Domain: example.ws\nRegistrar: Example\n\nAccess to the whois service is rate limited. For more information, please see our policy.\n";
+ assert.equal(parseWhoisResponse(text, "example.ws", services.ws).status, "registered");
+ const terms = "Terms of Use: If too many queries are received from a single IP address within a specified time, the service will begin to reject further queries.";
+ assert.equal(parseWhoisResponse(text + terms, "example.ws", services.ws).status, "registered");
+ const copyrighted = "Domain: missing.eu\nStatus: AVAILABLE\n\nAll rights\nreserved.\n";
+ assert.equal(parseWhoisResponse(copyrighted, "missing.eu", services.eu).status, "not_registered");
+});
+
+test("dates preserve precision, validate calendars and leave ambiguous forms unknown", () => {
+ assert.equal(parseWhoisDate("2026-02-30"), null);
+ assert.equal(parseWhoisDate("2026-02-30T00:00:00Z"), null);
+ assert.equal(parseWhoisDate("2026-10-14 02:00:00"), "2026-10-14");
+ assert.equal(parseWhoisDate("02/03/2026"), null);
+ assert.equal(parseWhoisDate("02/03/2026", "dmy"), "2026-03-02");
+ assert.equal(parseWhoisDate("Tue Dec 12 2000"), "2000-12-12");
+ assert.equal(parseWhoisDate("20001204 20:03:13"), "2000-12-04");
+ assert.equal(parseWhoisDate("2026-10-14T06:00:00+0100"), "2026-10-14T05:00:00.000Z");
+});
+
+test("IANA empty whois lines never eat the next status line", () => {
+ for (const text of ["whois: \nstatus: ACTIVE\n", "whois:\r\nstatus: ACTIVE\r\n", "status: ACTIVE\n"]) assert.equal(parseIanaWhoisServer(text), null);
+ assert.equal(parseIanaWhoisServer("whois: WHOIS.NIC.IT\r\nstatus: ACTIVE\r\n"), "whois.nic.it");
+ assert.equal(parseIanaWhoisServer("whois: status:\n"), null);
+ assert.equal(parseIanaDomain("domain: 中国\ndomain-ace: XN--FIQS8S\n"), "xn--fiqs8s");
+});
+
+test("maximum-query notices and long quota/error lines override verified availability", () => {
+ const available = "Domain: example.it\nStatus: AVAILABLE\n";
+ const notices = [
+ "Maximum number of queries exceeded",
+ "Maximum number of connections reached",
+ "x".repeat(700) + " Quota exceeded",
+ "Quota " + "x".repeat(700) + " exceeded",
+ "x".repeat(700) + " Maximum number of queries exceeded",
+ "ERROR: " + "x".repeat(700) + " lookup failed",
+ "x".repeat(700) + " ERROR: registry problem",
+ "WHOIS temporarily unavailable",
+ ];
+ for (const notice of notices) {
+ const result = parseWhoisResponse(available + notice, "example.it", services.it);
+ assert.ok(["rate_limited", "registry_error"].includes(result.status), notice);
+ assert.equal(result.body, null);
+ }
+ const conditionalThenFailure = "Terms: If too many queries are received, access may stop. " + "x".repeat(700) + " Quota exceeded";
+ assert.equal(parseWhoisResponse(available + conditionalThenFailure, "example.it", services.it).status, "rate_limited");
+ assert.equal(parseWhoisResponse(available + "ERROR: request failed\nMaximum number of queries exceeded", "example.it", services.it).status, "rate_limited");
+});
+
+test("availability plus a contradictory status is a non-answer without any record facts", () => {
+ for (const status of ["inactive / clientHold", "clientHold", "Registered", "locked", "we cannot confirm"]) {
+ const result = parseWhoisResponse(`Domain: example.it\nStatus: AVAILABLE\nStatus: ${status}\n`, "example.it", services.it);
+ assert.equal(result.status, "registry_error", status);
+ assert.equal(result.body, null);
+ }
+});
+
+test("privacy placeholders never become registrant identities or contact values", () => {
+ for (const placeholder of ["hidden", "HIDDEN", "[hidden]", "redacted", "REDACTED FOR PRIVACY", "not disclosed", "NOT SHOWN!", "data protected", "private", "withheld", "non-public data"]) {
+ const result = normalized("it", "example.it", `Domain: example.it\nStatus: ok\n\nRegistrant\n Name: ${placeholder}\n Organization: ${placeholder}\n Phone: ${placeholder}\n`);
+ assert.equal(result.status, "registered");
+ assert.deepEqual(result.entities.filter(entity => entity.roles.includes("registrant")), [], placeholder);
+ }
+ const published = normalized("it", "example.it", "Domain: example.it\nStatus: ok\n\nRegistrant\n Organization: Hidden Hands LLC\n");
+ assert.equal(published.entities.find(entity => entity.roles.includes("registrant")).organization, "Hidden Hands LLC");
+});
+
+test("SK sections separate domain dates, registrant organization and registrar handles", async () => {
+ const text = await fixture("sk");
+ const result = normalized("sk", "google.sk", text);
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrationDate, "2003-07-24");
+ assert.equal(result.registryExpiryDate, "2027-07-24");
+ assert.equal(result.lastChangedDate, "2026-06-22");
+ assert.equal(result.registrar.name, "MarkMonitor International Limited");
+ assert.equal(result.registrar.ianaId, null);
+ assert.equal(result.registryFetch.body.whois.registrarHandle, "MARK-0292");
+ assert.equal(result.entities.find(entity => entity.roles.includes("registrant")).organization, "Google Ireland Holdings Unlimited Company");
+ const partial = normalized("sk", "google.sk", text.replace(/^Created: +2003-07-24\n/m, "").replace(/^Updated: +2026-06-22\n/m, ""));
+ assert.equal(partial.registrationDate, null, "contact Created is not domain Created");
+ assert.equal(partial.lastChangedDate, null, "contact Updated is not domain Updated");
+});
+
+test("other block and contact-reference formats cannot supply missing domain dates", () => {
+ const blocks = "Domain: example.it\nStatus: ok\n\nRegistrant\n Organization: Example LLC\n Created: 2018-01-02\n\nAdmin Contact\n Created: 2020-01-02\n\nRegistrar\n Name: Example Registrar\n Created: 2021-01-02\n DNSSEC: yes\n\nName servers:\n nserver: ns1.example.net\n Changed: 2026-01-02\n";
+ const result = normalized("it", "example.it", blocks);
+ assert.equal(result.registrationDate, null);
+ assert.equal(result.lastChangedDate, null);
+ assert.equal(result.dnssecSigned, null, "registrar DNSSEC capability is not the domain's delegation state");
+ const reference = "Domain: example.ls\nregistrar: REG-LS\n\ncontact: ADMIN-LSNIC\nCreated: 2018-01-02\nchanged: 2020-01-02\n\nnserver: ns1.example.net\ntech-c: TECH-LSNIC\nCreated: 2021-01-02\n";
+ const ls = normalized("ls", "example.ls", reference, reviewed.services.ls);
+ assert.equal(ls.status, "registered");
+ assert.equal(ls.registrationDate, null);
+ assert.equal(ls.lastChangedDate, null);
+ assert.equal(ls.registrar.name, null);
+ assert.equal(ls.registrar.ianaId, null);
+ assert.equal(ls.registryFetch.body.whois.registrarHandle, "REG-LS");
+});
+
+test("WHOIS database dates cannot turn a not-found response into a registration", () => {
+ const result = parseWhoisResponse("[Domain]\nDomain: missing.lv\nStatus: free\n\n[Whois]\nUpdated: 2026-10-14T00:00:00Z\n", "missing.lv", reviewed.services.lv);
+ assert.equal(result.status, "not_registered");
+});
+
+test("a partial WHOIS EPP list cannot rule out transfer locks, while proven blockers survive", () => {
+ const partial = normalized("it", "example.it", "Domain: example.it\nCreated: 2000-01-01\nstatus: clientUpdateProhibited\ntransfer status: locked\n");
+ assert.equal(partial.status, "registered");
+ assert.equal(partial.statuses[0].epp, "clientUpdateProhibited");
+ assert.equal(partial.registryFetch.body.whois.statusesComplete, false);
+ const assessed = assessTransfer(partial);
+ for (const id of ["client-lock", "server-lock", "pending-transfer", "lifecycle"]) assert.equal(assessed.findings.find(f => f.id === id).state, "unknown");
+ for (const [status, id] of [["clientTransferProhibited", "client-lock"], ["serverTransferProhibited", "server-lock"], ["pendingTransfer", "pending-transfer"], ["redemptionPeriod", "lifecycle"]]) {
+ const proven = normalized("it", "example.it", `Domain: example.it\nCreated: 2000-01-01\nstatus: ${status}\n`);
+ assert.equal(assessTransfer(proven).findings.find(f => f.id === id).state, "blocked");
+ }
+});
+
+test("only reviewed complete exact EPP lists can establish absence, with unknown status text downgrading completeness", () => {
+ const text = "Domain: example.it\nCreated: 2000-01-01\nstatus: clientUpdateProhibited\n";
+ const complete = normalized("it", "example.it", text, { completeStatusList: true });
+ assert.equal(complete.registryFetch.body.whois.statusesComplete, true);
+ assert.equal(assessTransfer(complete).findings.find(f => f.id === "client-lock").state, "clear");
+ const mixed = normalized("it", "example.it", text + "transfer status: locked\n", { completeStatusList: true });
+ assert.equal(mixed.registryFetch.body.whois.statusesComplete, false);
+ assert.equal(assessTransfer(mixed).findings.find(f => f.id === "client-lock").state, "unknown");
+});
+
+test("explicit domain statuses override availability inside every contact or raw-value block", () => {
+ for (const heading of ["Registrant", "Registrar", "Admin Contact", "Technical Contact", "Nameservers"]) {
+ for (const field of ["Domain Status", "Flags", "Transfer Status", "Lock Status", "Registration Status"]) {
+ for (const statusLine of [` ${field}: inactive / clientHold`, `${field}:\n clientHold`]) {
+ const text = `Domain: example.it\nStatus: AVAILABLE\n${heading}\n${statusLine}\n`;
+ const parsed = parseWhoisResponse(text, "example.it", services.it);
+ assert.equal(parsed.status, "registry_error", text);
+ assert.equal(parsed.body, null);
+ }
+ }
+ }
+ const scoped = normalized("it", "example.it", "Domain: example.it\nStatus: ok\nRegistrant\n Domain Status: clientHold\n Created: 2018-01-02\n");
+ assert.deepEqual(scoped.statuses.map(status => status.epp), ["clientHold", "ok"]);
+ assert.equal(scoped.registrationDate, null, "an explicit domain field does not change the contact's ownership");
+});
+
+test("Belgian footer flags retain the proven registrar transfer blocker", async () => {
+ const result = normalized("be", "google.be", await fixture("be"));
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrationDate, "2000-12-12");
+ assert.equal(result.registrar.name, "Markmonitor Inc.");
+ assert.equal(result.nameservers.length, 4);
+ assert.deepEqual(result.statuses.map(status => status.epp), ["clientTransferProhibited"]);
+ assert.equal(assessTransfer(result).findings.find(f => f.id === "client-lock").state, "blocked");
+});
+
+test("Armenian domain footer dates survive contact sections", async () => {
+ const text = (await fixture("am")).replace(" Technical contact:\n", " Technical contact:\n Created: 2020-01-02\n");
+ const result = normalized("am", "nic.am", text);
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrationDate, "1997-01-01");
+ assert.equal(result.lastChangedDate, "2017-12-28");
+ assert.equal(result.registrar.name, "amnic");
+ assert.deepEqual(result.registryFetch.body.whois.rawStatuses, ["active"]);
+ const partial = normalized("am", "nic.am", text.replace(/^ Registered:.*\n/m, ""));
+ assert.equal(partial.registrationDate, null, "contact Created is still scoped");
+});
+
+test("Kazakh domain footer dates and statuses survive contact sections", async () => {
+ const result = normalized("kz", "google.kz", await fixture("kz"));
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrationDate, "1999-06-07");
+ assert.equal(result.registryExpiryDate, "2027-06-06");
+ assert.equal(result.lastChangedDate, "2012-11-28");
+ assert.equal(result.nameservers.length, 2);
+ assert.deepEqual(result.registryFetch.body.whois.rawStatuses, ["ok - Normal state."]);
+ assert.deepEqual(result.statuses, [], "free-text normal state is not an EPP code");
+});
+
+test("Manx Domain Details returns from contacts to the domain expiry", async () => {
+ const text = (await fixture("im")).replace("Technical Contact\nRedacted", "Technical Contact\nRedacted\nCreated: 2020-01-02\nExpiry Date: 01/01/2030");
+ const result = normalized("im", "google.im", text);
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrationDate, null);
+ assert.equal(result.registryExpiryDate, "2027-08-16");
+ assert.equal(result.nameservers.length, 4);
+});
+
+test("Åland's registrar-labelled field is not prefixed by its Registrar heading", async () => {
+ const result = normalized("ax", "nic.ax", await fixture("ax"));
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrar.name, "NETIM");
+ assert.equal(result.registrationDate, "2016-09-05");
+ assert.equal(result.registryExpiryDate, "2027-09-05");
+ assert.equal(result.lastChangedDate, "2026-08-29");
+ assert.deepEqual(result.registryFetch.body.whois.rawStatuses, ["Registered"]);
+});
+
+test("standalone protected and privacy-qualified placeholders never become owner identities", () => {
+ for (const placeholder of ["protected", "PROTECTED", "[protected]", "protected by GDPR", "Protected by the GDPR", "undisclosed for privacy", "undisclosed for privacy reasons", "withheld under data protection law", "hidden due to GDPR"]) {
+ const result = normalized("it", "example.it", `Domain: example.it\nStatus: ok\nRegistrant\n Name: ${placeholder}\n Organization: ${placeholder}\n Phone: ${placeholder}\n`);
+ assert.equal(result.status, "registered");
+ assert.deepEqual(result.entities.filter(entity => entity.roles.includes("registrant")), [], placeholder);
+ }
+ for (const organization of ["Google Ireland Holdings Unlimited Company", "MarkMonitor International Limited", "NETIM", "Protected Trust, LLC", "Private Internet Access", "HiddenLayer"]) {
+ const result = normalized("it", "example.it", `Domain: example.it\nStatus: ok\nRegistrant\n Organization: ${organization}\n`);
+ assert.equal(result.entities.find(entity => entity.roles.includes("registrant")).organization, organization);
+ }
+});
+
+test("Manx manager and owner headings isolate contact evidence until Domain Details", async () => {
+ const fixtureText = await fixture("im");
+ for (const heading of ["Domain Managers", "Domain Owners / Registrant"]) {
+ const contact = `${heading}\n\nCreated: 2020-01-02\nStatus: ok\nStatus: clientTransferProhibited\nExpiry Date: 01/01/2030\n`;
+ const bare = parseWhoisResponse(`Domain Name: google.im\n${contact}`, "google.im", reviewed.services.im);
+ assert.equal(bare.status, "registry_error", heading);
+ assert.equal(bare.body, null);
+ const text = fixtureText.replace(`${heading}\n`, contact);
+ const result = normalized("im", "google.im", text);
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrationDate, null, heading);
+ assert.equal(result.registryExpiryDate, "2027-08-16", "Domain Details restores domain ownership");
+ assert.deepEqual(result.statuses, [], heading);
+ assert.equal(assessTransfer(result).findings.find(f => f.id === "client-lock").state, "unknown");
+ const explicit = normalized("im", "google.im", text.replace("Status: clientTransferProhibited", "Domain Status: clientTransferProhibited"));
+ assert.equal(explicit.registrationDate, null);
+ assert.deepEqual(explicit.statuses.map(status => status.epp), ["clientTransferProhibited"]);
+ assert.equal(assessTransfer(explicit).findings.find(f => f.id === "client-lock").state, "blocked");
+ }
+});
+
+// Exact contact/registrar headings observed in the 77 reviewed captures. The
+// other profiles have flat fields or inline contact references, covered above.
+const capturedContactHeadings = {
+ am: ["Registrant:", "Administrative contact:", "Technical contact:"],
+ ax: ["Holder", "Registrar"],
+ be: ["Registrant:", "Registrar Technical Contacts:", "Registrar:"],
+ bn: ["Registrant:", "Administrative Contact:", "Technical Contact:"],
+ edu: ["Registrant:", "Administrative Contact:", "Technical Contact:"],
+ ee: ["Registrant:", "Administrative contact:", "Technical contact:", "Registrar:"],
+ eu: ["Registrant:", "Technical:", "Registrar:"],
+ gf: ["[holder]", "[admin_c]", "[tech_c]", "[zone_c]"],
+ gg: ["Registrant:", "Registrar:"],
+ hk: ["Registrant Contact Information:"],
+ im: ["Domain Managers", "Domain Owners / Registrant", "Administrative Contact", "Billing Contact", "Technical Contact"],
+ it: ["Registrant", "Admin Contact", "Technical Contacts", "Registrar"],
+ je: ["Registrant:", "Registrar:"],
+ jp: ["Contact Information:"],
+ kz: ["Registrant", "Administrative Contact"],
+ lv: ["[Holder]", "[Tech]", "[Registrar]"],
+ mq: ["[holder]", "[admin_c]", "[tech_c]", "[zone_c]"],
+ mx: ["Registrant:", "Administrative Contact:", "Technical Contact:", "Billing Contact:"],
+ sm: ["Owner:", "Technical Contact:"],
+ tn: ["Owner Contact", "Administrativ contact", "Technical contact"],
+ tr: ["** Registrant:", "** Registrar:"],
+ ug: ["Registrant Contact Information:", "Administrative Contact Information:", "Technical Contact Information:"],
+};
+
+test("every captured standalone contact heading excludes generic contact dates and statuses", () => {
+ for (const [tld, headings] of Object.entries(capturedContactHeadings)) {
+ for (const heading of headings) {
+ const domain = `example.${tld}`;
+ // TN explicitly publishes DNSSEC as a domain footer field; its exception
+ // is tested with the captured footer below, rather than contact data here.
+ const dnssec = tld === "tn" ? "" : "DNSSEC: yes\n";
+ const contact = `${heading}\n\nStatus: ok\nCreated: 2020-01-02\nUpdated: 2021-01-02\nStatus: clientTransferProhibited\n${dnssec}`;
+ const bare = parseWhoisResponse(`Domain: ${domain}\n${contact}`, domain, reviewed.services[tld]);
+ assert.equal(bare.status, "registry_error", `${tld} ${heading}`);
+ const text = `Domain: ${domain}\nName Server: ns1.example.net\n${contact}`;
+ const result = normalized(tld, domain, text);
+ assert.equal(result.status, "registered", `${tld} ${heading}`);
+ assert.equal(result.registrationDate, null, `${tld} ${heading} Created`);
+ assert.equal(result.lastChangedDate, null, `${tld} ${heading} Updated`);
+ assert.deepEqual(result.statuses, [], `${tld} ${heading} Status`);
+ assert.equal(result.dnssecSigned, null, `${tld} ${heading} DNSSEC`);
+ const explicit = normalized(tld, domain, text + "Domain Status: clientTransferProhibited\n");
+ assert.deepEqual(explicit.statuses.map(status => status.epp), ["clientTransferProhibited"], `${tld} ${heading} Domain Status`);
+ }
+ }
+});
+
+test("privacy markers suppress punctuation and qualifier variants while keeping organization words", () => {
+ for (const placeholder of [
+ "protected for privacy purposes", "protected (GDPR)", "undisclosed for privacy protection",
+ "[Protected] (GDPR)", "PROTECTED—GDPR", "private, per policy request", "redacted: data protection; purpose",
+ "not/disclosed for privacy purposes", "N/A", "[N / A]", "none", "---",
+ ]) {
+ const result = normalized("it", "example.it", `Domain: example.it\nStatus: ok\nRegistrant\n Name: ${placeholder}\n Organization: ${placeholder}\n Phone: ${placeholder}\n`);
+ assert.deepEqual(result.entities.filter(entity => entity.roles.includes("registrant")), [], placeholder);
+ }
+ for (const organization of ["Protected Trust Ltd", "Protected by Design Ltd", "Privacy International"]) {
+ const result = normalized("it", "example.it", `Domain: example.it\nStatus: ok\nRegistrant\n Name: ${organization}\n Organization: ${organization}\n`);
+ const registrant = result.entities.find(entity => entity.roles.includes("registrant"));
+ assert.equal(registrant.name, organization);
+ assert.equal(registrant.organization, organization);
+ }
+ const notice = normalized("be", "example.be", "Domain: example.be\nRegistered: 2000-01-01\nRegistrant:\n Not shown, please visit www.dnsbelgium.be for webbased whois.\n");
+ assert.deepEqual(notice.entities.filter(entity => entity.roles.includes("registrant")), []);
+});
+
+test("Burkina Faso registry-policy redactions never become published registrant fields", async () => {
+ const result = normalized("bf", "nic.bf", await fixture("bf"));
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrationDate, "2021-01-01T00:00:00.000Z");
+ assert.equal(result.nameservers.length, 3);
+ const registrant = result.entities.find(entity => entity.roles.includes("registrant"));
+ assert.equal(registrant.name, null);
+ assert.equal(registrant.phone, null);
+ assert.equal(registrant.email, null);
+ assert.equal(registrant.organization, "MIGRATION-ORG", "the separately published organization field is kept");
+});
+
+test("privacy token values require a marker, while absent values remain absent", () => {
+ for (const placeholder of [
+ "Redacted | Registry Policy", "REDACTED FOR PRIVACY", "Data Protected", "Confidential | Registrar Policy",
+ "redacted (registry) / per policy request", "protected for privacy purposes", "protected (GDPR)", "undisclosed for privacy protection",
+ "n/a", "[N / A]", "none", "null", "---",
+ ]) {
+ const result = normalized("it", "example.it", `Domain: example.it\nStatus: ok\nRegistrant\n Name: ${placeholder}\n Organization: ${placeholder}\n Phone: ${placeholder}\n`);
+ assert.deepEqual(result.entities.filter(entity => entity.roles.includes("registrant")), [], placeholder);
+ }
+ for (const name of ["Protected Trust Ltd", "Protected by Design Ltd", "Privacy International", "Law", "Na", "Registry", "Policy Request", "Data", "The Law", "Redacted Na"]) {
+ const result = normalized("it", "example.it", `Domain: example.it\nStatus: ok\nRegistrant\n Name: ${name}\n Organization: ${name}\n`);
+ const registrant = result.entities.find(entity => entity.roles.includes("registrant"));
+ assert.equal(registrant.name, name);
+ assert.equal(registrant.organization, name);
+ }
+});
+
+test("Tunisian DNSSEC footer is a reviewed domain field after contacts", async () => {
+ const text = (await fixture("tn")).replace("Technical contact\n", "Technical contact\nCreated: 2020-01-02\n");
+ const result = normalized("tn", "google.tn", text);
+ assert.equal(result.status, "registered");
+ assert.equal(result.registrar.name, "ELB");
+ assert.equal(result.dnssecSigned, false);
+ assert.equal(result.registrationDate, null, "contact Created remains scoped and the domain's local time is ambiguous");
+ const partial = normalized("tn", "google.tn", text.replace(/^dnssec.*\n/m, ""));
+ assert.equal(partial.dnssecSigned, null, "no DNSSEC answer is invented when the footer is missing");
+ const other = normalized("it", "example.it", "Domain: example.it\nStatus: ok\nTechnical Contacts\nDNSSEC: unsigned\n");
+ assert.equal(other.dnssecSigned, null, "the reviewed exception is limited to TN");
+});