経緯: アドフラウドの厚かましいプライバシーポリシー、巧妙なJavaScript
https://gemini.google.com/share/911d5d273711
!(function (e, t) {
"object" == typeof exports && "undefined" != typeof module
? t(exports)
: "function" == typeof define && define.amd
? define(["exports"], t)
: t(
((e =
"undefined" != typeof globalThis ? globalThis : e || self).version =
{})
);
})(this, function (exports) {
"use strict";
function __awaiter(e, t, n, i) {
return new (n || (n = Promise))(function (s, a) {
function o(e) {
try {
d(i.next(e));
} catch (e) {
a(e);
}
}
function r(e) {
try {
d(i.throw(e));
} catch (e) {
a(e);
}
}
function d(e) {
var t;
e.done
? s(e.value)
: ((t = e.value),
t instanceof n
? t
: new n(function (e) {
e(t);
})).then(o, r);
}
d((i = i.apply(e, t || [])).next());
});
}
var Blocking;
"function" == typeof SuppressedError && SuppressedError,
(function (e) {
(e.PENDING = "pending"),
(e.NONE = "none"),
(e.BLOCKED = "blocked"),
(e.ALLOWED = "allowed");
})(Blocking || (Blocking = {}));
class Adblock {
constructor(e) {
(this.state = Blocking.PENDING),
(this._mocked = !1),
e
? ((this.state = e), (this._mocked = !0))
: (this.state = Blocking.ALLOWED);
}
inject() {
return __awaiter(this, void 0, void 0, function* () {});
}
hasAdblocker() {
if (void 0 === window.google) return !0;
const e = document.querySelectorAll("style");
return Array.from(e).some((e) => !!e.innerHTML.includes("adblockkey"));
}
handleAdblocked() {
this.removeAdblockKey(), (this.state = Blocking.BLOCKED);
}
removeAdblockKey() {
var e;
null === (e = document.documentElement.dataset) ||
void 0 === e ||
delete e.adblockkey;
}
get isBlocked() {
return this.state === Blocking.BLOCKED;
}
get isAllowed() {
return this.state === Blocking.ALLOWED;
}
toContext() {
return { user_has_ad_blocker: null, is_ad_blocked: null };
}
}
const OBFUSCATING_BASE_64_PREFIX = "UxFdVMwNFNwN0wzODEybV",
encode = (e) =>
OBFUSCATING_BASE_64_PREFIX +
btoa(unescape(encodeURIComponent(JSON.stringify(e))));
function decode$1(e) {
return JSON.parse(
decodeURIComponent(
escape(atob(e.replace(OBFUSCATING_BASE_64_PREFIX, "")))
)
);
}
var version = "0.9.0";
const APP_ENV = "production",
TRACKING_DOMAIN = "https://click-use1.bodis.com/",
SALES_JS_URL = "https://parking.bodiscdn.com/js/inquiry.js",
GOOGLE_CAF_TIMEOUT_SCRIPTS = "0",
GOOGLE_CAF_TIMEOUT_CALLBACKS = "0",
GOOGLE_MV3_URL_PARAMS = "abp=1&bodis=true",
APP_VERSION = version,
COOKIE_CONSENT_JS_URL = "",
AFD_REFERRAL_CHEQ_LOAD_PERCENTAGE = "25",
AFD_ORGANIC_CHEQ_LOAD_PERCENTAGE = "5",
isLocal = (e = !0) => "production" !== APP_ENV;
function log(...e) {}
const FIND_DOMAIN_URL = "_fd",
getFindDomain = (e = "", t = !1, n = "") => {
const i = n || window.location.search,
s = `${e}/${FIND_DOMAIN_URL}${i}`,
a = e ? "include" : "same-origin",
o = Object.assign(
{ Accept: "application/json", "Content-Type": "application/json" },
t ? { "X-HOST": window.location.host } : {}
);
return fetch(s, { method: "POST", headers: o, credentials: a })
.then((e) => e.text())
.then(decode$1);
};
var ZeroClickReasons;
!(function (e) {
(e.CAF_TIMEDOUT = "caf_timedout"),
(e.CAF_ADLOAD_FAIL_RS = "caf_adloadfail_rs"),
(e.CAF_ADLOAD_FAIL_ADS = "caf_adloadfail_ads"),
(e.DISABLED_GB = "disabled_gb"),
(e.DISABLED_AB = "disabled_ab"),
(e.DISABLED_DS = "disabled_ds"),
(e.AD_BLOCKED = "ad_blocked"),
(e.PREFERRED = "preferred");
})(ZeroClickReasons || (ZeroClickReasons = {}));
const getZeroClick = (e) =>
__awaiter(void 0, void 0, void 0, function* () {
const t = Object.assign(Object.assign({}, e), { type: "zc_fetch" });
return fetch("/_zc", {
method: "POST",
body: JSON.stringify({ signature: encode(t) }),
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
}).then((e) =>
__awaiter(void 0, void 0, void 0, function* () {
try {
return decode$1(yield e.text());
} catch (e) {
return {};
}
})
);
}),
waiter = (e, t) =>
new Promise((n) => {
t(e), e <= 0 && n();
let i = e;
const s = () => {
i > 0 ? ((i -= 1), t(i), setTimeout(s, 1e3)) : n();
};
s();
}),
decode = () => JSON.parse(atob(window.park || ""));
var PAGE_STYLES =
'* {\n font-smoothing: antialiased;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nhtml, body {\n width: 100%;\n margin: 0;\n}\n\nhtml {\n background-color: #2B2B2B;\n height: 100%;\n}\n\nbody {\n min-height: 90%;\n font-family: Arial, sans-serif;\n letter-spacing: 1.2px;\n color: #ccc;\n text-align: center;\n}\n\n/* App Target - This starts hidden until we apply a class to "activate" it */\n\n' +
"#target {\n opacity: 0;\n visibility: hidden;\n}\n\n/* Status Messages - These are displayed when we are not rendering ad blocks or Related Search */\n\n#pk-status-message {\n height: 75vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* Sales Box - Default State */\n\n#sales-box {\n display: block;\n width: 100%;\n padding: 3px;\n text-align: center;\n text-decoration: none;\n color: #8EABC0;\n}\n\n#sales-box a {\n display: block;\n width: 100%;\n text-decoration: inherit;\n color: #8EABC0;\n cursor: pointer;\n}\n\n/* Sales Box - Highlighted State */\n\n#sales-box.is-highlighted {\n position: relative;\n z-index: 1;\n background: #032438 linear-gradient(to top, #044368 0%, #000 100%);\n box-shadow: 0 0 15px 0 #000;\n border-bottom: 3px solid #262626;\n}\n\n#sales-box.is-highlighted a {\n line-height: 1.3;\n display: inline-block;\n font-size: 18px;\n color: #fff;\n text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n background: none;\n}\n\n/* Ellipsis Loader */\n\n" +
".pk-loader {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.pk-loader div {\n position: absolute;\n top: 33px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #ccc;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.pk-loader div:nth-child(1) {\n left: 8px;\n animation: pk-anim-1 0.6s infinite;\n}\n\n.pk-loader div:nth-child(2) {\n left: 8px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(3) {\n left: 32px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(4) {\n left: 56px;\n animation: pk-anim-1 0.6s infinite;\n animation-direction: reverse;\n}\n\n.pk-loader-text {\n position: fixed;\n font-size: 12px;\n right: 20px;\n bottom: 20px;\n font-weight: lighter;\n}\n\n/* Utilities */\n\n.pk-message-title {\n font-size: 2em;\n font-weight: bold;\n}\n\n" +
".pk-page-ready {\n opacity: 1 !important;\n visibility: visible !important;\n}\n\n.hide-sales-banner > #sales-banner {\n display: none;\n}\n\n@media only screen and (max-width: 600px) {\n .hidden-xs {\n opacity: 0;\n visibility: hidden;\n }\n}\n\n/* Animation */\n\n@keyframes pk-anim-1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes pk-anim-2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n}\n";
const APP_TARGET = "#target",
MESSAGE_TARGET = "main",
MESSAGE_SELECTOR = "#pk-status-message",
PAGE_READY_CLASS = "pk-page-ready",
MESSAGE_TEMPLATE = '<div id="pk-status-message"></div>';
class Renderer {
constructor(e) {
(this._domIsReady = !1),
(this.revealPage = () => {
this.domNode && this.domNode.classList.add(PAGE_READY_CLASS);
}),
(this.hideSalesBanner = () => {
this.domNode.classList.add("hide-sales-banner");
}),
(this.revealSalesBanner = () => {
this.domNode.classList.remove("hide-sales-banner");
}),
(this.injectMetaDescription = (e) => {
if (!e || 0 === e.length) return;
window.document.title = e;
const t = document.createElement("meta");
t.setAttribute("name", "description"),
t.setAttribute("content", `See relevant content for ${e}`),
document.getElementsByTagName("head")[0].appendChild(t);
}),
(this.domNode = document.querySelector(e));
}
get domIsReady() {
return this._domIsReady;
}
set domIsReady(e) {
(this._domIsReady = e), e && this.injectStyles(PAGE_STYLES);
}
message(e, t = "") {
if ((this.injectMessage(MESSAGE_TEMPLATE), this.domNode)) {
const t = this.domNode.querySelector(MESSAGE_SELECTOR);
t && (t.innerHTML = e);
}
t && this.injectMetaDescription(t);
}
injectMessage(e) {
const t = document.querySelector(MESSAGE_TARGET);
t ? (t.innerHTML = e) : this.domNode && (this.domNode.innerHTML = e);
}
salesBanner(e) {
if (!e) return;
const { href: t, position: n, message: i, theme: s, status: a } = e,
o = document.createElement("div"),
r = n || "",
d = "HIGHLIGHT" === s ? "is-highlighted" : "";
(o.innerHTML = t
? `\n <div id="sales-box" class="${r} ${d}">\n <a href="/listing?utm_source=sales_banner&utm_campaign=${a}" target="_blank" rel="noopener">${i}</a>\n </div>\n `
: `\n <div id="sales-box" class="no-href ${r} ${d}">\n ${i}\n </div>\n `),
"BOTTOM" === n
? ((o.style.marginTop = "30px"), document.body.appendChild(o))
: document.body.prepend(o);
}
loading(e) {
let t = "a few";
e > 0 && (t = `<span id="redirect">${e}</span>`),
this.message(
`\n <div class="pk-loader">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n <div class="pk-loader-text hidden-xs">\n Page loading in ${t} seconds, please wait...\n </div>\n `
);
}
adBlockMessage() {
this.message(
"\n <h1>Ad block detected</h1>\n Please disable your ad blocker and reload the page.\n "
);
}
errorParkingUnavailable() {
this.message(
"\n <h1>An Error Occurred</h1>\n <p>Parking is currently unavailable. We'll be right back.</p>\n "
);
}
errorParkingServicesDisabled() {
this.message(
"\n <h1>An Error Occurred</h1>\n <p>Services for this domain name have been disabled.</p>\n "
);
}
errorParkingNoSponsors(e) {
this.message(
`\n <div class="pk-message-title" data-nosnippet>\n No sponsors\n </div>\n <span data-nosnippet>\n ${window.location.hostname} currently does not have any sponsors for you.\n </span>\n `,
e
);
}
imprint(e) {
if (!e) return;
const t = document.querySelector("#imprint-text");
t && (t.innerHTML = e.replace(/(?:\r\n|\r|\n)/g, "<br>"));
}
injectStyles(e) {
if (!e) return;
const t = document.createElement("style");
(t.innerHTML = e.toString()), document.head.appendChild(t);
}
injectScript(e) {
if (!e) return;
const t = document.createElement("script");
(t.type = "text/javascript"), (t.src = e), document.body.appendChild(t);
}
injectJS(js) {
js && 0 !== js.length && eval(js);
}
injectHTML(e) {
this.domNode
? (e && (this.domNode.innerHTML = e), (this.domIsReady = !0))
: ((this.domIsReady = !1),
console.error(
"An error occurred when trying to render this page. DOM node not found."
));
}
prerender(e) {
this.injectMetaDescription(e.domain),
e.bannerAdblockerOnly && this.hideSalesBanner(),
this.injectHTML(e.html);
}
template(e) {
var t;
this.domIsReady || this.prerender(e),
this.injectStyles(e.stylesheet),
this.imprint(e.imprint),
this.salesBanner(e.salesBanner),
e.bannerAdblockerOnly || this.injectJS(e.javascript),
null === (t = e.scripts) ||
void 0 === t ||
t.forEach((e) => {
this.injectScript(e);
});
}
}
const Render = new Renderer(APP_TARGET);
var Type;
!(function (e) {
(e[(e.Failed = 0)] = "Failed"),
(e[(e.Disabled = 1)] = "Disabled"),
(e[(e.Redirect = 2)] = "Redirect"),
(e[(e.Parking = 3)] = "Parking"),
(e[(e.Sales = 4)] = "Sales");
})(Type || (Type = {}));
let State$2 = class {
get trackingType() {
return this._trackingType;
}
set trackingType(e) {
this._trackingType = e;
}
get track() {
return !!this.trackingType;
}
};
class Disabled extends State$2 {
constructor() {
super(...arguments), (this.type = Type.Disabled);
}
static build(e, t) {
let n;
switch ((t === Blocking.BLOCKED && (n = "adblocker"), e.cannotPark)) {
case "disabled_mr":
case "disabled_rc":
n = e.cannotPark;
}
if (n) {
const t = new Disabled();
return (t.reason = n), (t.domain = e.domainName), t;
}
}
get message() {
switch (this.reason) {
case "adblocker":
return "<h1>Content blocked</h1> Please turn off your ad blocker.";
case "disabled_mr":
return `<h1>Invalid URL</h1> Referral traffic for ${this.domain} does not meet requirements.`;
default:
return `<h1>No sponsors</h1> ${this.domain} currently does not have any sponsors for you.`;
}
}
get trackingType() {
switch (this.reason) {
case "adblocker":
return "ad_blocked_message";
case "disabled_mr":
return "invalid_referral";
case "disabled_rc":
return "revenue_cap_reached";
default:
return "no_sponsors_message";
}
}
toContext() {
return { cannotPark: this.reason };
}
}
class Failed extends State$2 {
constructor() {
super(...arguments), (this.type = Type.Failed);
}
static cannotPark({ cannotPark: e }) {
switch (e) {
case "disabled_b":
case "prohibited_ua":
case "disabled_fr":
case "revenue_cap_reached":
case "disabled_mr":
case "disabled_rc":
case "disabled_cp":
case "invalid_domain":
case "disabled_tos":
case "disabled_ro": {
const t = new Failed();
return (t.reason = e), t;
}
}
}
static noSponsors({ cannotLoadAds: e }) {
if (e) {
const e = new Failed();
return (e.reason = "no_sponsors"), e;
}
}
static fromError(e) {
const t = new Failed();
return (t.reason = "js_error"), (t.error = e), t;
}
get track() {
return !!this.trackingType;
}
get message() {
switch (this.reason) {
case "disabled_fr":
case "disabled_rc":
case "disabled_tos":
case "no_sponsors":
return `\n <h1 data-nosnippet>No Sponsors</h1>\n <p data-nosnippet>${this.domain} currently does not have any sponsors for you.</p>`;
case "disabled_mr":
return `\n <h1>Invalid URL</h1>\n <p>Referral traffic for ${this.domain} does not meet requirements.</p>`;
case "js_error":
return "\n <h1>An Error Occurred</h1>\n <p>Parking is currently unavailable. We'll be right back.</p>\n ";
default:
return "\n <h1>An Error Occurred</h1>\n <p>Services for this domain name have been disabled.</p>\n ";
}
}
get trackingType() {
switch (this.reason) {
case "disabled_rc":
return "revenue_cap_reached";
case "disabled_mr":
return "invalid_referral";
case "adblock":
return "ad_blocked_message";
case "no_sponsors":
return "no_sponsors_message";
case "disabled_tos":
return "tos_not_accepted";
case "disabled_ro":
return "rsoc_only";
}
}
get domain() {
return window.location.hostname;
}
toContext() {
return { cannotPark: this.reason };
}
}
function unpackPHPArrayObject(e, t) {
const n = e[t];
if (n && !Array.isArray(n)) return n;
}
class Parking extends State$2 {
constructor() {
super(...arguments), (this.type = Type.Parking);
}
static build(e, t) {
const n = new Parking();
(n.domain = e.domainName),
(n.html = e.template),
(n.scripts = e.scripts || []),
(n.javascript = e.inlineJs),
(n.stylesheet = e.styles),
(n.imprint = e.imprintText);
const i = unpackPHPArrayObject(e, "salesSettings");
n.bannerAdblockerOnly = null == i ? void 0 : i.banner_adblocker_only;
const s =
(null == i ? void 0 : i.status) &&
"NOT_FOR_SALE" !== (null == i ? void 0 : i.status);
if (s) {
const { status: e, location: t, message: s, link: a, type: o } = i;
n.salesBanner = {
message: s,
href: a,
position: t,
theme: o,
status: e,
};
}
return (
t.wantsToServeAds
? (n.trackingType = "ctr")
: s && window.location.pathname.startsWith("/listing")
? (n.trackingType = "sales")
: (n.trackingType = "visit"),
n
);
}
toContext() {
return {};
}
}
class Sales extends State$2 {
constructor() {
super(...arguments), (this.type = Type.Sales);
}
static build(e) {
const t = unpackPHPArrayObject(e, "salesSettings");
if (!t) return;
const { status: n } = t;
return ["NOT_FOR_SALE", "EXTERNAL_MARKET", "URL"].includes(n)
? void 0
: window.location.pathname.startsWith("/listing")
? new Sales()
: void 0;
}
toContext() {
return {};
}
get trackingType() {
return "sales";
}
init(e) {
window.context = e;
const t = document.createElement("script");
(t.type = "text/javascript"),
(t.src = SALES_JS_URL),
document.head.append(t);
}
}
class Redirect extends State$2 {
constructor() {
super(...arguments), (this.type = Type.Redirect);
}
static build(e, t, n) {
const i = unpackPHPArrayObject(e, "salesSettings"),
{
zeroClickDelay: s,
skenzoRedirect: a,
skenzoUrl: o,
showInquiryForm: r,
canZeroClick: d,
cannotPark: c,
} = e;
if (
window.location.pathname.startsWith("/listing") &&
["EXTERNAL_MARKET", "URL"].includes(null == i ? void 0 : i.status)
) {
if (null == i ? void 0 : i.external)
return Redirect.toState(i.external, "sales");
if (null == i ? void 0 : i.link)
return Redirect.toState(i.link, "sales");
}
if (n.cannotLoadAds && n.wantsToServeAds)
return Redirect.toState(n.noAdsRedirectUrl, "no_ads_redirect");
if (d && (null == t ? void 0 : t.reason)) {
if (null == t ? void 0 : t.redirect)
return Redirect.toState(t.redirect, "zc_redirect", s);
if (a && o) return Redirect.toState(o, "skenzo_redirect");
}
return (null == i ? void 0 : i.status) &&
"NOT_FOR_SALE" !== (null == i ? void 0 : i.status) &&
!(null == i ? void 0 : i.banner_adblocker_only) &&
(n.cannotLoadAds || (n.cannotLoadAds && !d) || r)
? Redirect.toState(`${window.location.origin}/listing`)
: void 0;
}
static toState(e, t, n = 0) {
const i = new Redirect();
return (i.url = e), (i.delay = n), (i.trackingType = t), i;
}
toContext() {
return {};
}
}
const browserState = () => {
var e, t, n, i, s;
const {
screen: { width: a, height: o },
self: r,
top: d,
matchMedia: c,
opener: l,
} = window,
{
documentElement: { clientWidth: h, clientHeight: u },
} = document;
let p;
try {
p = (new Date().getTimezoneOffset() / 60) * -1;
} catch (e) {
p = null;
}
return {
popup: !(!l || l === window),
timezone_offset: p,
user_preference:
null ===
(e =
null === Intl || void 0 === Intl
? void 0
: Intl.DateTimeFormat()) || void 0 === e
? void 0
: e.resolvedOptions(),
user_using_darkmode: Boolean(
c && c("(prefers-color-scheme: dark)").matches
),
user_supports_darkmode: Boolean(c),
window_resolution: {
width: null != h ? h : 0,
height: null != u ? u : 0,
},
screen_resolution: {
width: null != a ? a : 0,
height: null != o ? o : 0,
},
frame:
d === r
? null
: {
innerWidth:
null !== (t = null == r ? void 0 : r.innerWidth) &&
void 0 !== t
? t
: 0,
innerHeight:
null !== (n = null == r ? void 0 : r.innerHeight) &&
void 0 !== n
? n
: 0,
outerWidth:
null !== (i = null == r ? void 0 : r.outerWidth) &&
void 0 !== i
? i
: 0,
outerHeight:
null !== (s = null == r ? void 0 : r.outerHeight) &&
void 0 !== s
? s
: 0,
},
};
},
CAFKey = "caf",
ClickKey = "click",
NoCacheKey = "nc",
SessionKey = "session",
TRACKING_URL = "_tr",
buildSignature = ({ callbacks: e, context: t }, n) => {
var i, s, a, o;
return Object.assign(
{
ad_loaded_callback: null == e ? void 0 : e.adLoadedCallback,
app_version: version,
caf_client_id:
null === (i = null == t ? void 0 : t.pageOptions) || void 0 === i
? void 0
: i.pubId,
caf_timed_out: null == e ? void 0 : e.cafTimedOut,
caf_loaded_ms: null == e ? void 0 : e.cafLoadedMs,
channel:
null === (s = null == t ? void 0 : t.pageOptions) || void 0 === s
? void 0
: s.channel,
desktop: t.desktop,
terms:
null === (a = null == t ? void 0 : t.pageOptions) || void 0 === a
? void 0
: a.terms,
fd_server_datetime: t.fd_server_datetime,
fd_server: t.fd_server,
flex_rule: t.flex_rule,
host: t.host,
ip: t.ip,
ivt:
null === (o = null == t ? void 0 : t.pageOptions) || void 0 === o
? void 0
: o.ivt,
js_error: t.js_error,
mobile: t.mobile,
no_ads_redirect: t.noAdsRedirect,
page_headers: t.page_headers,
page_loaded_callback: null == e ? void 0 : e.pageLoadedCallback,
page_method: t.page_method,
page_request: t.page_request,
page_time: t.page_time,
page_url: t.page_url,
reportable_channel: t.reportableChannel,
reportable_style_id: t.reportableStyleId,
tablet: t.tablet,
template_id: t.templateId,
type: n,
user_has_ad_blocker: t.user_has_ad_blocker,
user_id: t.userId,
uuid: t.uuid,
zeroclick: t.zeroClick,
},
browserState()
);
},
trackVisit = ({ callbacks: e, context: t }, n, i = "") => {
const s = `${i}/${TRACKING_URL}`,
a = i ? "include" : "same-origin",
o = buildSignature({ callbacks: e, context: t }, n);
let r = {};
"click" === n &&
(r = {
[ClickKey]: "true",
[SessionKey]: t.uuid,
[NoCacheKey]: Date.now().toString(),
}),
fetch(s, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
credentials: a,
body: JSON.stringify(Object.assign({ signature: encode(o) }, r)),
});
};
var State$1;
!(function () {
if (!window.CustomEvent) {
function e(e, t) {
t = t || { bubbles: !1, cancelable: !1, detail: void 0 };
const n = document.createEvent("CustomEvent");
return n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), n;
}
(e.prototype = window.Event.prototype), (window.CustomEvent = e);
}
})(),
(function (e) {
(e[(e.Pending = 0)] = "Pending"),
(e[(e.Loaded = 1)] = "Loaded"),
(e[(e.Failed = 2)] = "Failed");
})(State$1 || (State$1 = {}));
class Provider {
get providerCtor() {
return this.constructor;
}
constructor(e) {
(this.state = new Map()),
(this.injectedAt = new Map()),
(this.timeoutAt = new Map()),
(this.timeoutSeconds = 5),
(this.handlePixelEvent = (e) => {
this.keys.forEach((t) => {
switch (this.state.get(t)) {
case State$1.Failed:
break;
case State$1.Pending:
setTimeout(() => this.handlePixelEvent(e), 100);
break;
case State$1.Loaded:
this.onPixelEvent(e, t);
}
});
}),
(this.watch = (e) => {
switch (this.state.get(e)) {
case State$1.Loaded:
case State$1.Failed:
break;
case State$1.Pending:
this.isLoaded(e)
? this.state.set(e, State$1.Loaded)
: this.isTimedOut(e)
? this.state.set(e, State$1.Failed)
: setTimeout(() => this.watch(e), 50);
}
}),
(this.config = e),
this.keys.length > 0
? this.keys.forEach((e) => {
this.state.set(e, State$1.Pending);
const t = new Date();
t.setSeconds(t.getSeconds() + this.timeoutAfter()),
this.timeoutAt.set(e, t),
this.injectPixel(e);
})
: this.state.set("", State$1.Failed);
}
get keys() {
return this.config ? Object.keys(this.config) : [];
}
getPixelEvents(e) {
var t, n;
return null ===
(n = null === (t = this.config) || void 0 === t ? void 0 : t[e]) ||
void 0 === n
? void 0
: n.pixel_events;
}
injectPixel(e) {
this.injectedAt.has(e) ||
(this.injectedAt.set(e, new Date()), this.inject(e), this.watch(e));
}
inject(e) {
if (!this.providerCtor.scriptInjected) {
const e = document.createElement("script");
(e.text = this.getScript()),
document.head.appendChild(e),
(this.providerCtor.scriptInjected = !0);
}
this.init(e);
}
isTimedOut(e) {
return +new Date() >= +(this.timeoutAt.get(e) || 0);
}
timeoutAfter() {
return this.timeoutSeconds;
}
selectPixelEvents(e, t) {
const n = this.getPixelEvents(t);
if (Array.isArray(n))
return n.filter(
(t) =>
("term-view" === t.trigger && "visit" === e) ||
!(!["term-click", "ad-view"].includes(t.trigger) || "ctr" !== e) ||
("ad-click" === t.trigger && "click" === e)
);
}
}
class Facebook extends Provider {
getScript() {
return "!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t, s)}(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js'); ";
}
init(e) {
window.fbq && window.fbq("init", e);
}
onPixelEvent(e, t) {
const n = this.selectPixelEvents(e, t);
n &&
n.forEach((e) => {
e &&
(e.custom
? window.fbq("trackSingleCustom", t, e.event)
: window.fbq("trackSingle", t, e.event));
});
}
isLoaded(e) {
return !!window.fbq && window.fbq.getState && window.fbq.getState(e);
}
}
Facebook.scriptInjected = !1;
class Outbrain extends Provider {
getScript() {
return `!function(_window, _document) { var OB_ADV_ID = ${JSON.stringify(
this.keys
)}; if (_window.obApi) { var toArray = function(object) { return Object.prototype.toString.call(object) === '[object Array]' ? object : [object]; }; _window.obApi.marketerId = toArray(_window.obApi.marketerId).concat(toArray(OB_ADV_ID)); return; } var api = _window.obApi = function() { api.dispatch ? api.dispatch.apply(api, arguments) : api.queue.push(arguments); }; api.version = '1.1'; api.loaded = true; api.marketerId = OB_ADV_ID; api.queue = []; var tag = _document.createElement('script'); tag.async = true; tag.src = '//amplify.outbrain.com/cp/obtp.js'; tag.type = 'text/javascript';
var script = _document.getElementsByTagName('script')[0]; script.parentNode.insertBefore(tag, script);
}(window, document); `;
}
init(e) {}
onPixelEvent(e, t) {
const n = this.selectPixelEvents(e, t);
n &&
n.forEach((e) => {
e && window.obApi("track", e.event);
});
}
isLoaded(e) {
return !!window.obApi;
}
}
Outbrain.scriptInjected = !1;
class Revcontent extends Provider {
getScript() {
return "var script=document.createElement('script');script.src='https://assets.revcontent.com/master/rev.js';document.head.appendChild(script);";
}
init(e) {}
onPixelEvent(e, t) {
const n = this.selectPixelEvents(e, t);
n &&
n.forEach((e) => {
e && window.rev("event", e.event);
});
}
isLoaded(e) {
return !!window.rev;
}
}
Revcontent.scriptInjected = !1;
class Taboola extends Provider {
getScript() {
return `window._tfa = window._tfa || []; !function (t, f, a, x) {
if (!document.getElementById(x)) { t.async = 1; t.src = a; t.id = x; f.parentNode.insertBefore(t, f); } }(document.createElement('script'), document.getElementsByTagName('script')[0], '//cdn.taboola.com/libtrc/unip/${this.keys[0]}/tfa.js', 'tb_tfa_script'); `;
}
init(e) {}
onPixelEvent(e, t) {
const n = this.selectPixelEvents(e, t);
n &&
n.forEach((e) => {
if (e) {
const n = parseInt(t, 10);
window._tfa.push({ notify: "event", name: e.event, id: n });
}
});
}
isLoaded(e) {
return Array.isArray(window._tfa);
}
}
Taboola.scriptInjected = !1;
class Tiktok extends Provider {
getScript() {
return '!function (w, d, t) {w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq._i[t]||[],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var i="https://analytics.tiktok.com/i18n/pixel/events.js";ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=i,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src=i+"?sdkid="+e+"&lib="+t;var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)};}(window, document, \'ttq\');';
}
init(e) {
window.ttq && window.ttq.load(e);
}
onPixelEvent(e, t) {
const n = this.selectPixelEvents(e, t);
n &&
n.forEach((e) => {
e && window.ttq.instance(t).track(e.event);
});
}
isLoaded() {
return !!window.ttq;
}
}
Tiktok.scriptInjected = !1;
class GoogleAds extends Provider {
getScript() {
return `var s = document.createElement('script'); s.async = 1; s.src = 'https://www.googletagmanager.com/gtag/js?id=${this.keys[0]}'; document.head.appendChild(s); window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments) } gtag('set', 'allow_ad_personalization_signals', false); gtag('js', new Date); `;
}
init(e) {
window.gtag && window.gtag("config", e);
}
onPixelEvent(e, t) {
const n = this.selectPixelEvents(e, t);
n &&
n.forEach((e) => {
e &&
window.gtag("event", "conversion", { send_to: `${t}/${e.event}` });
});
}
isLoaded(e) {
return !!window.gtag;
}
}
GoogleAds.scriptInjected = !1;
const ADS_PARAM$1 = CAFKey,
MESSAGE_PREFIX = "FSXDC,.aCS:",
ALLOWED_ORIGINS = [
"https://www.google.com",
"https://www.adsensecustomsearchads.com",
"https://syndicatedsearch.goog",
"https://googleadservices.com",
];
class Pixels {
static build(e) {
const t = unpackPHPArrayObject(e, "pixel_tracking_data");
if (t)
return (
(t.useAltTikTokEventsForAdsPlatformUser = e.is_ads), new Pixels(t)
);
}
constructor(e) {
(this.onPixelEvent = (e) => {
const {
detail: { type: t },
} = e;
switch (t) {
case "visit":
case "ctr":
case "click":
this.providers.forEach((e) => e.handlePixelEvent(t));
}
}),
(this.providers = []),
e.facebook &&
Object.keys(e.facebook).forEach((t) => {
this.providers.push(new Facebook({ [t]: e.facebook[t] }));
}),
e.tiktok &&
Object.keys(e.tiktok).forEach((t) => {
this.providers.push(new Tiktok({ [t]: e.tiktok[t] }));
}),
e.taboola &&
Object.keys(e.taboola).forEach((t) => {
this.providers.push(new Taboola({ [t]: e.taboola[t] }));
}),
e.revcontent &&
Object.keys(e.revcontent).forEach((t) => {
this.providers.push(new Revcontent({ [t]: e.revcontent[t] }));
}),
e.outbrain && this.providers.push(new Outbrain(e.outbrain)),
e.googleads &&
Object.keys(e.googleads).forEach((t) => {
this.providers.push(new GoogleAds({ [t]: e.googleads[t] }));
});
}
listenForEvents() {
document.addEventListener("pixel", (e) => {
this.onPixelEvent(e);
});
window.onmessage = (e) => {
const { origin: t, data: n } = e;
ALLOWED_ORIGINS.includes(t) &&
"string" == typeof n &&
(null == n ? void 0 : n.startsWith(MESSAGE_PREFIX)) &&
new URLSearchParams(window.location.search).has(ADS_PARAM$1) &&
document.dispatchEvent(
new CustomEvent("pixel", { detail: { type: "click" } })
);
};
}
listenForPixelEvents() {
document.addEventListener("pixel", (e) => {
this.onPixelEvent(e);
});
}
dispatchEvent(e) {
document.dispatchEvent(new CustomEvent("pixel", { detail: e }));
}
}
var State;
!(function (e) {
(e[(e.Pending = 0)] = "Pending"),
(e[(e.Loaded = 1)] = "Loaded"),
(e[(e.Failure = 2)] = "Failure"),
(e[(e.TimedOut = 3)] = "TimedOut"),
(e[(e.Errored = 4)] = "Errored");
})(State || (State = {}));
const CAF_SCRIPT_SRC = `https://www.google.com/adsense/domains/caf.js?${GOOGLE_MV3_URL_PARAMS}`,
TIMEOUT_SCRIPTS = Number(GOOGLE_CAF_TIMEOUT_SCRIPTS),
TIMEOUT_CALLBACKS = Number(GOOGLE_CAF_TIMEOUT_CALLBACKS);
class StateMachine {
constructor() {
this.state = State.Pending;
}
transitionTo(e) {
this.state = e;
}
transitionFromPendingTo(e) {
this.done || (this.state = e);
}
get loaded() {
return this.state === State.Loaded;
}
get timedOut() {
return this.state === State.TimedOut;
}
get done() {
return this.state !== State.Pending;
}
}
class Ads {
constructor(e, t) {
(this.state = { script: new StateMachine(), blocks: new StateMachine() }),
(this.blocksLoaded = []),
(this.injectScriptTags = () =>
__awaiter(this, void 0, void 0, function* () {
return new Promise((e) => {
const t = document.createElement("script");
(t.type = "text/javascript"),
(t.src = CAF_SCRIPT_SRC),
t.addEventListener("load", () => e(!0)),
t.addEventListener("error", () => e(!1)),
document.body.appendChild(t),
TIMEOUT_SCRIPTS > 0 && setTimeout(() => e(!1), TIMEOUT_SCRIPTS);
});
})),
(this.onPageLoaded = (e, t) => {
if (
((this.pageLoaded = { requestAccepted: e, status: t }),
this.state.script.done)
)
return;
const n = null == t ? void 0 : t.error_code;
n
? (this.state.script.transitionTo(State.Failure),
(this.failureReason = `caf_pageloaderror_${n}`))
: this.state.script.transitionTo(State.Loaded);
}),
(this.onBlockLoaded = (e, t, n, i) => {
this.blocksLoaded.push({
containerName: e,
adsLoaded: t,
isExperimentVariant: n,
callbackOptions: i,
}),
this.state.blocks.done ||
(t
? this.state.blocks.transitionTo(State.Loaded)
: this.blocksLoaded.length >= this.blocks.length &&
(this.state.blocks.transitionTo(State.Failure),
(this.failureReason = `caf_adloadfail_${e}`)));
}),
(this.onTimeout = () => {
this.state.script.transitionFromPendingTo(State.TimedOut),
this.state.blocks.transitionFromPendingTo(State.TimedOut);
}),
(this.blocks = e),
(this.options = t);
}
get loaded() {
return (
this.state.script.loaded &&
!this.blocksLoaded.map((e) => e.adsLoaded).includes(!1)
);
}
waitForBlocks() {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((e) => {
const t = () => {
const n = performance.now();
if (this.state.blocks.done)
return (
(this.cafLoadTime = Math.round(n - this.cafStartTime)), void e()
);
const i = this.blocksLoaded.map((e) => e.adsLoaded);
i.includes(!1) || i.length >= this.blocks.length
? e()
: setTimeout(t, 50);
};
t();
});
});
}
inject() {
return __awaiter(this, void 0, void 0, function* () {
try {
const e = yield this.injectScriptTags();
return (
(this.cafStartTime = performance.now()),
e && void 0 !== window.google
? (new window.google.ads.domains.Caf(
Object.assign(Object.assign({}, this.options), {
pageLoadedCallback: this.onPageLoaded,
adLoadedCallback: this.onBlockLoaded,
}),
...this.blocks
),
TIMEOUT_CALLBACKS > 0 &&
setTimeout(this.onTimeout, TIMEOUT_CALLBACKS),
yield new Promise((e) => {
const t = () => {
this.state.script.done ? e() : setTimeout(t, 10);
};
t();
}))
: void this.state.script.transitionTo(State.Failure)
);
} catch (e) {
return void (this.error = e.toString());
}
});
}
toCallbacks() {
return {
adLoadedCallback: this.blocksLoaded.slice(-1)[0],
pageLoadedCallback: this.pageLoaded,
cafTimedOut: this.state.script.timedOut || this.state.blocks.timedOut,
cafLoadedMs: this.cafLoadTime,
googleAdsFailure: !!this.failureReason,
};
}
toContext() {
const e = {
cafScriptWasLoaded: this.state.script.loaded,
cafScriptLoadTime: this.cafLoadTime,
callbacks: this.toCallbacks,
};
return (
this.error && (e.js_error = { message: this.error }),
this.state.script.loaded ||
(e.zeroclick = { reason: "googleAdsFailure" }),
e
);
}
mockFailedState() {
this.state.blocks.transitionTo(State.Failure),
this.state.script.transitionTo(State.Failure);
}
}
class TagManager {
constructor(e) {
(this.injected = !1), (this.identifier = e);
}
inject() {
if (this.injected) return;
if (!this.identifier) return;
if ("TEST" === this.identifier) return;
const e = document.createElement("script");
e.setAttribute(
"src",
`https://www.googletagmanager.com/gtag/js?id=${this.identifier}`
),
document.head.appendChild(e),
this.track(),
(this.injected = !0);
}
track() {
this.push("js", new Date()), this.push("config", this.identifier);
}
push(e, t) {
window.dataLayer || (window.dataLayer = []),
window.dataLayer.push(arguments);
}
}
const ADS_PARAM = CAFKey,
ADS_TRACKING_URL = "_tr",
BLOCKS_TYPE = "ads",
BLOCKS_CONTAINER = "rs",
KNOWN_CAF_PARAMS = [
"caf",
"query",
"afdToken",
"pcsa",
"nb",
"nm",
"nx",
"ny",
"is",
"clkt",
];
class Google {
static build(
{ pageOptions: e, preferredLanguage: t, blocks: n, googleAnalytics: i },
s,
a,
o
) {
let r = {};
e && ((r = Object.assign({}, e)), r.hl || (r.hl = t));
let d = null == e ? void 0 : e.resultsPageBaseUrl;
d || (d = window.location.origin);
return new Google(s.uuid, n, r, i, d, o);
}
constructor(e, t, n, i, s, a) {
(this._blocks = t),
(this._pageOptions = n),
(this.uuid = e),
(this._baseURL = new URL(s)),
(this._signature = a),
(this.ads = new Ads(this.blocks, this.pageOptions)),
(this.tagManager = new TagManager(i));
}
injectTagManager() {
this.tagManager.inject();
}
injectAds() {
return __awaiter(this, void 0, void 0, function* () {
yield this.ads.inject();
});
}
waitForBlocks() {
return __awaiter(this, void 0, void 0, function* () {
return this.ads.waitForBlocks();
});
}
get blocks() {
return (this._blocks || [])
.filter((e) =>
this.wantsToServeAds
? e.type === BLOCKS_TYPE
: e.container === BLOCKS_CONTAINER
)
.map((e) => {
const t = this.baseURL;
new URLSearchParams(window.location.search).forEach((e, n) => {
t.searchParams.has(n) || t.searchParams.append(n, e);
});
const n = Object.assign({}, e);
if (((n.resultsPageBaseUrl = t.toString()), this.wantsToServeAds)) {
const e = new URLSearchParams();
e.append("click", "true"), e.append("session", this.uuid);
const t = Object.assign({}, this._signature);
delete t.ad_loaded_callback,
delete t.caf_loaded_ms,
delete t.caf_timed_out,
delete t.flex_rule,
delete t.frame,
delete t.js_error,
delete t.no_ads_redirect,
delete t.page_headers,
delete t.page_request,
delete t.page_loaded_callback,
delete t.popup,
delete t.screen_resolution,
delete t.user_has_ad_blocker,
delete t.user_preference,
delete t.user_supports_darkmode,
delete t.user_using_darkmode,
delete t.zeroclick,
e.append("signature", encode(t)),
(n.clicktrackUrl = `${TRACKING_DOMAIN}${ADS_TRACKING_URL}?${e.toString()}`);
}
return n;
});
}
get baseURL() {
const e = new URL(this._baseURL.origin);
return (
e.searchParams.append(ADS_PARAM, "1"),
this._baseURL.searchParams.forEach((t, n) => {
e.searchParams.append(n, t);
}),
e
);
}
get pageOptions() {
const e = Object.assign({}, this._pageOptions);
return (
Object.keys(this._pageOptions).forEach((t) => {
t.startsWith("bodis") && delete e[t];
}),
e
);
}
get cannotLoadAds() {
return !this.ads.loaded;
}
get wantsToServeAds() {
return new URLSearchParams(window.location.search).has(ADS_PARAM);
}
get adsMode() {
return this.ads.loaded && this.wantsToServeAds;
}
get adsReady() {
return this.wantsToServeAds && !this.cannotLoadAds;
}
get noAdsRedirectUrl() {
const e = new URLSearchParams(window.location.search);
return (
KNOWN_CAF_PARAMS.forEach((t) => e.delete(t)),
`${window.location.origin}?${e.toString()}`
);
}
get callbacks() {
return this.ads.toCallbacks();
}
toContext() {
return Object.assign(
{ blocks: this.blocks, pageOptions: this.pageOptions },
this.ads.toContext()
);
}
}
class CookieConsentManager {
constructor() {
this.injectScriptTag = () =>
__awaiter(this, void 0, void 0, function* () {
return new Promise((e) => {
const t = document.createElement("script");
t.setAttribute("src", COOKIE_CONSENT_JS_URL),
t.addEventListener("load", () => this.awaitConsent(e)),
t.addEventListener("error", () => e(!1)),
document.head.appendChild(t);
});
});
}
inject() {
return __awaiter(this, void 0, void 0, function* () {
this.injected ||
!COOKIE_CONSENT_JS_URL ||
isLocal() ||
(this.injected = yield this.injectScriptTag());
});
}
awaitConsent(e) {
let t = 0;
const n = setInterval(() => {
(t += 1),
20 === t && (clearInterval(n), e(!0)),
void 0 !== window.__tcfapi &&
(window.addEventListener("ConsentActivity", (t) => {
const {
detail: { status: n },
} = t;
n && e(!0);
}),
clearInterval(n));
}, 50);
}
}
class Cheq {
constructor(e) {
let t;
if (((t = "string" == typeof e ? parseInt(e, 10) : e), t < 0 || t > 100))
throw new Error("Load percentage must be between 0 and 100");
this.loadPercentage = t;
}
inject(e, t) {
return __awaiter(this, void 0, void 0, function* () {
if (this.injected) return;
100 * Math.random() <= this.loadPercentage &&
(this.injected = this.injectScriptTag(e, t));
});
}
injectScriptTag(e, t) {
const n = document.createElement("script");
return (
(n.type = "text/javascript"),
(n.async = !0),
n.setAttribute(
"src",
"https://ob.forseasky.com/i/148870ae21863d775c347e8893c985af.js"
),
n.setAttribute("data-ch", "cheq4ppc"),
n.setAttribute("data-uvid", e),
n.setAttribute("data-utm-campaign", t.toString()),
(n.className = "ct_clicktrue_73521"),
document.head.appendChild(n),
!0
);
}
}
class App {
main() {
var e, t, n;
return __awaiter(this, void 0, void 0, function* () {
if (
((this.parkResponse = decode()),
(this.findDomainResponse = yield getFindDomain()),
!this.findDomainResponse)
)
throw new Error("Domain failed to load.");
(this.pixels = Pixels.build(this.findDomainResponse)),
null === (e = this.pixels) || void 0 === e || e.listenForEvents(),
(this.adblock = new Adblock()),
yield this.adblock.inject(),
(this.google = Google.build(
this.findDomainResponse,
this.parkResponse,
this.adblock,
buildSignature(
{
context: this.context,
callbacks:
null === (t = this.google) || void 0 === t
? void 0
: t.callbacks,
},
"click"
)
)),
this.google.injectTagManager();
const i = Parking.build(this.findDomainResponse, this.google);
Render.prerender(i);
const s = (
null === (n = this.findDomainResponse) || void 0 === n
? void 0
: n.referral
)
? AFD_REFERRAL_CHEQ_LOAD_PERCENTAGE
: AFD_ORGANIC_CHEQ_LOAD_PERCENTAGE;
(this.cheq = new Cheq(s)),
this.cheq.inject(
this.parkResponse.uuid,
this.findDomainResponse.userId
),
(this.cookieConsentManager = new CookieConsentManager()),
yield this.cookieConsentManager.inject();
let a = Failed.cannotPark(this.findDomainResponse);
if (a) return void (yield this.transitionToFailed(a, i));
yield this.google.injectAds();
let o = Disabled.build(this.findDomainResponse, this.adblock.state);
if (o) return void (yield this.transitionToDisabled(o, i));
const r = this.adblock.hasAdblocker();
r && this.adblock.handleAdblocked();
const d = Sales.build(this.findDomainResponse);
if (d) return void (yield this.transitionToSales(d));
this.eligibleForZeroClick &&
(this.zeroClickResponse = yield getZeroClick(this.context));
const c = Redirect.build(
this.findDomainResponse,
this.zeroClickResponse,
this.google
);
if (c) yield this.transitionToRedirect(c);
else {
if (r)
return (
(o = Disabled.build(this.findDomainResponse, this.adblock.state)),
void (yield this.transitionToDisabled(o, i))
);
(a = Failed.noSponsors(this.google)),
a
? yield this.transitionToFailed(a, i)
: yield this.transitionToParking(i);
}
});
}
transitionToParking(e) {
return __awaiter(this, void 0, void 0, function* () {
(this.state = e),
Render.template(e),
Render.revealPage(),
yield this.google.waitForBlocks(),
yield this.track();
});
}
transitionToRedirect(e) {
return __awaiter(this, void 0, void 0, function* () {
this.state = e;
const t = this.track();
Render.revealPage(),
yield waiter(e.delay, (e) => Render.loading(e)),
yield t,
(window.location.href = e.url),
log(`➡ Redirecting [${e.url}]`);
});
}
transitionToFailed(e, t) {
return __awaiter(this, void 0, void 0, function* () {
(this.state = e),
Render.message(e.message),
Render.injectJS(t.javascript),
Render.revealPage(),
yield this.track();
});
}
transitionToSales(e) {
return __awaiter(this, void 0, void 0, function* () {
(this.state = e), e.init(this.context), yield this.track();
});
}
transitionToDisabled(e, t) {
return __awaiter(this, void 0, void 0, function* () {
(this.state = e),
Render.message(e.message),
Render.injectJS(t.javascript),
"adblocker" === e.reason &&
t.bannerAdblockerOnly &&
Render.revealSalesBanner(),
Render.revealPage(),
yield this.track();
});
}
track() {
var e;
return __awaiter(this, void 0, void 0, function* () {
if (!this.state.track) return Promise.resolve();
try {
const t = this.state.trackingType;
return (
null === (e = this.pixels) ||
void 0 === e ||
e.dispatchEvent({ type: t }),
trackVisit(
{ context: this.context, callbacks: this.google.callbacks },
t
)
);
} catch (e) {
return;
}
});
}
get eligibleForZeroClick() {
const {
cannotPark: e,
canZeroClick: t,
zeroClick: n,
} = this.findDomainResponse,
{ cannotLoadAds: i, wantsToServeAds: s } = this.google;
return (
this.adblock.state !== Blocking.BLOCKED &&
!!t &&
(!!e || !(!i || s) || !!(null == n ? void 0 : n.reason))
);
}
get context() {
var e, t, n, i;
const s = this.findDomainResponse,
a = this.parkResponse,
o = null === (e = this.state) || void 0 === e ? void 0 : e.toContext(),
r =
null === (t = this.adblock) || void 0 === t ? void 0 : t.toContext(),
d = null === (n = this.google) || void 0 === n ? void 0 : n.toContext(),
c = browserState(),
l = Object.assign(
Object.assign(
{},
null === (i = this.findDomainResponse) || void 0 === i
? void 0
: i.zeroClick
),
this.zeroClickResponse
);
return Object.assign(
Object.assign(
Object.assign(
Object.assign(
Object.assign(
Object.assign(
Object.assign({ app_version: APP_VERSION }, s),
a
),
r
),
d
),
o
),
c
),
{ zeroClick: l }
);
}
init() {
return __awaiter(this, void 0, void 0, function* () {
try {
(window.__parkour = this), yield this.main();
} catch (e) {
console.error("app", e);
const t = Failed.fromError(e);
(this.state = t), Render.message(t.message), Render.revealPage();
}
});
}
}
new App().init(), (exports.App = App);
});