24 lines
193 KiB
JavaScript
24 lines
193 KiB
JavaScript
/* roockmobile.prebid.js v9.50.0
|
|
Updated: 2025-08-11
|
|
Modules: roockmobileBidAdapter */
|
|
if (window.pbjs && window.pbjs.libLoaded) try { window.pbjs.getConfig("debug") && console.warn("Attempted to load a copy of Prebid.js that clashes with the existing 'pbjs' instance. Load aborted.") } catch (e) { } else (function () {
|
|
(() => {
|
|
var r, t = {
|
|
433: (r, t, e) => { function n(r, t, e, n, o) { for (t = t.split ? t.split(".") : t, n = 0; n < t.length; n++)r = r ? r[t[n]] : o; return r === o ? e : r } e.d(t, { A: () => n }) }, 128: r => {
|
|
/*
|
|
* @license MIT
|
|
* Fun Hooks v1.1.0
|
|
* (c) @snapwich
|
|
*/
|
|
i.SYNC = 1, i.ASYNC = 2, i.QUEUE = 4; var t = "fun-hooks", e = Object.freeze({ ready: 0 }), n = new WeakMap; function o(r, t) { return Array.prototype.slice.call(r, t) } function i(r) { var a, f = {}, c = []; function u(r, t) { return "function" == typeof r ? s.call(null, "sync", r, t) : "string" == typeof r && "function" == typeof t ? s.apply(null, arguments) : "object" == typeof r ? l.apply(null, arguments) : void 0 } function l(r, t, e) { var n = !0; void 0 === t && (t = Object.getOwnPropertyNames(r).filter((r => !r.match(/^_/))), n = !1); var o = {}, i = ["constructor"]; do { t.forEach((function (t) { var n = t.match(/(?:(sync|async):)?(.+)/), a = n[1] || "sync", f = n[2]; if (!o[f] && "function" == typeof r[f] && -1 === i.indexOf(f)) { var c = r[f]; o[f] = r[f] = s(a, c, e ? [e, f] : void 0) } })), r = Object.getPrototypeOf(r) } while (n && r); return o } function p(r) { var e = Array.isArray(r) ? r : r.split("."); return e.reduce((function (n, o, i) { var f = n[o], u = !1; return f || (i === e.length - 1 ? (a || c.push((function () { u || console.warn(t + ": referenced '" + r + "' but it was never created") })), n[o] = y((function (r) { n[o] = r, u = !0 }))) : n[o] = {}) }), f) } function y(r) { var t = [], e = [], o = function () { }, i = { before: function (r, e) { return f.call(this, t, "before", r, e) }, after: function (r, t) { return f.call(this, e, "after", r, t) }, getHooks: function (r) { var n = t.concat(e); "object" == typeof r && (n = n.filter((function (t) { return Object.keys(r).every((function (e) { return t[e] === r[e] })) }))); try { Object.assign(n, { remove: function () { return n.forEach((function (r) { r.remove() })), this } }) } catch (r) { console.error("error adding `remove` to array, did you modify Array.prototype?") } return n }, removeAll: function () { return this.getHooks().remove() } }, a = { install: function (n, i, a) { this.type = n, o = a, a(t, e), r && r(i) } }; return n.set(i.after, a), i; function f(r, n, i, a) { var f = { hook: i, type: n, priority: a || 10, remove: function () { var n = r.indexOf(f); -1 !== n && (r.splice(n, 1), o(t, e)) } }; return r.push(f), r.sort((function (r, t) { return t.priority - r.priority })), o(t, e), this } } function s(e, f, u) { var l = f.after && n.get(f.after); if (l) { if (l.type !== e) throw t + ": recreated hookable with different type"; return f } var s, v = u ? p(u) : y(), h = { get: function (r, t) { return v[t] || Reflect.get.apply(Reflect, arguments) } }; a || c.push(b); var d = new Proxy(f, h); return n.get(d.after).install(e, d, (function (r, t) { var n, i = []; r.length || t.length ? (r.forEach(a), n = i.push(void 0) - 1, t.forEach(a), s = function (r, t, a) { var f, c = i.slice(), u = 0, l = "async" === e && "function" == typeof a[a.length - 1] && a.pop(); function p(r) { "sync" === e ? f = r : l && l.apply(null, arguments) } function y(r) { if (c[u]) { var n = o(arguments); return y.bail = p, n.unshift(y), c[u++].apply(t, n) } "sync" === e ? f = r : l && l.apply(null, arguments) } return c[n] = function () { var n = o(arguments, 1); "async" === e && l && (delete y.bail, n.push(y)); var i = r.apply(t, n); "sync" === e && y(i) }, y.apply(null, a), f }) : s = void 0; function a(r) { i.push(r.hook) } b() })), d; function b() { !a && ("sync" !== e || r.ready & i.SYNC) && ("async" !== e || r.ready & i.ASYNC) ? "sync" !== e && r.ready & i.QUEUE ? h.apply = function () { var r = arguments; c.push((function () { d.apply(r[1], r[2]) })) } : h.apply = function () { throw t + ": hooked function not ready" } : h.apply = s } } return (r = Object.assign({}, e, r)).ready ? u.ready = function () { a = !0, function (r) { for (var t; t = r.shift();)t() }(c) } : a = !0, u.get = p, u } r.exports = i
|
|
}, 172: (r, t, e) => { function n(r, t, e) { t.split && (t = t.split(".")); for (var n, o, i = 0, a = t.length, f = r; i < a && "__proto__" != (o = "" + t[i++]) && "constructor" !== o && "prototype" !== o;)f = f[o] = i === a ? e : typeof (n = f[o]) == typeof t ? n : 0 * t[i] != 0 || ~("" + t[i]).indexOf(".") ? {} : [] } e.d(t, { J: () => n }) }, 751: (r, t, e) => { function n(r) { var t, e, o; if (Array.isArray(r)) { for (e = Array(t = r.length); t--;)e[t] = (o = r[t]) && "object" == typeof o ? n(o) : o; return e } if ("[object Object]" === Object.prototype.toString.call(r)) { for (t in e = {}, r) "__proto__" === t ? Object.defineProperty(e, t, { value: n(r[t]), configurable: !0, enumerable: !0, writable: !0 }) : e[t] = (o = r[t]) && "object" == typeof o ? n(o) : o; return e } return r } e.d(t, { Q: () => n }) }
|
|
}, e = {}; function n(r) { var o = e[r]; if (void 0 !== o) return o.exports; var i = e[r] = { exports: {} }; return t[r](i, i.exports, n), i.exports } n.m = t, r = [], n.O = (t, e, o, i) => { if (!e) { var a = 1 / 0; for (l = 0; l < r.length; l++) { e = r[l][0], o = r[l][1], i = r[l][2]; for (var f = !0, c = 0; c < e.length; c++)(!1 & i || a >= i) && Object.keys(n.O).every((r => n.O[r](e[c]))) ? e.splice(c--, 1) : (f = !1, i < a && (a = i)); if (f) { r.splice(l--, 1); var u = o(); void 0 !== u && (t = u) } } return t } i = i || 0; for (var l = r.length; l > 0 && r[l - 1][2] > i; l--)r[l] = r[l - 1]; r[l] = [e, o, i] }, n.n = r => { var t = r && r.__esModule ? () => r.default : () => r; return n.d(t, { a: t }), t }, n.d = (r, t) => { for (var e in t) n.o(t, e) && !n.o(r, e) && Object.defineProperty(r, e, { enumerable: !0, get: t[e] }) }, n.o = (r, t) => Object.prototype.hasOwnProperty.call(r, t), (() => { var r = { 673: 0 }; n.O.j = t => 0 === r[t]; var t = (t, e) => { var o, i, a = e[0], f = e[1], c = e[2], u = 0; if (a.some((t => 0 !== r[t]))) { for (o in f) n.o(f, o) && (n.m[o] = f[o]); if (c) var l = c(n) } for (t && t(e); u < a.length; u++)i = a[u], n.o(r, i) && r[i] && r[i][0](), r[i] = 0; return n.O(l) }, e = self.pbjsChunk = self.pbjsChunk || []; e.forEach(t.bind(null, 0)), e.push = t.bind(null, e.push.bind(e)) })(); var o = n.O(void 0, [802, 769, 139, 85], (() => n(940))); o = n.O(o)
|
|
})();
|
|
(self.pbjsChunk = self.pbjsChunk || []).push([[802], { 789: (e, t, n) => { n.d(t, { A4: () => c, J7: () => l, Pg: () => u }); var i = n(580), r = n(69), o = n(873), s = n(569); const a = (0, o.m)(), d = "outstream"; function c(e) { const { url: t, config: n, id: o, callback: c, loaded: l, adUnitCode: u, renderNow: f } = e; this.url = t, this.config = n, this.handlers = {}, this.id = o, this.renderNow = f, this.adUnitCode = u, this.loaded = l, this.cmd = [], this.push = e => { "function" == typeof e ? this.loaded ? e.call() : this.cmd.push(e) : (0, r.vV)("Commands given to Renderer.push must be wrapped in a function") }, this.callback = c || (() => { this.loaded = !0, this.process() }), this.render = function () { const e = arguments, n = () => { this._render ? this._render.apply(this, e) : (0, r.JE)("No render function was provided, please use .setRender on the renderer") }; !function (e) { const t = a.adUnits.find((t => t.code === e)); if (!t) return !1; const n = t?.renderer, i = !!(n && n.url && n.render), r = t?.mediaTypes?.video?.renderer, o = !!(r && r.url && r.render); return !!(i && !0 !== n.backupOnly || o && !0 !== r.backupOnly) }(u) ? f ? n() : (this.cmd.unshift(n), (0, i.R)(t, s.tp, d, this.callback, this.documentContext)) : ((0, r.JE)(`External Js not loaded by Renderer since renderer url and callback is already defined on adUnit ${u}`), n()) }.bind(this) } function l(e) { return !(!e || !e.url && !e.renderNow) } function u(e, t, n) { let i = null; e.config && e.config.documentResolver && (i = e.config.documentResolver(t, document, n)), i || (i = document), e.documentContext = i, e.render(t, e.documentContext) } c.install = function (e) { let { url: t, config: n, id: i, callback: r, loaded: o, adUnitCode: s, renderNow: a } = e; return new c({ url: t, config: n, id: i, callback: r, loaded: o, adUnitCode: s, renderNow: a }) }, c.prototype.getConfig = function () { return this.config }, c.prototype.setRender = function (e) { this._render = e }, c.prototype.setEventHandlers = function (e) { this.handlers = e }, c.prototype.handleVideoEvent = function (e) { let { id: t, eventName: n } = e; "function" == typeof this.handlers[n] && this.handlers[n](), (0, r.OG)(`Prebid Renderer event for id ${t} type ${n}`) }, c.prototype.process = function () { for (; this.cmd.length > 0;)try { this.cmd.shift().call() } catch (e) { (0, r.vV)(`Error processing Renderer command on ad unit '${this.adUnitCode}':`, e) } } }, 811: (e, t, n) => { n.d(t, { DL: () => d, Ml: () => r, Ue: () => i, VJ: () => l, hE: () => c, hq: () => a, mo: () => s, pY: () => u, uc: () => o }); const i = "accessDevice", r = "syncUser", o = "fetchBids", s = "reportAnalytics", a = "transmitEids", d = "transmitUfpd", c = "transmitPreciseGeo", l = "transmitTid", u = "loadExternalScript" }, 441: (e, t, n) => { n.d(t, { s: () => r }); var i = n(46); const r = (0, n(604).ZI)((e => i.Ay.resolveAlias(e))) }, 569: (e, t, n) => { n.d(t, { Tn: () => o, tW: () => r, tp: () => i }); const i = "prebid", r = "bidder", o = "analytics" }, 604: (e, t, n) => { n.d(t, { Dk: () => s, Ii: () => o, TQ: () => g, XG: () => l, ZI: () => p, Zw: () => c, bt: () => u, e3: () => f, iK: () => a, q7: () => d }); var i = n(569), r = n(214); const o = "component", s = o + "Type", a = o + "Name", d = "adapterCode", c = "storageType", l = "configName", u = "syncType", f = "syncUrl", g = "_config"; function p(e) { return function (t, n, r) { const c = { [s]: t, [a]: n, [o]: `${t}.${n}` }; return t === i.tW && (c[d] = e(n)), h(Object.assign(c, r)) } } const h = (0, r.A_)("sync", (e => e)) }, 139: (e, t, n) => { n.d(t, { io: () => s, qB: () => o }); var i = n(69), r = n(604); const [o, s] = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : (0, i.h0)("Activity control:"); const t = {}; function n(e) { return t[e] = t[e] || [] } function o(t, n, i, o) { let s; try { s = i(o) } catch (i) { e.logError(`Exception in rule ${n} for '${t}'`, i), s = { allow: !1, reason: i } } return s && Object.assign({ activity: t, name: n, component: o[r.Ii] }, s) } const s = {}; function a(t) { let { activity: n, name: i, allow: r, reason: o, component: a } = t; const d = `${i} ${r ? "allowed" : "denied"} '${n}' for '${a}'${o ? ":" : ""}`, c = s.hasOwnProperty(d); if (c && clearTimeout(s[d]), s[d] = setTimeout((() => delete s[d]), 1e3), !c) { const t = [d]; o && t.push(o), (r ? e.logInfo : e.logWarn).apply(e, t) } } return [function (e, t, i) { let r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 10; const o = n(e), s = o.findIndex((e => { let [t] = e; return r < t })), a = [r, t, i]; return o.splice(s < 0 ? o.length : s, 0, a), function () { const e = o.indexOf(a); e >= 0 && o.splice(e, 1) } }, function (e, t) { let i, r; for (const [s, d, c] of n(e)) { if (i !== s && r) break; i = s; const n = o(e, d, c, t); if (n) { if (!n.allow) return a(n), !1; r = n } } return r && a(r), !0 }] }() }, 75: (e, t, n) => { n.d(t, { $A: () => I, BS: () => W, Hh: () => q, Pk: () => N, Uc: () => S, XO: () => V, bw: () => _, n6: () => C, qn: () => $, vB: () => P, vW: () => R, vd: () => U }); var i = n(69), r = n(23), o = n(969), s = n(272), a = n(789), d = n(371), c = n(881), l = n(31), u = n(214), f = n(449), g = n(555), p = n(46), h = n(894), m = n(779), b = n(5); const { AD_RENDER_FAILED: y, AD_RENDER_SUCCEEDED: v, STALE_RENDER: E, BID_WON: A, EXPIRED_RENDER: w } = o.qY, { EXCEPTION: T } = o.as, I = (0, u.A_)("sync", (function (e) { return (arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : g.U9.resolve()).then((t => t ?? c.n.findBidByAdId(e))).catch((() => { })) })), C = (0, u.A_)("sync", (function (e) { ((0, b.$T)(e.eventtrackers)[b.RO]?.[b.Ni] || []).forEach((e => (0, i.z$)(e))), r.Ic(A, e), c.n.addWinningBid(e) })); function B(e) { let { reason: t, message: n, bid: o, id: s } = e; const a = { reason: t, message: n }; o && (a.bid = o, a.adId = o.adId), s && (a.adId = s), (0, i.vV)(`Error rendering ad (id: ${s}): ${n}`), r.Ic(y, a) } function O(e) { let { doc: t, bid: n, id: i } = e; const o = { doc: t }; n && (o.bid = n), i && (o.adId = i), p.Ay.callAdRenderSucceededBidder(n.adapterCode || n.bidder, n), r.Ic(v, o) } function S(e, t) { switch (e.event) { case o.qY.AD_RENDER_FAILED: B({ bid: t, id: t.adId, reason: e.info.reason, message: e.info.message }); break; case o.qY.AD_RENDER_SUCCEEDED: O({ doc: null, bid: t, id: t.adId }); break; default: (0, i.vV)(`Received event request for unsupported event: '${e.event}' (adId: '${t.adId}')`) } } function R(e, t, n) { let { resizeFn: i, fireTrackers: r = f.vO } = n; if ("resizeNativeHeight" === e.action) i(e.width, e.height); else r(e, t) } const k = { [o.nl.EVENT]: S }; k[o.nl.NATIVE] = R; const U = (0, u.A_)("sync", (function (e, t) { const { ad: n, adUrl: r, cpm: o, originalCpm: s, width: a, height: d, instl: c } = e, l = { AUCTION_PRICE: s || o, CLICKTHROUGH: t?.clickUrl || "" }; return { ad: (0, i.gM)(n, l), adUrl: (0, i.gM)(r, l), width: a, height: d, instl: c } })), D = (0, u.A_)("sync", (function (e) { let { renderFn: t, resizeFn: n, bidResponse: r, options: s, doc: a, isMainDocument: c = a === document && !(0, i.al)() } = e; const l = r.mediaType === d.G_; if (c || l) return void B({ reason: o.as.PREVENT_WRITING_ON_MAIN_DOCUMENT, message: l ? "Cannot render video ad without a renderer" : "renderAd was prevented from writing to the main document.", bid: r, id: r.adId }); const u = U(r, s); t(Object.assign({ adId: r.adId }, u)); const { width: f, height: g } = u; null != (f ?? g) && n(f, g) })); function _(e) { let { renderFn: t, resizeFn: n, adId: a, options: d, bidResponse: c, doc: l } = e; q(c, (() => { if (null != c) { if ((c.status !== o.tl.RENDERED || ((0, i.JE)(`Ad id ${a} has been rendered before`), r.Ic(E, c), !s.$W.getConfig("auctionOptions")?.suppressStaleRender)) && (m.uW.isBidNotExpired(c) || ((0, i.JE)(`Ad id ${a} has been expired`), r.Ic(w, c), !s.$W.getConfig("auctionOptions")?.suppressExpiredRender))) try { D({ renderFn: t, resizeFn: n, bidResponse: c, options: d, doc: l }) } catch (e) { B({ reason: o.as.EXCEPTION, message: e.message, id: a, bid: c }) } } else B({ reason: o.as.CANNOT_FIND_AD, message: `Cannot find ad '${a}'`, id: a }) })) } function $(e) { const t = (0, h.BO)(e.metrics); t.checkpoint("bidRender"), t.timeBetween("bidWon", "bidRender", "render.deferred"), t.timeBetween("auctionEnd", "bidRender", "render.pending"), t.timeBetween("requestBids", "bidRender", "render.e2e"), e.status = o.tl.RENDERED } D.before((function (e, t) { const { bidResponse: n, doc: i } = t; (0, a.J7)(n.renderer) ? ((0, a.Pg)(n.renderer, n, i), O({ doc: i, bid: n, id: n.adId }), e.bail()) : e(t) }), 100); const j = new WeakMap, x = new WeakSet; function q(e, t) { null != e ? (j.set(e, t), e.deferRendering || P(e), N(e)) : t() } function N(e) { x.has(e) || (x.add(e), C(e)) } function P(e) { const t = j.get(e); t && (t(), $(e), j.delete(e)) } function W(e, t, n) { let r; function s(e, n) { B(Object.assign({ id: t, bid: r }, { reason: e, message: n })) } function a(t, n) { const i = e.defaultView?.frameElement; i && (t && (i.width = t, i.style.width && (i.style.width = `${t}px`)), n && (i.height = n, i.style.height && (i.style.height = `${n}px`))) } const d = (c = { resizeFn: a }, function (e, t, n) { k.hasOwnProperty(e) && k[e](t, n, c) }); var c; function u(t) { t.ad ? (e.write(t.ad), e.close(), O({ doc: e, bid: r, id: r.adId })) : (0, l.HH)(r).then((n => n(t, { sendMessage: (e, t) => d(e, t, r), mkFrame: i.hw }, e.defaultView))).then((() => O({ doc: e, bid: r, id: r.adId })), (e => { s(e?.reason || o.as.EXCEPTION, e?.message), e?.stack && (0, i.vV)(e) })); const n = document.createComment(`Creative ${r.creativeId} served by ${r.bidder} Prebid.js Header Bidding`); (0, i._s)(n, e, "html") } try { t && e ? I(t).then((i => { r = i, _({ renderFn: u, resizeFn: a, adId: t, options: { clickUrl: n?.clickThrough }, bidResponse: i, doc: e }) })) : s(o.as.MISSING_DOC_OR_ADID, "missing " + (t ? "doc" : "adId")) } catch (e) { s(T, e.message) } } function V() { if (!window.frames[o.IY]) if (document.body) { const e = (0, i.CA)(); e.name = o.IY, document.body.appendChild(e) } else window.requestAnimationFrame(V) } }, 46: (e, t, n) => { n.d(t, { Ay: () => ne, pX: () => Y }); var i = n(69), r = n(449), o = n(115), s = n(44), a = n(272), d = n(214); let c = {}; function l(e, t, n) { let i = function (e, t) { let n = c[e] = c[e] || { bidders: {} }; return t ? n.bidders[t] = n.bidders[t] || {} : n }(e, n); return i[t] = (i[t] || 0) + 1, i[t] } function u(e) { return l(e, "auctionsCounter") } function f(e) { return c?.[e]?.requestsCounter || 0 } function g(e, t) { return c?.[e]?.bidders?.[t]?.requestsCounter || 0 } function p(e, t) { return c?.[e]?.bidders?.[t]?.winsCounter || 0 } function h(e) { return c?.[e]?.auctionsCounter || 0 } var m = n(934), b = n(916), y = n(23), v = n(969), E = n(894), A = n(881), w = n(569), T = n(139), I = n(811), C = n(604), B = n(433); const O = ["data", "ext.data", "yob", "gender", "keywords", "kwarray", "id", "buyeruid", "customdata"].map((e => `user.${e}`)).concat("device.ext.cdep"), S = ["user.eids", "user.ext.eids"], R = ["user.geo.lat", "user.geo.lon", "device.geo.lat", "device.geo.lon"], k = ["device.ip"], U = ["device.ipv6"]; function D(e) { return Object.assign({ get() { }, run(e, t, n, i, r) { const o = n && n[i]; if (function (e) { return null != e && ("object" != typeof e || Object.keys(e).length > 0) }(o) && r()) { const e = this.get(o); void 0 === e ? delete n[i] : n[i] = e } } }, e) } function _(e) { return e.forEach((e => { e.paths = e.paths.map((e => { const t = e.split("."), n = t.pop(); return [t.length > 0 ? t.join(".") : null, n] })) })), function (t, n) { const i = []; for (var r = arguments.length, o = new Array(r > 2 ? r - 2 : 0), s = 2; s < r; s++)o[s - 2] = arguments[s]; const a = function (e) { for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++)n[i - 1] = arguments[i]; return function (t) { return e.hasOwnProperty(t.name) || (e[t.name] = !!t.applies(...n)), e[t.name] } }(t, ...o); return e.forEach((e => { if (!1 !== t[e.name]) for (const [r, o] of e.paths) { const s = null == r ? n : (0, B.A)(n, r); if (i.push(e.run(n, r, s, o, a.bind(null, e))), !1 === t[e.name]) return } })), i.filter((e => null != e)) } } function $(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : T.io; return function (n) { return !t(e, n) } } function j() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : T.io; return [{ name: I.DL, paths: O, applies: $(I.DL, e) }, { name: I.hq, paths: S, applies: $(I.hq, e) }, { name: I.hE, paths: R, applies: $(I.hE, e), get: e => Math.round(100 * (e + Number.EPSILON)) / 100 }, { name: I.hE, paths: k, applies: $(I.hE, e), get: e => function (e) { if (!e) return null; let t = e.split(".").map(Number); if (4 != t.length) return null; let n = []; for (let e = 0; e < 4; e++) { let t = Math.max(0, Math.min(8, 24 - 8 * e)); n.push(255 << 8 - t & 255) } return t.map(((e, t) => e & n[t])).join(".") }(e) }, { name: I.hE, paths: U, applies: $(I.hE, e), get: e => function (e) { if (!e) return null; let t = e.split(":").map((e => parseInt(e, 16))); for (t = t.map((e => isNaN(e) ? 0 : e)); t.length < 8;)t.push(0); if (8 != t.length) return null; let n = []; for (let e = 0; e < 8; e++) { let t = Math.max(0, Math.min(16, 64 - 16 * e)); n.push(65535 << 16 - t & 65535) } return t.map(((e, t) => e & n[t])).map((e => e.toString(16))).join(":") }(e) }, { name: I.VJ, paths: ["source.tid"], applies: $(I.VJ, e) }].map(D) } const x = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : T.io; const t = _(j(e)), n = _(function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : T.io; return [{ name: I.hq, paths: ["userId", "userIdAsEids"], applies: $(I.hq, e) }, { name: I.VJ, paths: ["ortb2Imp.ext.tid"], applies: $(I.VJ, e) }].map(D) }(e)); return function (e) { const i = {}; return { ortb2: n => (t(i, n, e), n), bidRequest: t => (n(i, t, e), t) } } }(); (0, T.qB)(I.VJ, "enableTIDs config", (() => { if (!a.$W.getConfig("enableTIDs")) return { allow: !1, reason: "TIDs are disabled" } })); var q = n(5); const N = "pbsBidAdapter", P = { CLIENT: "client", SERVER: "server" }, W = { isAllowed: T.io, redact: x }; let V = {}, M = V.bidderRegistry = {}, G = V.aliasRegistry = {}, H = []; a.$W.getConfig("s2sConfig", (e => { e && e.s2sConfig && (H = (0, i.cy)(e.s2sConfig) ? e.s2sConfig : [e.s2sConfig]) })); var F = {}; const L = (0, C.ZI)((e => V.resolveAlias(e))); function z(e) { return e.configName ?? e.name } const J = (0, d.A_)("sync", (function (e) { let { bidderCode: t, auctionId: n, bidderRequestId: r, adUnits: o, src: s, metrics: a } = e; return o.reduce(((e, o) => { const d = o.bids.filter((e => e.bidder === t)); return null == t && 0 === d.length && null != o.s2sBid && d.push({ bidder: null }), e.push(d.reduce(((e, d) => { const c = null == (d = Object.assign({}, d, { ortb2Imp: (0, i.D9)({}, o.ortb2Imp, d.ortb2Imp) }, (0, i.SH)(o, ["nativeParams", "nativeOrtbRequest", "mediaType", "renderer"]))).mediaTypes ? o.mediaTypes : d.mediaTypes; return (0, i.wD)(c) ? d = Object.assign({}, d, { mediaTypes: c }) : (0, i.vV)(`mediaTypes is not correctly configured for adunit ${o.code}`), "client" === s && function (e, t) { l(e, "requestsCounter", t) }(o.code, t), e.push(Object.assign({}, d, { adUnitCode: o.code, transactionId: o.transactionId, adUnitId: o.adUnitId, sizes: c?.banner?.sizes || c?.video?.playerSize || [], bidId: d.bid_id || (0, i.s0)(), bidderRequestId: r, auctionId: n, src: s, metrics: a, auctionsCount: h(o.code), bidRequestsCount: f(o.code), bidderRequestsCount: g(o.code, d.bidder), bidderWinsCount: p(o.code, d.bidder), deferBilling: !!o.deferBilling })), e }), [])), e }), []).reduce(i.Bq, []).filter((e => "" !== e)) }), "getBids"); const Q = (0, d.A_)("sync", (function (e, t) { let { getS2SBidders: n = Y } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; if (null == t) return e; { const i = n(t); return e.filter((e => { if (!i.has(e.bidder)) return !1; if (null == e.s2sConfigName) return !0; const n = z(t); return (Array.isArray(e.s2sConfigName) ? e.s2sConfigName : [e.s2sConfigName]).includes(n) })) } }), "filterBidsForAdUnit"); const K = (0, d.A_)("sync", ((e, t) => e), "setupAdUnitMediaTypes"); function Y(e) { (0, i.cy)(e) || (e = [e]); const t = new Set([null]); return e.filter((e => e && e.enabled)).flatMap((e => e.bidders)).forEach((e => t.add(e))), t } const X = (0, d.A_)("sync", (function (e, t) { let { getS2SBidders: n = Y } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; const r = n(t); return (0, i.ZA)(e).reduce(((e, t) => (e[r.has(t) ? P.SERVER : P.CLIENT].push(t), e)), { [P.CLIENT]: [], [P.SERVER]: [] }) }), "partitionBidders"); function Z(e, t) { const n = M[e], i = n?.getSpec && n.getSpec(); if (i && i[t] && "function" == typeof i[t]) return [i, i[t]] } function ee(e, t, n, r) { try { (0, i.fH)(`Invoking ${e}.${t}`); for (var o = arguments.length, s = new Array(o > 4 ? o - 4 : 0), d = 4; d < o; d++)s[d - 4] = arguments[d]; a.$W.runWithBidder(e, r.bind(n, ...s)) } catch (n) { (0, i.JE)(`Error calling ${t} of ${e}`) } } function te(e, t, n) { if (n?.source !== v.RW.SRC) { const i = Z(e, t); null != i && ee(e, t, ...i, n) } } V.makeBidRequests = (0, d.A_)("sync", (function (e, t, n, o, s) { let d = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : {}, c = arguments.length > 6 ? arguments[6] : void 0; c = (0, E.BO)(c), y.Ic(v.qY.BEFORE_REQUEST_BIDS, e), (0, r.nk)(e), e.map((e => e.code)).filter(i.hj).forEach(u), e.forEach((e => { (0, i.Qd)(e.mediaTypes) || (e.mediaTypes = {}), e.bids = e.bids.filter((e => !e.bidder || W.isAllowed(I.uc, L(w.tW, e.bidder)))), l(e.code, "requestsCounter") })), e = K(e, s); let { [P.CLIENT]: f, [P.SERVER]: g } = X(e, H); a.$W.getConfig("bidderSequence") === a.Ov && (f = (0, i.k4)(f)); const p = (0, m.EN)(); let h = []; const A = d.global || {}, T = d.bidder || {}; function B(e, t) { const r = W.redact(null != t ? t : L(w.tW, e.bidderCode)), o = (0, i.D9)({ source: { tid: n } }, A, T[e.bidderCode]); !function (e) { const t = e.user?.eids; Array.isArray(t) && t.length && (e.user.ext = e.user.ext || {}, e.user.ext.eids = [...e.user.ext.eids || [], ...t], delete e.user.eids) }(o); const s = Object.freeze(r.ortb2(o)); return e.ortb2 = s, e.bids = e.bids.map((e => (e.ortb2 = s, r.bidRequest(e)))), e } H.forEach((r => { const o = function (e) { return L(w.tp, N, { [C.XG]: z(e) }) }(r); if (r && r.enabled && W.isAllowed(I.uc, o)) { let { adUnits: s, hasModuleBids: a } = function (e, t) { let n = (0, i.Go)(e), r = !1; return n.forEach((e => { const n = e.bids.filter((e => e.module === N && e.params?.configName === z(t))); 1 === n.length ? (e.s2sBid = n[0], r = !0, e.ortb2Imp = (0, i.D9)({}, e.s2sBid.ortb2Imp, e.ortb2Imp)) : n.length > 1 && (0, i.JE)('Multiple "module" bids for the same s2s configuration; all will be ignored', n), e.bids = Q(e.bids, t).map((e => (e.bid_id = (0, i.s0)(), e))) })), n = n.filter((e => 0 !== e.bids.length || null != e.s2sBid)), { adUnits: n, hasModuleBids: r } }(e, r), d = (0, i.lk)(); (0 === g.length && a ? [null] : g).forEach((e => { const a = (0, i.s0)(), l = c.fork(), u = B({ bidderCode: e, auctionId: n, bidderRequestId: a, uniquePbsTid: d, bids: J({ bidderCode: e, auctionId: n, bidderRequestId: a, adUnits: (0, i.Go)(s), src: v.RW.SRC, metrics: l }), auctionStart: t, timeout: r.timeout, src: v.RW.SRC, refererInfo: p, metrics: l }, o); 0 !== u.bids.length && h.push(u) })), s.forEach((e => { let t = e.bids.filter((e => h.find((t => t.bids.find((t => t.bidId === e.bid_id)))))); e.bids = t })), h.forEach((e => { void 0 === e.adUnitsS2SCopy && (e.adUnitsS2SCopy = s.filter((e => e.bids.length > 0 || null != e.s2sBid))) })) } })); let O = function (e) { let t = (0, i.Go)(e); return t.forEach((e => { e.bids = Q(e.bids, null) })), t = t.filter((e => 0 !== e.bids.length)), t }(e); return f.forEach((e => { const r = (0, i.s0)(), a = c.fork(), d = B({ bidderCode: e, auctionId: n, bidderRequestId: r, bids: J({ bidderCode: e, auctionId: n, bidderRequestId: r, adUnits: (0, i.Go)(O), labels: s, src: "client", metrics: a }), auctionStart: t, timeout: o, refererInfo: p, metrics: a }), l = M[e]; l || (0, i.vV)(`Trying to make a request for bidder that does not exist: ${e}`), l && d.bids && 0 !== d.bids.length && h.push(d) })), h.forEach((e => { b.mW.getConsentData() && (e.gdprConsent = b.mW.getConsentData()), b.t6.getConsentData() && (e.uspConsent = b.t6.getConsentData()), b.ad.getConsentData() && (e.gppConsent = b.ad.getConsentData()) })), h }), "makeBidRequests"), V.callBids = function (e, t, n, r, o, d, c) { let l = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : {}; if (!t.length) return void (0, i.JE)("callBids executed with no bidRequests. Were they filtered by labels or sizing?"); let [u, f] = t.reduce(((e, t) => (e[Number(void 0 !== t.src && t.src === v.RW.SRC)].push(t), e)), [[], []]); var g = []; f.forEach((e => { for (var t = -1, n = 0; n < g.length; ++n)if (e.uniquePbsTid === g[n].uniquePbsTid) { t = n; break } t <= -1 && g.push(e) })); let p = 0; H.forEach((e => { if (e && g[p] && Y(e).has(g[p].bidderCode)) { const t = (0, s.g4)(d, o ? { request: o.request.bind(null, "s2s"), done: o.done } : void 0); let a = e.bidders; const u = M[e.adapter]; let h = g[p].uniquePbsTid, m = g[p].adUnitsS2SCopy, b = f.filter((e => e.uniquePbsTid === h)); if (u) { let o = { ad_units: m, s2sConfig: e, ortb2Fragments: l, requestBidsTimeout: d }; if (o.ad_units.length) { let e = b.map((e => (e.start = (0, i.vE)(), function (t) { t || c(e.bidderRequestId), r.apply(e, arguments) }))); const s = (0, i.ZA)(o.ad_units).filter((e => a.includes(e))); (0, i.OG)(`CALLING S2S HEADER BIDDERS ==== ${s.length > 0 ? s.join(", ") : 'No bidder specified, using "ortb2Imp" definition(s) only'}`), b.forEach((e => { y.Ic(v.qY.BID_REQUESTED, { ...e, tid: e.auctionId }) })), u.callBids(o, f, n, (t => e.forEach((e => e(t)))), t) } } else (0, i.vV)("missing " + e.adapter); p++ } })), u.forEach((e => { e.start = (0, i.vE)(); const t = M[e.bidderCode]; a.$W.runWithBidder(e.bidderCode, (() => { (0, i.OG)("CALLING BIDDER"), y.Ic(v.qY.BID_REQUESTED, e) })); let l = (0, s.g4)(d, o ? { request: o.request.bind(null, e.bidderCode), done: o.done } : void 0); const u = r.bind(e); try { a.$W.runWithBidder(e.bidderCode, t.callBids.bind(t, e, n, u, l, (() => c(e.bidderRequestId)), a.$W.callbackWithBidder(e.bidderCode))) } catch (t) { (0, i.vV)(`${e.bidderCode} Bid Adapter emitted an uncaught error when parsing their bidRequest`, { e: t, bidRequest: e }), u() } })) }, V.videoAdapters = [], V.registerBidAdapter = function (e, t) { let { supportedMediaTypes: n = [] } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; e && t ? "function" == typeof e.callBids ? (M[t] = e, b.o2.register(w.tW, t, e.getSpec?.().gvlid), n.includes("video") && V.videoAdapters.push(t), n.includes("native") && r.mT.push(t)) : (0, i.vV)("Bidder adaptor error for bidder code: " + t + "bidder must implement a callBids() function") : (0, i.vV)("bidAdapter or bidderCode not specified") }, V.aliasBidAdapter = function (e, t, n) { if (void 0 === M[t]) { let s = M[e]; if (void 0 === s) { const n = []; H.forEach((i => { if (i.bidders && i.bidders.length) { const r = i && i.bidders; i && r.includes(t) ? G[t] = e : n.push(e) } })), n.forEach((e => { (0, i.vV)('bidderCode "' + e + '" is not an existing bidder.', "adapterManager.aliasBidAdapter") })) } else try { let a, d = function (e) { let t = []; return V.videoAdapters.includes(e) && t.push("video"), r.mT.includes(e) && t.push("native"), t }(e); if (s.constructor.prototype != Object.prototype) a = new s.constructor, a.setBidderCode(t); else { const { useBaseGvlid: r = !1 } = n || {}; let d = s.getSpec(); const c = r ? d.gvlid : n?.gvlid; null == c && null != d.gvlid && (0, i.JE)(`Alias '${t}' will NOT re-use the GVL ID of the original adapter ('${d.code}', gvlid: ${d.gvlid}). Functionality that requires TCF consent may not work as expected.`); let l = n && n.skipPbsAliasing; a = (0, o.xb)(Object.assign({}, d, { code: t, gvlid: c, skipPbsAliasing: l })), G[t] = e } V.registerBidAdapter(a, t, { supportedMediaTypes: d }) } catch (t) { (0, i.vV)(e + " bidder does not currently support aliasing.", "adapterManager.aliasBidAdapter") } } else (0, i.OG)('alias name "' + t + '" has been already specified.') }, V.resolveAlias = function (e) { let t, n = e; for (; G[n] && (!t || !t.has(n));)n = G[n], (t = t || new Set).add(n); return n }, V.registerAnalyticsAdapter = function (e) { let { adapter: t, code: n, gvlid: r } = e; t && n ? "function" == typeof t.enableAnalytics ? (t.code = n, F[n] = { adapter: t, gvlid: r }, b.o2.register(w.Tn, n, r)) : (0, i.vV)(`Prebid Error: Analytics adaptor error for analytics "${n}"\n analytics adapter must implement an enableAnalytics() function`) : (0, i.vV)("Prebid Error: analyticsAdapter or analyticsCode not specified") }, V.enableAnalytics = function (e) { (0, i.cy)(e) || (e = [e]), e.forEach((e => { const t = F[e.provider]; t && t.adapter ? W.isAllowed(I.mo, L(w.Tn, e.provider, { [C.TQ]: e })) && t.adapter.enableAnalytics(e) : (0, i.vV)(`Prebid Error: no analytics adapter found in registry for '${e.provider}'.`) })) }, V.getBidAdapter = function (e) { return M[e] }, V.getAnalyticsAdapter = function (e) { return F[e] }, V.callTimedOutBidders = function (e, t, n) { t = t.map((t => (t.params = (0, i.SB)(e, t.adUnitCode, t.bidder), t.timeout = n, t))), t = (0, i.$z)(t, "bidder"), Object.keys(t).forEach((e => { te(e, "onTimeout", t[e]) })) }, V.callBidWonBidder = function (e, t, n) { var r, o; t.params = (0, i.SB)(n, t.adUnitCode, t.bidder), r = t.adUnitCode, o = t.bidder, l(r, "winsCounter", o), te(e, "onBidWon", t) }, V.triggerBilling = (() => { const e = new WeakSet; return t => { e.has(t) || (e.add(t), ((0, q.$T)(t.eventtrackers)[q.OA]?.[q.Ni] || []).forEach((e => i.mM.triggerPixel(e))), te(t.bidder, "onBidBillable", t)) } })(), V.callSetTargetingBidder = function (e, t) { te(e, "onSetTargeting", t) }, V.callBidViewableBidder = function (e, t) { te(e, "onBidViewable", t) }, V.callBidderError = function (e, t, n) { te(e, "onBidderError", { error: t, bidderRequest: n }) }, V.callAdRenderSucceededBidder = function (e, t) { te(e, "onAdRenderSucceeded", t) }, V.callDataDeletionRequest = (0, d.A_)("sync", (function () { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; const r = "onDataDeletionRequest"; Object.keys(M).filter((e => !G.hasOwnProperty(e))).forEach((e => { const n = Z(e, r); if (null != n) { const i = A.n.getBidsRequested().filter((t => function (e) { const t = new Set; for (; G.hasOwnProperty(e) && !t.has(e);)t.add(e), e = G[e]; return e }(t.bidderCode) === e)); ee(e, r, ...n, i, ...t) } })), Object.entries(F).forEach((e => { let [n, o] = e; const s = o?.adapter?.[r]; if ("function" == typeof s) try { s.apply(o.adapter, t) } catch (e) { (0, i.vV)(`error calling ${r} of ${n}`, e) } })) })); const ne = V }, 115: (e, t, n) => { function i(e) { var t = e; return { callBids: function () { }, setBidderCode: function (e) { t = e }, getBidderCode: function () { return t } } } n.d(t, { xb: () => C, a$: () => T }); var r = n(46), o = n(272), s = n(597), a = n(230), d = n(449), c = n(895), l = n(969), u = n(23), f = n(69), g = n(214), p = n(881), h = n(693), m = n(894), b = n(139), y = n(441), v = n(569), E = n(811); const A = ["cpm", "ttl", "creativeId", "netRevenue", "currency"], w = ["auctionId", "transactionId"]; function T(e) { const t = Array.isArray(e.supportedMediaTypes) ? { supportedMediaTypes: e.supportedMediaTypes } : void 0; function n(e) { const n = C(e); r.Ay.registerBidAdapter(n, e.code, t) } n(e), Array.isArray(e.aliases) && e.aliases.forEach((t => { let i, o, s = t; (0, f.Qd)(t) && (s = t.code, i = t.gvlid, o = t.skipPbsAliasing), r.Ay.aliasRegistry[s] = e.code, n(Object.assign({}, e, { code: s, gvlid: i, skipPbsAliasing: o })) })) } const I = (0, f.Bj)((e => { let { bidderCode: t } = e; if ((0, b.io)(E.VJ, (0, y.s)(v.tW, t))) return { bidRequest: e => e, bidderRequest: e => e }; function n(e, t, n) { return w.includes(t) ? null : Reflect.get(e, t, n) } function i(e, t) { const n = new Proxy(e, t); return Object.entries(e).filter((e => { let [t, n] = e; return "function" == typeof n })).forEach((t => { let [i, r] = t; return n[i] = r.bind(e) })), n } const r = (0, f.Bj)((e => i(e, { get: n })), (e => e.bidId)); return { bidRequest: r, bidderRequest: e => i(e, { get: (t, i, o) => "bids" === i ? e.bids.map(r) : n(t, i, o) }) } })); function C(e) { return Object.assign(new i(e.code), { getSpec: function () { return Object.freeze(Object.assign({}, e)) }, registerSyncs: t, callBids: function (n, i, a, g, b, y) { if (!Array.isArray(n.bids)) return; const v = I(n), E = {}; function T(e, t) { const n = (0, m.BO)(t.metrics); n.checkpoint("addBidResponse"), E[e] = !0, n.measureTime("addBidResponse.validate", (() => function (e, t) { let { index: n = p.n.index } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; function i() { let e = Object.keys(t); return A.every((n => e.includes(n) && ![void 0, null].includes(t[n]))) } function r(e) { return `Invalid bid from ${t.bidderCode}. Ignoring bid: ${e}` } if (!e) return (0, f.JE)("No adUnitCode was supplied to addBidResponse."), !1; if (!t) return (0, f.JE)(`Some adapter tried to add an undefined bid for ${e}.`), !1; if (!i()) return (0, f.vV)(r(`Bidder ${t.bidderCode} is missing required params. Check http://prebid.org/dev-docs/bidder-adapter-1.html for list of params.`)), !1; if ("native" === t.mediaType && !(0, d.Bm)(t, { index: n })) return (0, f.vV)(r("Native bid missing some required properties.")), !1; if ("video" === t.mediaType && !(0, c.vk)(t, { index: n })) return (0, f.vV)(r("Video bid does not have required vastUrl or renderer property")), !1; if ("banner" === t.mediaType && !function (e, t) { let { index: n = p.n.index } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; if ((t.width || 0 === parseInt(t.width, 10)) && (t.height || 0 === parseInt(t.height, 10))) return t.width = parseInt(t.width, 10), t.height = parseInt(t.height, 10), !0; if (null != t.wratio && null != t.hratio) return t.wratio = parseInt(t.wratio, 10), t.hratio = parseInt(t.hratio, 10), !0; const i = n.getBidRequest(t), r = n.getMediaTypes(t), o = i && i.sizes || r && r.banner && r.banner.sizes, s = (0, f.kK)(o); if (1 === s.length) { const [e, n] = s[0].split("x"); return t.width = parseInt(e, 10), t.height = parseInt(n, 10), !0 } return !1 }(e, t, { index: n })) return (0, f.vV)(r("Banner bids require a width and height")), !1; return !0 }(e, t))) ? i(e, t) : i.reject(e, t, l.Tf.INVALID) } const C = []; function B() { a(), o.$W.runWithBidder(e.code, (() => { u.Ic(l.qY.BIDDER_DONE, n), t(C, n.gdprConsent, n.uspConsent, n.gppConsent) })) } const S = k(n).measureTime("validate", (() => n.bids.filter((t => function (t) { if (!e.isBidRequestValid(t)) return (0, f.JE)(`Invalid bid sent to bidder ${e.code}: ${JSON.stringify(t)}`), !1; return !0 }(v.bidRequest(t)))))); if (0 === S.length) return void B(); const U = {}; S.forEach((e => { U[e.bidId] = e, e.adUnitCode || (e.adUnitCode = e.placementCode) })), O(e, S, n, g, y, { onRequest: e => u.Ic(l.qY.BEFORE_BIDDER_HTTP, n, e), onResponse: t => { b(e.code), C.push(t) }, onPaapi: e => { const t = U[e.bidId]; t ? R(t, e) : (0, f.JE)("Received fledge auction configuration for an unknown bidId", e) }, onError: (t, i) => { i.timedOut || b(e.code), r.Ay.callBidderError(e.code, i, n), u.Ic(l.qY.BIDDER_ERROR, { error: i, bidderRequest: n }), (0, f.vV)(`Server call for ${e.code} failed: ${t} ${i.status}. Continuing without bids.`, { bidRequests: S }) }, onBid: t => { const n = U[t.requestId]; if (n) { if (t.adapterCode = n.bidder, function (e, t) { let n = h.u.get(t, "allowAlternateBidderCodes") || !1, i = h.u.get(t, "allowedAlternateBidderCodes"); if (e && t && t !== e && (i = (0, f.cy)(i) ? i.map((e => e.trim().toLowerCase())).filter((e => !!e)).filter(f.hj) : i, !n || (0, f.cy)(i) && "*" !== i[0] && !i.includes(e))) return !0; return !1 }(t.bidderCode, n.bidder)) return (0, f.JE)(`${t.bidderCode} is not a registered partner or known bidder of ${n.bidder}, hence continuing without bid. If you wish to support this bidder, please mark allowAlternateBidderCodes as true in bidderSettings.`), void i.reject(n.adUnitCode, t, l.Tf.BIDDER_DISALLOWED); t.originalCpm = t.cpm, t.originalCurrency = t.currency, t.meta = t.meta || Object.assign({}, t[n.bidder]), t.deferBilling = n.deferBilling, t.deferRendering = t.deferBilling && (t.deferRendering ?? "function" != typeof e.onBidBillable); const r = Object.assign((0, s.O)(l.XQ.GOOD, n), t, (0, f.Up)(n, w)); T(n.adUnitCode, r) } else (0, f.JE)(`Bidder ${e.code} made bid for unknown request ID: ${t.requestId}. Ignoring.`), i.reject(null, t, l.Tf.INVALID_REQUEST_ID) }, onCompletion: B }) } }); function t(t, n, i, r) { S(e, t, n, i, r) } } const B = ["bids", "paapi"], O = (0, g.A_)("async", (function (e, t, n, i, r, o) { let { onRequest: s, onResponse: a, onPaapi: d, onError: c, onBid: u, onCompletion: g } = o; const p = k(n); g = p.startTiming("total").stopBefore(g); const m = I(n); let A = p.measureTime("buildRequests", (() => e.buildRequests(t.map(m.bidRequest), m.bidderRequest(n)))); if (!A || 0 === A.length) return void g(); Array.isArray(A) || (A = [A]); const w = (0, f.U6)(g, A.length); A.forEach((t => { const n = p.fork(); function o(e) { null != e && (e.metrics = n.fork().renameWith()), u(e) } const g = r((function (i, r) { A(); try { i = JSON.parse(i) } catch (e) { } i = { body: i, headers: { get: r.getResponseHeader.bind(r) } }, a(i); try { i = n.measureTime("interpretResponse", (() => e.interpretResponse(i, t))) } catch (t) { return (0, f.vV)(`Bidder ${e.code} failed to interpret the server's response. Continuing without bids`, null, t), void w() } let s, c; i && !Object.keys(i).some((e => !B.includes(e))) ? (s = i.bids, c = i.paapi) : s = i, (0, f.cy)(c) && c.forEach(d), s && ((0, f.cy)(s) ? s.forEach(o) : o(s)), w() })), m = r((function (e, t) { A(), c(e, t), w() })); s(t); const A = n.startTiming("net"); function T(n) { const i = t.options; return Object.assign(n, i, { browsingTopics: !(i?.hasOwnProperty("browsingTopics") && !i.browsingTopics) && ((h.u.get(e.code, "topicsHeader") ?? !0) && (0, b.io)(E.DL, (0, y.s)(v.tW, e.code))) }) } switch (t.method) { case "GET": i(`${t.url}${function (e) { if (e) return `?${"object" == typeof e ? (0, f.bL)(e) : e}`; return "" }(t.data)}`, { success: g, error: m }, void 0, T({ method: "GET", withCredentials: !0 })); break; case "POST": const n = t.options?.endpointCompression, r = "TRUE" === (0, f.Ez)(l.M).toUpperCase() || (0, f.dp)(), o = e => { let { url: t, payload: n } = e; i(t, { success: g, error: m }, n, T({ method: "POST", contentType: "text/plain", withCredentials: !0 })) }; n && r && (0, f.JE)(`Skipping GZIP compression for ${e.code} as debug mode is enabled`), n && !r && (0, f.nT)() ? (0, f.ZK)(t.data).then((e => { const n = new URL(t.url, window.location.origin); n.searchParams.has("gzip") || n.searchParams.set("gzip", "1"), o({ url: n.href, payload: e }) })) : o({ url: t.url, payload: "string" == typeof t.data ? t.data : JSON.stringify(t.data) }); break; default: (0, f.JE)(`Skipping invalid request from ${e.code}. Request type ${t.type} must be GET or POST`), w() } })) }), "processBidderRequests"), S = (0, g.A_)("async", (function (e, t, n, i, s) { const d = o.$W.getConfig("userSync.aliasSyncEnabled"); if (e.getUserSyncs && (d || !r.Ay.aliasRegistry[e.code])) { let r = e.getUserSyncs({ iframeEnabled: a.zt.canBidderRegisterSync("iframe", e.code), pixelEnabled: a.zt.canBidderRegisterSync("image", e.code) }, t, n, i, s); r && (Array.isArray(r) || (r = [r]), r.forEach((t => { a.zt.registerSync(t.type, e.code, t.url) })), a.zt.bidderDone(e.code)) } }), "registerSyncs"), R = (0, g.A_)("sync", ((e, t) => { }), "addPaapiConfig"); function k(e) { return (0, m.BO)(e.metrics).renameWith((t => [`adapter.client.${t}`, `adapters.client.${e.bidderCode}.${t}`])) } }, 580: (e, t, n) => { n.d(t, { R: () => c }); var i = n(811), r = n(441), o = n(139), s = n(69); const a = new WeakMap, d = ["debugging", "outstream", "aaxBlockmeter", "adagio", "adloox", "akamaidap", "arcspan", "airgrid", "browsi", "brandmetrics", "clean.io", "humansecurity", "confiant", "contxtful", "hadron", "mediafilter", "medianet", "azerionedge", "a1Media", "geoedge", "qortex", "dynamicAdBoost", "51Degrees", "symitridap", "wurfl", "nodalsAi", "anonymised", "optable", "justtag", "tncId", "ftrackId", "id5"]; function c(e, t, n, c, l, u) { if (!(0, o.io)(i.pY, (0, r.s)(t, n))) return; if (!n || !e) return void (0, s.vV)("cannot load external script without url and moduleCode"); if (!d.includes(n)) return void (0, s.vV)(`${n} not whitelisted for loading external JavaScript`); l || (l = document); const f = h(l, e); if (f) return c && "function" == typeof c && (f.loaded ? c() : f.callbacks.push(c)), f.tag; const g = a.get(l) || {}, p = { loaded: !1, tag: null, callbacks: [] }; return g[e] = p, a.set(l, g), c && "function" == typeof c && p.callbacks.push(c), (0, s.JE)(`module ${n} is loading external JavaScript`), function (t, n, i, r) { i || (i = document); var o = i.createElement("script"); o.type = "text/javascript", o.async = !0; const a = h(i, e); a && (a.tag = o); o.readyState ? o.onreadystatechange = function () { "loaded" !== o.readyState && "complete" !== o.readyState || (o.onreadystatechange = null, n()) } : o.onload = function () { n() }; o.src = t, r && (0, s.Bg)(o, r); return (0, s._s)(o, i), o }(e, (function () { p.loaded = !0; try { for (let e = 0; e < p.callbacks.length; e++)p.callbacks[e]() } catch (e) { (0, s.vV)("Error executing callback", "adloader.js:loadExternalScript", e) } }), l, u); function h(e, t) { const n = a.get(e); return n && n[t] ? n[t] : null } } }, 44: (e, t, n) => { n.d(t, { g4: () => u }); var i = n(272), r = n(69); const o = { fetch: window.fetch.bind(window), makeRequest: (e, t) => new Request(e, t), timeout(e, t) { const n = new AbortController; let i = setTimeout((() => { n.abort(), (0, r.vV)(`Request timeout after ${e}ms`, t), i = null }), e); return { signal: n.signal, done() { i && clearTimeout(i) } } } }, s = "GET", a = "POST", d = "Content-Type"; function c() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 3e3, { request: t, done: n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r = (t, n) => { let r; null == e || null != n?.signal || i.$W.getConfig("disableAjaxTimeout") || (r = o.timeout(e, t), n = Object.assign({ signal: r.signal }, n)); let s = o.fetch(t, n); return null != r?.done && (s = s.finally(r.done)), s }; return null == t && null == n || (r = (e => function (i, r) { const o = new URL(null == i?.url ? i : i.url, document.location).origin; let s = e(i, r); return t && t(o), n && (s = s.finally((() => n(o)))), s })(r)), r } function l(e, t) { let { status: n, statusText: i = "", headers: o, url: s } = e, a = 0; function c(e) { if (0 === a) try { a = (new DOMParser).parseFromString(t, o?.get(d)?.split(";")?.[0]) } catch (t) { a = null, e && e(t) } return a } return { readyState: XMLHttpRequest.DONE, status: n, statusText: i, responseText: t, response: t, responseType: "", responseURL: s, get responseXML() { return c(r.vV) }, getResponseHeader: e => o?.has(e) ? o.get(e) : null, toJSON() { return Object.assign({ responseXML: c() }, this) }, timedOut: !1 } } function u() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 3e3, { request: t, done: n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const i = c(e, { request: t, done: n }); return function (e, t, n) { !function (e, t) { const { success: n, error: i } = "object" == typeof t && null != t ? t : { success: "function" == typeof t ? t : () => null, error: (e, t) => (0, r.vV)("Network error", e, t) }; e.then((e => e.text().then((t => [e, t])))).then((e => { let [t, r] = e; const o = l(t, r); t.ok || 304 === t.status ? n(r, o) : i(t.statusText, o) }), (e => i("", Object.assign(l({ status: 0 }, ""), { reason: e, timedOut: "AbortError" === e?.name })))) }(i(function (e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; const i = n.method || (t ? a : s); if (i === s && t) { const i = (0, r.Dl)(e, n); Object.assign(i.search, t), e = (0, r.c$)(i) } const c = new Headers(n.customHeaders); c.set(d, n.contentType || "text/plain"); const l = { method: i, headers: c }; return i !== s && t && (l.body = t), n.withCredentials && (l.credentials = "include"), isSecureContext && ["browsingTopics", "adAuctionHeaders"].forEach((e => { n[e] && (l[e] = !0) })), n.keepalive && (l.keepalive = !0), o.makeRequest(e, l) }(e, n, arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {})), t) } } u(), c() }, 881: (e, t, n) => { n.d(t, { n: () => ae }); var i = n(69), r = n(833), o = n(449), s = n(44), a = n(272); const d = 15, c = new Map; function l(e) { let { index: t = ae.index } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const n = u(e), i = t.getAuction(e); let r = { type: "xml", value: n, ttlseconds: Number(e.ttl) + d }; return a.$W.getConfig("cache.vasttrack") && (r.bidder = e.bidder, r.bidid = e.requestId, r.aid = e.auctionId), null != i && (r.timestamp = i.getAuctionStart()), "string" == typeof e.customCacheKey && "" !== e.customCacheKey && (r.key = e.customCacheKey), r } function u(e) { return e.vastXml ? e.vastXml : (t = e.vastUrl, n = e.vastImpUrl, `<VAST version="3.0">\n <Ad>\n <Wrapper>\n <AdSystem>prebid.org wrapper</AdSystem>\n <VASTAdTagURI><![CDATA[${t}]]></VASTAdTagURI>\n ${(n = n && (Array.isArray(n) ? n : [n])) ? n.map((e => `<Impression><![CDATA[${e}]]></Impression>`)).join("") : ""}\n <Creatives></Creatives>\n </Wrapper>\n </Ad>\n </VAST>`); var t, n } const f = e => { const t = u(e), n = URL.createObjectURL(new Blob([t], { type: "text/xml" })); g(e, n), c.set(e.videoCacheKey, n) }, g = (e, t, n) => { e.videoCacheKey = n || (0, i.lk)(), e.vastUrl || (e.vastUrl = t) }, p = { store: function (e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : s.g4; const i = { puts: e.map(l) }; n(a.$W.getConfig("cache.timeout"))(a.$W.getConfig("cache.url"), function (e) { return { success: function (t) { let n; try { n = JSON.parse(t).responses } catch (t) { return void e(t, []) } n ? e(null, n) : e(new Error("The cache server didn't respond with a responses property."), []) }, error: function (t, n) { e(new Error(`Error storing video ad in the cache: ${t}: ${JSON.stringify(n)}`), []) } } }(t), JSON.stringify(i), { contentType: "text/plain", withCredentials: !0 }) } }; function h(e) { const t = e.map((e => e.bidResponse)); p.store(t, (function (n, r) { var o; n ? (o = n, (0, i.vV)(`Failed to save to the video cache: ${o}. Video bids will be discarded:`, t)) : e.length !== r.length ? (0, i.vV)(`expected ${e.length} cache IDs, got ${r.length} instead`) : r.forEach(((t, n) => { const { auctionInstance: r, bidResponse: o, afterBidAdded: s } = e[n]; var d; "" === t.uuid ? (0, i.JE)("Supplied video cache key was already in use by Prebid Cache; caching attempt was rejected. Video bid must be discarded.") : (g(o, (d = t.uuid, `${a.$W.getConfig("cache.url")}?uuid=${d}`), t.uuid), J(r, o), s()) })) })) } let m, b, y; a.$W.getConfig("cache", (e => { let { cache: t } = e; m = "number" == typeof t.batchSize && t.batchSize > 0 ? t.batchSize : 1, b = "number" == typeof t.batchTimeout && t.batchTimeout > 0 ? t.batchTimeout : 0, t.useLocal && !y && (y = ae.onExpiry((e => { e.getBidsReceived().forEach((e => { const t = c.get(e.videoCacheKey); t && t.startsWith("blob") && URL.revokeObjectURL(t), c.delete(e.videoCacheKey) })) }))) })); const v = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : setTimeout, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : h, n = [[]], i = !1; const r = e => e(); return function (o, s, a) { const d = b > 0 ? e : r; n[n.length - 1].length >= m && n.push([]), n[n.length - 1].push({ auctionInstance: o, bidResponse: s, afterBidAdded: a }), i || (i = !0, d((() => { n.forEach(t), n = [[]], i = !1 }), b)) } }(); var E = n(789), A = n(230), w = n(214), T = n(895), I = n(371), C = n(693), B = n(23), O = n(46), S = n(969), R = n(555), k = n(894); var U = n(873), D = n(853), _ = n(863); const { syncUsers: $ } = A.zt, j = "started", x = "inProgress", q = "completed"; B.on(S.qY.BID_ADJUSTMENT, (function (e) { !function (e) { let t = function (e, t, n) { let { index: r = ae.index, bs: o = C.u } = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}; n = n || r.getBidRequest(t); const s = t?.adapterCode, a = t?.bidderCode || n?.bidder, d = o.get(t?.adapterCode, "adjustAlternateBids"), c = o.getOwn(a, "bidCpmAdjustment") || o.get(d ? s : a, "bidCpmAdjustment"); if (c && "function" == typeof c) try { return c(e, Object.assign({}, t), n) } catch (e) { (0, i.vV)("Error during bid adjustment", e) } return e }(e.cpm, e); t >= 0 && (e.cpm = t) }(e) })); const N = 4, P = {}, W = {}, V = [], M = (0, U.m)(); function G(e) { let { adUnits: t, adUnitCodes: n, callback: s, cbTimeout: d, labels: c, auctionId: l, ortb2Fragments: u, metrics: g } = e; g = (0, k.BO)(g); const p = t, h = c, m = n, b = l || (0, i.lk)(), y = d, v = new Set, A = (0, R.v6)(), w = (0, R.v6)(); let C, U, G, Y, X = [], Z = s, ee = [], te = (0, D.H)({ startTime: e => e.responseTimestamp, ttl: e => null == (0, _.S9)() ? null : 1e3 * Math.max((0, _.S9)(), e.ttl) }), ne = [], ie = [], re = []; function se() { return { auctionId: b, timestamp: C, auctionEnd: U, auctionStatus: Y, adUnits: p, adUnitCodes: m, labels: h, bidderRequests: ee, noBids: ne, bidsReceived: te.toArray(), bidsRejected: X, winningBids: ie, timeout: y, metrics: g, seatNonBids: re } } function de(e) { if (e ? B.Ic(S.qY.AUCTION_TIMEOUT, se()) : clearTimeout(G), void 0 === U) { let n = []; e && ((0, i.OG)(`Auction ${b} timedOut`), n = ee.filter((e => !v.has(e.bidderRequestId))).flatMap((e => e.bids)), n.length && B.Ic(S.qY.BID_TIMEOUT, n)), Y = q, U = Date.now(), g.checkpoint("auctionEnd"), g.timeBetween("requestBids", "auctionEnd", "requestBids.total"), g.timeBetween("callBids", "auctionEnd", "requestBids.callBids"), A.resolve(), B.Ic(S.qY.AUCTION_END, se()), z(p, (function () { try { if (null != Z) { const t = te.toArray().filter((e => m.includes(e.adUnitCode))).reduce(oe, {}); Z.apply(M, [t, e, b]), Z = null } } catch (e) { (0, i.vV)("Error executing bidsBackHandler", null, e) } finally { n.length && O.Ay.callTimedOutBidders(t, n, y); let e = a.$W.getConfig("userSync") || {}; e.enableOverride || $(e.syncDelay) } })) } } function ce() { a.$W.resetBidder(), (0, i.fH)(`Bids Received for Auction with id: ${b}`, te.toArray()), Y = q, de(!1) } function le(e) { v.add(e) } function ue(e) { e.forEach((e => { var t; t = e, ee = ee.concat(t) })); let t = {}, n = { bidRequests: e, run: () => { G = setTimeout((() => de(!0)), y), Y = x, B.Ic(S.qY.AUCTION_INIT, se()); let n = function (e, t) { let { index: n = ae.index } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, s = 0, d = !1, c = new Set, l = {}; function u() { s--, d && 0 === s && e() } function g(e, t, n) { return l[t.requestId] = !0, function (e, t) { let { index: n = ae.index } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; const r = n.getBidderRequest(e), o = n.getAdUnit(e), s = r && r.start || e.requestTimestamp; Object.assign(e, { responseTimestamp: e.responseTimestamp || (0, i.vE)(), requestTimestamp: e.requestTimestamp || s, cpm: parseFloat(e.cpm) || 0, bidder: e.bidder || e.bidderCode, adUnitCode: t }), null != o?.ttlBuffer && (e.ttlBuffer = o.ttlBuffer); e.timeToRespond = e.responseTimestamp - e.requestTimestamp }(t, e), s++, n(u) } function p(e, s) { g(e, s, (e => { let d = function (e) { let { index: t = ae.index } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; B.Ic(S.qY.BID_ADJUSTMENT, e); const n = t.getAdUnit(e); e.instl = 1 === n?.ortb2Imp?.instl; const i = t.getBidRequest(e)?.renderer || n.renderer, o = e.mediaType, s = t.getMediaTypes(e), d = s && s[o]; var c = d && d.renderer, l = null; !c || !c.render || !0 === c.backupOnly && e.renderer ? !i || !i.render || !0 === i.backupOnly && e.renderer || (l = i) : l = c; l && (e.renderer = E.A4.install({ url: l.url, config: l.options, renderNow: null == l.url }), e.renderer.setRender(l.render)); const u = K(e.mediaType, s, a.$W.getConfig("mediaTypePriceGranularity")), f = (0, r.j)(e.cpm, "object" == typeof u ? u : a.$W.getConfig("customPriceBucket"), a.$W.getConfig("currency.granularityMultiplier")); return e.pbLg = f.low, e.pbMg = f.med, e.pbHg = f.high, e.pbAg = f.auto, e.pbDg = f.dense, e.pbCg = f.custom, e }(s); B.Ic(S.qY.BID_ACCEPTED, d), d.mediaType === I.G_ ? function (e, t, n) { let { index: r = ae.index } = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}, o = !0; const s = r.getMediaTypes({ requestId: t.originalRequestId || t.requestId, adUnitId: t.adUnitId })?.video, d = s && s?.context, c = s && s?.useCacheKey, { useLocal: l, url: u, ignoreBidderCacheKey: g } = a.$W.getConfig("cache") || {}; l ? f(t) : u && (c || d !== T.H6) && (!t.videoCacheKey || g ? (o = !1, Q(e, t, n, s)) : t.vastUrl || ((0, i.vV)("videoCacheKey specified but not required vastUrl for video bid"), o = !1)); o && (J(e, t), n()) }(t, d, e) : ((0, o.l6)(d) && (0, o.gs)(d, n.getAdUnit(d)), J(t, d), e()) })) } function h(e, n, r) { return g(e, n, (e => { n.rejectionReason = r, (0, i.JE)(`Bid from ${n.bidder || "unknown bidder"} was rejected: ${r}`, n), B.Ic(S.qY.BID_REJECTED, n), t.addBidRejected(n), e() })) } function m() { let n = this, r = t.getBidRequests(); const o = a.$W.getConfig("auctionOptions"); if (c.add(n), o && !(0, i.Im)(o)) { const e = o.secondaryBidders; e && !r.every((t => e.includes(t.bidderCode))) && (r = r.filter((t => !e.includes(t.bidderCode)))) } d = r.every((e => c.has(e))), n.bids.forEach((e => { l[e.bidId] || (t.addNoBid(e), B.Ic(S.qY.NO_BID, e)) })), d && 0 === s && e() } return { addBidResponse: function () { function e(e, t) { H.call({ dispatch: p }, e, t, (() => { let n = !1; return i => { n || (h(e, t, i), n = !0) } })()) } return e.reject = h, e }(), adapterDone: function () { F(R.U9.resolve()).finally((() => m.call(this))) } } }(ce, this); O.Ay.callBids(p, e, n.addBidResponse, n.adapterDone, { request(e, n) { d(P, n), d(t, e), W[e] || (W[e] = { SRA: !0, origin: n }), t[e] > 1 && (W[e].SRA = !1) }, done(e) { P[e]--, V[0] && s(V[0]) && V.shift() } }, y, le, u), w.resolve() } }; function s(e) { let t = !0, n = a.$W.getConfig("maxRequestsPerOrigin") || N; return e.bidRequests.some((e => { let i = 1, r = void 0 !== e.src && e.src === S.RW.SRC ? "s2s" : e.bidderCode; return W[r] && (!1 === W[r].SRA && (i = Math.min(e.bids.length, n)), P[W[r].origin] + i > n && (t = !1)), !t })), t && e.run(), t } function d(e, t) { void 0 === e[t] ? e[t] = 1 : e[t]++ } s(n) || ((0, i.JE)("queueing auction due to limited endpoint capacity"), V.push(n)) } return (0, _.lc)((() => te.refresh())), B.on(S.qY.SEAT_NON_BID, (e => { var t; e.auctionId === b && (t = e.seatnonbid, re = re.concat(t)) })), { addBidReceived: function (e) { te.add(e) }, addBidRejected: function (e) { X = X.concat(e) }, addNoBid: function (e) { ne = ne.concat(e) }, callBids: function () { Y = j, C = Date.now(); let e = g.measureTime("requestBids.makeRequests", (() => O.Ay.makeBidRequests(p, C, b, y, h, u, g))); (0, i.fH)(`Bids Requested for Auction with id: ${b}`, e), g.checkpoint("callBids"), e.length < 1 ? ((0, i.JE)("No valid bid requests returned for auction"), ce()) : L.call({ dispatch: ue, context: this }, e) }, addWinningBid: function (e) { ie = ie.concat(e), O.Ay.callBidWonBidder(e.adapterCode || e.bidder, e, t), e.deferBilling || O.Ay.triggerBilling(e) }, setBidTargeting: function (e) { O.Ay.callSetTargetingBidder(e.adapterCode || e.bidder, e) }, getWinningBids: () => ie, getAuctionStart: () => C, getAuctionEnd: () => U, getTimeout: () => y, getAuctionId: () => b, getAuctionStatus: () => Y, getAdUnits: () => p, getAdUnitCodes: () => m, getBidRequests: () => ee, getBidsReceived: () => te.toArray(), getNoBids: () => ne, getNonBids: () => re, getFPD: () => u, getMetrics: () => g, end: A.promise, requestsDone: w.promise, getProperties: se } } const H = (0, w.u2)((0, w.A_)("async", (function (e, t, n) { !function (e) { const t = a.$W.getConfig("maxBid"); return !t || !e.cpm || t >= Number(e.cpm) }(t) ? n(S.Tf.PRICE_TOO_HIGH) : this.dispatch.call(null, e, t) }), "addBidResponse")), F = (0, w.A_)("sync", (e => e), "responsesReady"), L = (0, w.A_)("sync", (function (e) { this.dispatch.call(this.context, e) }), "addBidderRequests"), z = (0, w.A_)("async", (function (e, t) { t && t() }), "bidsBackCallback"); function J(e, t) { !function (e) { let t; const n = !0 === C.u.get(e.bidderCode, "allowZeroCpmBids") ? e.cpm >= 0 : e.cpm > 0; e.bidderCode && (n || e.dealId) && (t = function (e, t) { let { index: n = ae.index } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; if (!t) return {}; const i = n.getBidRequest(t); var r = {}; const s = ie(t.mediaType, e); re(r, s, t, i), e && C.u.getOwn(e, S.iD.ADSERVER_TARGETING) && (re(r, C.u.ownSettingsFor(e), t, i), t.sendStandardTargeting = C.u.get(e, "sendStandardTargeting")); t.native && (r = Object.assign({}, r, (0, o.Zj)(t))); return r }(e.bidderCode, e)); e.adserverTargeting = Object.assign(e.adserverTargeting || {}, t) }(t), (0, k.BO)(t.metrics).timeSince("addBidResponse", "addBidResponse.total"), e.addBidReceived(t), B.Ic(S.qY.BID_RESPONSE, t) } const Q = (0, w.A_)("async", (function (e, t, n, i) { v(e, t, n) }), "callPrebidCache"); function K(e, t, n) { if (e && n) { if (e === I.G_) { const e = t?.[I.G_]?.context ?? "instream"; if (n[`${I.G_}-${e}`]) return n[`${I.G_}-${e}`] } return n[e] } } const Y = e => t => { const n = e || function (e) { let { index: t = ae.index } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const n = K(e.mediaType, t.getMediaTypes(e), a.$W.getConfig("mediaTypePriceGranularity")); return "string" == typeof e.mediaType && n ? "string" == typeof n ? n : "custom" : a.$W.getConfig("priceGranularity") }(t); return n === S.UE.AUTO ? t.pbAg : n === S.UE.DENSE ? t.pbDg : n === S.UE.LOW ? t.pbLg : n === S.UE.MEDIUM ? t.pbMg : n === S.UE.HIGH ? t.pbHg : n === S.UE.CUSTOM ? t.pbCg : void 0 }, X = () => e => e.creativeId ? e.creativeId : "", Z = () => e => e.meta && e.meta.advertiserDomains && e.meta.advertiserDomains.length > 0 ? [e.meta.advertiserDomains].flat()[0] : "", ee = () => e => e.meta && (e.meta.networkId || e.meta.networkName) ? e?.meta?.networkName || e?.meta?.networkId : "", te = () => e => { const t = e?.meta?.primaryCatId; return Array.isArray(t) ? t[0] || "" : t || "" }; function ne(e, t) { return { key: e, val: "function" == typeof t ? function (e, n) { return t(e, n) } : function (e) { return e[t] } } } function ie(e, t) { const n = Object.assign({}, C.u.settingsFor(null)); if (n[S.iD.ADSERVER_TARGETING] || (n[S.iD.ADSERVER_TARGETING] = [ne(S.xS.BIDDER, "bidderCode"), ne(S.xS.AD_ID, "adId"), ne(S.xS.PRICE_BUCKET, Y()), ne(S.xS.SIZE, "size"), ne(S.xS.DEAL, "dealId"), ne(S.xS.SOURCE, "source"), ne(S.xS.FORMAT, "mediaType"), ne(S.xS.ADOMAIN, Z()), ne(S.xS.ACAT, te()), ne(S.xS.DSP, ee()), ne(S.xS.CRID, X())]), "video" === e) { const e = n[S.iD.ADSERVER_TARGETING].slice(); if (n[S.iD.ADSERVER_TARGETING] = e, [S.xS.UUID, S.xS.CACHE_ID].forEach((t => { void 0 === e.find((e => e.key === t)) && e.push(ne(t, "videoCacheKey")) })), a.$W.getConfig("cache.url") && (!t || !1 !== C.u.get(t, "sendStandardTargeting"))) { const t = (0, i.Dl)(a.$W.getConfig("cache.url")); void 0 === e.find((e => e.key === S.xS.CACHE_HOST)) && e.push(ne(S.xS.CACHE_HOST, (function (e) { return e?.adserverTargeting?.[S.xS.CACHE_HOST] || t.hostname }))) } } return n } function re(e, t, n, r) { var o = t[S.iD.ADSERVER_TARGETING]; return n.size = n.getSize(), (o || []).forEach((function (o) { var s = o.key, a = o.val; if (e[s] && (0, i.JE)("The key: " + s + " is being overwritten"), (0, i.fp)(a)) try { a = a(n, r) } catch (e) { (0, i.vV)("bidmanager", "ERROR", e) } (void 0 === t.suppressEmptyKeys || !0 !== t.suppressEmptyKeys) && s !== S.xS.DEAL && s !== S.xS.ACAT && s !== S.xS.DSP && s !== S.xS.CRID || !(0, i.xQ)(a) && null != a ? e[s] = a : (0, i.fH)("suppressing empty key '" + s + "' from adserver targeting") })), e } function oe(e, t) { return e[t.adUnitCode] || (e[t.adUnitCode] = { bids: [] }), e[t.adUnitCode].bids.push(t), e } function se(e) { Object.assign(this, { getAuction(t) { let { auctionId: n } = t; if (null != n) return e().find((e => e.getAuctionId() === n)) }, getAdUnit(t) { let { adUnitId: n } = t; if (null != n) return e().flatMap((e => e.getAdUnits())).find((e => e.adUnitId === n)) }, getMediaTypes(e) { let { adUnitId: t, requestId: n } = e; if (null != n) { const e = this.getBidRequest({ requestId: n }); if (null != e && (null == t || e.adUnitId === t)) return e.mediaTypes } else if (null != t) { const e = this.getAdUnit({ adUnitId: t }); if (null != e) return e.mediaTypes } }, getBidderRequest(t) { let { requestId: n, bidderRequestId: i } = t; if (null != n || null != i) { let t = e().flatMap((e => e.getBidRequests())); return null != i && (t = t.filter((e => e.bidderRequestId === i))), null == n ? t[0] : t.find((e => e.bids && null != e.bids.find((e => e.bidId === n)))) } }, getBidRequest(t) { let { requestId: n } = t; if (null != n) return e().flatMap((e => e.getBidRequests())).flatMap((e => e.bids)).find((e => e && e.bidId === n)) }, getOrtb2(e) { return this.getBidderRequest(e)?.ortb2 || this.getAuction(e)?.getFPD()?.global?.ortb2 } }) } const ae = function () { const e = (0, D.H)({ startTime: e => e.end.then((() => e.getAuctionEnd())), ttl: e => null == (0, _.S9)() ? null : e.end.then((() => 1e3 * Math.max((0, _.S9)(), ...e.getBidsReceived().map((e => e.ttl))))) }); (0, _.lc)((() => e.refresh())); const t = { onExpiry: e.onExpiry }; function n(t) { for (const n of e) if (n.getAuctionId() === t) return n } function r() { return e.toArray().flatMap((e => e.getBidsReceived())) } return t.addWinningBid = function (e) { const t = (0, k.BO)(e.metrics); t.checkpoint("bidWon"), t.timeBetween("auctionEnd", "bidWon", "adserver.pending"), t.timeBetween("requestBids", "bidWon", "adserver.e2e"); const r = n(e.auctionId); r ? r.addWinningBid(e) : (0, i.JE)("Auction not found when adding winning bid") }, Object.entries({ getAllWinningBids: { name: "getWinningBids" }, getBidsRequested: { name: "getBidRequests" }, getNoBids: {}, getAdUnits: {}, getBidsReceived: { pre: e => e.getAuctionStatus() === q }, getAdUnitCodes: { post: i.hj } }).forEach((n => { let [i, { name: r = i, pre: o, post: s }] = n; const a = null == o ? e => e[r]() : e => o(e) ? e[r]() : [], d = null == s ? e => e : e => e.filter(s); t[i] = () => d(e.toArray().flatMap(a)) })), t.getAllBidsForAdUnitCode = function (e) { return r().filter((t => t && t.adUnitCode === e)) }, t.createAuction = function (t) { const n = G(t); return function (t) { e.add(t) }(n), n }, t.findBidByAdId = function (e) { return r().find((t => t.adId === e)) }, t.getStandardBidderAdServerTargeting = function () { return ie()[S.iD.ADSERVER_TARGETING] }, t.setStatusForBids = function (e, i) { let r = t.findBidByAdId(e); if (r && (r.status = i), r && i === S.tl.BID_TARGETING_SET) { const e = n(r.auctionId); e && e.setBidTargeting(r) } }, t.getLastAuctionId = function () { const t = e.toArray(); return t.length && t[t.length - 1].getAuctionId() }, t.clearAllAuctions = function () { e.clear() }, t.index = new se((() => e.toArray())), t }() }, 863: (e, t, n) => { n.d(t, { S9: () => l, cT: () => c, lc: () => u }); var i = n(272), r = n(69); const o = "minBidCacheTTL"; let s = 1, a = null; const d = []; function c(e) { return e.ttl - (e.hasOwnProperty("ttlBuffer") ? e.ttlBuffer : s) } function l() { return a } function u(e) { d.push(e) } i.$W.getConfig("ttlBuffer", (e => { "number" == typeof e.ttlBuffer ? s = e.ttlBuffer : (0, r.vV)("Invalid value for ttlBuffer", e.ttlBuffer) })), i.$W.getConfig(o, (e => { const t = a; a = e?.[o], a = "number" == typeof a ? a : null, t !== a && d.forEach((e => e(a))) })) }, 693: (e, t, n) => { n.d(t, { u: () => a }); var i = n(433), r = n(69), o = n(873), s = n(969); const a = new class { constructor(e, t) { this.getSettings = e, this.defaultScope = t } get(e, t) { let n = this.getOwn(e, t); return void 0 === n && (n = this.getOwn(null, t)), n } getOwn(e, t) { return e = this.#e(e), (0, i.A)(this.getSettings(), `${e}.${t}`) } getScopes() { return Object.keys(this.getSettings()).filter((e => e !== this.defaultScope)) } settingsFor(e) { return (0, r.D9)({}, this.ownSettingsFor(null), this.ownSettingsFor(e)) } ownSettingsFor(e) { return e = this.#e(e), this.getSettings()[e] || {} } #e(e) { return null == e ? this.defaultScope : e } }((() => (0, o.m)().bidderSettings || {}), s.iD.BD_SETTING_STANDARD) }, 597: (e, t, n) => { n.d(t, { O: () => o }); var i = n(69); function r(e) { let { src: t = "client", bidder: n = "", bidId: r, transactionId: o, adUnitId: s, auctionId: a } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; var d = t, c = e || 0; Object.assign(this, { bidderCode: n, width: 0, height: 0, statusMessage: function () { switch (c) { case 0: return "Pending"; case 1: return "Bid available"; case 2: return "Bid returned empty or error response"; case 3: return "Bid timed out" } }(), adId: (0, i.s0)(), requestId: r, transactionId: o, adUnitId: s, auctionId: a, mediaType: "banner", source: d }), this.getStatusCode = function () { return c }, this.getSize = function () { return this.width + "x" + this.height }, this.getIdentifiers = function () { return { src: this.source, bidder: this.bidderCode, bidId: this.requestId, transactionId: this.transactionId, adUnitId: this.adUnitId, auctionId: this.auctionId } } } function o(e, t) { return new r(e, t) } }, 272: (e, t, n) => { n.d(t, { $W: () => p, Ov: () => c }); var i = n(833), r = n(69), o = n(433), s = n(969); const a = "TRUE" === (0, r.Ez)(s.M).toUpperCase(), d = {}, c = "random", l = {}; l[c] = !0, l.fixed = !0; const u = c, f = { LOW: "low", MEDIUM: "medium", HIGH: "high", AUTO: "auto", DENSE: "dense", CUSTOM: "custom" }; function g(e) { const t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1] ? { priceGranularity: f.MEDIUM, customPriceBucket: {}, mediaTypePriceGranularity: {}, bidderSequence: u, auctionOptions: {} } : {}; function n(e) { return t[e] } function o(n, i) { t.hasOwnProperty(n) || Object.defineProperty(e, n, { enumerable: !0 }), t[n] = i } const s = { publisherDomain: { set(e) { null != e && (0, r.JE)("publisherDomain is deprecated and has no effect since v7 - use pageUrl instead"), o("publisherDomain", e) } }, priceGranularity: { set(e) { d(e) && ("string" == typeof e ? o("priceGranularity", a(e) ? e : f.MEDIUM) : (0, r.Qd)(e) && (o("customPriceBucket", e), o("priceGranularity", f.CUSTOM), (0, r.OG)("Using custom price granularity"))) } }, customPriceBucket: {}, mediaTypePriceGranularity: { set(e) { null != e && o("mediaTypePriceGranularity", Object.keys(e).reduce(((t, i) => (d(e[i]) ? "string" == typeof e ? t[i] = a(e[i]) ? e[i] : n("priceGranularity") : (0, r.Qd)(e) && (t[i] = e[i], (0, r.OG)(`Using custom price granularity for ${i}`)) : (0, r.JE)(`Invalid price granularity for media type: ${i}`), t)), {})) } }, bidderSequence: { set(e) { l[e] ? o("bidderSequence", e) : (0, r.JE)(`Invalid order: ${e}. Bidder Sequence was not set.`) } }, auctionOptions: { set(e) { (function (e) { if (!(0, r.Qd)(e)) return (0, r.JE)("Auction Options must be an object"), !1; for (let t of Object.keys(e)) { if ("secondaryBidders" !== t && "suppressStaleRender" !== t && "suppressExpiredRender" !== t) return (0, r.JE)(`Auction Options given an incorrect param: ${t}`), !1; if ("secondaryBidders" === t) { if (!(0, r.cy)(e[t])) return (0, r.JE)(`Auction Options ${t} must be of type Array`), !1; if (!e[t].every(r.O8)) return (0, r.JE)(`Auction Options ${t} must be only string`), !1 } else if (("suppressStaleRender" === t || "suppressExpiredRender" === t) && !(0, r.Lm)(e[t])) return (0, r.JE)(`Auction Options ${t} must be of type boolean`), !1 } return !0 })(e) && o("auctionOptions", e) } } }; return Object.defineProperties(e, Object.fromEntries(Object.entries(s).map((e => { let [i, r] = e; return [i, Object.assign({ get: n.bind(null, i), set: o.bind(null, i), enumerable: t.hasOwnProperty(i), configurable: !t.hasOwnProperty(i) }, r)] })))), e; function a(e) { return Object.keys(f).find((t => e === f[t])) } function d(e) { if (!e) return (0, r.vV)("Prebid Error: no value passed to `setPriceGranularity()`"), !1; if ("string" == typeof e) a(e) || (0, r.JE)("Prebid Warning: setPriceGranularity was called with invalid setting, using `medium` as default."); else if ((0, r.Qd)(e) && !(0, i.q)(e)) return (0, r.vV)("Invalid custom price value passed to `setPriceGranularity()`"), !1; return !0 } } const p = function () { let e, t, n, i = [], s = null; function c() { e = {}; let i = g({ debug: a, bidderTimeout: 3e3, enableSendAllBids: true, useBidCache: false, deviceAccess: true, disableAjaxTimeout: false, maxNestedIframes: 10, maxBid: 5e3, userSync: { topics: d } }); t && y(Object.keys(t).reduce(((e, n) => (t[n] !== i[n] && (e[n] = i[n] || {}), e)), {})), t = i, n = {} } function l() { if (s && n && (0, r.Qd)(n[s])) { const e = n[s], i = new Set([...Object.keys(t), ...Object.keys(e)]), o = {}; for (const n of i) { const i = t[n], s = e[n]; o[n] = void 0 === s ? i : void 0 === i ? s : (0, r.Qd)(s) ? (0, r.D9)({}, i, s) : s } return o } return { ...t } } const [u, f] = [l, function () { const e = l(); return Object.defineProperty(e, "ortb2", { get: function () { throw new Error("invalid access to 'orbt2' config - use request parameters instead") } }), e }].map((e => function () { if (arguments.length <= 1 && "function" != typeof (arguments.length <= 0 ? void 0 : arguments[0])) { const t = arguments.length <= 0 ? void 0 : arguments[0]; return t ? (0, o.A)(e(), t) : l() } return b(...arguments) })), [p, h] = [f, u].map((e => function () { let t = e(...arguments); return t && "object" == typeof t && (t = (0, r.Go)(t)), t })); function m(n) { if (!(0, r.Qd)(n)) return void (0, r.vV)("setConfig options must be an object"); let i = Object.keys(n), o = {}; i.forEach((i => { let s = n[i]; (0, r.Qd)(e[i]) && (0, r.Qd)(s) && (s = Object.assign({}, e[i], s)); try { o[i] = t[i] = s } catch (e) { (0, r.JE)(`Cannot set config for property ${i} : `, e) } })), y(o) } function b(e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, o = t; if ("string" != typeof e && (o = e, e = "*", n = t || {}), "function" != typeof o) return void (0, r.vV)("listener must be a function"); const s = { topic: e, callback: o }; return i.push(s), n.init && o("*" === e ? f() : { [e]: f(e) }), function () { i.splice(i.indexOf(s), 1) } } function y(e) { const t = Object.keys(e); i.filter((e => t.includes(e.topic))).forEach((t => { t.callback({ [t.topic]: e[t.topic] }) })), i.filter((e => "*" === e.topic)).forEach((t => t.callback(e))) } function v(e) { let t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; try { !function (e) { if (!(0, r.Qd)(e)) throw "setBidderConfig bidder options must be an object"; if (!Array.isArray(e.bidders) || !e.bidders.length) throw "setBidderConfig bidder options must contain a bidders list with at least 1 bidder"; if (!(0, r.Qd)(e.config)) throw "setBidderConfig bidder options must contain a config object" }(e), e.bidders.forEach((i => { n[i] || (n[i] = g({}, !1)), Object.keys(e.config).forEach((o => { let s = e.config[o]; const a = n[i][o]; if ((0, r.Qd)(s) && (null == a || (0, r.Qd)(a))) { const e = t ? r.D9 : Object.assign; n[i][o] = e({}, a || {}, s) } else n[i][o] = s })) })) } catch (e) { (0, r.vV)(e) } } function E(e, t) { s = e; try { return t() } finally { A() } } function A() { s = null } return c(), { getCurrentBidder: function () { return s }, resetBidder: A, getConfig: f, getAnyConfig: u, readConfig: p, readAnyConfig: h, setConfig: m, mergeConfig: function (e) { if (!(0, r.Qd)(e)) return void (0, r.vV)("mergeConfig input must be an object"); const t = (0, r.D9)(l(), e); return m({ ...t }), t }, setDefaults: function (n) { (0, r.Qd)(e) ? (Object.assign(e, n), Object.assign(t, n)) : (0, r.vV)("defaults must be an object") }, resetConfig: c, runWithBidder: E, callbackWithBidder: function (e) { return function (t) { return function () { if ("function" == typeof t) { for (var n = arguments.length, i = new Array(n), o = 0; o < n; o++)i[o] = arguments[o]; return E(e, t.bind(this, ...i)) } (0, r.JE)("config.callbackWithBidder callback is not a function") } } }, setBidderConfig: v, getBidderConfig: function () { return n }, mergeBidderConfig: function (e) { return v(e, !0) } } }() }, 916: (e, t, n) => { n.d(t, { SL: () => g, ad: () => c, mW: () => a, o2: () => u, t6: () => d }); var i = n(69), r = n(555), o = n(272); Object.freeze({}); class s { #t; #n; #i; #r; #o = !0; #s; generatedTime; hashFields; constructor() { this.reset() } #a(e) { this.#r = !0, this.#n = e, this.#i.resolve(e) } reset() { this.#i = (0, r.v6)(), this.#t = !1, this.#n = null, this.#r = !1, this.generatedTime = null } enable() { this.#t = !0 } get enabled() { return this.#t } get ready() { return this.#r } get promise() { return this.#r ? r.U9.resolve(this.#n) : (this.#t || this.#a(null), this.#i.promise) } setConsentData(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, i.vE)(); this.generatedTime = t, this.#o = !0, this.#a(e) } getConsentData() { return this.#n } get hash() { return this.#o && (this.#s = (0, i.PB)(JSON.stringify(this.#n && this.hashFields ? this.hashFields.map((e => this.#n[e])) : this.#n)), this.#o = !1), this.#s } } const a = new class extends s { hashFields = ["gdprApplies", "consentString"]; getConsentMeta() { const e = this.getConsentData(); if (e && e.vendorData && this.generatedTime) return { gdprApplies: e.gdprApplies, consentStringSize: (0, i.O8)(e.vendorData.tcString) ? e.vendorData.tcString.length : 0, generatedAt: this.generatedTime, apiVersion: e.apiVersion } } }, d = new class extends s { getConsentMeta() { if (this.getConsentData() && this.generatedTime) return { generatedAt: this.generatedTime } } }, c = new class extends s { hashFields = ["applicableSections", "gppString"]; getConsentMeta() { if (this.getConsentData() && this.generatedTime) return { generatedAt: this.generatedTime } } }, l = (() => { function e() { return !!o.$W.getConfig("coppa") } return { getCoppa: e, getConsentData: e, getConsentMeta: e, reset() { }, get promise() { return r.U9.resolve(e()) }, get hash() { return e() ? "1" : "0" } } })(), u = function () { const e = {}, t = {}, n = {}; return { register(i, r, o) { o && ((e[r] = e[r] || {})[i] = o, t.hasOwnProperty(r) ? t[r] !== o && (t[r] = n) : t[r] = o) }, get(i) { const r = { modules: e[i] || {} }; return t.hasOwnProperty(i) && t[i] !== n && (r.gvlid = t[i]), r } } }(), f = { gdpr: a, usp: d, gpp: c, coppa: l }; const g = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : f; return e = Object.entries(e), Object.assign({ get promise() { return r.U9.all(e.map((e => { let [t, n] = e; return n.promise.then((e => [t, e])) }))).then((e => Object.fromEntries(e))) }, get hash() { return (0, i.PB)(e.map((e => { let [t, n] = e; return n.hash })).join(":")) } }, Object.fromEntries(["getConsentData", "getConsentMeta", "reset"].map((t => { return [t, (n = t, function () { return Object.fromEntries(e.map((e => { let [t, i] = e; return [t, i[n]()] }))) })]; var n })))) }() }, 969: (e, t, n) => { n.d(t, { IY: () => A, M: () => r, RW: () => g, Tf: () => h, UE: () => c, XQ: () => o, Zh: () => u, _B: () => v, as: () => a, cA: () => d, h0: () => m, iD: () => i, jO: () => b, nl: () => E, oA: () => y, qY: () => s, tl: () => p, x5: () => f, xS: () => l }); const i = { PL_CODE: "code", PL_SIZE: "sizes", PL_BIDS: "bids", BD_BIDDER: "bidder", BD_ID: "paramsd", BD_PL_ID: "placementId", ADSERVER_TARGETING: "adserverTargeting", BD_SETTING_STANDARD: "standard" }, r = "pbjs_debug", o = { GOOD: 1 }, s = { AUCTION_INIT: "auctionInit", AUCTION_TIMEOUT: "auctionTimeout", AUCTION_END: "auctionEnd", BID_ADJUSTMENT: "bidAdjustment", BID_TIMEOUT: "bidTimeout", BID_REQUESTED: "bidRequested", BID_RESPONSE: "bidResponse", BID_REJECTED: "bidRejected", NO_BID: "noBid", SEAT_NON_BID: "seatNonBid", BID_WON: "bidWon", BIDDER_DONE: "bidderDone", BIDDER_ERROR: "bidderError", SET_TARGETING: "setTargeting", BEFORE_REQUEST_BIDS: "beforeRequestBids", BEFORE_BIDDER_HTTP: "beforeBidderHttp", REQUEST_BIDS: "requestBids", ADD_AD_UNITS: "addAdUnits", AD_RENDER_FAILED: "adRenderFailed", AD_RENDER_SUCCEEDED: "adRenderSucceeded", TCF2_ENFORCEMENT: "tcf2Enforcement", AUCTION_DEBUG: "auctionDebug", BID_VIEWABLE: "bidViewable", STALE_RENDER: "staleRender", EXPIRED_RENDER: "expiredRender", BILLABLE_EVENT: "billableEvent", BID_ACCEPTED: "bidAccepted", RUN_PAAPI_AUCTION: "paapiRunAuction", PBS_ANALYTICS: "pbsAnalytics", PAAPI_BID: "paapiBid", PAAPI_NO_BID: "paapiNoBid", PAAPI_ERROR: "paapiError", BEFORE_PBS_HTTP: "beforePBSHttp", BROWSI_INIT: "browsiInit", BROWSI_DATA: "browsiData" }, a = { PREVENT_WRITING_ON_MAIN_DOCUMENT: "preventWritingOnMainDocument", NO_AD: "noAd", EXCEPTION: "exception", CANNOT_FIND_AD: "cannotFindAd", MISSING_DOC_OR_ADID: "missingDocOrAdid" }, d = { bidWon: "adUnitCode" }, c = { LOW: "low", MEDIUM: "medium", HIGH: "high", AUTO: "auto", DENSE: "dense", CUSTOM: "custom" }, l = { BIDDER: "hb_bidder", AD_ID: "hb_adid", PRICE_BUCKET: "hb_pb", SIZE: "hb_size", DEAL: "hb_deal", SOURCE: "hb_source", FORMAT: "hb_format", UUID: "hb_uuid", CACHE_ID: "hb_cache_id", CACHE_HOST: "hb_cache_host", ADOMAIN: "hb_adomain", ACAT: "hb_acat", CRID: "hb_crid", DSP: "hb_dsp" }, u = { BIDDER: "hb_bidder", AD_ID: "hb_adid", PRICE_BUCKET: "hb_pb", SIZE: "hb_size", DEAL: "hb_deal", FORMAT: "hb_format", UUID: "hb_uuid", CACHE_HOST: "hb_cache_host" }, f = { title: "hb_native_title", body: "hb_native_body", body2: "hb_native_body2", privacyLink: "hb_native_privacy", privacyIcon: "hb_native_privicon", sponsoredBy: "hb_native_brand", image: "hb_native_image", icon: "hb_native_icon", clickUrl: "hb_native_linkurl", displayUrl: "hb_native_displayurl", cta: "hb_native_cta", rating: "hb_native_rating", address: "hb_native_address", downloads: "hb_native_downloads", likes: "hb_native_likes", phone: "hb_native_phone", price: "hb_native_price", salePrice: "hb_native_saleprice", rendererUrl: "hb_renderer_url", adTemplate: "hb_adTemplate" }, g = { SRC: "s2s", DEFAULT_ENDPOINT: "https://prebid.adnxs.com/pbs/v1/openrtb2/auction", SYNCED_BIDDERS_KEY: "pbjsSyncs" }, p = { BID_TARGETING_SET: "targetingSet", RENDERED: "rendered", BID_REJECTED: "bidRejected" }, h = { INVALID: "Bid has missing or invalid properties", INVALID_REQUEST_ID: "Invalid request ID", BIDDER_DISALLOWED: "Bidder code is not allowed by allowedAlternateBidderCodes / allowUnknownBidderCodes", FLOOR_NOT_MET: "Bid does not meet price floor", CANNOT_CONVERT_CURRENCY: "Unable to convert currency", DSA_REQUIRED: "Bid does not provide required DSA transparency info", DSA_MISMATCH: "Bid indicates inappropriate DSA rendering method", PRICE_TOO_HIGH: "Bid price exceeds maximum value" }, m = { body: "desc", body2: "desc2", sponsoredBy: "sponsored", cta: "ctatext", rating: "rating", address: "address", downloads: "downloads", likes: "likes", phone: "phone", price: "price", salePrice: "saleprice", displayUrl: "displayurl" }, b = { sponsored: 1, desc: 2, rating: 3, likes: 4, downloads: 5, price: 6, saleprice: 7, phone: 8, address: 9, desc2: 10, displayurl: 11, ctatext: 12 }, y = { ICON: 1, MAIN: 3 }, v = ["privacyIcon", "clickUrl", "sendTargetingKeys", "adTemplate", "rendererUrl", "type"], E = { REQUEST: "Prebid Request", RESPONSE: "Prebid Response", NATIVE: "Prebid Native", EVENT: "Prebid Event" }, A = "__pb_locator__" }, 833: (e, t, n) => { n.d(t, { j: () => u, q: () => g }); var i = n(69), r = n(272); const o = 2, s = { buckets: [{ max: 5, increment: .5 }] }, a = { buckets: [{ max: 20, increment: .1 }] }, d = { buckets: [{ max: 20, increment: .01 }] }, c = { buckets: [{ max: 3, increment: .01 }, { max: 8, increment: .05 }, { max: 20, increment: .5 }] }, l = { buckets: [{ max: 5, increment: .05 }, { max: 10, increment: .1 }, { max: 20, increment: .5 }] }; function u(e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, i = parseFloat(e); return isNaN(i) && (i = ""), { low: "" === i ? "" : f(e, s, n), med: "" === i ? "" : f(e, a, n), high: "" === i ? "" : f(e, d, n), auto: "" === i ? "" : f(e, l, n), dense: "" === i ? "" : f(e, c, n), custom: "" === i ? "" : f(e, t, n) } } function f(e, t, n) { let s = ""; if (!g(t)) return s; const a = t.buckets.reduce(((e, t) => e.max > t.max ? e : t), { max: 0 }); let d = 0, c = t.buckets.find((t => { if (e > a.max * n) { let e = t.precision; void 0 === e && (e = o), s = (t.max * n).toFixed(e) } else { if (e <= t.max * n && e >= d * n) return t.min = d, t; d = t.max } })); return c && (s = function (e, t, n) { const s = void 0 !== t.precision ? t.precision : o, a = t.increment * n, d = t.min * n; let c = Math.floor, l = r.$W.getConfig("cpmRoundingFunction"); "function" == typeof l && (c = l); let u, f, g = Math.pow(10, s + 2), p = (e * g - d * g) / (a * g); try { u = c(p) * a + d } catch (e) { f = !0 } (f || "number" != typeof u) && ((0, i.JE)("Invalid rounding function passed in config"), u = Math.floor(p) * a + d); return u = Number(u.toFixed(10)), u.toFixed(s) }(e, c, n)), s } function g(e) { if ((0, i.Im)(e) || !e.buckets || !Array.isArray(e.buckets)) return !1; let t = !0; return e.buckets.forEach((e => { e.max && e.increment || (t = !1) })), t } }, 31: (e, t, n) => { n.d(t, { HH: () => c, kj: () => d, xh: () => a }); var i = n(555), r = n(69), o = n(595), s = n(214); const a = 3, d = (0, s.A_)("sync", (function (e) { return o.G })), c = function () { const e = {}; return function (t) { const n = d(t); return e.hasOwnProperty(n) || (e[n] = new i.U9((e => { const t = (0, r.CA)(); t.srcdoc = `<script>${n}<\/script>`, t.onload = () => e(t.contentWindow.render), document.body.appendChild(t) }))), e[n] } }() }, 5: (e, t, n) => { n.d(t, { $T: () => a, Ni: () => i, OA: () => o, RO: () => s, fR: () => r }); const i = 1, r = 2, o = 1, s = 500; function a(e) { return (e ?? []).reduce(((e, t) => { let { event: n, method: i, url: r } = t; const o = e[n] = e[n] ?? {}; return (o[i] = o[i] ?? []).push(r), e }), {}) } }, 23: (e, t, n) => { n.d(t, { AU: () => m, Ic: () => v, kQ: () => y, on: () => h }); var i = n(69), r = n(969), o = n(853), s = n(272); const a = "eventHistoryTTL"; let d = null; const c = (0, o.H)({ monotonic: !0, ttl: () => d }); s.$W.getConfig(a, (e => { const t = d; e = e?.[a], d = "number" == typeof e ? 1e3 * e : null, t !== d && c.refresh() })); let l = Array.prototype.slice, u = Array.prototype.push, f = Object.values(r.qY); const g = r.cA, p = function () { let e = {}, t = {}; function n(e) { return f.includes(e) } return t.has = n, t.on = function (t, r, o) { if (n(t)) { let n = e[t] || { que: [] }; o ? (n[o] = n[o] || { que: [] }, n[o].que.push(r)) : n.que.push(r), e[t] = n } else i.vV("Wrong event name : " + t + " Valid event names :" + f) }, t.emit = function (t) { !function (t, n) { i.OG("Emitting event for: " + t); let r = n[0] || {}, o = r[g[t]], s = e[t] || { que: [] }; var a = Object.keys(s); let d = []; c.add({ eventType: t, args: r, id: o, elapsedTime: i.V() }), o && a.includes(o) && u.apply(d, s[o].que), u.apply(d, s.que), (d || []).forEach((function (e) { if (e) try { e.apply(null, n) } catch (e) { i.vV("Error executing handler:", "events.js", e, t) } })) }(t, l.call(arguments, 1)) }, t.off = function (t, n, r) { let o = e[t]; i.Im(o) || i.Im(o.que) && i.Im(o[r]) || r && (i.Im(o[r]) || i.Im(o[r].que)) || (r ? (o[r].que || []).forEach((function (e) { let t = o[r].que; e === n && t.splice(t.indexOf(e), 1) })) : (o.que || []).forEach((function (e) { let t = o.que; e === n && t.splice(t.indexOf(e), 1) })), e[t] = o) }, t.get = function () { return e }, t.addEvents = function (e) { f = f.concat(e) }, t.getEvents = function () { return c.toArray().map((e => Object.assign({}, e))) }, t }(); i.cD(p.emit.bind(p)); const { on: h, off: m, get: b, getEvents: y, emit: v, addEvents: E, has: A } = p }, 858: (e, t, n) => { n.d(t, { Dy: () => r, O$: () => s, i8: () => o }); var i = n(69); const r = ["dooh", "app", "site"]; function o(e) { return function (t) { return r.reduce(((n, r) => (s(t, r) && (null != n ? ((0, i.JE)(`${e} specifies both '${n}' and '${r}'; dropping the latter.`), delete t[r]) : n = r), n)), null), t } } function s(e, t) { return null != e[t] && Object.keys(e[t]).length > 0 } }, 214: (e, t, n) => { n.d(t, { A_: () => s, Y6: () => c, Yn: () => d, u2: () => l }); var i = n(128), r = n.n(i), o = n(555); let s = r()({ ready: r().SYNC | r().ASYNC | r().QUEUE }); const a = (0, o.v6)(); s.ready = (() => { const e = s.ready; return function () { try { return e.apply(s, arguments) } finally { a.resolve() } } })(); a.promise; const d = s.get; function c(e, t) { return Object.defineProperties(t, Object.fromEntries(["before", "after", "getHooks", "removeAll"].map((t => [t, { get: () => e[t] }])))), t } function l(e) { return c(e, (function () { for (var t = arguments.length, n = new Array(t), i = 0; i < t; i++)n[i] = arguments[i]; return n.push((function () { })), e.apply(this, n) })) } }, 371: (e, t, n) => { n.d(t, { D4: () => o, G_: () => r, LM: () => s, s6: () => i }); const i = "native", r = "video", o = "banner", s = "adpod" }, 449: (e, t, n) => { n.d(t, { Bm: () => y, IX: () => C, Nh: () => l, Zj: () => A, gs: () => E, l6: () => p, mT: () => c, nk: () => m, vO: () => v, yl: () => B }); var i = n(69), r = n(881), o = n(969), s = n(75), a = n(31), d = n(5); const c = [], l = Object.keys(o.x5).map((e => o.x5[e])), u = { image: { ortb: { ver: "1.2", assets: [{ required: 1, id: 1, img: { type: 3, wmin: 100, hmin: 100 } }, { required: 1, id: 2, title: { len: 140 } }, { required: 1, id: 3, data: { type: 1 } }, { required: 0, id: 4, data: { type: 2 } }, { required: 0, id: 5, img: { type: 1, wmin: 20, hmin: 20 } }] }, image: { required: !0 }, title: { required: !0 }, sponsoredBy: { required: !0 }, clickUrl: { required: !0 }, body: { required: !1 }, icon: { required: !1 } } }, f = k(o.h0), g = k(o.jO); function p(e) { return e.native && "object" == typeof e.native } function h(e) { if (e && e.type && function (e) { if (!e || !Object.keys(u).includes(e)) return (0, i.vV)(`${e} nativeParam is not supported`), !1; return !0 }(e.type) && (e = u[e.type]), !e || !e.ortb || b(e.ortb)) return e } function m(e) { e.forEach((e => { const t = e.nativeParams || e?.mediaTypes?.native; t && (e.nativeParams = h(t)), e.nativeParams && (e.nativeOrtbRequest = e.nativeParams.ortb || function (e) { if (!e && !(0, i.Qd)(e)) return void (0, i.vV)("Native assets object is empty or not an object: ", e); const t = { ver: "1.2", assets: [] }; for (let n in e) { if (o._B.includes(n)) continue; if (!o.x5.hasOwnProperty(n)) { (0, i.vV)(`Unrecognized native asset code: ${n}. Asset will be ignored.`); continue } if ("privacyLink" === n) { t.privacy = 1; continue } const r = e[n]; let s = 0; r.required && (0, i.Lm)(r.required) && (s = Number(r.required)); const a = { id: t.assets.length, required: s }; if (n in o.h0) a.data = { type: o.jO[o.h0[n]] }, r.len && (a.data.len = r.len); else if ("icon" === n || "image" === n) { if (a.img = { type: "icon" === n ? o.oA.ICON : o.oA.MAIN }, r.aspect_ratios) if ((0, i.cy)(r.aspect_ratios)) if (r.aspect_ratios.length) { const { min_width: e, min_height: t } = r.aspect_ratios[0]; (0, i.Fq)(e) && (0, i.Fq)(t) ? (a.img.wmin = e, a.img.hmin = t) : (0, i.vV)("image.aspect_ratios min_width or min_height are invalid: ", e, t); const n = r.aspect_ratios.filter((e => e.ratio_width && e.ratio_height)).map((e => `${e.ratio_width}:${e.ratio_height}`)); n.length > 0 && (a.img.ext = { aspectratios: n }) } else (0, i.vV)("image.aspect_ratios was passed, but it's empty:", r.aspect_ratios); else (0, i.vV)("image.aspect_ratios was passed, but it's not a an array:", r.aspect_ratios); r.sizes && (2 === r.sizes.length && (0, i.Fq)(r.sizes[0]) && (0, i.Fq)(r.sizes[1]) ? (a.img.w = r.sizes[0], a.img.h = r.sizes[1], delete a.img.hmin, delete a.img.wmin) : (0, i.vV)("image.sizes was passed, but its value is not an array of integers:", r.sizes)) } else "title" === n ? a.title = { len: r.len || 140 } : "ext" === n && (a.ext = r, delete a.required); t.assets.push(a) } return t }(e.nativeParams)) })) } function b(e) { const t = e.assets; if (!Array.isArray(t) || 0 === t.length) return (0, i.vV)("assets in mediaTypes.native.ortb is not an array, or it's empty. Assets: ", t), !1; const n = t.map((e => e.id)); return t.length !== new Set(n).size || n.some((e => e !== parseInt(e, 10))) ? ((0, i.vV)("each asset object must have 'id' property, it must be unique and it must be an integer"), !1) : e.hasOwnProperty("eventtrackers") && !Array.isArray(e.eventtrackers) ? ((0, i.vV)("ortb.eventtrackers is not an array. Eventtrackers: ", e.eventtrackers), !1) : t.every((e => function (e) { if (!(0, i.Qd)(e)) return (0, i.vV)("asset must be an object. Provided asset: ", e), !1; if (e.img) { if (!(0, i.Et)(e.img.w) && !(0, i.Et)(e.img.wmin)) return (0, i.vV)("for img asset there must be 'w' or 'wmin' property"), !1; if (!(0, i.Et)(e.img.h) && !(0, i.Et)(e.img.hmin)) return (0, i.vV)("for img asset there must be 'h' or 'hmin' property"), !1 } else if (e.title) { if (!(0, i.Et)(e.title.len)) return (0, i.vV)("for title asset there must be 'len' property defined"), !1 } else if (e.data) { if (!(0, i.Et)(e.data.type)) return (0, i.vV)("for data asset 'type' property must be a number"), !1 } else if (e.video && !(Array.isArray(e.video.mimes) && Array.isArray(e.video.protocols) && (0, i.Et)(e.video.minduration) && (0, i.Et)(e.video.maxduration))) return (0, i.vV)("video asset is not properly configured"), !1; return !0 }(e))) } function y(e) { let { index: t = r.n.index } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const n = t.getAdUnit(e); if (!n) return !1; let o = n.nativeOrtbRequest; return function (e, t) { if (!e?.link?.url) return (0, i.vV)("native response doesn't have 'link' property. Ortb response: ", e), !1; let n = t.assets.filter((e => 1 === e.required)).map((e => e.id)), r = e.assets.map((e => e.id)); const o = n.every((e => r.includes(e))); o || (0, i.vV)(`didn't receive a bid with all required assets. Required ids: ${n}, but received ids in response: ${r}`); return o }(e.native?.ortb || R(e.native, o), o) } function v(e, t) { const n = t.native.ortb || S(t.native); return "click" === e.action ? function (e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, { fetchURL: n = i.z$ } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; if (t) { const i = (e.assets || []).filter((e => e.link)).reduce(((e, t) => (e[t.id] = t.link, e)), {}), r = e.link?.clicktrackers || []; let o = i[t], s = r; o && (s = o.clicktrackers || []), s.forEach((e => n(e))) } else (e.link?.clicktrackers || []).forEach((e => n(e))) }(n, e?.assetId) : function (e) { let { runMarkup: t = (e => (0, i.ro)(e)), fetchURL: n = i.z$ } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, { [d.Ni]: r = [], [d.fR]: o = [] } = (0, d.$T)(e.eventtrackers || [])[d.OA] || {}; e.imptrackers && (r = r.concat(e.imptrackers)); r.forEach((e => n(e))), o = o.map((e => `<script async src="${e}"><\/script>`)), e.jstracker && (o = o.concat([e.jstracker])); o.length && t(o.join("\n")) }(n), e.action } function E(e, t) { const n = t?.nativeOrtbRequest, i = e.native?.ortb; if (n && i) { const t = function (e, t) { const n = {}, i = t?.assets || []; n.clickUrl = e.link?.url, n.privacyLink = e.privacy; for (const t of e?.assets || []) { const e = i.find((e => t.id === e.id)); t.title ? n.title = t.title.text : t.img ? n[e?.img?.type === o.oA.MAIN ? "image" : "icon"] = { url: t.img.url, width: t.img.w, height: t.img.h } : t.data && (n[f[g[e?.data?.type]]] = t.data.value) } n.impressionTrackers = []; let r = []; e.imptrackers && n.impressionTrackers.push(...e.imptrackers); for (const t of e?.eventtrackers || []) t.event === d.OA && t.method === d.Ni && n.impressionTrackers.push(t.url), t.event === d.OA && t.method === d.fR && r.push(t.url); r = r.map((e => `<script async src="${e}"><\/script>`)), e?.jstracker && r.push(e.jstracker); r.length && (n.javascriptTrackers = r.join("\n")); return n }(i, n); Object.assign(e.native, t) } ["rendererUrl", "adTemplate"].forEach((n => { const i = t?.nativeParams?.[n]; i && (e.native[n] = O(i)) })) } function A(e) { let { index: t = r.n.index } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = {}; const i = t.getAdUnit(e), s = null == i?.nativeParams?.ortb && !1 !== i?.nativeParams?.sendTargetingKeys, a = function (e) { const t = {}; e?.nativeParams?.ext && Object.keys(e.nativeParams.ext).forEach((e => { t[e] = `hb_native_${e}` })); return { ...o.x5, ...t } }(i), d = { ...e.native, ...e.native.ext }; return delete d.ext, Object.keys(d).forEach((t => { const r = a[t]; let o = O(e.native[t]) || O(e?.native?.ext?.[t]); if ("adTemplate" === t || !r || !o) return; let d = i?.nativeParams?.[t]?.sendId; if ("boolean" != typeof d && (d = i?.nativeParams?.ext?.[t]?.sendId), d) { o = `${r}:${e.adId}` } let c = i?.nativeParams?.[t]?.sendTargetingKeys; "boolean" != typeof c && (c = i?.nativeParams?.ext?.[t]?.sendTargetingKeys); ("boolean" == typeof c ? c : s) && (n[r] = o) })), n } function w(e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], i = []; return Object.entries(e).filter((e => { let [i, r] = e; return r && (!1 === n && "ext" === i || null == t || t.includes(i)) })).forEach((e => { let [r, s] = e; !1 === n && "ext" === r ? i.push(...w(s, t, !0)) : (n || o.x5.hasOwnProperty(r)) && i.push({ key: r, value: O(s) }) })), i } function T(e, t, n) { let { index: d = r.n.index } = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}; const c = { message: "assetResponse", adId: e.adId }; let l = (0, s.vd)(t).native; return l ? (c.native = Object.assign({}, l), c.renderer = (0, a.kj)(t), c.rendererVersion = a.xh, null != n && (l.assets = l.assets.filter((e => { let { key: t } = e; return n.includes(t) })))) : l = function (e, t, n) { const r = { ...(0, i.SH)(e.native, ["rendererUrl", "adTemplate"]), assets: w(e.native, n), nativeKeys: o.x5 }; return e.native.ortb ? r.ortb = e.native.ortb : t.mediaTypes?.native?.ortb && (r.ortb = R(e.native, t.nativeOrtbRequest)), r }(t, d.getAdUnit(t), n), Object.assign(c, l) } const I = Object.fromEntries(Object.entries(o.x5).map((e => { let [t, n] = e; return [n, t] }))); function C(e, t) { const n = e.assets.map((e => I[e])); return T(e, t, n) } function B(e, t) { return T(e, t, null) } function O(e) { return e?.url || e } function S(e) { const t = { link: {}, eventtrackers: [] }; return Object.entries(e).forEach((e => { let [n, i] = e; switch (n) { case "clickUrl": t.link.url = i; break; case "clickTrackers": t.link.clicktrackers = Array.isArray(i) ? i : [i]; break; case "impressionTrackers": (Array.isArray(i) ? i : [i]).forEach((e => { t.eventtrackers.push({ event: d.OA, method: d.Ni, url: e }) })); break; case "javascriptTrackers": t.jstracker = Array.isArray(i) ? i.join("") : i; break; case "privacyLink": t.privacy = i } })), t } function R(e, t) { const n = { ...S(e), assets: [] }; function r(e, r) { let o = t.assets.find(e); null != o && (o = (0, i.Go)(o), r(o), n.assets.push(o)) } return Object.keys(e).filter((t => !!e[t])).forEach((t => { const n = O(e[t]); switch (t) { case "title": r((e => null != e.title), (e => { e.title = { text: n } })); break; case "image": case "icon": const e = "image" === t ? o.oA.MAIN : o.oA.ICON; r((t => null != t.img && t.img.type === e), (e => { e.img = { url: n } })); break; default: t in o.h0 && r((e => null != e.data && e.data.type === o.jO[o.h0[t]]), (e => { e.data = { value: n } })) } })), n } function k(e) { var t = {}; for (var n in e) t[e[n]] = n; return t } }, 0: (e, t, n) => { n.d(t, { Cf: () => a, S3: () => r, Tb: () => o, WR: () => s, qN: () => d, yB: () => f, zt: () => i }); const i = ["request", "imp", "bidResponse", "response"], [r, o, s, a] = i, [d, c] = ["default", "pbs"], l = new Set(i); const { registerOrtbProcessor: u, getProcessors: f } = function () { const e = {}; return { registerOrtbProcessor(t) { let { type: n, name: r, fn: o, priority: s = 0, dialects: a = [d] } = t; if (!l.has(n)) throw new Error(`ORTB processor type must be one of: ${i.join(", ")}`); a.forEach((t => { e.hasOwnProperty(t) || (e[t] = {}), e[t].hasOwnProperty(n) || (e[t][n] = {}), e[t][n][r] = { priority: s, fn: o } })) }, getProcessors: t => e[t] || {} } }() }, 940: (e, t, n) => { var i = n(69), r = n(371); const o = "roockmobile", s = "https://jstag-cdn.yopda.xyz/rm-video-renderer.umd.js"; function a(e) { var t = window.pbjs || {}; if (t.que = window.pbjs.que || [], !window.pbjs) return void i.JE("rmpbjs is not defined"); let { ret: n, msg: s } = function (e) { let t = { ret: -1, msg: "" }; if ("" === e.code || void 0 === e.code) return t.msg = "error params code:" + e.code, t; if ("" === e.slot || void 0 === e.slot) return t.msg = "error params slot:" + e.slot, t; if ("" === e.client || void 0 === e.client || 3 !== e.client.split("-").length) return t.msg = "error params client:" + e.client, t; if (void 0 === e.adSize || 2 !== e.adSize.length) return t.msg = "error params adSize:" + e.adSize, t; return t.ret = 0, t }(e); if (0 !== n) return void i.JE(s); i.fH("params:", e); let a = function (e) { let t = [], n = 1 === e.test ? 1 : 0, i = e.client.split("-"), r = !(1 === e?.disableVideo); t.push({ code: e.code, mediaTypes: { banner: { sizes: [[e.adSize[0], e.adSize[1]]] } }, bids: [{ bidder: o, params: { test: n, slot: e.slot, token: i[2], mid: i[1], endpoint: e.endpoint || "" } }] }), r && t.push({ code: e.code, mediaTypes: { video: { playerSize: [e.adSize[0], e.adSize[1]], context: "outstream", mimes: ["video/mp4", "video/3gpp"], protocols: [2, 3, 5, 6, 7, 8], api: [2], playbackmethod: [1] } }, bids: [{ bidder: o, params: { test: n, slot: e.slot, token: i[2], mid: i[1], endpoint: e.endpoint || "" } }], renderer: d(e) }); return t }(e); i.fH("adUnit:", a), t.que.push((function () { t.adUnits = [], t.addAdUnits(a), t.requestBids({ timeout: 5e3, bidsBackHandler: function () { let e = a[0].code; i.fH("bidsBackHandler hook,params.code=", e); const n = t.getHighestCpmBids(e)[0]; n ? (i.fH(`render ${n.mediaType} ads:code=${e},bid=`, n), n.mediaType !== r.D4 ? t.renderAd(n.adUnitCode, n.adId) : function (e, t) { c(t, (function (t, n) { let i = document.createElement("iframe"); i.id = n.adUnitCode + "-" + n.adId + "-banner", i.scrolling = "no", i.frameBorder = "0", i.marginHeight = "0", i.marginWidth = "0", i.vspace = "0", i.hspace = "0", i.allowtransparency = "true", i.title = "Advertisement", i.setAttribute("sandbox", "allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation"), t.render(i), e.renderAd(i.contentWindow.document, n.adId) })) }(t, n)) : i.JE("no bids") } }) })) } function d(e) { return { url: e.renderJs ? e.renderJs : s, render: function (e) { i.fH("in-renderer render video :", e), c(e, (function (e, t) { let n = document.createElement("div"); n.id = t.adUnitCode + "-" + t.adId + "-video", e.render(n), (new window.RMVideoRenderer).render(n.id, t, { fullClickArea: !0 }) })) } } } function c(e, t) { let n = function (e) { let t = document.getElementById(e); return t ? { domId: e, adContainer: t, isRendered: function () { return !("done" !== this.adContainer.getAttribute("data-ad-loaded") || "filled" !== this.adContainer.getAttribute("data-ad-status")) }, markedAsRendered: function () { this.adContainer.setAttribute("data-ad-loaded", "done"), this.adContainer.setAttribute("data-ad-status", "filled") }, renderStatus: function () { return { adLoaded: this.adContainer.dataset.adLoaded, adStatus: this.adContainer.dataset.adStatus } }, render: function (e) { if (this.isRendered()) return; this.markedAsRendered(); let t = this.adContainer; t.innerHTML = ""; let n = document.createElement("button"); n.style.cssText = "position:absolute;top:0px;right:5px;background:#fff;border:none;color:#00aecd;font-size:12px;cursor:pointer;display:flex;align-items:center;z-index:9999;", n.innerHTML = 'AD<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15" style="width:14px;height:14px;stroke:#00aecd;fill:#00aecd;stroke-width:1.2;margin-left:2px;"><path d="M3.25,3.25l8.5,8.5M11.75,3.25l-8.5,8.5"></path></svg>'; let i = document.createElement("div"); i.style.cssText = "position:relative;display:flex;justify-content: center;", i.appendChild(e), i.appendChild(n), t.appendChild(i) }, getGoogleAdsIns: function () { let e = this, t = e.adContainer.parentNode, n = t?.querySelector("ins.adsbygoogle"); if (n) return e.googleAds.dom = n, e.googleAds.type = "ins", e.googleAds; let i = t?.querySelectorAll("script"); for (let t = 0; t < i.length; t++) { let n = i[t]; if (n.innerHTML && n.innerHTML.trim().includes("googletag.cmd.push")) return e.googleAds.dom = n.parentNode, e.googleAds.type = "gpt", e.googleAds } return e.googleAds }, googleAds: { dom: null, type: "", existed: function () { return !!this.dom }, displayNone: function () { if (!this.existed()) return; let e = this.dom; i.fH("set display-none for google ads, g=", e), "ins" === this.type && e && "filled" !== e.dataset.adStatus && e.style.setProperty("display", "none"), "gpt" === this.type && e.style.setProperty("display", "none") }, doneAndUnfilled: function () { if (!this.existed()) return !0; let e = this.dom; if ("ins" === this.type && (i.JE(`ins adsbygoogle,adsbygoogleStatus=${e.dataset.adsbygoogleStatus} data-ad-status=${e.dataset.adStatus}`), "done" === e.dataset.adsbygoogleStatus && void 0 !== e.dataset.adStatus && "filled" !== e.dataset.adStatus)) return !0; if ("gpt" === this.type) { let t = e.getAttribute("data-google-query-id"), n = e.querySelector("iframe[id^='google_ads_iframe_']"); if (i.fH(`gpt adsbygoogle data-google-query-id=${t},iframe=${n},iframe.getAttribute("data-load-complete")=${n?.getAttribute("data-load-complete")}`), t && (!n || "true" !== n.getAttribute("data-load-complete"))) return !0 } return !1 }, noResponseOrUnfilled: function () { if (!this.existed()) return !0; let e = this.dom; if ("ins" === this.type && "filled" !== e.getAttribute("data-ad-status")) return !0; if ("gpt" === this.type) { let t = e.querySelector("iframe[id^='google_ads_iframe_']"); if (!t || "true" !== t.getAttribute("data-load-complete")) return !0 } return !1 }, observerFillStatus: function (e) { if (!this.existed()) return void e(); let t = this.dom; if (i.fH("checking adsbygoogle data-ad-status g=", t), "ins" === this.type) { const n = new MutationObserver((t => { t.forEach((t => { if (i.fH(`mutation.type=${t.type},mutation.target.dataset.adsbygoogleStatus=${t.target.dataset.adsbygoogleStatus},mutation.target.dataset.adStatus=${t.target.dataset.adStatus}`), "attributes" === t.type && "done" === t.target.dataset.adsbygoogleStatus && void 0 !== t.target.dataset.adStatus && "filled" !== t.target.dataset.adStatus) return e() })) })); return i.fH("listening to adsbygoogle data-ad-status"), n.observe(t, { attributes: !0, attributeOldValue: !0 }), n } if ("gpt" === this.type) { const n = new MutationObserver((t => { t.forEach((t => { if (i.fH(`mutation.type=${t.type},mutation.attributeName=${t.attributeName},mutation.target=${t.target}`), "attributes" === t.type && "data-google-query-id" === t.attributeName) { let n = t.target.getAttribute("data-google-query-id"), i = t.target.querySelector("iframe[id^='google_ads_iframe_']"); if (n && (!i || "true" !== i.getAttribute("data-load-complete"))) return e() } })) })); return i.fH("listening to adsbygoogle data-ad-status"), n.observe(t, { attributes: !0, attributeOldValue: !0 }), n } throw new Error("invalid google ads type") } } } : (i.JE("no adContainer:", e), null) }(e.adUnitCode); if (!n) return void i.JE("adContainer is null"); if (n.isRendered()) { let e = n.renderStatus(); return void i.fH(`adContainer unfilled,adLoaded=${e.adLoaded} adStatus=${e.adStatus}`) } let r = n.getGoogleAdsIns(); if (r.doneAndUnfilled()) return i.fH("adsbygoogle unfilled,rendering our own,googleAds=", r), r.displayNone(), t(n, e); const o = r.observerFillStatus((function () { r.displayNone(), t(n, e) })); setTimeout((() => { r.noResponseOrUnfilled() && !n.isRendered() && (i.fH("10 seconds gone,but adsbygoogle has no response,rendering our own,googleAds=", r), o.disconnect(), r.displayNone(), t(n, e)) }), 1e4) } var l = n(873), u = n(433), f = n(172), g = n(449), p = n(969), h = n(75), m = n(31); const { REQUEST: b, RESPONSE: y, NATIVE: v, EVENT: E } = p.nl, A = { [b]: function (e, t, n) { (0, h.bw)({ renderFn(t) { e(Object.assign({ message: y, renderer: (0, m.kj)(n), rendererVersion: m.xh }, t)) }, resizeFn: T(t.adId, n), options: t.options, adId: t.adId, bidResponse: n }) }, [E]: function (e, t, n) { if (null == n) return void (0, i.vV)(`Cannot find ad '${t.adId}' for x-origin event request`); if (n.status !== p.tl.RENDERED) return void (0, i.JE)(`Received x-origin event request without corresponding render request for ad '${n.adId}'`); return (0, h.Uc)(t, n) } }; function w() { window.addEventListener("message", (function (e) { !function (e) { var t = e.message ? "message" : "data", n = {}; try { n = JSON.parse(e[t]) } catch (e) { return } if (n && n.adId && n.message && A.hasOwnProperty(n.message)) (0, h.$A)(n.adId, n.message === p.nl.REQUEST).then((t => { var r, o; A[n.message]((r = n.adId, o = function (e) { return null == e.origin && 0 === e.ports.length ? function () { const e = "Cannot post message to a frame with null origin. Please update creatives to use MessageChannel, see https://github.com/prebid/Prebid.js/issues/7870"; throw (0, i.vV)(e), new Error(e) } : e.ports.length > 0 ? function (t) { e.ports[0].postMessage(JSON.stringify(t)) } : function (t) { e.source.postMessage(JSON.stringify(t), e.origin) } }(e), function (e) { for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++)n[i - 1] = arguments[i]; return o(Object.assign({}, e, { adId: r }), ...n) }), n, t) })) }(e) }), !1) } function T(e, t) { return function (n, r) { !function (e) { let { instl: t, adId: n, adUnitCode: r, width: o, height: s } = e; if (t) return; function a(e) { return e ? e + "px" : "100%" } function d(e) { let t = c(n, r), i = document.getElementById(t); return i && i.querySelector(e) } function c(e, t) { return (0, i.II)() ? l(e) : (0, i.t1)() ? u(t) : t } function l(e) { const t = window.googletag.pubads().getSlots().find((t => t.getTargetingKeys().find((n => t.getTargeting(n).includes(e))))); return t ? t.getSlotElementId() : null } function u(e) { let t = window.apntag.getTag(e); return t && t.targetId } ["div", "iframe"].forEach((e => { let t = d(e + ':not([style*="display: none"])'); if (t) { let e = t.style; e.width = a(o), e.height = a(s) } else (0, i.vV)(`Unable to locate matching page element for adUnitCode ${r}. Can't resize it to ad's dimensions. Please review setup.`) })) }({ ...t, width: n, height: r, adId: e }) } } Object.assign(A, { [v]: function (e, t, n) { if (null == n) return void (0, i.vV)(`Cannot find ad for x-origin event request: '${t.adId}'`); switch (t.action) { case "assetRequest": (0, h.Hh)(n, (() => e((0, g.IX)(t, n)))); break; case "allAssetRequest": (0, h.Hh)(n, (() => e((0, g.yl)(t, n)))); break; default: (0, h.vW)(t, n, { resizeFn: T(t.adId, n) }), (0, h.Pk)(n) } } }); var I = n(230), C = n(272), B = n(881), O = n(779), S = n(214), R = n(597), k = n(580), U = n(555), D = n(569); const _ = "__pbjs_debugging__"; function $() { return (0, l.m)().installedModules.includes("debugging") } function j(e) { return new U.U9((t => { (0, k.R)(e, D.tp, "debugging", t) })) } function x() { let { alreadyInstalled: e = $, script: t = j } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = null; return function () { return null == n && (n = new U.U9(((n, r) => { setTimeout((() => { if (e()) n(); else { const e = "https://cdn.jsdelivr.net/npm/prebid.js@9.50.0/dist/debugging-standalone.js"; (0, i.OG)(`Debugging module not installed, loading it from "${e}"...`), (0, l.m)()._installDebugging = !0, t(e).then((() => { (0, l.m)()._installDebugging({ DEBUG_KEY: _, hook: S.A_, config: C.$W, createBid: R.O, logger: (0, i.h0)("DEBUG:") }) })).then(n, r) } })) }))), n } } const q = function () { let { load: e = x(), hook: t = (0, S.Yn)("requestBids") } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = null, i = !1; function r(e) { for (var t = arguments.length, i = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++)i[r - 1] = arguments[r]; return (n || U.U9.resolve()).then((() => e.apply(this, i))) } function o() { t.getHooks({ hook: r }).remove(), i = !1 } return { enable: function () { i || (n = e(), t.before(r, 99), i = !0) }, disable: o, reset: function () { n = null, o() } } }(); q.reset; C.$W.getConfig("debugging", (function (e) { let { debugging: t } = e; t?.enabled ? q.enable() : q.disable() })); var N = n(938), P = n(46), W = n(23), V = n(894), M = n(934); const G = (0, N.CK)("fpdEnrichment"), H = (0, i.Bj)((function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window.location.host; if (!G.cookiesAreEnabled()) return e; const t = e.split("."); if (2 === t.length) return e; let n, r, o = -2; const s = `_rdc${Date.now()}`, a = "writeable"; do { n = t.slice(o).join("."); let e = new Date((0, i.vE)() + 1e4).toUTCString(); G.setCookie(s, a, e, "Lax", n, void 0); G.getCookie(s, void 0) === a ? (r = !1, G.setCookie(s, "", "Thu, 01 Jan 1970 00:00:01 GMT", void 0, n, void 0)) : (o += -1, r = Math.abs(o) <= t.length) } while (r); return n })), F = ["architecture", "bitness", "model", "platformVersion", "fullVersionList"], L = ["brands", "mobile", "platform"], z = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window.navigator?.userAgentData; const t = e && L.some((t => void 0 !== e[t])) ? Object.freeze(Q(1, e)) : null; return function () { return t } }(), J = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window.navigator?.userAgentData; const t = {}, n = new WeakMap; return function () { let r = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : F; if (!n.has(r)) { const e = Array.from(r); e.sort(), n.set(r, e.join("|")) } const o = n.get(r); if (!t.hasOwnProperty(o)) try { t[o] = e.getHighEntropyValues(r).then((e => (0, i.Im)(e) ? null : Object.freeze(Q(2, e)))).catch((() => null)) } catch (e) { t[o] = U.U9.resolve(null) } return t[o] } }(); function Q(e, t) { function n(e, t) { const n = { brand: e }; return (0, i.O8)(t) && !(0, i.xQ)(t) && (n.version = t.split(".")), n } const r = { source: e }; return t.platform && (r.platform = n(t.platform, t.platformVersion)), (t.fullVersionList || t.brands) && (r.browsers = (t.fullVersionList || t.brands).map((e => { let { brand: t, version: i } = e; return n(t, i) }))), void 0 !== t.mobile && (r.mobile = t.mobile ? 1 : 0), ["model", "bitness", "architecture"].forEach((e => { const n = t[e]; (0, i.O8)(n) && (r[e] = n) })), r } var K = n(858), Y = n(139), X = n(441), Z = n(811), ee = n(944); const te = { getRefererInfo: M.EN, findRootDomain: H, getWindowTop: i.mb, getWindowSelf: i.l4, getHighEntropySUA: J, getLowEntropySUA: z, getDocument: i.YE }, ne = (0, K.i8)("FPD"), ie = (0, S.A_)("sync", (e => { const t = [e, oe().catch((() => null)), U.U9.resolve("cookieDeprecationLabel" in navigator && (0, Y.io)(Z.Ue, (0, X.s)(D.tp, "cdep")) && navigator.cookieDeprecationLabel.getValue()).catch((() => null))]; return U.U9.all(t).then((e => { let [t, n, r] = e; const o = te.getRefererInfo(); if (Object.entries(ae).forEach((e => { let [n, r] = e; const s = r(t, o); s && Object.keys(s).length > 0 && (t[n] = (0, i.D9)({}, s, t[n])) })), n && (0, f.J)(t, "device.sua", Object.assign({}, n, t.device.sua)), r) { const e = { cdep: r }; (0, f.J)(t, "device.ext", Object.assign({}, e, t.device.ext)) } const s = te.getDocument().documentElement.lang; s && (0, f.J)(t, "site.ext.data.documentLang", s), t = ne(t); for (let e of K.Dy) if ((0, K.O$)(t, e)) { t[e] = (0, i.D9)({}, de(t, o), t[e]); break } return t })) })); function re(e) { try { return e(te.getWindowTop()) } catch (t) { return e(te.getWindowSelf()) } } function oe() { const e = C.$W.getConfig("firstPartyData.uaHints"); return Array.isArray(e) && 0 !== e.length ? te.getHighEntropySUA(e) : U.U9.resolve(te.getLowEntropySUA()) } function se(e) { return (0, i.SH)(e, Object.keys(e)) } const ae = { site(e, t) { if (!K.Dy.filter((e => "site" !== e)).some(K.O$.bind(null, e))) return se({ page: t.page, ref: t.ref }) }, device: () => re((e => { const t = (0, i.Ot)().screen.width, n = (0, i.Ot)().screen.height, { width: r, height: o } = (0, ee.M)(), s = { w: t, h: n, dnt: (0, i.l9)() ? 1 : 0, ua: e.navigator.userAgent, language: e.navigator.language.split("-").shift(), ext: { vpw: r, vph: o } }; return e.navigator?.webdriver && (0, f.J)(s, "ext.webdriver", !0), s })), regs() { const e = {}; re((e => e.navigator.globalPrivacyControl)) && (0, f.J)(e, "ext.gpc", "1"); const t = C.$W.getConfig("coppa"); return "boolean" == typeof t && (e.coppa = t ? 1 : 0), e } }; function de(e, t) { const n = (0, M.gR)(t.page, { noLeadingWww: !0 }), i = re((e => e.document.querySelector("meta[name='keywords']")))?.content?.replace?.(/\s/g, ""); return se({ domain: n, keywords: i, publisher: se({ domain: te.findRootDomain(n) }) }) } var ce = n(916), le = n(713), ue = n(895); const fe = new Map([["format", e => Array.isArray(e) && e.length > 0 && e.every((e => "object" == typeof e))], ["w", i.Fq], ["h", i.Fq], ["btype", i.Uu], ["battr", i.Uu], ["pos", i.Fq], ["mimes", e => Array.isArray(e) && e.length > 0 && e.every((e => "string" == typeof e))], ["topframe", e => [1, 0].includes(e)], ["expdir", i.Uu], ["api", i.Uu], ["id", i.O8], ["vcm", e => [1, 0].includes(e)]]); function ge(e, t) { return function () { if (document.prerendering && e()) { const e = this, n = Array.from(arguments); return new Promise((r => { document.addEventListener("prerenderingchange", (() => { (0, i.fH)("Auctions were suspended while page was prerendering"), r(t.apply(e, n)) }), { once: !0 }) })) } return Promise.resolve(t.apply(this, arguments)) } } var pe = n(115); const he = (0, l.m)(), { triggerUserSyncs: me } = I.zt, { ADD_AD_UNITS: be, REQUEST_BIDS: ye, SET_TARGETING: ve } = p.qY, Ee = { bidWon: function (e) { if (!B.n.getBidsRequested().map((e => e.bids.map((e => e.adUnitCode)))).reduce(i.Bq).filter(i.hj).includes(e)) return void (0, i.vV)('The "' + e + '" placement is not defined.'); return !0 } }; function Ae(e, t) { let n = []; return (0, i.cy)(e) && (t ? e.length === t : e.length > 0) && (e.every((e => (0, i.Uu)(e, 2))) ? n = e : (0, i.Uu)(e, 2) && n.push(e)), n } function we(e, t) { const n = (0, u.A)(e, `ortb2Imp.${t}`), o = (0, u.A)(e, `mediaTypes.${t}`); if (!n && !o) return; const s = { [r.G_]: ue.Zy, [r.D4]: fe }[t]; s && [...s].forEach((n => { let [r, o] = n; const s = (0, u.A)(e, `mediaTypes.${t}.${r}`), a = (0, u.A)(e, `ortb2Imp.${t}.${r}`); null == s && null == a || (null == s ? (0, f.J)(e, `mediaTypes.${t}.${r}`, a) : null == a ? (0, f.J)(e, `ortb2Imp.${t}.${r}`, s) : ((0, i.JE)(`adUnit ${e.code}: specifies conflicting ortb2Imp.${t}.${r} and mediaTypes.${t}.${r}, the latter will be ignored`, e), (0, f.J)(e, `mediaTypes.${t}.${r}`, a))) })) } function Te(e) { const t = (0, i.Go)(e), n = t.mediaTypes.banner, r = null == n.sizes ? null : Ae(n.sizes), o = e.ortb2Imp?.banner?.format ?? n?.format; let s; if (null != o) { (0, f.J)(t, "ortb2Imp.banner.format", o), n.format = o; try { s = o.filter((t => { let { w: n, h: r, wratio: o, hratio: s } = t; return null != (n ?? r) && null != (o ?? s) ? ((0, i.JE)("Ad unit banner.format specifies both w/h and wratio/hratio", e), !1) : null != n && null != r || null != o && null != s })).map((e => { let { w: t, h: n, wratio: i, hratio: r } = e; return [t ?? i, n ?? r] })) } catch (t) { (0, i.vV)(`Invalid format definition on ad unit ${e.code}`, o) } null == s || null == r || (0, i.bD)(r, s) || (0, i.JE)(`Ad unit ${e.code} has conflicting sizes and format definitions`, e) } const a = s ?? r ?? [], d = e.ortb2Imp?.banner?.expdir ?? n.expdir; return null != d && (n.expdir = d, (0, f.J)(t, "ortb2Imp.banner.expdir", d)), a.length > 0 ? (n.sizes = a, t.sizes = a) : ((0, i.vV)("Detected a mediaTypes.banner object without a proper sizes field. Please ensure the sizes are listed like: [[300, 250], ...]. Removing invalid mediaTypes.banner object from request."), delete t.mediaTypes.banner), we(t, "banner"), t } function Ie(e) { const t = (0, i.Go)(e), n = t.mediaTypes.video; if (n.playerSize) { let e = "number" == typeof n.playerSize[0] ? 2 : 1; const r = Ae(n.playerSize, e); r.length > 0 ? (2 === e && (0, i.fH)("Transforming video.playerSize from [640,480] to [[640,480]] so it's in the proper format."), n.playerSize = r, t.sizes = r) : ((0, i.vV)("Detected incorrect configuration of mediaTypes.video.playerSize. Please specify only one set of dimensions in a format like: [[640, 480]]. Removing invalid mediaTypes.video.playerSize property from request."), delete t.mediaTypes.video.playerSize) } return (0, ue.aP)(t), we(t, "video"), t } function Ce(e) { function t(t) { return (0, i.vV)(`Error in adUnit "${e.code}": ${t}. Removing native request from ad unit`, e), delete r.mediaTypes.native, r } function n(e) { for (const t of ["sendTargetingKeys", "types"]) if (o.hasOwnProperty(t)) { const n = e(t); if (n) return n } } const r = (0, i.Go)(e), o = r.mediaTypes.native; if (o.ortb) { if (o.ortb.assets?.some((e => !(0, i.Et)(e.id) || e.id < 0 || e.id % 1 != 0))) return t("native asset ID must be a nonnegative integer"); if (n((e => t(`ORTB native requests cannot specify "${e}"`)))) return r; const e = Object.keys(p.x5).filter((e => p.x5[e].includes("hb_native_"))), s = Object.keys(o).filter((t => e.includes(t))); s.length > 0 && ((0, i.vV)(`when using native OpenRTB format, you cannot use legacy native properties. Deleting ${s} keys from request.`), s.forEach((e => delete r.mediaTypes.native[e]))) } else n((e => `mediaTypes.native.${e} is deprecated, consider using native ORTB instead`)); return o.image && o.image.sizes && !Array.isArray(o.image.sizes) && ((0, i.vV)("Please use an array of sizes for native.image.sizes field. Removing invalid mediaTypes.native.image.sizes property from request."), delete r.mediaTypes.native.image.sizes), o.image && o.image.aspect_ratios && !Array.isArray(o.image.aspect_ratios) && ((0, i.vV)("Please use an array of sizes for native.image.aspect_ratios field. Removing invalid mediaTypes.native.image.aspect_ratios property from request."), delete r.mediaTypes.native.image.aspect_ratios), o.icon && o.icon.sizes && !Array.isArray(o.icon.sizes) && ((0, i.vV)("Please use an array of sizes for native.icon.sizes field. Removing invalid mediaTypes.native.icon.sizes property from request."), delete r.mediaTypes.native.icon.sizes), r } function Be(e, t) { let n = e?.mediaTypes?.[t]?.pos; if (!(0, i.Et)(n) || isNaN(n) || !isFinite(n)) { let n = `Value of property 'pos' on ad unit ${e.code} should be of type: Number`; (0, i.JE)(n), delete e.mediaTypes[t].pos } return e } function Oe(e) { const t = t => `adUnit.code '${e.code}' ${t}`, n = e.mediaTypes, r = e.bids; return null == r || (0, i.cy)(r) ? null == r && null == e.ortb2Imp ? ((0, i.vV)(t("has no 'adUnit.bids' and no 'adUnit.ortb2Imp'. Removing adUnit from auction")), null) : n && 0 !== Object.keys(n).length ? (null == e.ortb2Imp || null != r && 0 !== r.length || (e.bids = [{ bidder: null }], (0, i.OG)(t("defines 'adUnit.ortb2Imp' with no 'adUnit.bids'; it will be seen only by S2S adapters"))), e) : ((0, i.vV)(t("does not define a 'mediaTypes' object. This is a required field for the auction, so this adUnit has been removed.")), null) : ((0, i.vV)(t("defines 'adUnit.bids' that is not an array. Removing adUnit from auction")), null) } !function () { let e = null; try { e = window.sessionStorage } catch (e) { } if (null !== e) { let t = q, n = null; try { n = e.getItem(_) } catch (e) { } null !== n && t.enable() } }(), he.bidderSettings = he.bidderSettings || {}, he.libLoaded = !0, he.version = "v9.50.0", (0, i.fH)("Prebid.js v9.50.0 loaded"), he.installedModules = he.installedModules || [], he.adUnits = he.adUnits || [], he.triggerUserSyncs = me; const Se = { validateAdUnit: Oe, validateBannerMediaType: Te, validateSizes: Ae }; Object.assign(Se, { validateNativeMediaType: Ce }), Object.assign(Se, { validateVideoMediaType: Ie }); const Re = (0, S.A_)("sync", (function (e) { const t = []; return e.forEach((e => { if (null == (e = Oe(e))) return; const n = e.mediaTypes; let i, r, o; n.banner && (i = Te(e), n.banner.hasOwnProperty("pos") && (i = Be(i, "banner"))), n.video && (r = Ie(i || e), n.video.hasOwnProperty("pos") && (r = Be(r, "video"))), n.native && (o = Ce(r || (i || e))); const s = Object.assign({}, i, r, o); t.push(s) })), t }), "checkAdUnitSetup"); function ke(e) { const t = B.n[e]().filter((e => B.n.getAdUnitCodes().includes(e.adUnitCode))), n = B.n.getLastAuctionId(); return t.map((e => e.adUnitCode)).filter(i.hj).map((e => t.filter((t => t.auctionId === n && t.adUnitCode === e)))).filter((e => e && e[0] && e[0].adUnitCode)).map((e => ({ [e[0].adUnitCode]: { bids: e } }))).reduce(((e, t) => Object.assign(e, t)), {}) } he.getAdserverTargetingForAdUnitCodeStr = function (e) { if ((0, i.fH)("Invoking pbjs.getAdserverTargetingForAdUnitCodeStr", arguments), e) { var t = he.getAdserverTargetingForAdUnitCode(e); return (0, i.$D)(t) } (0, i.OG)("Need to call getAdserverTargetingForAdUnitCodeStr with adunitCode") }, he.getHighestUnusedBidResponseForAdUnitCode = function (e) { if (e) { const t = B.n.getAllBidsForAdUnitCode(e).filter(O.Yl); return t.length ? t.reduce(le.Vk) : {} } (0, i.OG)("Need to call getHighestUnusedBidResponseForAdUnitCode with adunitCode") }, he.getAdserverTargetingForAdUnitCode = function (e) { return he.getAdserverTargeting(e)[e] }, he.getAdserverTargeting = function (e) { return (0, i.fH)("Invoking pbjs.getAdserverTargeting", arguments), O.iS.getAllTargeting(e) }, he.getConsentMetadata = function () { return (0, i.fH)("Invoking pbjs.getConsentMetadata"), ce.SL.getConsentMeta() }, he.getNoBids = function () { return (0, i.fH)("Invoking pbjs.getNoBids", arguments), ke("getNoBids") }, he.getNoBidsForAdUnitCode = function (e) { return { bids: B.n.getNoBids().filter((t => t.adUnitCode === e)) } }, he.getBidResponses = function () { return (0, i.fH)("Invoking pbjs.getBidResponses", arguments), ke("getBidsReceived") }, he.getBidResponsesForAdUnitCode = function (e) { return { bids: B.n.getBidsReceived().filter((t => t.adUnitCode === e)) } }, he.setTargetingForGPTAsync = function (e, t) { (0, i.fH)("Invoking pbjs.setTargetingForGPTAsync", arguments), (0, i.II)() ? O.iS.setTargetingForGPT(e, t) : (0, i.vV)("window.googletag is not defined on the page") }, he.setTargetingForAst = function (e) { (0, i.fH)("Invoking pbjs.setTargetingForAn", arguments), O.iS.isApntagDefined() ? (O.iS.setTargetingForAst(e), W.Ic(ve, O.iS.getAllTargeting())) : (0, i.vV)("window.apntag is not defined on the page") }, he.renderAd = (0, S.A_)("async", (function (e, t, n) { (0, i.fH)("Invoking pbjs.renderAd", arguments), (0, i.OG)("Calling renderAd with adId :" + t), (0, h.BS)(e, t, n) })), he.removeAdUnit = function (e) { if ((0, i.fH)("Invoking pbjs.removeAdUnit", arguments), !e) return void (he.adUnits = []); let t; t = (0, i.cy)(e) ? e : [e], t.forEach((e => { for (let t = he.adUnits.length - 1; t >= 0; t--)he.adUnits[t].code === e && he.adUnits.splice(t, 1) })) }, he.requestBids = function () { const e = (0, S.A_)("async", (function () { let { bidsBackHandler: e, timeout: t, adUnits: n, adUnitCodes: r, labels: o, auctionId: s, ttlBuffer: a, ortb2: d, metrics: c, defer: l } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; W.Ic(ye); const u = t || C.$W.getConfig("bidderTimeout"); (0, i.fH)("Invoking pbjs.requestBids", arguments), null == r || Array.isArray(r) || (r = [r]), r && r.length ? n = n.filter((e => r.includes(e.code))) : r = n && n.map((e => e.code)), r = r.filter(i.hj); const f = { global: (0, i.D9)({}, C.$W.getAnyConfig("ortb2") || {}, d || {}), bidder: Object.fromEntries(Object.entries(C.$W.getBidderConfig()).map((e => { let [t, n] = e; return [t, (0, i.Go)(n.ortb2)] })).filter((e => { let [t, n] = e; return null != n }))) }; return ie(U.U9.resolve(f.global)).then((t => (f.global = t, Ue({ bidsBackHandler: e, timeout: u, adUnits: n, adUnitCodes: r, labels: o, auctionId: s, ttlBuffer: a, ortb2Fragments: f, metrics: c, defer: l })))) }), "requestBids"); return (0, S.Y6)(e, ge((() => !C.$W.getConfig("allowPrerendering")), (function () { let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = t.adUnits || he.adUnits; return t.adUnits = (0, i.cy)(n) ? n.slice() : [n], t.metrics = (0, V.K7)(), t.metrics.checkpoint("requestBids"), t.defer = (0, U.v6)({ promiseFactory: e => new Promise(e) }), e.call(this, t), t.defer.promise }))) }(); const Ue = (0, S.A_)("async", (function () { let { bidsBackHandler: e, timeout: t, adUnits: n, ttlBuffer: r, adUnitCodes: o, labels: s, auctionId: a, ortb2Fragments: d, metrics: c, defer: l } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const u = (0, P.pX)(C.$W.getConfig("s2sConfig") || []); function g(t, n, r) { if ("function" == typeof e) try { e(t, n, r) } catch (e) { (0, i.vV)("Error executing bidsBackHandler", null, e) } l.resolve({ bids: t, timedOut: n, auctionId: r }) } !function (e) { e.forEach((e => (0, ue.V0)(e))) }(n), n = (0, V.BO)(c).measureTime("requestBids.validate", (() => Re(n))); const p = {}; if (n.forEach((e => { const t = Object.keys(e.mediaTypes || { banner: "banner" }), n = e.bids.map((e => e.bidder)), o = P.Ay.bidderRegistry, s = n.filter((e => !u.has(e))); e.adUnitId = (0, i.lk)(); const a = e.ortb2Imp?.ext?.tid; a && (p.hasOwnProperty(e.code) ? (0, i.JE)(`Multiple distinct ortb2Imp.ext.tid were provided for twin ad units '${e.code}'`) : p[e.code] = a), null == r || e.hasOwnProperty("ttlBuffer") || (e.ttlBuffer = r), s.forEach((n => { const r = o[n], s = r && r.getSpec && r.getSpec(), a = s && s.supportedMediaTypes || ["banner"]; t.some((e => a.includes(e))) || ((0, i.JE)((0, i.bz)(e, n)), e.bids = e.bids.filter((e => e.bidder !== n))) })) })), n && 0 !== n.length) { n.forEach((e => { const t = e.ortb2Imp?.ext?.tid || p[e.code] || (0, i.lk)(); p.hasOwnProperty(e.code) || (p[e.code] = t), e.transactionId = t, (0, f.J)(e, "ortb2Imp.ext.tid", t) })); const e = B.n.createAuction({ adUnits: n, adUnitCodes: o, callback: g, cbTimeout: t, labels: s, auctionId: a, ortb2Fragments: d, metrics: c }); let r = n.length; r > 15 && (0, i.fH)(`Current auction ${e.getAuctionId()} contains ${r} adUnits.`, n), o.forEach((t => O.iS.setLatestAuctionForAdUnit(t, e.getAuctionId()))), e.callBids() } else (0, i.OG)("No adUnits configured. No bids requested."), g() }), "startAuction"); he.requestBids.before((function (e, t) { function n(e) { for (var t; t = e.shift();)t() } n(N.s0), n(De), e.call(this, t) }), 49), he.addAdUnits = function (e) { (0, i.fH)("Invoking pbjs.addAdUnits", arguments), he.adUnits.push.apply(he.adUnits, (0, i.cy)(e) ? e : [e]), W.Ic(be) }, he.onEvent = function (e, t, n) { (0, i.fH)("Invoking pbjs.onEvent", arguments), (0, i.fp)(t) ? !n || Ee[e].call(null, n) ? W.on(e, t, n) : (0, i.vV)('The id provided is not valid for event "' + e + '" and no handler was set.') : (0, i.vV)('The event handler provided is not a function and was not set on event "' + e + '".') }, he.offEvent = function (e, t, n) { (0, i.fH)("Invoking pbjs.offEvent", arguments), n && !Ee[e].call(null, n) || W.AU(e, t, n) }, he.getEvents = function () { return (0, i.fH)("Invoking pbjs.getEvents"), W.kQ() }, he.registerBidAdapter = function (e, t, n) { (0, i.fH)("Invoking pbjs.registerBidAdapter", arguments); try { const i = n ? (0, pe.xb)(n) : e(); P.Ay.registerBidAdapter(i, t) } catch (e) { (0, i.vV)("Error registering bidder adapter : " + e.message) } }, he.registerAnalyticsAdapter = function (e) { (0, i.fH)("Invoking pbjs.registerAnalyticsAdapter", arguments); try { P.Ay.registerAnalyticsAdapter(e) } catch (e) { (0, i.vV)("Error registering analytics adapter : " + e.message) } }, he.createBid = function (e) { return (0, i.fH)("Invoking pbjs.createBid", arguments), (0, R.O)(e) }; const De = [], _e = (0, S.A_)("async", (function (e) { e && !(0, i.Im)(e) ? ((0, i.fH)("Invoking pbjs.enableAnalytics for: ", e), P.Ay.enableAnalytics(e)) : (0, i.vV)("pbjs.enableAnalytics should be called with option {}") }), "enableAnalyticsCb"); function $e(e) { if ("function" == typeof e) try { e.call() } catch (e) { (0, i.vV)("Error processing command :", e.message, e.stack) } else (0, i.vV)("Commands written into pbjs.cmd.push must be wrapped in a function") } function je(e) { e.forEach((function (e) { if (void 0 === e.called) try { e.call(), e.called = !0 } catch (e) { (0, i.vV)("Error processing command :", "prebid.js", e) } })) } he.enableAnalytics = function (e) { De.push(_e.bind(this, e)) }, he.aliasBidder = function (e, t, n) { (0, i.fH)("Invoking pbjs.aliasBidder", arguments), e && t ? P.Ay.aliasBidAdapter(e, t, n) : (0, i.vV)("bidderCode and alias must be passed as arguments", "pbjs.aliasBidder") }, he.aliasRegistry = P.Ay.aliasRegistry, C.$W.getConfig("aliasRegistry", (e => { "private" === e.aliasRegistry && delete he.aliasRegistry })), he.getAllWinningBids = function () { return B.n.getAllWinningBids() }, he.getAllPrebidWinningBids = function () { return (0, i.JE)("getAllPrebidWinningBids may be removed or renamed in a future version. This function returns bids that have won in prebid and have had targeting set but have not (yet?) won in the ad server. It excludes bids that have been rendered."), B.n.getBidsReceived().filter((e => e.status === p.tl.BID_TARGETING_SET)) }, he.getHighestCpmBids = function (e) { return O.iS.getWinningBids(e) }, he.clearAllAuctions = function () { B.n.clearAllAuctions() }, he.markWinningBidAsUsed = function (e) { let t, { adId: n, adUnitCode: r, analytics: o = !1, events: s = !1 } = e; r && null == n ? t = O.iS.getWinningBids(r) : n ? t = B.n.getBidsReceived().filter((e => e.adId === n)) : (0, i.JE)("Improper use of markWinningBidAsUsed. It needs an adUnitCode or an adId to function."), t.length > 0 && (o || s ? (0, h.n6)(t[0]) : B.n.addWinningBid(t[0]), (0, h.qn)(t[0])) }, he.getConfig = C.$W.getAnyConfig, he.readConfig = C.$W.readAnyConfig, he.mergeConfig = C.$W.mergeConfig, he.mergeBidderConfig = C.$W.mergeBidderConfig, he.setConfig = C.$W.setConfig, he.setBidderConfig = C.$W.setBidderConfig, he.que.push((() => w())), he.processQueue = ge((() => (0, l.m)().delayPrerendering), (function () { he.que.push = he.cmd.push = $e, (0, h.XO)(), S.A_.ready(), je(he.que), je(he.cmd) })), he.triggerBilling = e => { let { adId: t, adUnitCode: n } = e; B.n.getAllWinningBids().filter((e => e.adId === t || null == t && e.adUnitCode === n)).forEach((e => { P.Ay.triggerBilling(e), (0, h.vB)(e) })) }; if (window.pbjs) { let e = document.currentScript.src; window.pbjs.setConfig({ debug: e.indexOf("debug=1") > -1 }) } let xe = window.adsbycqsjd; if (!xe || !xe.loaded) { let e = { push: function (e) { a(e) }, loaded: !0 }; if (xe && xe.shift) for (let e = 20; xe.length > 0 && e > 0; --e)try { a(xe.shift()) } catch (e) { i.vV("pushAdUnits error:", e) } window.adsbycqsjd = e } }, 873: (e, t, n) => { n.d(t, { E: () => s, m: () => o }); const i = window, r = i.pbjs = i.pbjs || {}; function o() { return r } function s(e) { r.installedModules.push(e) } r.cmd = r.cmd || [], r.que = r.que || [], i === window && (i._pbjsGlobals = i._pbjsGlobals || [], i._pbjsGlobals.push("pbjs")) }, 934: (e, t, n) => { n.d(t, { EN: () => d, gR: () => s }); var i = n(272), r = n(69); function o(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : window; if (!e) return e; if (/\w+:\/\//.exec(e)) return e; let n = t.location.protocol; try { n = t.top.location.protocol } catch (e) { } return /^\/\//.exec(e) ? n + e : `${n}//${e}` } function s(e) { let { noLeadingWww: t = !1, noPort: n = !1 } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; try { e = new URL(o(e)) } catch (e) { return } return e = n ? e.hostname : e.host, t && e.startsWith("www.") && (e = e.substring(4)), e } function a(e) { try { const t = e.querySelector("link[rel='canonical']"); if (null !== t) return t.href } catch (e) { } return null } const d = function (e) { let t, n, i, r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : window; return r.top !== r ? e : function () { const o = a(r.document), s = r.location.href; return t === o && s === n || (t = o, n = s, i = e()), i } }((c = window, function () { const e = [], t = function (e) { try { if (!e.location.ancestorOrigins) return; return e.location.ancestorOrigins } catch (e) { } }(c), n = i.$W.getConfig("maxNestedIframes"); let d, l, u, f, g = !1, p = 0, h = !1, m = !1, b = !1; do { const n = d, i = m; let o, s = !1, f = null; m = !1, d = d ? d.parent : c; try { o = d.location.href || null } catch (e) { s = !0 } if (s) if (i) { const e = n.context; try { f = e.sourceUrl, l = f, b = !0, h = !0, d === c.top && (g = !0), e.canonicalUrl && (u = e.canonicalUrl) } catch (e) { } } else { (0, r.JE)("Trying to access cross domain iframe. Continuing without referrer and location"); try { const e = n.document.referrer; e && (f = e, d === c.top && (g = !0)) } catch (e) { } !f && t && t[p - 1] && (f = t[p - 1], d === c.top && (b = !0)), f && !h && (l = f) } else { if (o && (f = o, l = f, h = !1, d === c.top)) { g = !0; const e = a(d.document); e && (u = e) } d.context && d.context.sourceUrl && (m = !0) } e.push(f), p++ } while (d !== c.top && p < n); e.reverse(); try { f = c.top.document.referrer } catch (e) { } const y = g || b ? l : null, v = i.$W.getConfig("pageUrl") || u || null; let E = i.$W.getConfig("pageUrl") || y || o(v, c); return y && y.indexOf("?") > -1 && -1 === E.indexOf("?") && (E = `${E}${y.substring(y.indexOf("?"))}`), { reachedTop: g, isAmp: h, numIframes: p - 1, stack: e, topmostLocation: l || null, location: y, canonicalUrl: v, page: E, domain: s(E) || null, ref: f || null, legacy: { reachedTop: g, isAmp: h, numIframes: p - 1, stack: e, referer: l || null, canonicalUrl: v } } })); var c }, 938: (e, t, n) => { n.d(t, { CK: () => m, s0: () => p }); var i = n(69), r = n(693), o = n(569), s = n(139), a = n(604), d = n(811), c = n(272), l = n(46), u = n(441); const f = "html5", g = "cookie"; let p = []; function h() { let { moduleName: e, moduleType: t } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, { isAllowed: n = s.io } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; function r(i, r) { let s = e; const f = c.$W.getCurrentBidder(); f && t === o.tW && l.Ay.aliasRegistry[f] === e && (s = f); return i({ valid: n(d.Ue, (0, u.s)(t, s, { [a.Zw]: r })) }) } function h(e, t, n) { if (!n || "function" != typeof n) return r(e, t); p.push((function () { let i = r(e, t); n(i) })) } function m(e) { const t = e.charAt(0).toUpperCase() + e.substring(1), n = () => window[e], r = function (t) { return h((function (t) { if (t && t.valid) try { return !!n() } catch (t) { (0, i.vV)(`${e} api disabled`) } return !1 }), f, t) }; return { [`has${t}`]: r, [`${e}IsEnabled`]: e => h((function (e) { if (e && e.valid) try { return n().setItem("prebid.cookieTest", "1"), "1" === n().getItem("prebid.cookieTest") } catch (e) { } finally { try { n().removeItem("prebid.cookieTest") } catch (e) { } } return !1 }), f, e), [`setDataIn${t}`]: (e, t, i) => h((function (i) { i && i.valid && r() && n().setItem(e, t) }), f, i), [`getDataFrom${t}`]: (e, t) => h((function (t) { return t && t.valid && r() ? n().getItem(e) : null }), f, t), [`removeDataFrom${t}`]: (e, t) => h((function (t) { t && t.valid && r() && n().removeItem(e) }), f, t) } } return { setCookie: function (e, t, n, i, r, o) { return h((function (o) { if (o && o.valid) { const o = r && "" !== r ? ` ;domain=${encodeURIComponent(r)}` : "", s = n && "" !== n ? ` ;expires=${n}` : "", a = null != i && "none" == i.toLowerCase() ? "; Secure" : ""; document.cookie = `${e}=${encodeURIComponent(t)}${s}; path=/${o}${i ? `; SameSite=${i}` : ""}${a}` } }), g, o) }, getCookie: function (e, t) { return h((function (t) { if (t && t.valid) { let t = window.document.cookie.match("(^|;)\\s*" + e + "\\s*=\\s*([^;]*)\\s*(;|$)"); return t ? decodeURIComponent(t[2]) : null } return null }), g, t) }, cookiesAreEnabled: function (e) { return h((function (e) { return !(!e || !e.valid) && (0, i.GE)() }), g, e) }, ...m("localStorage"), ...m("sessionStorage"), findSimilarCookies: function (e, t) { return h((function (t) { if (t && t.valid) { const t = []; if ((0, i.N9)()) { const n = document.cookie.split(";"); for (; n.length;) { const i = n.pop(); let r = i.indexOf("="); r = r < 0 ? i.length : r; decodeURIComponent(i.slice(0, r).replace(/^\s+/, "")).indexOf(e) >= 0 && t.push(decodeURIComponent(i.slice(r + 1))) } } return t } }), g, t) } } } function m(e) { return h({ moduleName: e, moduleType: o.tp }) } (0, s.qB)(d.Ue, "deviceAccess config", (function () { if (!(0, i.N9)()) return { allow: !1 } })), (0, s.qB)(d.Ue, "bidderSettings.*.storageAllowed", (function (e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : r.u; if (e[a.Dk] !== o.tW) return; let n = t.get(e[a.q7], "storageAllowed"); if (n && !0 !== n) { const t = e[a.Zw]; n = Array.isArray(n) ? n.some((e => e === t)) : n === t } else n = !!n; return n ? void 0 : { allow: n } })) }, 779: (e, t, n) => { n.d(t, { Yl: () => w, iS: () => B, uW: () => A }); var i = n(881), r = n(863), o = n(693), s = n(272), a = n(969), d = n(23), c = n(214), l = n(371), u = n(449), f = n(69), g = n(433), p = n(713), h = []; const m = 20, b = "targetingControls.allowTargetingKeys", y = "targetingControls.addTargetingKeys", v = `Only one of "${b}" or "${y}" can be set`, E = Object.keys(a.xS).map((e => a.xS[e])); let A = { isActualBid: e => e.getStatusCode() === a.XQ.GOOD, isBidNotExpired: e => e.responseTimestamp + 1e3 * (0, r.cT)(e) > (0, f.vE)(), isUnusedBid: e => e && (e.status && ![a.tl.RENDERED].includes(e.status) || !e.status) }; function w(e) { return !Object.values(A).some((t => !t(e))) } const T = (0, c.A_)("sync", (function (e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3], r = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : f.Q0; if (!i) { const i = [], o = s.$W.getConfig("sendBidsControl.dealPrioritization"); let a = (0, f.$z)(e, "adUnitCode"); return Object.keys(a).forEach((e => { let s = [], d = (0, f.$z)(a[e], "bidderCode"); Object.keys(d).forEach((e => { s.push(d[e].reduce(t)) })), n ? (s = o ? s.sort(I(!0)) : s.sort(((e, t) => t.cpm - e.cpm)), i.push(...s.slice(0, n))) : (s = s.sort(r), i.push(...s)) })), i } return e })); function I() { let e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; return function (t, n) { return void 0 !== t.adserverTargeting.hb_deal && void 0 === n.adserverTargeting.hb_deal ? -1 : void 0 === t.adserverTargeting.hb_deal && void 0 !== n.adserverTargeting.hb_deal ? 1 : e ? n.cpm - t.cpm : n.adserverTargeting.hb_pb - t.adserverTargeting.hb_pb } } function C(e, t) { return (arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : () => window.googletag.pubads().getSlots())().reduce(((e, n) => { const i = (0, f.fp)(t) && t(n); return Object.keys(e).filter((0, f.fp)(i) ? i : (0, f.iC)(n)).forEach((t => e[t].push(n))), e }), Object.fromEntries(e.map((e => [e, []])))) } const B = function (e) { let t = {}, n = {}; function i(e) { let t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; const i = E.concat(u.Nh), r = s.$W.getConfig("targetingControls.allowSendAllBidsTargetingKeys"), o = r ? r.map((e => a.xS[e])) : i; return e.reduce(((e, r) => { if (t || n && r.dealId) { const t = function (e, t) { return t.reduce(((t, n) => (e.adserverTargeting[n] && t.push({ [`${n}_${e.bidderCode}`.substring(0, 20)]: [e.adserverTargeting[n]] }), t)), []) }(r, i.filter((e => void 0 !== r.adserverTargeting[e] && (n || -1 !== o.indexOf(e))))); t && e.push({ [r.adUnitCode]: t }) } return e }), []) } function r(t) { return "string" == typeof t ? [t] : (0, f.cy)(t) ? t : e.getAdUnitCodes() || [] } function A() { let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : p.Bq, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0, r = e.getBidsReceived().reduce(((e, t) => { const i = s.$W.getConfig("useBidCache"), r = s.$W.getConfig("bidCacheFilterFunction"), o = n[t.adUnitCode] === t.auctionId, a = !(i && !o && "function" == typeof r) || !!r(t); return (i || o) && a && (0, g.A)(t, "video.context") !== l.LM && w(t) && (t.latestTargetedAuctionId = n[t.adUnitCode], e.push(t)), e }), []); return T(r, t, void 0, void 0, void 0, i) } function B(e, n) { let i = t.getWinningBids(n, e), r = O(); return i = i.map((e => ({ [e.adUnitCode]: Object.keys(e.adserverTargeting).filter((t => void 0 === e.sendStandardTargeting || e.sendStandardTargeting || -1 === r.indexOf(t))).reduce(((t, n) => { const i = [e.adserverTargeting[n]], r = { [n.substring(0, m)]: i }; if (n === a.xS.DEAL) { const o = `${n}_${e.bidderCode}`.substring(0, m), s = { [o]: i }; return [...t, r, s] } return [...t, r] }), []) }))), i } function O() { return e.getStandardBidderAdServerTargeting().map((e => e.key)).concat(E).filter(f.hj) } return t.setLatestAuctionForAdUnit = function (e, t) { n[e] = t }, t.resetPresetTargeting = function (e, t) { if ((0, f.II)()) { const n = r(e); Object.values(C(n, t)).forEach((e => { e.forEach((e => { !function (e) { h.forEach((t => { e.getTargeting(t) && e.clearTargeting(t) })) }(e) })) })) } }, t.resetPresetTargetingAST = function (e) { r(e).forEach((function (e) { const t = window.apntag.getTag(e); if (t && t.keywords) { const n = Object.keys(t.keywords), i = {}; n.forEach((e => { h.includes(e.toLowerCase()) || (i[e] = t.keywords[e]) })), window.apntag.modifyTag(e, { keywords: i }) } })) }, t.getAllTargeting = function (t, n, d) { let c = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : p.Vk, l = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : f.Q0; d ||= A(c, l); const g = r(t), E = s.$W.getConfig("enableSendAllBids"), w = s.$W.getConfig("sendBidsControl.bidLimit"), C = E && (n || w) || 0, { customKeysByUnit: S, filteredBids: R } = function (e, t) { const n = [], i = {}, r = s.$W.getConfig("targetingControls.alwaysIncludeDeals"); return t.forEach((t => { const s = e.includes(t.adUnitCode), a = !0 === o.u.get(t.bidderCode, "allowZeroCpmBids") ? t.cpm >= 0 : t.cpm > 0, d = r && t.dealId; s && (d || a) && (n.push(t), Object.keys(t.adserverTargeting).filter(function () { let e = O(); e = e.concat(u.Nh); return function (t) { return -1 === e.indexOf(t) } }()).forEach((e => { const n = e.substring(0, m), r = i[t.adUnitCode] || {}, o = [t.adserverTargeting[e]]; r[n] ? r[n] = r[n].concat(o).filter(f.hj) : r[n] = o, i[t.adUnitCode] = r }))) })), { filteredBids: n, customKeysByUnit: i } }(g, d); let k = function (t, n, r) { const o = !1 !== s.$W.getConfig("targetingControls.allBidsCustomTargeting"), d = B(t, r).concat(function (e) { const t = s.$W.getConfig("targetingControls.alwaysIncludeDeals"); return i(e, s.$W.getConfig("enableSendAllBids"), t) }(t)).concat(function (t) { function n(e) { return e?.[a.iD.ADSERVER_TARGETING] } function i(e) { const t = n(e); return Object.keys(t).map((function (e) { return (0, f.O8)(t[e]) && (t[e] = t[e].split(",").map((e => e.trim()))), (0, f.cy)(t[e]) || (t[e] = [t[e]]), { [e]: t[e] } })) } return e.getAdUnits().filter((e => t.includes(e.code) && n(e))).reduce(((e, t) => { const n = i(t); return n && e.push({ [t.code]: n }), e }), []) }(r)); o && d.push(...function (e, t) { return e.reduce(((e, n) => { const i = Object.assign({}, n), r = t[i.adUnitCode], o = []; return r && Object.keys(r).forEach((e => { e && r[e] && o.push({ [e]: r[e] }) })), e.push({ [i.adUnitCode]: o }), e }), []) }(t, n)); return d.forEach((e => { !function (e) { Object.keys(e).forEach((t => { e[t].forEach((e => { const t = Object.keys(e); -1 === h.indexOf(t[0]) && (h = t.concat(h)) })) })) }(e) })), d }(T(R, c, C, void 0, l), S, g); const U = Object.keys(Object.assign({}, a.Zh, a.x5)); let D = s.$W.getConfig(b); const _ = s.$W.getConfig(y); if (null != _ && null != D) throw new Error(v); D = null != _ ? U.concat(_) : D || U, Array.isArray(D) && D.length > 0 && (k = function (e, t) { const n = Object.assign({}, a.xS, a.x5), i = Object.keys(n), r = {}; (0, f.fH)(`allowTargetingKeys - allowed keys [ ${t.map((e => n[e])).join(", ")} ]`), e.map((e => { const o = Object.keys(e)[0], s = e[o].filter((e => { const o = Object.keys(e)[0], s = 0 === i.filter((e => 0 === o.indexOf(n[e]))).length || t.find((e => { const t = n[e]; return 0 === o.indexOf(t) })); return r[o] = !s, s })); e[o] = s })); const o = Object.keys(r).filter((e => r[e])); return (0, f.fH)(`allowTargetingKeys - removed keys [ ${o.join(", ")} ]`), e.filter((e => e[Object.keys(e)[0]].length > 0)) }(k, D)), k = function (e) { let t = e.map((e => ({ [Object.keys(e)[0]]: e[Object.keys(e)[0]].map((e => ({ [Object.keys(e)[0]]: e[Object.keys(e)[0]].join(",") }))).reduce(((e, t) => Object.assign(t, e)), {}) }))); return t = t.reduce((function (e, t) { var n = Object.keys(t)[0]; return e[n] = Object.assign({}, e[n], t[n]), e }), {}), t }(k); const $ = s.$W.getConfig("targetingControls.auctionKeyMaxChars"); return $ && ((0, f.fH)(`Detected 'targetingControls.auctionKeyMaxChars' was active for this auction; set with a limit of ${$} characters. Running checks on auction keys...`), k = function (e, t) { let n = (0, f.Go)(e), i = Object.keys(n).map((e => ({ adUnitCode: e, adserverTargeting: n[e] }))).sort(I()); return i.reduce((function (e, i, r, o) { let s = (a = i.adserverTargeting, Object.keys(a).reduce((function (e, t) { return e + `${t}%3d${encodeURIComponent(a[t])}%26` }), "")); var a; r + 1 === o.length && (s = s.slice(0, -3)); let d = i.adUnitCode, c = s.length; return c <= t ? (t -= c, (0, f.fH)(`AdUnit '${d}' auction keys comprised of ${c} characters. Deducted from running threshold; new limit is ${t}`, n[d]), e[d] = n[d]) : (0, f.JE)(`The following keys for adUnitCode '${d}' exceeded the current limit of the 'auctionKeyMaxChars' setting.\nThe key-set size was ${c}, the current allotted amount was ${t}.\n`, n[d]), r + 1 === o.length && 0 === Object.keys(e).length && (0, f.vV)("No auction targeting keys were permitted due to the setting in setConfig(targetingControls.auctionKeyMaxChars). Please review setup and consider adjusting."), e }), {}) }(k, $)), g.forEach((e => { k[e] || (k[e] = {}) })), k }, s.$W.getConfig("targetingControls", (function (e) { null != (0, g.A)(e, b) && null != (0, g.A)(e, y) && (0, f.vV)(v) })), t.setTargetingForGPT = (0, c.A_)("sync", (function (n, i) { let r = t.getAllTargeting(n), o = Object.fromEntries(h.map((e => [e, null]))); Object.entries(C(Object.keys(r), i)).forEach((e => { let [t, n] = e; n.length > 1 && (0, f.JE)(`Multiple slots found matching: ${t}. Targeting will be set on all matching slots, which can lead to duplicate impressions if more than one are requested from GAM. To resolve this, ensure the arguments to setTargetingForGPTAsync resolve to a single slot by explicitly matching the desired slotElementID.`), n.forEach((e => { Object.keys(r[t]).forEach((e => { let n = r[t][e]; "string" == typeof n && -1 !== n.indexOf(",") && (n = n.split(",")), r[t][e] = n })), (0, f.OG)(`Attempting to set targeting-map for slot: ${e.getSlotElementId()} with targeting-map:`, r[t]), e.updateTargetingFromMap(Object.assign({}, o, r[t])) })) })), Object.keys(r).forEach((t => { Object.keys(r[t]).forEach((n => { "hb_adid" === n && e.setStatusForBids(r[t][n], a.tl.BID_TARGETING_SET) })) })), t.targetingDone(r), d.Ic(a.qY.SET_TARGETING, r) }), "setTargetingForGPT"), t.targetingDone = (0, c.A_)("sync", (function (e) { return e }), "targetingDone"), t.getWinningBids = function (e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : p.Vk, i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : f.Q0; const s = t || A(n, i), a = r(e); return s.filter((e => a.includes(e.adUnitCode))).filter((e => !0 === o.u.get(e.bidderCode, "allowZeroCpmBids") ? e.cpm >= 0 : e.cpm > 0)).map((e => e.adUnitCode)).filter(f.hj).map((e => s.filter((t => t.adUnitCode === e ? t : null)).reduce(p.Vk))) }, t.setTargetingForAst = function (e) { let n = t.getAllTargeting(e); try { t.resetPresetTargetingAST(e) } catch (e) { (0, f.vV)("unable to reset targeting for AST" + e) } Object.keys(n).forEach((e => Object.keys(n[e]).forEach((t => { if ((0, f.OG)(`Attempting to set targeting for targetId: ${e} key: ${t} value: ${n[e][t]}`), (0, f.O8)(n[e][t]) || (0, f.cy)(n[e][t])) { let i = {}, r = /pt[0-9]/; t.search(r) < 0 ? i[t.toUpperCase()] = n[e][t] : i[t] = n[e][t], window.apntag.setKeywords(e, i, { overrideKeyValue: !0 }) } })))) }, t.isApntagDefined = function () { if (window.apntag && (0, f.fp)(window.apntag.setKeywords)) return !0 }, t }(i.n) }, 230: (e, t, n) => { n.d(t, { zt: () => f }); var i = n(69), r = n(272), o = n(938), s = n(139), a = n(811), d = n(604), c = n(569), l = n(441); r.$W.setDefaults({ userSync: (0, i.Go)({ syncEnabled: !0, filterSettings: { image: { bidders: "*", filter: "include" } }, syncsPerBidder: 5, syncDelay: 3e3, auctionDelay: 500 }) }); const u = (0, o.CK)("usersync"); const f = function (e) { let t = {}, n = { image: [], iframe: [] }, o = new Set, s = {}, u = { image: !0, iframe: !1 }, f = e.config; function g() { if (f.syncEnabled && e.browserSupportsCookies) { try { !function () { if (!u.iframe) return; p(n.iframe, (e => { let [t, r] = e; (0, i.OG)(`Invoking iframe user sync for bidder: ${t}`), (0, i.SG)(r), function (e, t) { e.image = e.image.filter((e => e[0] !== t)) }(n, t) })) }(), function () { if (!u.image) return; p(n.image, (e => { let [t, n] = e; (0, i.OG)(`Invoking image pixel user sync for bidder: ${t}`), (0, i.z$)(n) })) }() } catch (e) { return (0, i.vV)("Error firing user syncs", e) } n = { image: [], iframe: [] } } } function p(e, t) { (0, i.k4)(e).forEach(t) } function h(e, t) { let n = f.filterSettings; if (function (e, t) { if (e.all && e[t]) return (0, i.JE)(`Detected presence of the "filterSettings.all" and "filterSettings.${t}" in userSync config. You cannot mix "all" with "iframe/image" configs; they are mutually exclusive.`), !1; let n = e.all ? e.all : e[t], r = e.all ? "all" : t; if (!n) return !1; let o = n.filter, s = n.bidders; if (o && "include" !== o && "exclude" !== o) return (0, i.JE)(`UserSync "filterSettings.${r}.filter" setting '${o}' is not a valid option; use either 'include' or 'exclude'.`), !1; if ("*" !== s && !(Array.isArray(s) && s.length > 0 && s.every((e => (0, i.O8)(e) && "*" !== e)))) return (0, i.JE)(`Detected an invalid setup in userSync "filterSettings.${r}.bidders"; use either '*' (to represent all bidders) or an array of bidders.`), !1; return !0 }(n, e)) { u[e] = !0; let i = n.all ? n.all : n[e], r = "*" === i.bidders ? [t] : i.bidders; const o = { include: (e, t) => !e.includes(t), exclude: (e, t) => e.includes(t) }; return o[i.filter || "include"](r, t) } return !u[e] } return r.$W.getConfig("userSync", (e => { if (e.userSync) { let t = e.userSync.filterSettings; (0, i.Qd)(t) && (t.image || t.all || (e.userSync.filterSettings.image = { bidders: "*", filter: "include" })) } f = Object.assign(f, e.userSync) })), e.regRule(a.Ml, "userSync config", (e => { if (!f.syncEnabled) return { allow: !1, reason: "syncs are disabled" }; if (e[d.Dk] === c.tW) { const n = e[d.bt], i = e[d.iK]; if (!t.canBidderRegisterSync(n, i)) return { allow: !1, reason: `${n} syncs are not enabled for ${i}` } } })), t.registerSync = (t, r, u) => o.has(r) ? (0, i.OG)(`already fired syncs for "${r}", ignoring registerSync call`) : f.syncEnabled && (0, i.cy)(n[t]) ? r ? 0 !== f.syncsPerBidder && Number(s[r]) >= f.syncsPerBidder ? (0, i.JE)(`Number of user syncs exceeded for "${r}"`) : void (e.isAllowed(a.Ml, (0, l.s)(c.tW, r, { [d.bt]: t, [d.e3]: u })) && (n[t].push([r, u]), s = function (e, t) { return e[t] ? e[t] += 1 : e[t] = 1, e }(s, r))) : (0, i.JE)("Bidder is required for registering sync") : (0, i.JE)(`User sync type "${t}" not supported`), t.bidderDone = o.add.bind(o), t.syncUsers = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0; if (e) return setTimeout(g, Number(e)); g() }, t.triggerUserSyncs = () => { f.enableOverride && t.syncUsers() }, t.canBidderRegisterSync = (e, t) => !f.filterSettings || !h(e, t), t }(Object.defineProperties({ config: r.$W.getConfig("userSync"), isAllowed: s.io, regRule: s.qB }, { browserSupportsCookies: { get: function () { return !(0, i.Vt)() && u.cookiesAreEnabled() } } })) }, 69: (e, t, n) => { n.d(t, { $D: () => U, $z: () => ke, Bg: () => Qe, Bj: () => Je, Bk: () => ge, Bq: () => he, CA: () => K, D9: () => Fe, Dl: () => Me, El: () => Ke, Et: () => ne, Ez: () => Y, Fq: () => Ne, GE: () => Se, Go: () => Ae, II: () => be, Im: () => oe, JE: () => H, Lm: () => re, N9: () => Oe, O8: () => ee, OG: () => M, Ot: () => I, PB: () => ze, Q0: () => ve, Qd: () => ie, SB: () => _e, SG: () => ue, SH: () => Ue, Tz: () => fe, U6: () => Re, Up: () => Pe, Uu: () => We, V: () => Be, Vt: () => Te, YE: () => W, ZA: () => me, ZK: () => Xe, _s: () => ae, al: () => we, bD: () => He, bL: () => k, bz: () => qe, c$: () => Ge, cD: () => w, cf: () => j, cy: () => te, dp: () => J, fH: () => G, fp: () => Z, gM: () => Ie, h0: () => L, hj: () => pe, hw: () => Q, iC: () => xe, k4: () => Ee, kK: () => _, l4: () => N, l9: () => $e, lk: () => R, mM: () => C, mb: () => q, nT: () => Ye, ro: () => le, s0: () => S, t1: () => ye, vE: () => Ce, vV: () => F, wD: () => De, xQ: () => se, y$: () => D, z$: () => ce }); var i = n(272), r = n(751), o = n(969), s = n(555), a = n(873), d = "String", c = "Function", l = "Number", u = "Object", f = "Boolean", g = Object.prototype.toString; let p, h, m = Boolean(window.console), b = Boolean(m && window.console.log), y = Boolean(m && window.console.info), v = Boolean(m && window.console.warn), E = Boolean(m && window.console.error); const A = (0, a.m)(); function w(e) { p = e } function T() { null != p && p(...arguments) } const I = function () { let e; return () => ((!h || !e || Date.now() - e > 20) && (C.resetWinDimensions(), e = Date.now()), h) }(); const C = { checkCookieSupport: Se, createTrackPixelIframeHtml: function (e) { let t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ""; if (!e) return ""; t && (e = encodeURI(e)); n && (n = `sandbox="${n}"`); return `<iframe ${n} id="${S()}"\n frameborder="0"\n allowtransparency="true"\n marginheight="0" marginwidth="0"\n width="0" hspace="0" vspace="0" height="0"\n style="height:0px;width:0px;display:none;"\n scrolling="no"\n src="${e}">\n </iframe>` }, getWindowSelf: N, getWindowTop: q, canAccessWindowTop: V, getWindowLocation: P, insertUserSyncIframe: ue, insertElement: ae, isFn: Z, triggerPixel: ce, logError: F, logWarn: H, logMessage: M, logInfo: G, parseQS: Ve, formatQS: function (e) { return Object.keys(e).map((t => Array.isArray(e[t]) ? e[t].map((e => `${t}[]=${e}`)).join("&") : `${t}=${e[t]}`)).join("&") }, deepEqual: He, resetWinDimensions: function () { const e = V() ? C.getWindowTop() : C.getWindowSelf(); h = { screen: { width: e.screen?.width, height: e.screen?.height, availWidth: e.screen?.availWidth, availHeight: e.screen?.availHeight, colorDepth: e.screen?.colorDepth }, innerHeight: e.innerHeight, innerWidth: e.innerWidth, outerWidth: e.outerWidth, outerHeight: e.outerHeight, visualViewport: { height: e.visualViewport?.height, width: e.visualViewport?.width }, document: { documentElement: { clientWidth: e.document?.documentElement?.clientWidth, clientHeight: e.document?.documentElement?.clientHeight, scrollTop: e.document?.documentElement?.scrollTop, scrollLeft: e.document?.documentElement?.scrollLeft }, body: { scrollTop: document.body?.scrollTop, scrollLeft: document.body?.scrollLeft, clientWidth: document.body?.clientWidth, clientHeight: document.body?.clientHeight } } } } }; var B, O = (B = 0, function () { return ++B }); function S() { return O() + Math.random().toString(16).substr(2) } function R(e) { return e ? (e ^ (window && window.crypto && window.crypto.getRandomValues ? crypto.getRandomValues(new Uint8Array(1))[0] % 16 : 16 * Math.random()) >> e / 4).toString(16) : ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, R) } function k(e) { let t = ""; for (var n in e) e.hasOwnProperty(n) && (t += n + "=" + encodeURIComponent(e[n]) + "&"); return t = t.replace(/&$/, ""), t } function U(e) { return e && Object.getOwnPropertyNames(e).length > 0 ? Object.keys(e).map((t => `${t}=${encodeURIComponent(e[t])}`)).join("&") : "" } function D(e) { return "string" == typeof e ? e.split(/\s*,\s*/).map((e => e.match(/^(\d+)x(\d+)$/i))).filter((e => e)).map((e => { let [t, n, i] = e; return [parseInt(n, 10), parseInt(i, 10)] })) : Array.isArray(e) ? x(e) ? [e] : e.filter(x) : [] } function _(e) { return D(e).map($) } function $(e) { return e[0] + "x" + e[1] } function j(e) { return { w: e[0], h: e[1] } } function x(e) { return te(e) && 2 === e.length && !isNaN(e[0]) && !isNaN(e[1]) } function q() { return window.top } function N() { return window.self } function P() { return window.location } function W() { return document } function V() { try { if (C.getWindowTop().location.href) return !0 } catch (e) { return !1 } } function M() { J() && b && console.log.apply(console, z(arguments, "MESSAGE:")) } function G() { J() && y && console.info.apply(console, z(arguments, "INFO:")) } function H() { J() && v && console.warn.apply(console, z(arguments, "WARNING:")), T(o.qY.AUCTION_DEBUG, { type: "WARNING", arguments }) } function F() { J() && E && console.error.apply(console, z(arguments, "ERROR:")), T(o.qY.AUCTION_DEBUG, { type: "ERROR", arguments }) } function L(e) { function t(t) { return function () { for (var n = arguments.length, i = new Array(n), r = 0; r < n; r++)i[r] = arguments[r]; t(e, ...i) } } return { logError: t(F), logWarn: t(H), logMessage: t(M), logInfo: t(G) } } function z(e, t) { e = [].slice.call(e); let n = i.$W.getCurrentBidder(); return t && e.unshift(t), n && e.unshift(r("#aaa")), e.unshift(r("#3b88c3")), e.unshift("%cPrebid" + (n ? `%c${n}` : "")), e; function r(e) { return `display: inline-block; color: #fff; background: ${e}; padding: 1px 4px; border-radius: 3px;` } } function J() { return !!i.$W.getConfig("debug") } const Q = (() => { const e = { border: "0px", hspace: "0", vspace: "0", marginWidth: "0", marginHeight: "0", scrolling: "no", frameBorder: "0", allowtransparency: "true" }; return function (t, n) { let i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; const r = t.createElement("iframe"); return Object.assign(r, Object.assign({}, e, n)), Object.assign(r.style, i), r } })(); function K() { return Q(document, { id: S(), width: 0, height: 0, src: "about:blank" }, { display: "none", height: "0px", width: "0px", border: "0px" }) } function Y(e) { return Ve(P().search)[e] || "" } function X(e, t) { return g.call(e) === "[object " + t + "]" } function Z(e) { return X(e, c) } function ee(e) { return X(e, d) } const te = Array.isArray.bind(Array); function ne(e) { return X(e, l) } function ie(e) { return X(e, u) } function re(e) { return X(e, f) } function oe(e) { return !e || (te(e) || ee(e) ? !(e.length > 0) : Object.keys(e).length <= 0) } function se(e) { return ee(e) && (!e || 0 === e.length) } function ae(e, t, n, i) { let r; t = t || document, r = n ? t.getElementsByTagName(n) : t.getElementsByTagName("head"); try { if (r = r.length ? r : t.getElementsByTagName("body"), r.length) { r = r[0]; let t = i ? null : r.firstChild; return r.insertBefore(e, t) } } catch (e) { } } function de(e, t) { let n = null; return new s.U9((i => { const r = function () { e.removeEventListener("load", r), e.removeEventListener("error", r), null != n && window.clearTimeout(n), i() }; e.addEventListener("load", r), e.addEventListener("error", r), null != t && (n = window.setTimeout(r, t)) })) } function ce(e, t, n) { const i = new Image; t && C.isFn(t) && de(i, n).then(t), i.src = e } function le(e) { if (!e) return; const t = K(); var n; C.insertElement(t, document, "body"), (n = t.contentWindow.document).open(), n.write(e), n.close() } function ue(e, t, n) { let i = C.createTrackPixelIframeHtml(e, !1, "allow-scripts allow-same-origin"), r = document.createElement("div"); r.innerHTML = i; let o = r.firstChild; t && C.isFn(t) && de(o, n).then(t), C.insertElement(o, document, "html", !0) } function fe(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : encodeURI; if (!e) return ""; let n = '<div style="position:absolute;left:0px;top:0px;visibility:hidden;">'; return n += '<img src="' + t(e) + '"></div>', n } function ge(e) { return Array.from(e.matchAll(/\$({[^}]+})/g)).map((e => e[1])).reduce(((e, t) => e.replace("$" + encodeURIComponent(t), "$" + t)), encodeURI(e)) } function pe(e, t, n) { return n.indexOf(e) === t } function he(e, t) { return e.concat(t) } function me() { return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : A.adUnits).map((e => e.bids.map((e => e.bidder)).reduce(he, []))).reduce(he, []).filter((e => void 0 !== e)).filter(pe) } function be() { if (window.googletag && Z(window.googletag.pubads) && Z(window.googletag.pubads().getSlots)) return !0 } function ye() { if (window.apntag && Z(window.apntag.getTag)) return !0 } const ve = (e, t) => t.cpm - e.cpm; function Ee(e) { let t = e.length; for (; t > 0;) { let n = Math.floor(Math.random() * t); t--; let i = e[t]; e[t] = e[n], e[n] = i } return e } function Ae(e) { return (0, r.Q)(e) || {} } function we() { try { return C.getWindowSelf() !== C.getWindowTop() } catch (e) { return !0 } } function Te() { return /^((?!chrome|android|crios|fxios).)*safari/i.test(navigator.userAgent) } function Ie(e, t) { if (e) return Object.entries(t).reduce(((e, t) => { let [n, i] = t; return e.replace(new RegExp("\\$\\{" + n + "\\}", "g"), i || "") }), e) } function Ce() { return (new Date).getTime() } function Be() { return window.performance && window.performance.now && window.performance.now() || 0 } function Oe() { return !1 !== i.$W.getConfig("deviceAccess") } function Se() { if (window.navigator.cookieEnabled || document.cookie.length) return !0 } function Re(e, t) { if (t < 1) throw new Error(`numRequiredCalls must be a positive number. Got ${t}`); let n = 0; return function () { n++, n === t && e.apply(this, arguments) } } function ke(e, t) { return e.reduce((function (e, n) { return (e[n[t]] = e[n[t]] || []).push(n), e }), {}) } function Ue(e, t) { return t.filter((t => e[t])).reduce(((t, n) => Object.assign(t, { [n]: e[n] })), {}) } function De(e) { const t = ["banner", "native", "video"], n = ["instream", "outstream", "adpod"]; return !!Object.keys(e).every((e => t.includes(e))) && (!e.video || !e.video.context || n.includes(e.video.context)) } function _e(e, t, n) { return e.filter((e => e.code === t)).flatMap((e => e.bids)).filter((e => e.bidder === n)).map((e => e.params || {})) } function $e() { return "1" === navigator.doNotTrack || "1" === window.doNotTrack || "1" === navigator.msDoNotTrack || "yes" === navigator.doNotTrack } const je = (e, t) => e.getAdUnitPath() === t || e.getSlotElementId() === t; function xe(e) { return t => je(e, t) } function qe(e, t) { const n = Object.keys(e.mediaTypes || { banner: "banner" }).join(", "); return `\n ${e.code} is a ${n} ad unit\n containing bidders that don't support ${n}: ${t}.\n This bidder won't fetch demand.\n ` } const Ne = Number.isInteger.bind(Number); function Pe(e, t) { return "object" != typeof e ? {} : t.reduce(((n, i, r) => { if ("function" == typeof i) return n; let o = i, s = i.match(/^(.+?)\sas\s(.+?)$/i); s && (i = s[1], o = s[2]); let a = e[i]; return "function" == typeof t[r + 1] && (a = t[r + 1](a, n)), void 0 !== a && (n[o] = a), n }), {}) } function We(e, t) { return te(e) && (!t || e.length === t) && e.every((e => Ne(e))) } function Ve(e) { return e ? e.replace(/^\?/, "").split("&").reduce(((e, t) => { let [n, i] = t.split("="); return /\[\]$/.test(n) ? (n = n.replace("[]", ""), e[n] = e[n] || [], e[n].push(i)) : e[n] = i || "", e }), {}) : {} } function Me(e, t) { let n = document.createElement("a"); t && "noDecodeWholeURL" in t && t.noDecodeWholeURL ? n.href = e : n.href = decodeURIComponent(e); let i = t && "decodeSearchAsString" in t && t.decodeSearchAsString; return { href: n.href, protocol: (n.protocol || "").replace(/:$/, ""), hostname: n.hostname, port: +n.port, pathname: n.pathname.replace(/^(?!\/)/, "/"), search: i ? n.search : C.parseQS(n.search || ""), hash: (n.hash || "").replace(/^#/, ""), host: n.host || window.location.host } } function Ge(e) { return (e.protocol || "http") + "://" + (e.host || e.hostname + (e.port ? `:${e.port}` : "")) + (e.pathname || "") + (e.search ? `?${C.formatQS(e.search || "")}` : "") + (e.hash ? `#${e.hash}` : "") } function He(e, t) { let { checkTypes: n = !1 } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; if (e === t) return !0; if ("object" != typeof e || null === e || "object" != typeof t || null === t) return !1; const i = Array.isArray(e), r = Array.isArray(t); if (i && r) { if (e.length !== t.length) return !1; for (let i = 0; i < e.length; i++)if (!He(e[i], t[i], { checkTypes: n })) return !1; return !0 } if (i || r) return !1; if (n && e.constructor !== t.constructor) return !1; const o = Object.keys(e), s = Object.keys(t); if (o.length !== s.length) return !1; for (const i of o) { if (!Object.prototype.hasOwnProperty.call(t, i)) return !1; if (!He(e[i], t[i], { checkTypes: n })) return !1 } return !0 } function Fe(e) { for (let t = 0; t < (arguments.length <= 1 ? 0 : arguments.length - 1); t++) { const n = t + 1 < 1 || arguments.length <= t + 1 ? void 0 : arguments[t + 1]; ie(n) && Le(e, n) } return e } function Le(e, t) { if (!ie(e) || !ie(t)) return; const n = Object.keys(t); for (let i = 0; i < n.length; i++) { const r = n[i]; if ("__proto__" === r || "constructor" === r) continue; const o = t[r]; ie(o) ? (e[r] || (e[r] = {}), Le(e[r], o)) : Array.isArray(o) ? Array.isArray(e[r]) ? o.forEach((t => { e[r].some((e => He(e, t))) || e[r].push(t) })) : e[r] = [...o] : e[r] = o } } function ze(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = function (e, t) { if (Z(Math.imul)) return Math.imul(e, t); var n = (4194303 & e) * (t |= 0); return 4290772992 & e && (n += (4290772992 & e) * t | 0), 0 | n }, i = 3735928559 ^ t, r = 1103547991 ^ t; for (let t, o = 0; o < e.length; o++)t = e.charCodeAt(o), i = n(i ^ t, 2654435761), r = n(r ^ t, 1597334677); return i = n(i ^ i >>> 16, 2246822507) ^ n(r ^ r >>> 13, 3266489909), r = n(r ^ r >>> 16, 2246822507) ^ n(i ^ i >>> 13, 3266489909), (4294967296 * (2097151 & r) + (i >>> 0)).toString() } function Je(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : function (e) { return e }; const n = new Map, i = function () { const i = t.apply(this, arguments); return n.has(i) || n.set(i, e.apply(this, arguments)), n.get(i) }; return i.clear = n.clear.bind(n), i } function Qe(e, t) { Object.entries(t).forEach((t => { let [n, i] = t; return e.setAttribute(n, i) })) } function Ke(e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : e => e, i = 0, r = e.length && e.length - 1; const o = n(t); for (; r - i > 1;) { const t = i + Math.round((r - i) / 2); o > n(e[t]) ? i = t : r = t } for (; e.length > i && o > n(e[i]);)i++; return i } const Ye = function () { let e; return function () { if (void 0 !== e) return e; try { void 0 === window.CompressionStream ? e = !1 : (new window.CompressionStream("gzip"), e = !0) } catch (t) { e = !1 } return e } }(); async function Xe(e) { "string" != typeof e && (e = JSON.stringify(e)); const t = (new TextEncoder).encode(e), n = new Blob([t]).stream().pipeThrough(new window.CompressionStream("gzip")), i = await new Response(n).blob(), r = await i.arrayBuffer(); return new Uint8Array(r) } }, 894: (e, t, n) => { n.d(t, { BO: () => g, K7: () => p }); var i = n(272); const r = "performanceMetrics", o = window.performance && window.performance.now ? () => window.performance.now() : () => Date.now(), s = new WeakMap; function a() { let { now: e = o, mkNode: t = l, mkTimer: n = c, mkRenamer: i = (e => e), nodes: r = s } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return function () { return function o(s) { let a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : e => ({ forEach(t) { t(e) } }); a = i(a); const d = (c = "timestamps", function (e) { return s.dfWalk({ visit(t, n) { const i = n[c]; if (i.hasOwnProperty(e)) return i[e] } }) }); var c; function l(e, t) { const n = a(e); s.dfWalk({ follow: (e, t) => t.propagate && (!e || !e.stopPropagation), visit(e, i) { n.forEach((n => { null == e ? i.metrics[n] = t : (i.groups.hasOwnProperty(n) || (i.groups[n] = []), i.groups[n].push(t)) })) } }) } function u(t) { return n(e, (e => l(t, e))) } function f() { let e = {}; return s.dfWalk({ visit(t, n) { e = Object.assign({}, !t || t.includeGroups ? n.groups : null, n.metrics, e) } }), e } const g = { startTiming: u, measureTime: function (e, t) { return u(e).stopAfter(t)() }, measureHookTime: function (e, t, n) { const i = u(e); return n(function (e) { const t = i.stopBefore(e); return t.bail = e.bail && i.stopBefore(e.bail), t.stopTiming = i, t.untimed = e, t }(t)) }, checkpoint: function (t) { s.timestamps[t] = e() }, timeSince: function (t, n) { const i = d(t), r = null != i ? e() - i : null; return null != n && l(n, r), r }, timeBetween: function (e, t, n) { const i = d(e), r = d(t), o = null != i && null != r ? r - i : null; return null != n && l(n, o), o }, setMetric: l, getMetrics: f, fork: function () { let { propagate: e = !0, stopPropagation: n = !1, includeGroups: i = !1 } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return o(t([[s, { propagate: e, stopPropagation: n, includeGroups: i }]]), a) }, join: function (e) { let { propagate: t = !0, stopPropagation: n = !1, includeGroups: i = !1 } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const o = r.get(e); null != o && o.addParent(s, { propagate: t, stopPropagation: n, includeGroups: i }) }, newMetrics: function () { return o(s.newSibling(), a) }, renameWith: function (e) { return o(s, e) }, toJSON: () => f() }; return r.set(g, s), g }(t([])) } } function d(e, t, n) { return function () { t && t(); try { return e.apply(this, arguments) } finally { n && n() } } } function c(e, t) { const n = e(); let i = !1; function r() { i || (t(e() - n), i = !0) } return r.stopBefore = e => d(e, r), r.stopAfter = e => d(e, null, r), r } function l(e) { return { metrics: {}, timestamps: {}, groups: {}, addParent(t, n) { e.push([t, n]) }, newSibling: () => l(e.slice()), dfWalk() { let t, { visit: n, follow: i = (() => !0), visited: r = new Set, inEdge: o } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; if (!r.has(this)) { if (r.add(this), t = n(o, this), null != t) return t; for (const [s, a] of e) if (i(o, a) && (t = s.dfWalk({ visit: n, follow: i, visited: r, inEdge: a }), null != t)) return t } } } } const u = (() => { const e = function () { }, t = () => ({}), n = { forEach: e }, i = () => null; i.stopBefore = e => e, i.stopAfter = e => e; const r = Object.defineProperties({ dfWalk: e, newSibling: () => r, addParent: e }, Object.fromEntries(["metrics", "timestamps", "groups"].map((e => [e, { get: t }])))); return a({ now: () => 0, mkNode: () => r, mkRenamer: () => () => n, mkTimer: () => i, nodes: { get: e, set: e } })() })(); let f = !0; function g(e) { return f && e || u } i.$W.getConfig(r, (e => { f = !!e[r] })); const p = (() => { const e = a(); return function () { return f ? e() : u } })(); function h(e, t) { return function (n, i) { return function (r) { for (var o = arguments.length, s = new Array(o > 1 ? o - 1 : 0), a = 1; a < o; a++)s[a - 1] = arguments[a]; const d = this; return g(t.apply(d, s)).measureHookTime(e + n, r, (function (e) { return i.call(d, e, ...s) })) } } } h("requestBids.", (e => e.metrics)), h("addBidResponse.", ((e, t) => t.metrics)) }, 555: (e, t, n) => { n.d(t, { U9: () => o, v6: () => s }); var i = n(43), r = n(873); (0, r.m)().setTimeout ?? i.w; const o = (0, r.m)().Promise ?? i.k; function s() { let e, t, { promiseFactory: n = (e => new o(e)) } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; function i(e) { return t => e(t) } return { promise: n(((n, i) => { e = n, t = i })), resolve: i(e), reject: i(t) } } }, 713: (e, t, n) => { function i(e, t) { return e === t ? 0 : e < t ? -1 : 1 } function r() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : e => e; return (t, n) => i(e(t), e(n)) } function o() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : i; return (t, n) => -e(t, n) || 0 } function s() { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; return function (e, n) { for (const i of t) { const t = i(e, n); if (0 !== t) return t } return 0 } } function a() { return function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : i; return (t, n) => e(n, t) < 0 ? n : t }(o(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : i)) } n.d(t, { Bq: () => u, Vk: () => l }); const d = r((e => e.cpm)), c = r((e => e.responseTimestamp)), l = a(s(d, o(r((e => e.timeToRespond))))), u = a(s(d, o(c))); a(s(d, c)) }, 853: (e, t, n) => { n.d(t, { H: () => l }); var i = n(555), r = n(69); let o = null, s = 0, a = []; function d() { document.hidden ? o = Date.now() : (s += Date.now() - (o ?? 0), o = null, a.forEach((e => { let { callback: t, startTime: n, setTimerId: i } = e; return i(c(t, s - n)()) })), a = []) } function c(e, t) { const n = s; let i = setTimeout((() => { s === n && null == o ? e() : null != o ? a.push({ callback: e, startTime: n, setTimerId(e) { i = e } }) : i = c(e, s - n)() }), t); return () => i } function l() { let { startTime: e = r.vE, ttl: t = (() => null), monotonic: n = !1, slack: o = 5e3 } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const s = new Map, a = [], d = [], l = n ? e => d.push(e) : e => d.splice((0, r.El)(d, e, (e => e.expiry)), 0, e); let u, f; function g() { if (f && clearTimeout(f), d.length > 0) { const e = (0, r.vE)(); u = Math.max(e, d[0].expiry + o), f = c((() => { const e = (0, r.vE)(); let t = 0; for (const n of d) { if (n.expiry > e) break; a.forEach((e => { try { e(n.item) } catch (e) { (0, r.vV)(e) } })), s.delete(n.item), t++ } d.splice(0, t), f = null, g() }), u - e) } else f = null } function p(n) { const r = {}, s = h; let a; const [d, c] = Object.entries({ start: e, delta: t }).map((e => { let t, [d, c] = e; return function () { const e = t = {}; i.U9.resolve(c(n)).then((n => { e === t && (r[d] = n, s === h && null != r.start && null != r.delta && (a = r.start + r.delta, l(p), (null == f || u > a + o) && g())) })) } })), p = { item: n, refresh: c, get expiry() { return a } }; return d(), c(), p } let h = {}; return { [Symbol.iterator]: () => s.keys(), add(e) { !s.has(e) && s.set(e, p(e)) }, clear() { d.length = 0, g(), s.clear(), h = {} }, toArray: () => Array.from(s.keys()), refresh() { d.length = 0, g(); for (const e of s.values()) e.refresh() }, onExpiry: e => (a.push(e), () => { const t = a.indexOf(e); t >= 0 && a.splice(t, 1) }) } } document.addEventListener("visibilitychange", d) }, 895: (e, t, n) => { n.d(t, { H6: () => a, V0: () => c, Zy: () => d, aP: () => l, vk: () => u }); var i = n(69), r = n(272), o = n(214), s = n(881); const a = "outstream", d = new Map([["mimes", e => Array.isArray(e) && e.length > 0 && e.every((e => "string" == typeof e))], ["minduration", i.Fq], ["maxduration", i.Fq], ["startdelay", i.Fq], ["maxseq", i.Fq], ["poddur", i.Fq], ["protocols", i.Uu], ["w", i.Fq], ["h", i.Fq], ["podid", i.O8], ["podseq", i.Fq], ["rqddurs", i.Uu], ["placement", i.Fq], ["plcmt", i.Fq], ["linearity", i.Fq], ["skip", e => [1, 0].includes(e)], ["skipmin", i.Fq], ["skipafter", i.Fq], ["sequence", i.Fq], ["slotinpod", i.Fq], ["mincpmpersec", i.Et], ["battr", i.Uu], ["maxextended", i.Fq], ["minbitrate", i.Fq], ["maxbitrate", i.Fq], ["boxingallowed", i.Fq], ["playbackmethod", i.Uu], ["playbackend", i.Fq], ["delivery", i.Uu], ["pos", i.Fq], ["api", i.Uu], ["companiontype", i.Uu], ["poddedupe", i.Uu]]); function c(e) { const t = e?.mediaTypes?.video; null != t && null == t.plcmt && (t.context === a || [2, 3, 4].includes(t.placement) ? t.plcmt = 4 : t.context !== a && [2, 6].includes(t.playbackmethod) && (t.plcmt = 2)) } function l(e, t) { const n = e?.mediaTypes?.video; (0, i.Qd)(n) ? null != n && Object.entries(n).forEach((r => { let [o, s] = r; if (!d.has(o)) return; d.get(o)(s) || ("function" == typeof t ? t(o, s, e) : (delete n[o], (0, i.JE)(`Invalid prop in adUnit "${e.code}": Invalid value for mediaTypes.video.${o} ORTB property. The property has been removed.`))) })) : (0, i.JE)("validateOrtbVideoFields: videoParams must be an object.") } function u(e) { let { index: t = s.n.index } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const n = t.getMediaTypes(e)?.video, i = n && n?.context, r = n && n?.useCacheKey, o = t.getAdUnit(e); return f(e, o, n, i, r) } const f = (0, o.A_)("sync", (function (e, t, n, o, s) { if (n && (s || o !== a)) { const { url: t, useLocal: n } = r.$W.getConfig("cache") || {}; return t || n || !e.vastXml || e.vastUrl ? !(!e.vastUrl && !e.vastXml) : ((0, i.vV)('\n This bid contains only vastXml and will not work when a prebid cache url is not specified.\n Try enabling either prebid cache with pbjs.setConfig({ cache: {url: "..."} });\n or local cache with pbjs.setConfig({ cache: { useLocal: true }});\n '), !1) } return !(o === a && !s) || !!(e.renderer || t && t.renderer || n.renderer) }), "checkVideoBidSetup") } }]);
|
|
(self.pbjsChunk = self.pbjsChunk || []).push([[769], { 944: (t, e, n) => { n.d(e, { M: () => i }); var c = n(69); function i() { const t = (0, c.Ot)(); try { const e = t.innerHeight || t.document.documentElement.clientHeight || t.document.body.clientHeight || 0; return { width: t.innerWidth || t.document.documentElement.clientWidth || t.document.body.clientWidth || 0, height: e } } catch (t) { return {} } } } }]);
|
|
(self.pbjsChunk = self.pbjsChunk || []).push([[139], { 43: (t, e, n) => { n.d(e, { k: () => c, w: () => r }); const s = 0, l = 1; class c { #t; #e; constructor(t) { if ("function" != typeof t) throw new Error("resolver not a function"); const e = [], n = []; let [c, r] = [s, l].map((t => function (l) { if (t === s && "function" == typeof l?.then) l.then(c, r); else if (!e.length) for (e.push(t, l); n.length;)n.shift()() })); try { t(c, r) } catch (t) { r(t) } this.#t = e, this.#e = n } then(t, e) { const n = this.#t; return new this.constructor(((l, c) => { const r = () => { let r = n[1], [h, i] = n[0] === s ? [t, l] : [e, c]; if ("function" == typeof h) { try { r = h(r) } catch (t) { return void c(t) } i = l } i(r) }; n.length ? r() : this.#e.push(r) })) } catch(t) { return this.then(null, t) } finally(t) { let e; return this.then((n => (e = n, t())), (n => (e = this.constructor.reject(n), t()))).then((() => e)) } static #n(t, e, n) { let s = t.length; function l() { e.apply(this, arguments), --s <= 0 && n && n() } 0 === t.length && n ? n() : t.forEach(((t, e) => this.resolve(t).then((t => l(!0, t, e)), (t => l(!1, t, e))))) } static race(t) { return new this(((e, n) => { this.#n(t, ((t, s) => t ? e(s) : n(s))) })) } static all(t) { return new this(((e, n) => { let s = []; this.#n(t, ((t, e, l) => t ? s[l] = e : n(e)), (() => e(s))) })) } static allSettled(t) { return new this((e => { let n = []; this.#n(t, ((t, e, s) => n[s] = t ? { status: "fulfilled", value: e } : { status: "rejected", reason: e }), (() => e(n))) })) } static resolve(t) { return new this((e => e(t))) } static reject(t) { return new this(((e, n) => n(t))) } } function r(t) { let e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; if (e > 0) return setTimeout(t, e); t() } } }]);
|
|
(self.pbjsChunk = self.pbjsChunk || []).push([[85], { 595: (e, t, n) => { n.d(t, { G: () => s }); const s = '(()=>{"use strict";window.render=function({ad:e,adUrl:t,width:n,height:i,instl:d},{mkFrame:r},s){if(!e&&!t)throw{reason:"noAd",message:"Missing ad markup or URL"};{if(null==i){const e=s.document?.body;[e,e?.parentElement].filter((e=>null!=e?.style)).forEach((e=>e.style.height="100%"))}const h=s.document,o={width:n??"100%",height:i??"100%"};if(t&&!e?o.src=t:o.srcdoc=e,h.body.appendChild(r(h,o)),d&&s.frameElement){const e=s.frameElement.style;e.width=n?`${n}px`:"100vw",e.height=i?`${i}px`:"100vh"}}}})();' } }]);
|
|
(self.pbjsChunk = self.pbjsChunk || []).push([[498], { 620: (e, t, r) => { r.d(t, { A: () => m }); const n = new WeakMap; var i = r(69), s = r(371); var o = r(895); const a = { 1: s.D4, 2: s.G_, 4: s.s6 }; var d = r(0), p = r(858); const c = { [d.S3]: { fpd: { priority: 99, fn(e, t) { (0, i.D9)(e, t.ortb2) } }, onlyOneClient: { priority: -99, fn: (0, p.i8)("ORTB request") }, props: { fn(e, t) { Object.assign(e, { id: e.id || (0, i.lk)(), test: e.test || 0 }); const r = parseInt(t.timeout, 10); isNaN(r) || (e.tmax = r) } } }, [d.Tb]: { fpd: { priority: 99, fn(e, t) { (0, i.D9)(e, t.ortb2Imp) } }, id: { fn(e, t) { e.id = t.bidId } }, banner: { fn: function (e, t, r) { if (r.mediaType && r.mediaType !== s.D4) return; const n = t?.mediaTypes?.banner; if (n) { const r = { topframe: !0 === (0, i.al)() ? 0 : 1 }; n.sizes && null == t.ortb2Imp?.banner?.format && (r.format = (0, i.y$)(n.sizes).map(i.cf)), n.hasOwnProperty("pos") && (r.pos = n.pos), e.banner = (0, i.D9)(r, e.banner) } } }, pbadslot: { fn(e) { const t = e.ext?.data?.pbadslot; t && "string" == typeof t || delete e.ext?.data?.pbadslot } }, secure: { fn(e, t) { e.secure = e.secure ?? 1 } } }, [d.WR]: { mediaType: { priority: 99, fn: function (e, t, r) { if (e.mediaType) return; const n = r.mediaType; if (!n && !a.hasOwnProperty(t.mtype)) throw new Error("Cannot determine mediaType for response"); e.mediaType = n || a[t.mtype] } }, banner: { fn: function () { let { createPixel: e = (e => (0, i.Tz)(decodeURIComponent(e), i.Bk)) } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return function (t, r) { t.mediaType === s.D4 && (r.adm && r.nurl ? t.ad = e(r.nurl) + r.adm : r.adm ? t.ad = r.adm : r.nurl && (t.adUrl = r.nurl)) } }() }, props: { fn(e, t, r) { Object.entries({ requestId: r.bidRequest?.bidId, seatBidId: t.id, cpm: t.price, currency: r.ortbResponse.cur || r.currency, width: t.w, height: t.h, wratio: t.wratio, hratio: t.hratio, dealId: t.dealid, creative_id: t.crid, creativeId: t.crid, burl: t.burl, ttl: t.exp || r.ttl, netRevenue: r.netRevenue }).filter((e => { let [t, r] = e; return void 0 !== r })).forEach((t => { let [r, n] = t; return e[r] = n })), e.meta || (e.meta = {}), t.adomain && (e.meta.advertiserDomains = t.adomain), t.ext?.dsa && (e.meta.dsa = t.ext.dsa), t.cat && (e.meta.primaryCatId = t.cat[0], e.meta.secondaryCatIds = t.cat.slice(1)), t.attr && (e.meta.attr = t.attr), t.ext?.eventtrackers && (e.eventtrackers = (e.eventtrackers ?? []).concat(t.ext.eventtrackers)) } } } }; function u() { for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++)t[r] = arguments[r]; const n = t.shift(), i = t.length > 1 ? u(...t) : t[0]; return Object.fromEntries(d.zt.map((e => [e, Object.assign({}, n[e], i[e])]))) } function m() { let { context: e = {}, processors: t = f, overrides: r = {}, imp: s, request: o, bidResponse: a, response: p } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const c = new WeakMap; function u(e, i, s, o) { let a; return function () { return null == a && (a = function () { let a = s.bind(this, function (e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if (!n.has(e)) { const t = Object.entries(e); t.sort(((e, t) => (e = e[1].priority || 0) === (t = t[1].priority || 0) ? 0 : e > t ? -1 : 1)), n.set(e, t.map((e => { let [t, r] = e; return [t, r.fn] }))) } const r = n.get(e).filter((e => { let [r] = e; return !t.hasOwnProperty(r) || t[r] })).map((function (e) { let [r, n] = e; return t.hasOwnProperty(r) ? t[r].bind(this, n) : n })); return function () { const e = Array.from(arguments); r.forEach((t => { t.apply(this, e) })) } }(t()[e] || {}, r[e] || {})); return i && (a = i.bind(this, a)), function () { try { return a.apply(this, arguments) } catch (e) { o.call(this, e, ...arguments) } } }()), a.apply(this, arguments) } } const m = u(d.Tb, s, (function (e, t, r) { const n = {}; return e(n, t, r), n }), (function (e, t, r) { (0, i.vV)("Error while converting bidRequest to ORTB imp; request skipped.", { error: e, bidRequest: t, context: r }) })), l = u(d.S3, o, (function (e, t, r, n) { const i = { imp: t }; return e(i, r, n), i }), (function (e, t, r, n) { throw (0, i.vV)("Error while converting to ORTB request", { error: e, imps: t, bidderRequest: r, context: n }), e })), b = u(d.WR, a, (function (e, t, r) { const n = {}; return e(n, t, r), n }), (function (e, t, r) { (0, i.vV)("Error while converting ORTB seatbid.bid to bidResponse; bid skipped.", { error: e, bid: t, context: r }) })), y = u(d.Cf, p, (function (e, t, r, n) { const i = { bids: t }; return e(i, r, n), i }), (function (e, t, r, n) { throw (0, i.vV)("Error while converting from ORTB response", { error: e, bidResponses: t, ortbResponse: r, context: n }), e })); return { toORTB(t) { let { bidderRequest: r, bidRequests: n, context: s = {} } = t; n = n || r.bids; const o = { req: Object.assign({ bidRequests: n }, e, s), imp: {} }; o.req.impContext = o.imp; const a = n.map((t => { const n = Object.assign({ bidderRequest: r, reqContext: o.req }, e, s), a = m(t, n); if (null != a) { if (a.hasOwnProperty("id")) return Object.assign(n, { bidRequest: t, imp: a }), o.imp[a.id] = n, a; (0, i.vV)("Converted ORTB imp does not specify an id, ignoring bid request", t, a) } })).filter(Boolean), d = l(a, r, o.req); return o.req.bidderRequest = r, null != d && c.set(d, o), d }, fromORTB(e) { let { request: t, response: r } = e; const n = c.get(t); if (null == n) throw new Error("ortbRequest passed to `fromORTB` must be the same object returned by `toORTB`"); function s(e) { let r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return Object.assign(e, { ortbRequest: t }, r) } const o = Object.fromEntries((t.imp || []).map((e => [e.id, e]))), a = (r.seatbid || []).flatMap((e => (e.bid || []).map((t => { if (o.hasOwnProperty(t.impid) && n.imp.hasOwnProperty(t.impid)) return b(t, s(n.imp[t.impid], { imp: o[t.impid], seatbid: e, ortbResponse: r })); (0, i.vV)("ORTB response seatbid[].bid[].impid does not match any imp in request; ignoring bid", t) })))).filter(Boolean); return y(a, r, s(n.req)) } } } c[d.Tb].native = { fn: function (e, t, r) { if (r.mediaType && r.mediaType !== s.s6) return; let n = t.nativeOrtbRequest; n && (n = Object.assign({}, r.nativeRequest, n), n.assets?.length ? e.native = (0, i.D9)({}, { request: JSON.stringify(n), ver: n.ver }, e.native) : (0, i.JE)("mediaTypes.native is set, but no assets were specified. Native request skipped.", t)) } }, c[d.WR].native = { fn: function (e, t) { if (e.mediaType === s.s6) { let r; if (r = "string" == typeof t.adm ? JSON.parse(t.adm) : t.adm, !(0, i.Qd)(r) || !Array.isArray(r.assets)) throw new Error("ORTB native response contained no assets"); e.native = { ortb: r } } } }, c[d.Tb].video = { fn: function (e, t, r) { if (r.mediaType && r.mediaType !== s.G_) return; const n = t?.mediaTypes?.video; if (!(0, i.Im)(n)) { const t = Object.fromEntries(Object.entries(n).filter((e => { let [t] = e; return o.Zy.has(t) }))); if (n.playerSize) { const e = (0, i.y$)(n.playerSize).map(i.cf); e.length > 1 && (0, i.JE)("video request specifies more than one playerSize; all but the first will be ignored"), Object.assign(t, e[0]) } e.video = (0, i.D9)(t, e.video) } } }, c[d.WR].video = { fn: function (e, t, r) { e.mediaType === s.G_ && (r?.imp?.video?.w && r?.imp?.video?.h && ([e.playerWidth, e.playerHeight] = [r.imp.video.w, r.imp.video.h]), t.adm && (e.vastXml = t.adm), t.nurl && (e.vastUrl = t.nurl)) } }; const f = (0, i.Bj)((() => u(c, (0, d.yB)(d.qN)))) } }]);
|
|
(self.pbjsChunk = self.pbjsChunk || []).push([[259], { 223: (e, t, n) => { function r() { const e = navigator.connection || navigator.webkitConnection; if (!e) return 0; switch (e.type) { case "ethernet": return 1; case "wifi": return 2; case "wimax": return 6; default: switch (e.effectiveType) { case "slow-2g": case "2g": return 4; case "3g": return 5; case "4g": return 6; case "5g": return 7; default: return "cellular" == e.type ? 3 : 0 } } } n.d(t, { Z: () => r }) } }]);
|
|
(self.pbjsChunk = self.pbjsChunk || []).push([[807], { 773: (e, t, n) => { var s = n(873), r = n(272), o = n(115), i = n(69), d = n(172), a = n(433), p = n(371), u = n(620), c = n(223); const l = "roockmobile", g = [p.D4, p.G_, p.s6], b = "https://jstag.api.cqsjd.xyz/pbjs", m = { code: l, gvlid: 0, supportedMediaTypes: g, isBidRequestValid: function (e) { let t = e.params; return !("string" != typeof t.slot || "" === t.slot) || !("string" != typeof t.mid || "" === t.mid) || !("string" != typeof t.token || "" === t.token) }, buildRequests: function (e, t) { const n = f.toORTB({ bidRequests: e, bidderRequest: t, context: { mediaType: h(e[0].mediaTypes) } }); return { method: "POST", url: y(e[0]), data: n, bidderRequest: t, options: {} } }, interpretResponse: function (e, t) { e.body || (e.body = { nbr: 0 }); return f.fromORTB({ request: t.data, response: e.body }) }, getUserSyncs: function (e, t, n, s) { if (e.iframeEnabled || e.pixelEnabled) { let r = e.iframeEnabled ? "iframe" : "image", o = [], i = "https://jstag.api.cqsjd.xyz/test"; if (n && (o.push("gdpr=" + (n.gdprApplies ? 1 : 0)), o.push("gdpr_consent=" + encodeURIComponent(n.consentString || ""))), s && o.push("us_privacy=" + encodeURIComponent(s)), t.length > 0 && t[0].body && t[0].body.ext) { const e = t[0].body.ext; e.delDomain ? i = `https://${e.delDomain}/w/1.0/pd` : e.platform && o.push("ph=" + e.platform) } else o.push("ph="); return [{ type: r, url: `${i}${o.length > 0 ? "?" + o.join("&") : ""}` }] } } }; (0, o.a$)(m); const f = (0, u.A)({ context: { netRevenue: !0, ttl: 300, nativeRequest: { eventtrackers: [{ event: 1, methods: [1, 2] }] } }, imp(e, t, n) { const s = e(t, n); return s.hasOwnProperty("banner") || s.hasOwnProperty("video") || s.hasOwnProperty("native") ? (function (e, t, n) { e.tagid = t.params.slot, t.params?.bidfloor > 0 && (e.bidfloor = t.params.bidfloor); if (e.bidFloorCur = "USD", i.D9(e.ext, { domid: t.adUnitCode }), e.hasOwnProperty("banner")) { const { w: t, h: n } = e.banner?.format[0]; e.banner.w = t, e.banner.h = n } if (e.hasOwnProperty("video") && t.mediaTypes.video) { let n = t.mediaTypes.video?.playerSize[0]; e.video.w = n[0] || 640, e.video.h = n[1] || 480 } }(s, t), s) : null }, request(e, t, n, s) { const o = e(t, n, s); i.D9(o, { at: 1, cur: ["USD"], ext: { roockprebid: { ver: `${l}_1.0.0`, pv: "9.50.0" } } }), function (e, t) { e.regs || (e.regs = {}); t.gdprConsent && "boolean" == typeof t.gdprConsent.gdprApplies && d.J(e.regs, "ext.gdpr", t.gdprConsent.gdprApplies ? 1 : 0); t.uspConsent && d.J(e.regs, "ext.us_privacy", t.uspConsent); !0 === r.$W.getConfig("coppa") && (e.regs.coppa = 1) }(o, n), function (e, t) { e.user || (e.user = { id: "" }); t.gdprConsent && d.J(e.user, "ext.consent", t.gdprConsent.consentString); i.O8(a.A(t, "bids.0.userId.tdid")) && (e.user.buyeruid = t.bids[0].userId.tdid); var n = a.A(t, "bids.0.userIdAsEids"); n && n.length && d.J(e.user, "ext.eids", n) }(o, n), function (e, t) { e.device || (e.device = {}); const n = navigator.language || navigator.browserLanguage || navigator.userLanguage || navigator.systemLanguage; i.D9(e.device, { js: 1, dnt: i.l9() ? 1 : 0, language: n, connectiontype: (0, c.Z)() }) }(o), function (e, t) { e.site || (e.site = {}); e.site?.publisher ? e.site.publisher.id = t.bids[0].params?.mid : e.site.publisher = { id: t.bids[0].params?.mid, domain: a.A(t, "refererInfo.domain") } }(o, n); const p = n.bids[0]; return 1 === p.params?.test && (o.test = 1), o }, bidResponse(e, t, n) { let s = (0, a.A)(t, "ext.mtype"); if (g.includes(s) && (n.mediaType = s), s === p.D4) { const e = (0, a.A)(n.imp, "banner.w"), s = (0, a.A)(n.imp, "banner.h"); e > 0 && s > 0 && (t.w > e || t.w > s) && (t.w = e, t.h = s) } const r = e(t, n); return t.ext && (r.meta.dspid = t.ext?.rm_acc), r }, response: (e, t, n, s) => e(t, n, s), overrides: {} }); function y(e) { let { endpoint: t, mid: n, token: s } = e.params; return (t || b) + "?mid=" + n + "&token=" + s } function h(e) { return e.video ? p.G_ : e.banner ? p.D4 : e.native ? p.s6 : "unknown" } (0, s.E)("roockmobileBidAdapter") } }, e => { e.O(0, [802, 498, 259, 769, 139, 85], (() => { return t = 773, e(e.s = t); var t })); e.O() }]);
|
|
})(), pbjs.processQueue(); |