@optable/web-sdk 0.60.0 → 0.61.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -0
- package/browser/dist/sdk.js +1 -1
- package/lib/dist/build.json +1 -1
- package/lib/dist/config.d.ts +2 -0
- package/lib/dist/config.js +1 -0
- package/lib/dist/core/log.d.ts +2 -1
- package/lib/dist/core/log.js +7 -1
- package/lib/dist/core/network.js +21 -3
- package/lib/dist/core/ois.d.ts +13 -0
- package/lib/dist/core/ois.js +55 -0
- package/lib/dist/core/storage-keys.d.ts +2 -1
- package/lib/dist/core/storage-keys.js +7 -1
- package/lib/dist/core/storage.d.ts +5 -0
- package/lib/dist/core/storage.js +14 -1
- package/lib/dist/sdk.d.ts +6 -2
- package/lib/dist/sdk.js +29 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -46,6 +46,11 @@ JavaScript SDK for integrating with an [Optable Data Connectivity Node (DCN)](ht
|
|
|
46
46
|
- [Insert oeid into your Email newsletter template](#insert-oeid-into-your-email-newsletter-template)
|
|
47
47
|
- [Call tryIdentifyFromParams SDK API](#call-tryidentifyfromparams-sdk-api)
|
|
48
48
|
- [Passport and Visitor ID](#passport-and-visitor-id)
|
|
49
|
+
- [Optable Identity System (OIS)](#optable-identity-system-ois)
|
|
50
|
+
- [The cookie identity needs no SDK code](#the-cookie-identity-needs-no-sdk-code)
|
|
51
|
+
- [The derived identity is what the SDK holds](#the-derived-identity-is-what-the-sdk-holds)
|
|
52
|
+
- [Reading the stored ID](#reading-the-stored-id)
|
|
53
|
+
- [How it travels](#how-it-travels)
|
|
49
54
|
- [QA and debug flags](#qa-and-debug-flags)
|
|
50
55
|
- [Multi-Node Targeting Resolver](#multi-node-targeting-resolver)
|
|
51
56
|
- [Usage](#usage)
|
|
@@ -168,6 +173,9 @@ When creating an instance of `OptableSDK`, you can pass an `InitConfig` object t
|
|
|
168
173
|
- **`forwardSignals` (boolean, default: `false`)**
|
|
169
174
|
When set to `true`, forwards soft device/browser signals (language, timezone, screen size, device memory, CPU cores) to the DCN in a `sig` request parameter. Also requires device access consent, so it is a no-op when consent is not granted. A signal the browser does not expose is omitted rather than sent empty.
|
|
170
175
|
|
|
176
|
+
- **`ois` (boolean, default: `false`)**
|
|
177
|
+
When set to `true`, participates in the [Optable Identity System](#optable-identity-system-ois): the SDK stores the derived OIS ID the DCN returns on the `X-Optable-OID` response header and replays it on subsequent requests, so the DCN recognizes the browser instead of deriving a new identity each visit. Pair it with `forwardSignals: true`, which sends the signals the identity is derived from. Requires a DCN node with OIS ID derivation enabled and device access consent, so it is a no-op otherwise. The `OPTABLE_OID` cookie identity is separate and needs no configuration.
|
|
178
|
+
|
|
171
179
|
These configurations allow fine-tuned control over how the `OptableSDK` interacts with the Optable DCN, ensuring compatibility with different environments and privacy settings.
|
|
172
180
|
|
|
173
181
|
## Usage Example
|
|
@@ -1118,6 +1126,79 @@ If the returned value is `null`, the SDK logs a one-time warning per instance to
|
|
|
1118
1126
|
1. The method was called before the passport was cached (e.g. before `sdk.site()` resolved).
|
|
1119
1127
|
2. The DCN is configured to not echo the passport in response bodies, in which case the client-side cache is never populated.
|
|
1120
1128
|
|
|
1129
|
+
## Optable Identity System (OIS)
|
|
1130
|
+
|
|
1131
|
+
The Optable Identity System is a cross-tenant identity system. On a DCN node configured to use it, the OIS ID replaces the [visitor ID](#passport-and-visitor-id) as the canonical profile identifier for collected events — the DCN makes that substitution itself, based on the node's identity selector.
|
|
1132
|
+
|
|
1133
|
+
An OIS-enabled node recognizes a browser two ways, and only one of them involves the SDK.
|
|
1134
|
+
|
|
1135
|
+
### The cookie identity needs no SDK code
|
|
1136
|
+
|
|
1137
|
+
The DCN sets an `OPTABLE_OID` cookie and the browser attaches it to every call on its own, so `identify()` and `profile()` are already attributed to it with nothing enabled client-side.
|
|
1138
|
+
|
|
1139
|
+
That cookie is `HttpOnly` and scoped to `optable.co`, which has two consequences worth knowing. Its value is never readable from JavaScript — not via `document.cookie`, and not from the response, because `Set-Cookie` is a forbidden response header name. And because it is a third-party cookie for a publisher page, it is dropped wherever cross-site cookies are blocked (Safari/ITP, Firefox ETP, Chrome's third-party cookie restrictions) — a different problem from the first-party eTLD+1 case described under [Domains and Cookies](#domains-and-cookies), and one a publisher cannot configure away. When that happens the DCN cannot recognize the browser from the cookie, and the derived identity below is what carries it instead. The SDK cannot bridge that gap: if the browser is willing to send the cookie it is already doing so, and if it is not, there is nothing to forward.
|
|
1140
|
+
|
|
1141
|
+
### The derived identity is what the SDK holds
|
|
1142
|
+
|
|
1143
|
+
The DCN derives this identity from the device signals sent in the `sig` parameter and returns it on the `X-Optable-OID` response header. With `ois: true` the SDK stores it and replays it on the same header, so the DCN recognizes the browser rather than deriving a fresh identity on every visit.
|
|
1144
|
+
|
|
1145
|
+
```javascript
|
|
1146
|
+
const sdk = new OptableSDK({
|
|
1147
|
+
host: "dcn.customer.com",
|
|
1148
|
+
site: "my-site",
|
|
1149
|
+
ois: true,
|
|
1150
|
+
// The identity is derived from these signals, so without them there is
|
|
1151
|
+
// nothing to derive it from.
|
|
1152
|
+
forwardSignals: true,
|
|
1153
|
+
});
|
|
1154
|
+
```
|
|
1155
|
+
|
|
1156
|
+
Or with a script tag:
|
|
1157
|
+
|
|
1158
|
+
```html
|
|
1159
|
+
<script type="text/javascript">
|
|
1160
|
+
window.optable = window.optable || { cmd: [] };
|
|
1161
|
+
|
|
1162
|
+
optable.cmd.push(function () {
|
|
1163
|
+
optable.instance = new optable.SDK({
|
|
1164
|
+
host: "dcn.customer.com",
|
|
1165
|
+
site: "my-site",
|
|
1166
|
+
ois: true,
|
|
1167
|
+
forwardSignals: true,
|
|
1168
|
+
});
|
|
1169
|
+
});
|
|
1170
|
+
</script>
|
|
1171
|
+
<script async src="https://cdn.optable.co/web-sdk/vX.Y.Z/sdk.js"></script>
|
|
1172
|
+
```
|
|
1173
|
+
|
|
1174
|
+
> :warning: **Requires DCN support.** The node must have OIS ID derivation enabled and must expose `X-Optable-OID` to the browser. The DCN also only derives the identity for requests from a residential IP, so a VPN, datacenter or office IP returns no header. On a node without it the option is inert.
|
|
1175
|
+
|
|
1176
|
+
### Reading the stored ID
|
|
1177
|
+
|
|
1178
|
+
```javascript
|
|
1179
|
+
const id = sdk.oisId(); // string | null — the stored derived OIS ID
|
|
1180
|
+
const state = sdk.oisState(); // { id, storageKey }
|
|
1181
|
+
sdk.oisClear(); // forget it; the DCN returns a fresh derivation on the next call
|
|
1182
|
+
```
|
|
1183
|
+
|
|
1184
|
+
The SDK dispatches an `optable-ois:change` event on `window` whenever the stored ID changes, so a page can react without polling:
|
|
1185
|
+
|
|
1186
|
+
```javascript
|
|
1187
|
+
window.addEventListener("optable-ois:change", (e) => console.log(e.detail));
|
|
1188
|
+
```
|
|
1189
|
+
|
|
1190
|
+
`oisId()` returns `null` until a response has returned an ID. Unlike `passport()`, that does **not** happen during initialization: `/config` derives no identity, so the first ID arrives on the first `identify()` or `profile()` call.
|
|
1191
|
+
|
|
1192
|
+
### How it travels
|
|
1193
|
+
|
|
1194
|
+
The ID is cached in `localStorage` under `OPTABLE_OIS_<base64(host[/node])>` as an opaque string, and sent back on `X-Optable-OID`.
|
|
1195
|
+
|
|
1196
|
+
Both directions are limited to the endpoints where the DCN derives an identity: `/identify`, `/uid2/token` and `/profile`. It is deliberately absent from `/config` — a custom header makes a request non-simple, and adding a CORS preflight to the SDK's initialization path would cost a round trip on every page load for an endpoint that returns no ID anyway — and from `/witness`, where the DCN records an event without deriving one.
|
|
1197
|
+
|
|
1198
|
+
There is no write policy to reason about. The DCN returns the identity it derived for the _current_ request rather than the one the client replayed, so as those signals drift (a new IP subnet, a browser upgrade, a resized window) the stored value simply rolls forward. The SDK stores whatever the last response returned.
|
|
1199
|
+
|
|
1200
|
+
Nothing is stored and no header is sent without device access consent, so the option is a no-op when consent has not been granted.
|
|
1201
|
+
|
|
1121
1202
|
## QA and debug flags
|
|
1122
1203
|
|
|
1123
1204
|
Flags are per-session overrides for exercising SDK behaviour that is otherwise decided automatically — forcing a split-test variant, bypassing consent, turning on verbose logging. They are set from the page URL and read back through `getFlags()`.
|
|
@@ -1304,3 +1385,5 @@ docker-compose up
|
|
|
1304
1385
|
Then head to [https://localhost:8180/](localhost:8180) to see the demo pages. You can modify the code in each demo, then run `make build` and finally refresh the demo pages to see your changes take effect. If you want to test the demos with your own DCN, make sure to update the configuration (hostname and site slug) given to the OptableSDK (see `webpack.config.js` for the react example).
|
|
1305
1386
|
|
|
1306
1387
|
Note that using HTTP first-party cookies with a local instance of the demos pages pointing to an Optable DCN will not work because [https://localhost:8180/](localhost:8180) does not share the same top-level domain name `.optable.co`. We recommend using [LocalStorage](https://github.com/Optable/optable-web-sdk#localstorage) instead.
|
|
1388
|
+
|
|
1389
|
+
The [Optable Identity System](#optable-identity-system-ois) demo (`/vanilla/ois.html`, or `/vanilla/nocookies/ois.html`) covers both OIS identities: it explains why the `OPTABLE_OID` cookie identity is invisible to JavaScript, and shows the derived OIS ID the DCN returned, the `localStorage` key holding it, the decoded `sig` signals it was derived from, and the `X-Optable-OID` header sent and received on each call. It needs a DCN node with OIS ID derivation enabled, and only produces an ID for requests from a residential IP.
|
package/browser/dist/sdk.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see sdk.js.LICENSE.txt */
|
|
2
|
-
(()=>{var e={129(){},432(){},704(e){e.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0});t.push(0);var r=t[0],n=t[1];if(10===r)switch(n){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}switch(r){case 11:return"Big Sur";case 12:return"Monterey";case 13:return"Ventura";case 14:return"Sonoma";case 15:return"Sequoia";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0});if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),o=e.getVersionPrecision(r),s=Math.max(i,o),a=0,c=e.map([t,r],function(t){var r=s-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),function(e){return new Array(20-e.length).join("0")+e}).reverse()});for(n&&(a=s-Math.min(i,o)),s-=1;s>=a;){if(c[0][s]>c[1][s])return 1;if(c[0][s]===c[1][s]){if(s===a)return 0;s-=1}else if(c[0][s]<c[1][s])return-1}},e.map=function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n},e.find=function(e,t){var r,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,n=e.length;r<n;r+=1){var i=e[r];if(t(i,r))return i}},e.assign=function(e){for(var t,r,n=e,i=arguments.length,o=new Array(i>1?i-1:0),s=1;s<i;s++)o[s-1]=arguments[s];if(Object.assign)return Object.assign.apply(Object,[e].concat(o));var a=function(){var e=o[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach(function(t){n[t]=e[t]})};for(t=0,r=o.length;t<r;t+=1)a();return e},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||""},e}();t.default=i,e.exports=t.default},18:function(e,t,r){"use strict";t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0,t.BROWSER_ALIASES_MAP={AmazonBot:"amazonbot","Amazon Silk":"amazon_silk","Android Browser":"android",BaiduSpider:"baiduspider",Bada:"bada",BingCrawler:"bingcrawler",Brave:"brave",BlackBerry:"blackberry","ChatGPT-User":"chatgpt_user",Chrome:"chrome",ClaudeBot:"claudebot",Chromium:"chromium",Diffbot:"diffbot",DuckDuckBot:"duckduckbot",DuckDuckGo:"duckduckgo",Electron:"electron",Epiphany:"epiphany",FacebookExternalHit:"facebookexternalhit",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot",GPTBot:"gptbot","Internet Explorer":"ie",InternetArchiveCrawler:"internetarchivecrawler","K-Meleon":"k_meleon",LibreWolf:"librewolf",Linespider:"linespider",Maxthon:"maxthon","Meta-ExternalAds":"meta_externalads","Meta-ExternalAgent":"meta_externalagent","Meta-ExternalFetcher":"meta_externalfetcher","Meta-WebIndexer":"meta_webindexer","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver","OAI-SearchBot":"oai_searchbot",Omgilibot:"omgilibot",Opera:"opera","Opera Coast":"opera_coast","Pale Moon":"pale_moon",PerplexityBot:"perplexitybot","Perplexity-User":"perplexity_user",PhantomJS:"phantomjs",PingdomBot:"pingdombot",Puffin:"puffin",QQ:"qq",QQLite:"qqlite",QupZilla:"qupzilla",Roku:"roku",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SlackBot:"slackbot",SeaMonkey:"seamonkey",Sleipnir:"sleipnir","Sogou Browser":"sogou",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat",YahooSlurp:"yahooslurp","Yandex Browser":"yandex",YandexBot:"yandexbot",YouBot:"youbot"},t.BROWSER_MAP={amazonbot:"AmazonBot",amazon_silk:"Amazon Silk",android:"Android Browser",baiduspider:"BaiduSpider",bada:"Bada",bingcrawler:"BingCrawler",blackberry:"BlackBerry",brave:"Brave",chatgpt_user:"ChatGPT-User",chrome:"Chrome",claudebot:"ClaudeBot",chromium:"Chromium",diffbot:"Diffbot",duckduckbot:"DuckDuckBot",duckduckgo:"DuckDuckGo",edge:"Microsoft Edge",electron:"Electron",epiphany:"Epiphany",facebookexternalhit:"FacebookExternalHit",firefox:"Firefox",focus:"Focus",generic:"Generic",google_search:"Google Search",googlebot:"Googlebot",gptbot:"GPTBot",ie:"Internet Explorer",internetarchivecrawler:"InternetArchiveCrawler",k_meleon:"K-Meleon",librewolf:"LibreWolf",linespider:"Linespider",maxthon:"Maxthon",meta_externalads:"Meta-ExternalAds",meta_externalagent:"Meta-ExternalAgent",meta_externalfetcher:"Meta-ExternalFetcher",meta_webindexer:"Meta-WebIndexer",mz:"MZ Browser",naver:"NAVER Whale Browser",oai_searchbot:"OAI-SearchBot",omgilibot:"Omgilibot",opera:"Opera",opera_coast:"Opera Coast",pale_moon:"Pale Moon",perplexitybot:"PerplexityBot",perplexity_user:"Perplexity-User",phantomjs:"PhantomJS",pingdombot:"PingdomBot",puffin:"Puffin",qq:"QQ Browser",qqlite:"QQ Browser Lite",qupzilla:"QupZilla",roku:"Roku",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",slackbot:"SlackBot",sleipnir:"Sleipnir",sogou:"Sogou Browser",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yahooslurp:"YahooSlurp",yandex:"Yandex Browser",yandexbot:"YandexBot",youbot:"YouBot"},t.PLATFORMS_MAP={bot:"bot",desktop:"desktop",mobile:"mobile",tablet:"tablet",tv:"tv"},t.OS_MAP={Android:"Android",Bada:"Bada",BlackBerry:"BlackBerry",ChromeOS:"Chrome OS",HarmonyOS:"HarmonyOS",iOS:"iOS",Linux:"Linux",MacOS:"macOS",PlayStation4:"PlayStation 4",Roku:"Roku",Tizen:"Tizen",WebOS:"WebOS",Windows:"Windows",WindowsPhone:"Windows Phone"},t.ENGINE_MAP={Blink:"Blink",EdgeHTML:"EdgeHTML",Gecko:"Gecko",Presto:"Presto",Trident:"Trident",WebKit:"WebKit"}},90:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,i=(n=r(91))&&n.__esModule?n:{default:n},o=r(18);function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var a=function(){function e(){}var t,r;return e.getParser=function(e,t,r){if(void 0===t&&(t=!1),void 0===r&&(r=null),"string"!=typeof e)throw new Error("UserAgent should be a string");return new i.default(e,t,r)},e.parse=function(e,t){return void 0===t&&(t=null),new i.default(e,t).getResult()},t=e,r=[{key:"BROWSER_MAP",get:function(){return o.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return o.ENGINE_MAP}},{key:"OS_MAP",get:function(){return o.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return o.PLATFORMS_MAP}}],null&&s(t.prototype,null),r&&s(t,r),e}();t.default=a,e.exports=t.default},91:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n=c(r(92)),i=c(r(93)),o=c(r(94)),s=c(r(95)),a=c(r(17));function c(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t,r){if(void 0===t&&(t=!1),void 0===r&&(r=null),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e;var n=!1;"boolean"==typeof t?(n=t,this._hints=r):this._hints=null!=t&&"object"==typeof t?t:null,this.parsedResult={},!0!==n&&this.parse()}var t=e.prototype;return t.getHints=function(){return this._hints},t.hasBrand=function(e){if(!this._hints||!Array.isArray(this._hints.brands))return!1;var t=e.toLowerCase();return this._hints.brands.some(function(e){return e.brand&&e.brand.toLowerCase()===t})},t.getBrandVersion=function(e){if(this._hints&&Array.isArray(this._hints.brands)){var t=e.toLowerCase(),r=this._hints.brands.find(function(e){return e.brand&&e.brand.toLowerCase()===t});return r?r.version:void 0}},t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=a.default.find(n.default,function(t){if("function"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.browser=t.describe(this.getUA(),this)),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=a.default.find(i.default,function(t){if("function"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=a.default.find(o.default,function(t){if("function"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=a.default.find(s.default,function(t){if("function"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return a.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},n=0,i={},o=0;if(Object.keys(e).forEach(function(t){var s=e[t];"string"==typeof s?(i[t]=s,o+=1):"object"==typeof s&&(r[t]=s,n+=1)}),n>0){var s=Object.keys(r),c=a.default.find(s,function(e){return t.isOS(e)});if(c){var d=this.satisfies(r[c]);if(void 0!==d)return d}var u=a.default.find(s,function(e){return t.isPlatform(e)});if(u){var l=this.satisfies(r[u]);if(void 0!==l)return l}}if(o>0){var f=Object.keys(i),h=a.default.find(f,function(e){return t.isBrowser(e,!0)});if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=a.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(a.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some(function(e){return t.is(e)})},e}();t.default=d,e.exports=t.default},92:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/gptbot/i],describe:function(e){var t={name:"GPTBot"},r=i.default.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chatgpt-user/i],describe:function(e){var t={name:"ChatGPT-User"},r=i.default.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/oai-searchbot/i],describe:function(e){var t={name:"OAI-SearchBot"},r=i.default.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(e){var t={name:"ClaudeBot"},r=i.default.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(e){var t={name:"Omgilibot"},r=i.default.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/diffbot/i],describe:function(e){var t={name:"Diffbot"},r=i.default.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/perplexitybot/i],describe:function(e){var t={name:"PerplexityBot"},r=i.default.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/perplexity-user/i],describe:function(e){var t={name:"Perplexity-User"},r=i.default.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/youbot/i],describe:function(e){var t={name:"YouBot"},r=i.default.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-webindexer/i],describe:function(e){var t={name:"Meta-WebIndexer"},r=i.default.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-externalads/i],describe:function(e){var t={name:"Meta-ExternalAds"},r=i.default.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-externalagent/i],describe:function(e){var t={name:"Meta-ExternalAgent"},r=i.default.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-externalfetcher/i],describe:function(e){var t={name:"Meta-ExternalFetcher"},r=i.default.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/linespider/i],describe:function(e){var t={name:"Linespider"},r=i.default.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/amazonbot/i],describe:function(e){var t={name:"AmazonBot"},r=i.default.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/bingbot/i],describe:function(e){var t={name:"BingCrawler"},r=i.default.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/baiduspider/i],describe:function(e){var t={name:"BaiduSpider"},r=i.default.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/duckduckbot/i],describe:function(e){var t={name:"DuckDuckBot"},r=i.default.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ia_archiver/i],describe:function(e){var t={name:"InternetArchiveCrawler"},r=i.default.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{name:"FacebookExternalHit"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(e){var t={name:"SlackBot"},r=i.default.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/yahoo!?[\s/]*slurp/i],describe:function(){return{name:"YahooSlurp"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{name:"YandexBot"}}},{test:[/pingdom/i],describe:function(){return{name:"PingdomBot"}}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/PaleMoon/i],describe:function(e){var t={name:"Pale Moon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:PaleMoon)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/librewolf/i],describe:function(e){var t={name:"LibreWolf"},r=i.default.getFirstMatch(/(?:librewolf)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sogoumobilebrowser/i,/metasr/i,/se 2\.[x]/i],describe:function(e){var t={name:"Sogou Browser"},r=i.default.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i,e),n=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e),o=i.default.getFirstMatch(/se ([\d.]+)x/i,e),s=r||n||o;return s&&(t.version=s),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return!!e.hasBrand("DuckDuckGo")||e.test(/\sDdg\/[\d.]+$/i)},describe:function(e,t){var r={name:"DuckDuckGo"};if(t){var n=t.getBrandVersion("DuckDuckGo");if(n)return r.version=n,r}var o=i.default.getFirstMatch(/\sDdg\/([\d.]+)$/i,e);return o&&(r.version=o),r}},{test:function(e){return e.hasBrand("Brave")},describe:function(e,t){var r={name:"Brave"};if(t){var n=t.getBrandVersion("Brave");if(n)return r.version=n,r}return r}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=s,e.exports=t.default},93:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:o.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:o.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:o.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:o.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:t}}},{test:[/OpenHarmony/i],describe:function(e){var t=i.default.getFirstMatch(/OpenHarmony\s+(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.HarmonyOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:o.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:o.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:o.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.PlayStation4,version:t}}}];t.default=s,e.exports=t.default},94:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/googlebot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Google"}}},{test:[/linespider/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Line"}}},{test:[/amazonbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Amazon"}}},{test:[/gptbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/chatgpt-user/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/oai-searchbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/baiduspider/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Baidu"}}},{test:[/bingbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Bing"}}},{test:[/duckduckbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"DuckDuckGo"}}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Anthropic"}}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Webz.io"}}},{test:[/diffbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Diffbot"}}},{test:[/perplexitybot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/perplexity-user/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/youbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"You.com"}}},{test:[/ia_archiver/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Internet Archive"}}},{test:[/meta-webindexer/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalads/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalagent/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalfetcher/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Slack"}}},{test:[/yahoo/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Yahoo"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Yandex"}}},{test:[/pingdom/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Pingdom"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/Nokia/i],describe:function(e){var t=i.default.getFirstMatch(/Nokia\s+([0-9]+(\.[0-9]+)?)/i,e),r={type:o.PLATFORMS_MAP.mobile,vendor:"Nokia"};return t&&(r.model=t),r}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:[/smart-?tv|smarttv/i],describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:[/netcast/i],describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];t.default=s,e.exports=t.default},95:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:o.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:o.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:o.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:o.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:o.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:o.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=s,e.exports=t.default}})},966(e,t,r){var n;!function(){"use strict";var t="input is invalid type",i="object"==typeof window,o=i?window:{};o.JS_SHA256_NO_WINDOW&&(i=!1);var s=!i&&"object"==typeof self,a=!o.JS_SHA256_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node&&"renderer"!=process.type;a?o=r.g:s&&(o=self);var c=!o.JS_SHA256_NO_COMMON_JS&&e.exports,d=r.amdO,u=!o.JS_SHA256_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,l="0123456789abcdef".split(""),f=[-2147483648,8388608,32768,128],h=[24,16,8,0],p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],g=["hex","array","digest","arrayBuffer"],v=[];!o.JS_SHA256_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),!u||!o.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return"object"==typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});var b=function(e,t){return function(r){return new S(t,!0).update(r)[e]()}},m=function(e){var t=b("hex",e);a&&(t=y(t,e)),t.create=function(){return new S(e)},t.update=function(e){return t.create().update(e)};for(var r=0;r<g.length;++r){var n=g[r];t[n]=b(n,e)}return t},y=function(e,n){var i,s=r(432),a=r(129).Buffer,c=n?"sha224":"sha256";return i=a.from&&!o.JS_SHA256_NO_BUFFER_FROM?a.from:function(e){return new a(e)},function(r){if("string"==typeof r)return s.createHash(c).update(r,"utf8").digest("hex");if(null==r)throw new Error(t);return r.constructor===ArrayBuffer&&(r=new Uint8Array(r)),Array.isArray(r)||ArrayBuffer.isView(r)||r.constructor===a?s.createHash(c).update(i(r)).digest("hex"):e(r)}},w=function(e,t){return function(r,n){return new M(r,t,!0).update(n)[e]()}},A=function(e){var t=w("hex",e);t.create=function(t){return new M(t,e)},t.update=function(e,r){return t.create(e).update(r)};for(var r=0;r<g.length;++r){var n=g[r];t[n]=w(n,e)}return t};function S(e,t){t?(v[0]=v[16]=v[1]=v[2]=v[3]=v[4]=v[5]=v[6]=v[7]=v[8]=v[9]=v[10]=v[11]=v[12]=v[13]=v[14]=v[15]=0,this.blocks=v):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],e?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=e}function M(e,r,n){var i,o=typeof e;if("string"===o){var s,a=[],c=e.length,d=0;for(i=0;i<c;++i)(s=e.charCodeAt(i))<128?a[d++]=s:s<2048?(a[d++]=192|s>>>6,a[d++]=128|63&s):s<55296||s>=57344?(a[d++]=224|s>>>12,a[d++]=128|s>>>6&63,a[d++]=128|63&s):(s=65536+((1023&s)<<10|1023&e.charCodeAt(++i)),a[d++]=240|s>>>18,a[d++]=128|s>>>12&63,a[d++]=128|s>>>6&63,a[d++]=128|63&s);e=a}else{if("object"!==o)throw new Error(t);if(null===e)throw new Error(t);if(u&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||u&&ArrayBuffer.isView(e)))throw new Error(t)}e.length>64&&(e=new S(r,!0).update(e).array());var l=[],f=[];for(i=0;i<64;++i){var h=e[i]||0;l[i]=92^h,f[i]=54^h}S.call(this,r,n),this.update(f),this.oKeyPad=l,this.inner=!0,this.sharedMemory=n}S.prototype.update=function(e){if(!this.finalized){var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(u&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||u&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}for(var i,o,s=0,a=e.length,c=this.blocks;s<a;){if(this.hashed&&(this.hashed=!1,c[0]=this.block,this.block=c[16]=c[1]=c[2]=c[3]=c[4]=c[5]=c[6]=c[7]=c[8]=c[9]=c[10]=c[11]=c[12]=c[13]=c[14]=c[15]=0),r)for(o=this.start;s<a&&o<64;++s)c[o>>>2]|=e[s]<<h[3&o++];else for(o=this.start;s<a&&o<64;++s)(i=e.charCodeAt(s))<128?c[o>>>2]|=i<<h[3&o++]:i<2048?(c[o>>>2]|=(192|i>>>6)<<h[3&o++],c[o>>>2]|=(128|63&i)<<h[3&o++]):i<55296||i>=57344?(c[o>>>2]|=(224|i>>>12)<<h[3&o++],c[o>>>2]|=(128|i>>>6&63)<<h[3&o++],c[o>>>2]|=(128|63&i)<<h[3&o++]):(i=65536+((1023&i)<<10|1023&e.charCodeAt(++s)),c[o>>>2]|=(240|i>>>18)<<h[3&o++],c[o>>>2]|=(128|i>>>12&63)<<h[3&o++],c[o>>>2]|=(128|i>>>6&63)<<h[3&o++],c[o>>>2]|=(128|63&i)<<h[3&o++]);this.lastByteIndex=o,this.bytes+=o-this.start,o>=64?(this.block=c[16],this.start=o-64,this.hash(),this.hashed=!0):this.start=o}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296|0,this.bytes=this.bytes%4294967296),this}},S.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex;e[16]=this.block,e[t>>>2]|=f[3&t],this.block=e[16],t>=56&&(this.hashed||this.hash(),e[0]=this.block,e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.hBytes<<3|this.bytes>>>29,e[15]=this.bytes<<3,this.hash()}},S.prototype.hash=function(){var e,t,r,n,i,o,s,a,c,d=this.h0,u=this.h1,l=this.h2,f=this.h3,h=this.h4,g=this.h5,v=this.h6,b=this.h7,m=this.blocks;for(e=16;e<64;++e)t=((i=m[e-15])>>>7|i<<25)^(i>>>18|i<<14)^i>>>3,r=((i=m[e-2])>>>17|i<<15)^(i>>>19|i<<13)^i>>>10,m[e]=m[e-16]+t+m[e-7]+r|0;for(c=u&l,e=0;e<64;e+=4)this.first?(this.is224?(o=300032,b=(i=m[0]-1413257819)-150054599|0,f=i+24177077|0):(o=704751109,b=(i=m[0]-210244248)-1521486534|0,f=i+143694565|0),this.first=!1):(t=(d>>>2|d<<30)^(d>>>13|d<<19)^(d>>>22|d<<10),n=(o=d&u)^d&l^c,b=f+(i=b+(r=(h>>>6|h<<26)^(h>>>11|h<<21)^(h>>>25|h<<7))+(h&g^~h&v)+p[e]+m[e])|0,f=i+(t+n)|0),t=(f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10),n=(s=f&d)^f&u^o,v=l+(i=v+(r=(b>>>6|b<<26)^(b>>>11|b<<21)^(b>>>25|b<<7))+(b&h^~b&g)+p[e+1]+m[e+1])|0,t=((l=i+(t+n)|0)>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),n=(a=l&f)^l&d^s,g=u+(i=g+(r=(v>>>6|v<<26)^(v>>>11|v<<21)^(v>>>25|v<<7))+(v&b^~v&h)+p[e+2]+m[e+2])|0,t=((u=i+(t+n)|0)>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),n=(c=u&l)^u&f^a,h=d+(i=h+(r=(g>>>6|g<<26)^(g>>>11|g<<21)^(g>>>25|g<<7))+(g&v^~g&b)+p[e+3]+m[e+3])|0,d=i+(t+n)|0,this.chromeBugWorkAround=!0;this.h0=this.h0+d|0,this.h1=this.h1+u|0,this.h2=this.h2+l|0,this.h3=this.h3+f|0,this.h4=this.h4+h|0,this.h5=this.h5+g|0,this.h6=this.h6+v|0,this.h7=this.h7+b|0},S.prototype.hex=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,i=this.h4,o=this.h5,s=this.h6,a=this.h7,c=l[e>>>28&15]+l[e>>>24&15]+l[e>>>20&15]+l[e>>>16&15]+l[e>>>12&15]+l[e>>>8&15]+l[e>>>4&15]+l[15&e]+l[t>>>28&15]+l[t>>>24&15]+l[t>>>20&15]+l[t>>>16&15]+l[t>>>12&15]+l[t>>>8&15]+l[t>>>4&15]+l[15&t]+l[r>>>28&15]+l[r>>>24&15]+l[r>>>20&15]+l[r>>>16&15]+l[r>>>12&15]+l[r>>>8&15]+l[r>>>4&15]+l[15&r]+l[n>>>28&15]+l[n>>>24&15]+l[n>>>20&15]+l[n>>>16&15]+l[n>>>12&15]+l[n>>>8&15]+l[n>>>4&15]+l[15&n]+l[i>>>28&15]+l[i>>>24&15]+l[i>>>20&15]+l[i>>>16&15]+l[i>>>12&15]+l[i>>>8&15]+l[i>>>4&15]+l[15&i]+l[o>>>28&15]+l[o>>>24&15]+l[o>>>20&15]+l[o>>>16&15]+l[o>>>12&15]+l[o>>>8&15]+l[o>>>4&15]+l[15&o]+l[s>>>28&15]+l[s>>>24&15]+l[s>>>20&15]+l[s>>>16&15]+l[s>>>12&15]+l[s>>>8&15]+l[s>>>4&15]+l[15&s];return this.is224||(c+=l[a>>>28&15]+l[a>>>24&15]+l[a>>>20&15]+l[a>>>16&15]+l[a>>>12&15]+l[a>>>8&15]+l[a>>>4&15]+l[15&a]),c},S.prototype.toString=S.prototype.hex,S.prototype.digest=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,i=this.h4,o=this.h5,s=this.h6,a=this.h7,c=[e>>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,n>>>24&255,n>>>16&255,n>>>8&255,255&n,i>>>24&255,i>>>16&255,i>>>8&255,255&i,o>>>24&255,o>>>16&255,o>>>8&255,255&o,s>>>24&255,s>>>16&255,s>>>8&255,255&s];return this.is224||c.push(a>>>24&255,a>>>16&255,a>>>8&255,255&a),c},S.prototype.array=S.prototype.digest,S.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(this.is224?28:32),t=new DataView(e);return t.setUint32(0,this.h0),t.setUint32(4,this.h1),t.setUint32(8,this.h2),t.setUint32(12,this.h3),t.setUint32(16,this.h4),t.setUint32(20,this.h5),t.setUint32(24,this.h6),this.is224||t.setUint32(28,this.h7),e},M.prototype=new S,M.prototype.finalize=function(){if(S.prototype.finalize.call(this),this.inner){this.inner=!1;var e=this.array();S.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(e),S.prototype.finalize.call(this)}};var P=m();P.sha256=P,P.sha224=m(!0),P.sha256.hmac=A(),P.sha224.hmac=A(!0),c?e.exports=P:(o.sha256=P.sha256,o.sha224=P.sha224,d&&(void 0===(n=function(){return P}.call(P,r,P,e))||(e.exports=n)))}()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.amdO={},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(t,r,n){return(r=function(t){var r=function(t){if("object"!=e(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=e(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==e(r)?r:r+""}(r))in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,t}const n="v0.60.0";async function i(e){const t=await E("/config",e,{method:"GET",headers:{Accept:"application/json"}});return new A(e).setSite(t),t}const o={"Europe/Vienna":"gdpr","Europe/Brussels":"gdpr","Europe/Sofia":"gdpr","Europe/Zagreb":"gdpr","Asia/Nicosia":"gdpr","Europe/Nicosia":"gdpr","Europe/Prague":"gdpr","Europe/Copenhagen":"gdpr","Europe/Tallinn":"gdpr","Europe/Helsinki":"gdpr","Europe/Paris":"gdpr","Europe/Berlin":"gdpr","Europe/Athens":"gdpr","Europe/Budapest":"gdpr","Atlantic/Reykjavik":"gdpr","Europe/Dublin":"gdpr","Europe/Rome":"gdpr","Europe/Riga":"gdpr","Europe/Vaduz":"gdpr","Europe/Vilnius":"gdpr","Europe/Luxembourg":"gdpr","Europe/Malta":"gdpr","Europe/Oslo":"gdpr","Europe/Warsaw":"gdpr","Europe/Lisbon":"gdpr","Europe/Bucharest":"gdpr","Europe/Bratislava":"gdpr","Europe/Ljubljana":"gdpr","Europe/Madrid":"gdpr","Europe/Stockholm":"gdpr","Europe/Amsterdam":"gdpr","Atlantic/Azores":"gdpr","Atlantic/Canary":"gdpr","America/Cayenne":"gdpr","America/Guadeloupe":"gdpr","Atlantic/Madeira":"gdpr","America/Martinique":"gdpr","Indian/Mayotte":"gdpr","Indian/Reunion":"gdpr","America/Marigot":"gdpr","Europe/Zurich":"gdpr","Europe/London":"gdpr","America/Toronto":"can","America/Adak":"us","America/Anchorage":"us","America/Atka":"us","America/Boise":"us","America/Chicago":"us","America/Denver":"us","America/Detroit":"us","America/Indiana/Indianapolis":"us","America/Indiana/Knox":"us","America/Indiana/Marengo":"us","America/Indiana/Petersburg":"us","America/Indiana/Tell_City":"us","America/Indiana/Vevay":"us","America/Indiana/Vincennes":"us","America/Indiana/Winamac":"us","America/Indianapolis":"us","America/Juneau":"us","America/Kentucky/Louisville":"us","America/Kentucky/Monticello":"us","America/Knox_IN":"us","America/Los_Angeles":"us","America/Louisville":"us","America/Menominee":"us","America/Metlakatla":"us","America/New_York":"us","America/Nome":"us","America/North_Dakota/Beulah":"us","America/North_Dakota/Center":"us","America/North_Dakota/New_Salem":"us","America/Phoenix":"us","America/Shiprock":"us","America/Sitka":"us","America/Yakutat":"us","Pacific/Honolulu":"us"},s=["optableDebug","optableDisableConsent","optableResolve1P","optableResolve3P","optableEnableAnalytics","optableControlGroup","optableForceTargeting","optableForceGlobalRouting","optableForceSkipMerge","optableForceTokenize","optableResolveId5","optableResolveID5ID"];let a=null;function c(e){const t=(a||(a=function(){const e=function(e){const t={};try{const r=new URLSearchParams(window.location.search);for(const n of e)r.has(n)&&(t[n]=r.get(n)||"1")}catch(e){}try{for(const e of Object.keys(t))sessionStorage.setItem(e,t[e])}catch(e){}return t}(s);try{for(const t of s)if(!(t in e)){const r=sessionStorage.getItem(t);null!==r&&(e[t]=r)}}catch(e){}return e}()),a)[e];return!!t&&"0"!==t}const d=[2],u=[5],l=[7,8,10,12,17,13,18,14,19,20,21,15,22,16,11,9];function f(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=function(e,t){const{gdprApplies:r,gppSectionIDs:n,gdprData:i}=t;if(void 0!==r)return r?"gdpr":"gdpr"===e?null:e;if(void 0!==i&&"gdpr"===e)return"gdpr";if(void 0===n||1===n.length&&0===n[0])return e;if(1===n.length&&-1===n[0])return null;if(n.some(e=>d.includes(e)))return"gdpr";if(n.some(e=>u.includes(e)))return"can";if(n.some(e=>l.includes(e)))return"us";switch(e){case"gdpr":if(!n.some(e=>d.includes(e)))return null;break;case"can":if(!n.some(e=>u.includes(e)))return null;break;case"us":if(!n.some(e=>l.includes(e)))return null}return e}(e,t),i={reg:n,gpp:t.gppString,gppSectionIDs:t.gppSectionIDs,gdpr:t.gdprString,gdprApplies:t.gdprApplies,deviceAccess:!1,createProfilesForAdvertising:!1,useProfilesForAdvertising:!1,measureAdvertisingPerformance:!1};switch(n){case"gdpr":t.gdprData?(i.deviceAccess=p(t.gdprData,1,r.tcfeuVendorID),i.createProfilesForAdvertising=p(t.gdprData,3,r.tcfeuVendorID),i.useProfilesForAdvertising=p(t.gdprData,4,r.tcfeuVendorID),i.measureAdvertisingPerformance=p(t.gdprData,7,r.tcfeuVendorID)):t.gppData&&(i.deviceAccess=v(t.gppData,1,r.tcfeuVendorID),i.createProfilesForAdvertising=v(t.gppData,3,r.tcfeuVendorID),i.useProfilesForAdvertising=v(t.gppData,4,r.tcfeuVendorID),i.measureAdvertisingPerformance=v(t.gppData,7,r.tcfeuVendorID));break;case"can":i.deviceAccess=!0,t.gppData&&(i.createProfilesForAdvertising=g(t.gppData,3,r.tcfcaVendorID),i.useProfilesForAdvertising=g(t.gppData,4,r.tcfcaVendorID),i.measureAdvertisingPerformance=g(t.gppData,7,r.tcfcaVendorID));break;default:i.deviceAccess=!0,i.createProfilesForAdvertising=!0,i.useProfilesForAdvertising=!0,i.measureAdvertisingPerformance=!0}return i}function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(c("optableDisableConsent"))return{reg:null,deviceAccess:!0,createProfilesForAdvertising:!0,useProfilesForAdvertising:!0,measureAdvertisingPerformance:!0};const r={};!function(){if("function"==typeof window.__tcfapi)return;let e;const t={};let r=window;for(;r;){try{if(r.frames.__tcfapiLocator){e=r;break}}catch(e){}if(r===window.top)break;r=r.parent}e&&(window.__tcfapi=function(r,n,i){const o=Math.random()+"";t[o]=i,e.postMessage({__tcfapiCall:{command:r,version:n,callId:o}},"*")},window.addEventListener("message",e=>{let r={};try{r="string"==typeof e.data?JSON.parse(e.data):e.data}catch(e){}const n=r.__tcfapiReturn;n&&"function"==typeof t[n.callId]&&(t[n.callId](n.returnValue,n.success),delete t[n.callId])},!1))}(),function(){if("function"==typeof window.__gpp)return;let e;const t={};let r=window;for(;r;){try{if(r.frames.__gppLocator){e=r;break}}catch(e){}if(r===window.top)break;r=r.parent}e&&(window.__gpp=function(r,n){const i=Math.random()+"";t[i]=n,e.postMessage({__gppCall:{command:r,version:"1.1",callId:i}},"*")},window.addEventListener("message",e=>{let r={};try{r="string"==typeof e.data?JSON.parse(e.data):e.data}catch(e){}const n=r.__gppReturn;n&&"function"==typeof t[n.callId]&&(t[n.callId](n.returnValue,n.success),delete t[n.callId])},!1))}();const n=f(e,r,t);return"function"==typeof window.__tcfapi&&(null===(s=(a=window).__tcfapi)||void 0===s||s.call(a,"addEventListener",2,(i,o)=>{o&&("tcloaded"===i.eventStatus||"useractioncomplete"===i.eventStatus)&&(i=>{r.gdprString=i.tcString,r.gdprApplies=i.gdprApplies,r.gdprData=i,Object.assign(n,f(e,r,t))})(i)})),"function"==typeof window.__gpp&&(null===(i=(o=window).__gpp)||void 0===i||i.call(o,"addEventListener",(i,o)=>{o&&"signalStatus"===i.eventName&&"ready"===i.data&&(i=>{r.gppString=i.gppString,r.gppSectionIDs=i.applicableSections,r.gppData=i,Object.assign(n,f(e,r,t))})(i.pingData)})),n;var i,o,s,a}function p(e,t,r){var n,i,o;return r?!(null===(i=e.purpose)||void 0===i||null===(i=i.consents)||void 0===i||!i[t]||null===(o=e.vendor)||void 0===o||null===(o=o.consents)||void 0===o||!o[r]):!(null===(n=e.publisher)||void 0===n||null===(n=n.consents)||void 0===n||!n[t])}function g(e,t,r){var n;const i=t>1,o=(null===(n=e.parsedSections)||void 0===n?void 0:n.tcfcav1)||[];if("number"==typeof r){const e=o.find(e=>"Version"in e);if(!e)return!1;let n=e.PurposesExpressConsent.includes(t)&&e.VendorExpressConsent.includes(r);return i&&(n||(n=e.PurposesImpliedConsent.includes(t)&&e.VendorImpliedConsent.includes(r))),n}const s=o.find(e=>"SubsectionType"in e&&3===e.SubsectionType);if(!s)return!1;let a=s.PubPurposesExpressConsent.includes(t);return i&&(a||(a=s.PubPurposesImpliedConsent.includes(t))),a}function v(e,t,r){var n;const i=t>1,o=(null===(n=e.parsedSections)||void 0===n?void 0:n.tcfeuv2)||[];if("number"==typeof r){const e=o.find(e=>"Version"in e);if(!e)return!1;let n=e.PurposeConsent.includes(t)&&e.VendorConsent.includes(r);return i&&(n||(n=e.PurposesLITransparency.includes(t)&&e.VendorLegitimateInterest.includes(r))),n}const s=o.find(e=>"SegmentType"in e&&3===e.SegmentType);if(!s)return!1;let a=s.PubPurposesConsent.includes(t);return i&&(a||(a=s.PubPurposesLITransparency.includes(t))),a}class b{constructor(e){t(this,"consent",void 0),this.consent=e}getItem(e){return this.consent.deviceAccess?window.localStorage.getItem(e):null}setItem(e,t){this.consent.deviceAccess&&window.localStorage.setItem(e,t)}removeItem(e){this.consent.deviceAccess&&window.localStorage.removeItem(e)}}const m="_optable_pairId";function y(e){const t=new Uint16Array(e.length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return btoa(String.fromCharCode(...new Uint8Array(t.buffer)))}function w(e){return e.node?y("".concat(e.host,"/").concat(e.node)):y("".concat(e.host))}class A{constructor(e){t(this,"passportKeys",void 0),t(this,"targetingKeys",void 0),t(this,"siteKeys",void 0),t(this,"pairKeys",void 0),t(this,"storage",void 0),this.config=e,this.passportKeys=function(e){const t=[],r=[],n="OPTABLE_PASSPORT_".concat(w(e));return t.push(n),r.push(n),e.legacyHostCache?(r.push("OPTABLE_PASSPORT_".concat(y("".concat(e.legacyHostCache)))),r.push("OPTABLE_PASS_".concat(y("".concat(e.legacyHostCache,"/").concat(e.site))))):r.push("OPTABLE_PASS_".concat(y("".concat(e.host,"/").concat(e.site)))),{write:t,read:r}}(e),this.targetingKeys=function(e){const t="OPTABLE_TARGETING_".concat(w(e));return{write:[t,e.optableCacheTargeting],read:[t]}}(e),this.siteKeys=function(e){const t="OPTABLE_SITE_".concat(w(e));return{write:[t],read:[t]}}(e),this.pairKeys={write:[m],read:[m]},this.storage=new b(this.config.consent)}getPassport(){return this.readStorageKeys(this.passportKeys)}setPassport(e){this.writeToStorageKeys(this.passportKeys,e)}getVisitorId(){const e=this.getPassport();if(!e)return null;const t=e.split(".")[1];if(!t)return null;try{const e=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),r=JSON.parse(atob(e));return"string"==typeof(null==r?void 0:r.id)?r.id:null}catch(e){return null}}getTargeting(){const e=this.readStorageKeys(this.targetingKeys);return e?JSON.parse(e):null}setTargeting(e){e&&(this.writeToStorageKeys(this.targetingKeys,JSON.stringify(e)),this.setPairIDs(e))}updateTargeting(e){let t=null;const r=[...new Set([...this.targetingKeys.read,...this.targetingKeys.write])].filter(Boolean);for(const n of r){const r=this.storage.getItem(n);if(!r)continue;let i;try{i=JSON.parse(r)}catch(e){continue}e(i)&&(this.storage.setItem(n,JSON.stringify(i)),t=i)}return t}getSite(){const e=this.readStorageKeys(this.siteKeys);return e?JSON.parse(e):null}setSite(e){e&&this.writeToStorageKeys(this.siteKeys,JSON.stringify(e))}setPairIDs(e){var t;const r=null===(t=e.ortb2)||void 0===t||null===(t=t.user)||void 0===t||null===(t=t.eids)||void 0===t?void 0:t.filter(e=>"pair-protocol.com"===e.source),n=null==r?void 0:r.flatMap(e=>e.uids);if(!n)return;const i=new Set(n.map(e=>e.id));this.writeToStorageKeys(this.pairKeys,btoa(JSON.stringify({envelope:[...i]})))}getPairIDs(){var e;const t=this.readStorageKeys(this.pairKeys);return t?null===(e=JSON.parse(atob(t)))||void 0===e?void 0:e.envelope:null}readStorageKeys(e){for(const t of e.read){const e=this.storage.getItem(t);if(e)return e}return null}writeToStorageKeys(e,t){if(t)for(const r of e.write)this.storage.setItem(r,t)}clearStorageKeys(e){for(const t of[...e.read,...e.write])this.storage.removeItem(t)}clearPassport(){this.clearStorageKeys(this.passportKeys)}clearTargeting(){this.clearStorageKeys(this.targetingKeys)}clearSite(){this.clearStorageKeys(this.siteKeys)}}function S(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}const M={lang:()=>{const{languages:e,language:t}=navigator;return null!=e&&e.length?e.join(","):t||void 0},tz:()=>Intl.DateTimeFormat().resolvedOptions().timeZone||void 0,scr:()=>{const{width:e,height:t}=window.screen;return P(e)&&P(t)?"".concat(e,"x").concat(t):void 0},mem:()=>_(navigator.deviceMemory),cores:()=>_(navigator.hardwareConcurrency)};function P(e){return Number.isInteger(e)&&e>0}function _(e){if(!("number"!=typeof e||!Number.isFinite(e)||e<0||e>1024))return"".concat(e)}let O;function k(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function F(e,r,i){const{host:o,cookies:s,insecure:a}=r,c=new URL(e,"".concat(a?"http":"https","://").concat(o));if(c.searchParams.set("osdk","web-".concat(n)),c.searchParams.set("sid",r.sessionID),r.skipEnrichment&&c.searchParams.set("skip_enrichment","".concat(r.skipEnrichment)),r.node&&c.searchParams.set("t",r.node),r.site&&c.searchParams.set("o",r.site),void 0!==r.consent.gpp&&c.searchParams.set("gpp",r.consent.gpp),void 0!==r.consent.gppSectionIDs&&c.searchParams.set("gpp_sid",r.consent.gppSectionIDs.join(",")),void 0!==r.consent.gdpr&&c.searchParams.set("gdpr_consent",r.consent.gdpr),void 0!==r.consent.gdprApplies&&c.searchParams.set("gdpr",Number(r.consent.gdprApplies).toString()),r.readOnly&&c.searchParams.set("ro","true"),r.timeout&&c.searchParams.set("timeout",r.timeout),s)c.searchParams.set("cookies","yes");else{const e=new A(r).getPassport();c.searchParams.set("cookies","no"),c.searchParams.set("passport",e||"")}if(r.forwardSignals&&r.consent.deviceAccess){const e=(null!=O||(O=function(e){const t=new URLSearchParams;for(const[r,n]of Object.entries(e))t.append(r,n);const r=t.toString();if(!r)return"";try{return S(r)}catch(e){return""}}(function(){const e={};for(const t of Object.keys(M))try{const r=M[t]();r&&(e[t]=r)}catch(e){}return e}())),O);e&&c.searchParams.set("sig",e)}const d=function(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?k(Object(n),!0).forEach(function(r){t(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):k(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},i);return d.credentials=r.consent.deviceAccess?"include":"omit",r.mockedIP&&(d.headers=new Headers(d.headers),d.headers.set("X-Forwarded-For",r.mockedIP)),new Request(c.toString(),d)}async function E(e,t,r){const n=await globalThis.fetch(F(e,t,r)),i=n.headers.get("Content-Type"),o=null!=i&&i.startsWith("application/json")?await n.json():await n.text();if(!n.ok)throw new Error(o.error);return o.passport&&(new A(t).setPassport(o.passport),delete o.passport),o}new RegExp(["bot","crawler","spider","scraper","headless","phantomjs","selenium","webdriver","curl","wget","python","java","perl","ruby","go-http-client","okhttp","axios","fetch","postman","insomnia","googleother","google-extended","google-inspectiontool"].join("|"),"i");var I,x,T,B=((x=B||{})[x.Banner=1]="Banner",x[x.Video=2]="Video",x[x.Audio=3]="Audio",x[x.Native=4]="Native",x),R={},C={},N={};(T=I||(I={})).Placement=C,T.Media=N,T.Context=R;const L={cookies:!0,initPassport:!0,readOnly:!1,experiments:[],consent:{reg:null,deviceAccess:!0,createProfilesForAdvertising:!0,useProfilesForAdvertising:!0,measureAdvertisingPerformance:!0}};function D(){const e=new Uint8Array(16);return crypto.getRandomValues(e),S(String.fromCharCode(...e))}function j(e){var t,r;return{user:{data:(null!==(t=null==e?void 0:e.audience)&&void 0!==t?t:[]).map(e=>({name:e.provider,segment:e.ids,ext:{segtax:e.rtb_segtax}})),ext:{eids:(null!==(r=null==e?void 0:e.user)&&void 0!==r?r:[]).map(e=>({source:e.provider,uids:e.ids.map(e=>{let{id:t}=e;return{id:t,atype:3}})}))}}}}function W(e){const t={};if(!e)return t;for(const n of null!==(r=e.audience)&&void 0!==r?r:[]){var r;n.keyspace&&(n.keyspace in t||(t[n.keyspace]=[]),t[n.keyspace].push(...n.ids.map(e=>e.id)))}return t}function V(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function z(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function q(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?z(Object(n),!0).forEach(function(r){t(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):z(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function K(){const e={};let t=0;return{refs:e,process:(r,n)=>{if(!r.refs)return n;for(const o of n.uids){var i;if(V(null===(i=o.ext)||void 0===i?void 0:i.optable)&&"ref"in o.ext.optable&&"string"==typeof o.ext.optable.ref){const n=r.refs[o.ext.optable.ref];t+=1;const i=t.toString(10);e[i]=n,o.ext.optable.ref=i}}return n}}}function U(e){var t;const r={title:document.title||""},n=document.querySelector('meta[name="description"]');if(n){const e=n.getAttribute("content");e&&(r.description=e)}const i=document.querySelector('meta[name="keywords"]');if(i){const e=i.getAttribute("content");e&&(r.keywords=e.split(",").map(e=>e.trim()).filter(Boolean))}const o=document.querySelector('link[rel="canonical"]');if(o){const e=o.getAttribute("href");e&&(r.canonicalUrl=e)}const s={};document.querySelectorAll('meta[property^="og:"]').forEach(e=>{const t=e.getAttribute("property"),r=e.getAttribute("content");if(t&&r){const e=t.replace("og:","");s[e]=r}}),Object.keys(s).length>0&&(r.ogTags=s);const a=[];document.querySelectorAll("h1, h2, h3").forEach(e=>{var t;if(a.length>=20)return;const r=parseInt(e.tagName.substring(1),10),n=null===(t=e.textContent)||void 0===t?void 0:t.trim();n&&a.push({level:r,text:n})}),a.length>0&&(r.headings=a);const c=null!==(t=e.maxContentLength)&&void 0!==t?t:5e3,d=function(e){if(e)return document.querySelector(e);const t=["main","article",'[role="main"]',".content","#content",".post",".article"];for(const e of t){const t=document.querySelector(e);if(t)return t}return document.body}(e.contentSelector);if(d){const e=(u=d)instanceof HTMLElement&&u.innerText?u.innerText.trim():"";e&&(r.content=e.substring(0,c))}var u;const l=document.querySelectorAll('script[type="application/ld+json"]'),f=[];l.forEach(e=>{try{const t=JSON.parse(e.textContent||"");t&&"object"==typeof t&&f.push(t)}catch(e){}}),f.length>0&&(r.jsonLd=f);const h=document.documentElement.getAttribute("lang");return h&&(r.language=h),r}function G(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function H(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?G(Object(n),!0).forEach(function(r){t(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):G(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const J=/["'=!+#*~^()<>[\],;&]/g;function Y(e){return e.toLowerCase().replace(J,"").replace(/\s+/g," ").trim().slice(0,40).trim()}var Q=r(966);class Z{constructor(e){var r;t(this,"dcn",void 0),t(this,"init",void 0),t(this,"contextSent",!1),t(this,"contextConfig",null),t(this,"contextualResponse",null),t(this,"passportNullWarned",!1),t(this,"visitorIdNullWarned",!1),this.dcn=function(e){var t,r,n,i,s,a,c,d;const u={host:e.host,site:e.site,optableCacheTargeting:null!==(t=e.optableCacheTargeting)&&void 0!==t?t:"optable-cache:targeting",cookies:null!==(r=e.cookies)&&void 0!==r?r:L.cookies,initPassport:null!==(n=e.initPassport)&&void 0!==n?n:L.initPassport,consent:L.consent,readOnly:null!==(i=e.readOnly)&&void 0!==i?i:L.readOnly,node:e.node,legacyHostCache:e.legacyHostCache,experiments:null!==(s=e.experiments)&&void 0!==s?s:L.experiments,mockedIP:e.mockedIP,sessionID:null!==(a=e.sessionID)&&void 0!==a?a:D(),skipEnrichment:e.skipEnrichment,initTargeting:e.initTargeting,initContextual:e.initContextual,abTests:e.abTests,additionalTargetingSignals:e.additionalTargetingSignals,forwardSignals:e.forwardSignals,timeout:e.timeout,insecure:e.insecure};return null!==(c=e.consent)&&void 0!==c&&c.static?u.consent=e.consent.static:null!==(d=e.consent)&&void 0!==d&&d.cmpapi&&(u.consent=h(function(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone,t=o[e];return"can"===t?["fr","fr-CA"].some(e=>navigator.languages.includes(e))?"can":null:null!=t?t:null}(),e.consent.cmpapi)),u}(e),this.contextConfig=(r=e.pageContext)?!0===r?{}:r:null,this.dcn.initContextual&&!this.contextConfig&&(this.contextConfig={}),this.init=this.initialize()}async initialize(){if(this.dcn.initPassport&&await i(this.dcn).catch(()=>{}),this.dcn.initTargeting&&this.targeting().catch(()=>{}),this.dcn.initContextual){const e="".concat(window.location.hostname).concat(window.location.pathname);this.witness("pageview",{url:e},{includeContext:!0}).catch(()=>{});const t="function"==typeof this.dcn.initContextual?this.dcn.initContextual:null,r=this.ctxSegments();(t?r.then(t):r).catch(()=>{})}}async identify(){await this.init;for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e,t){return E("/identify",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}(this.dcn,t.filter(e=>e))}async uid2Token(e){return await this.init,function(e,t){return E("/uid2/token",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}(this.dcn,e)}async targeting(){const e=function(e){if("string"==typeof e)return{ids:[e],hids:[]};var t,r;if(V(e))return{ids:null!==(t=null==e?void 0:e.ids)&&void 0!==t?t:[],hids:null!==(r=null==e?void 0:e.hids)&&void 0!==r?r:[]};throw"Invalid request type for targeting. Expected string or object."}(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"__passport__");return await this.init,async function(e,t){var r;const n=new URLSearchParams;t.ids.forEach(e=>n.append("id",e)),t.hids.forEach(e=>n.append("hid",e));const i=function(e){if(!e||0===e.length)return null;if(e.reduce((e,t)=>e+t.trafficPercentage,0)>100)return console.error("AB Test Config Error: Traffic Percentage Sum Exceeds 100%"),null;const t=Math.floor(100*Math.random());let r=0;for(const n of e)if(r+=n.trafficPercentage,t<r)return n;return null}(e.abTests);i&&(n.append("ab_test_id",i.id),i.matcher_override&&[...i.matcher_override].sort((e,t)=>e.rank-t.rank).forEach(e=>{n.append("matcher_override",e.id)}),i.skipMatchers&&n.append("skip_matchers",i.skipMatchers.join(",")),i.skipResolvers&&n.append("skip_resolvers",i.skipResolvers.join(",")));null!==(r=e.additionalTargetingSignals)&&void 0!==r&&r.ref&&n.append("ref","".concat(window.location.protocol,"//").concat(window.location.host).concat(window.location.pathname));const o="/v2/targeting?"+n.toString(),s=await E(o,e,{method:"GET",headers:{Accept:"application/json"}});return s&&(new A(e).setTargeting(s),function(e,t){var r,n,i,o;const s=null===(r=t.ortb2)||void 0===r||null===(r=r.user)||void 0===r||null===(r=r.eids)||void 0===r?void 0:r.map(e=>e.matcher);window.dispatchEvent(new CustomEvent("optable-targeting:change",{detail:{instance:e.node||e.host,resolved:!(null===(n=t.ortb2)||void 0===n||null===(n=n.user)||void 0===n||null===(n=n.eids)||void 0===n||!n.length),resolvedIDs:null!==(i=t.resolved_ids)&&void 0!==i?i:[],abTestID:null!==(o=t.ab_test_id)&&void 0!==o?o:void 0,ortb2:t.ortb2,provenance:new Set(s)}}))}(e,s)),s}(this.dcn,e)}targetingFromCache(){return e=this.dcn,new A(e).getTargeting();var e}async site(){return i(this.dcn)}siteFromCache(){return e=this.dcn,new A(e).getSite();var e}passport(){const e=new A(this.dcn).getPassport();return null!==e||this.passportNullWarned||(this.passportNullWarned=!0,console.warn("[Optable] passport() returned null. The passport is cached in localStorage once the DCN returns one. Call before initialization (await sdk.site() or sdk.targeting()) may return null, and deployments where the DCN does not echo the passport in response bodies will never populate it client-side.")),e}visitorId(){const e=new A(this.dcn).getVisitorId();return null!==e||this.visitorIdNullWarned||(this.visitorIdNullWarned=!0,console.warn("[Optable] visitorId() returned null. The visitor ID is derived from the passport JWT in localStorage. Call before initialization (await sdk.site() or sdk.targeting()) may return null, and deployments where the DCN does not echo the passport in response bodies will never populate it client-side.")),e}targetingClearCache(){var e;e=this.dcn,new A(e).clearTargeting()}async prebidORTB2(){return j(await this.targeting())}prebidORTB2FromCache(){return j(this.targetingFromCache())}async targetingKeyValues(){return W(await this.targeting())}targetingKeyValuesFromCache(){return W(this.targetingFromCache())}async witness(e){let t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return await this.init,n.includeContext&&this.contextConfig&&!this.contextSent&&(t=function(e){const t={semantic:U(e),url:window.location.href,extractedAt:Date.now()};if(document.referrer&&(t.referrer=document.referrer),e.includeHtml){var r;const n=null!==(r=e.maxHtmlLength)&&void 0!==r?r:5e4;t.html=document.documentElement.outerHTML.substring(0,n)}return t}(this.contextConfig),this.contextSent=!0),function(e,t,r,n){const i={event:t,properties:r};return n&&(i.pageContext=n),E("/witness",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})}(this.dcn,e,r,t)}resetContext(){this.contextSent=!1}async profile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return await this.init,function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;const i=H(H({traits:t},r&&{id:r}),n&&{neighbors:n});return E("/profile",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})}(this.dcn,e,t,r)}async ctxSegments(e){const t=await async function(e,t){const r={url:t};return await E("/v1beta1/contextual",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})}(this.dcn,null!=e?e:window.location.href);return this.contextualResponse=t,t}ctxTargetingKeyValues(e,t){return function(e,t,r){var n,i,o;const s={},a=null!==(n=null==e||null===(i=e.classifications)||void 0===i?void 0:i.categories)&&void 0!==n?n:[];for(const e of a){const r=null==e?void 0:e.taxonomy;if(!r||null==e.id)continue;let n;if(t){if(!(r in t))continue;n=t[r]}else n=r;n in s||(s[n]=[]),s[n].includes(e.id)||s[n].push(e.id)}const c=null!==(o=null==r?void 0:r.keywordKey)&&void 0!==o?o:"ctx_kw";if(c){var d,u,l;const t=null!==(d=null==r?void 0:r.maxKeywords)&&void 0!==d?d:10,n=null!==(u=null==e||null===(l=e.classifications)||void 0===l?void 0:l.keywords)&&void 0!==u?u:[],i=e=>"number"==typeof(null==e?void 0:e.prominence)?e.prominence:Number.POSITIVE_INFINITY,o=[],a=new Set;for(const e of[...n].sort((e,t)=>i(e)-i(t))){if(o.length>=t)break;if("string"!=typeof(null==e?void 0:e.keyword))continue;const r=Y(e.keyword);0===r.length||a.has(r)||(a.add(r),o.push(r))}o.length>0&&(s[c]=o)}return s}(this.contextualResponse,e,t)}async tokenize(e){return await this.init,function(e,t){let r={id:t};return E("/v2/tokenize",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})}(this.dcn,e)}async resolve(e){return await this.init,async function(e,t){const r=new URLSearchParams;"string"==typeof t&&r.append("id",t);const n="/v1/resolve?"+r.toString();return function(e){const t={clusters:[],lmpid:""};if("object"!=typeof e||null===e)return t;if("lmpid"in e&&"string"==typeof(null==e?void 0:e.lmpid)&&(t.lmpid=e.lmpid),!("clusters"in e)||!Array.isArray(null==e?void 0:e.clusters))return t;for(const r of e.clusters){const e={ids:[],traits:[]};if(Array.isArray(null==r?void 0:r.ids))for(const t of r.ids)"string"==typeof t&&e.ids.push(t);if(Array.isArray(null==r?void 0:r.traits))for(const t of r.traits)"string"==typeof(null==t?void 0:t.key)&&"string"==typeof(null==t?void 0:t.value)&&e.traits.push({key:t.key,value:t.value});(e.ids.length>0||e.traits.length>0)&&t.clusters.push(e)}return t}(await E(n,e,{method:"GET",headers:{Accept:"application/json"}}))}(this.dcn,e)}static eid(e){return e?"e:"+Q.sha256.hex(e.toLowerCase().trim()):""}static sha256(e){return e?Q.sha256.hex(e):""}static cid(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r="c:";if("string"!=typeof e)throw new Error("Invalid ppid");if("number"!=typeof t||isNaN(t)||t<0||t>19)throw new Error("Invalid variant");return t>0&&(r="c".concat(t,":")),e?r+e.trim():""}static TargetingKeyValues(e){return W(e)}static PrebidORTB2(e){return j(e)}}t(Z,"version",n);const $=Z;var X=r(704);function ee(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function te(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?ee(Object(n),!0).forEach(function(r){t(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ee(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const re="REQUESTED",ne="RECEIVED",ie="NO_BID",oe="TIMEOUT",se="optable:prebid:analytics:sample-number";const ae=class{constructor(e){var r,n,i,o,s;let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{samplingRate:1,samplingVolume:"event",bidWinTimeout:1e4};if(t(this,"isInitialized",!1),t(this,"labelStyle","color: white; background-color: #9198dc; padding: 2px 4px; border-radius: 2px;"),t(this,"maxAuctionDataSize",50),t(this,"auctions",new Map),t(this,"missedAuctionIds",new Set),t(this,"pendingTimeoutBids",new Map),t(this,"prebidInstance",void 0),t(this,"handleVisibilityChange",()=>{if("hidden"!==document.visibilityState)return;if(!this.optableInstance.dcn)return;const e=F("/witness",this.optableInstance.dcn).url;this.auctions.forEach((t,r)=>{t.auctionEndTimeoutId&&t.sampled&&(clearTimeout(t.auctionEndTimeoutId),this.auctions.delete(r),this.toWitness(t.auctionEnd,t.bidWonEvents,t.missed).then(r=>{r.auctionEndAt=t.createdAt.toISOString(),r.bidWonAt=t.bidWonEvents.length>0?new Date(Math.min(...t.bidWonEvents.map(e=>e._receivedAt.getTime()))).toISOString():null,r.optableLoaded=!t.missed,navigator.sendBeacon(e,new Blob([JSON.stringify({event:"optable.prebid.auction",properties:r})],{type:"application/json"}))}))})}),this.optableInstance=e,this.config=a,!e||"function"!=typeof e.witness)throw new Error("OptablePrebidAnalytics requires a valid optable instance with witness() method");this.config.debug=null!==(r=a.debug)&&void 0!==r&&r,this.config.bidWinTimeout=null!==(n=a.bidWinTimeout)&&void 0!==n?n:1e4,this.config.samplingRate=null!==(i=a.samplingRate)&&void 0!==i?i:1,this.config.samplingVolume=null!==(o=a.samplingVolume)&&void 0!==o?o:"event","session"===this.config.samplingVolume?sessionStorage.setItem(se,Math.random().toFixed(2)):sessionStorage.removeItem(se),sessionStorage.optableSessionDepth=(Number(null===(s=sessionStorage)||void 0===s?void 0:s.optableSessionDepth)||0)+1,this.isInitialized=!0,this.maxAuctionDataSize=50,document.addEventListener("visibilitychange",this.handleVisibilityChange),this.log("OptablePrebidAnalytics initialized")}log(){if(this.config.debug){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];console.log("%cOptable%c [OptablePrebidAnalytics]",this.labelStyle,"color: inherit;",...t)}}shouldSample(){if(this.config.samplingRate<=0)return!1;if(this.config.samplingRate>=1)return!0;if(this.config.samplingRateFn)return this.config.samplingRateFn();if("session"===this.config.samplingVolume)return Number(sessionStorage.getItem(se)||"1")<this.config.samplingRate;if(this.config.samplingSeed){return[...this.config.samplingSeed].reduce((e,t)=>e+t.charCodeAt(0),0)%1e4/1e4<this.config.samplingRate}return Math.random()<this.config.samplingRate}async sendToWitnessAPI(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.config.analytics)return this.log("Witness API calls disabled - would send:",e,t),{disabled:!0,eventName:e,properties:t};try{await this.optableInstance.witness(e,t),this.log("Sending to Witness API:",e,t)}catch(r){throw this.log("Error sending to Witness API:",e,t,r),r}return{disabled:!1,eventName:e,properties:t}}setHooks(e){this.log("Processing past events"),e.getEvents().forEach(e=>{"auctionInit"===e.eventType?this.missedAuctionIds.add(e.args.auctionId):"bidTimeout"===e.eventType?e.args.forEach(e=>{const t=this.pendingTimeoutBids.get(e.auctionId)||[];t.push(e),this.pendingTimeoutBids.set(e.auctionId,t)}):"auctionEnd"===e.eventType?(this.missedAuctionIds.delete(e.args.auctionId),this.log("auction ".concat(e.args.auctionId," missed (completed before hook)")),this.trackAuctionEnd(e.args,!0)):"bidWon"===e.eventType&&(this.log("bid won missed"),this.trackBidWon(e.args,!0))}),this.log("Hooking into Prebid.js events"),e.onEvent("bidTimeout",e=>{this.log("bidTimeout event received",e),e.forEach(e=>{const t=this.pendingTimeoutBids.get(e.auctionId)||[];t.push(e),this.pendingTimeoutBids.set(e.auctionId,t)})}),e.onEvent("auctionEnd",e=>{this.log("auctionEnd event received");const t=this.missedAuctionIds.has(e.auctionId);t&&this.missedAuctionIds.delete(e.auctionId),this.trackAuctionEnd(e,t)}),e.onEvent("bidWon",e=>{this.log("bidWon event received"),this.trackBidWon(e)})}hookIntoPrebid(){const e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.pbjs;return this.prebidInstance=e,void 0===e?(this.log("Prebid.js not found"),!1):("function"!=typeof e.onEvent?(e.que=e.que||[],e.que.push(()=>this.setHooks(e))):this.setHooks(e),!0)}async trackAuctionEnd(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const{auctionId:r,timeout:n,bidderRequests:i=[],bidsReceived:o=[],noBids:s=[]}=e,a=this.pendingTimeoutBids.get(r)||[],c=!!this.config.analytics&&this.shouldSample();this.log("Processing auction ".concat(r," with ").concat(i.length," bidder requests")),window.optable=window.optable||{},window.optable.pageAuctionsCount=(Number(window.optable.pageAuctionsCount)||0)+1;const d={auctionId:r,timeout:n,bidderRequests:i.map(e=>{var t,r,n,i,o,s;const{bidderCode:a,bidderRequestId:c,bids:d=[]}=e,u=null!==(t=null===(r=e.ortb2.site)||void 0===r?void 0:r.domain)&&void 0!==t?t:"unknown",l=[...null!==(n=null===(i=e.ortb2.user)||void 0===i||null===(i=i.ext)||void 0===i?void 0:i.eids)&&void 0!==n?n:[],...null!==(o=null===(s=e.ortb2.user)||void 0===s?void 0:s.eids)&&void 0!==o?o:[]],f=Array.from(new Map(l.map(e=>[e.source,e])).values()).filter(e=>"optable.co"===e.inserter),h=[...new Set(f.map(e=>e.matcher).filter(Boolean))],p=[...new Set(f.map(e=>e.source).filter(Boolean))];return{bidderCode:a,bidderRequestId:c,domain:u,hasOEids:f.length>0,optableMatchers:h,optableSources:p,status:re,bids:d.map(e=>{var t,r;return{bidId:e.bidId,bidderRequestId:c,adUnitCode:e.adUnitCode,adUnitId:e.adUnitId,transactionId:e.transactionId,src:e.src,floorMin:null===(t=e.floorData)||void 0===t?void 0:t.floorMin,splitTestAssignment:null===(r=e.ortb2Imp)||void 0===r||null===(r=r.ext)||void 0===r||null===(r=r.optable)||void 0===r?void 0:r.splitTestAssignment,status:re}})}})},u={},l={},f={};d.bidderRequests.forEach(e=>{u[e.bidderRequestId]=e,e.bids.forEach(t=>{l[t.bidId]=t,f[t.bidId]=e})}),o.forEach(e=>{const t=e.requestId,r=f[t];if(!r)return void this.log("No bidderRequest found for bidId=".concat(t));let n=l[t];var i,o;n?Object.assign(n,{status:ne,cpm:e.cpm,size:"".concat(e.width,"x").concat(e.height),currency:e.currency,splitTestAssignment:null===(i=e.ortb2Imp)||void 0===i||null===(i=i.ext)||void 0===i||null===(i=i.optable)||void 0===i?void 0:i.splitTestAssignment}):(n={bidId:t,bidderRequestId:r.bidderRequestId,adUnitCode:e.adUnitCode,adUnitId:e.adUnitId,transactionId:e.transactionId,src:e.src,cpm:e.cpm,size:"".concat(e.width,"x").concat(e.height),currency:e.currency,status:ne,splitTestAssignment:null===(o=e.ortb2Imp)||void 0===o||null===(o=o.ext)||void 0===o||null===(o=o.optable)||void 0===o?void 0:o.splitTestAssignment},r.bids.push(n),l[t]=n,f[t]=r),r.status===re&&(r.status=ne)}),s.forEach(e=>{const t=u[e.bidderRequestId];t&&(t.status=ie,t.bids.forEach(e=>{e.status=ie}))}),a.forEach(e=>{const t=u[e.bidderRequestId];t&&(t.status=oe,t.bids.forEach(e=>{e.status=oe}))});const h=new Date,p=setTimeout(async()=>{const t=this.auctions.get(r);if(!t)return;if(!t.sampled)return void this.auctions.delete(r);const n=t.missed,i=await this.toWitness(e,t.bidWonEvents,n);i.auctionEndAt=h.toISOString(),i.bidWonAt=t.bidWonEvents.length>0?new Date(Math.min(...t.bidWonEvents.map(e=>e._receivedAt.getTime()))).toISOString():null,i.optableLoaded=!n,this.sendToWitnessAPI("optable.prebid.auction",i),this.auctions.delete(r)},this.config.bidWinTimeout);this.auctions.set(r,{auctionEnd:e,createdAt:h,missed:t,auctionEndTimeoutId:p,bidWonEvents:[],timeoutBids:a,sampled:c}),this.pendingTimeoutBids.delete(r),this.cleanupOldAuctions()}async trackBidWon(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.log("bidWon event",{auctionId:e.auctionId,bidderCode:e.bidderCode,missed:t});const r=this.auctions.get(e.auctionId);r?(r.bidWonEvents.push(te(te({},e),{},{_receivedAt:new Date})),t&&(r.missed=!0)):this.log("Missing 'auctionEnd' event. Skipping.")}cleanupOldAuctions(){const e=[...this.auctions.keys()];if(e.length>this.maxAuctionDataSize){const t=e[0];this.auctions.delete(t),this.log("Cleaned up old auction: ".concat(t))}}clearData(){this.auctions.clear(),this.missedAuctionIds.clear(),this.log("All analytics data cleared")}async toWitness(e,t){var r,n,i,o,s,a,c,d,u;let l=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{auctionId:f,bidderRequests:h=[],bidsReceived:p=[],noBids:g=[]}=e,v=(null===(r=this.auctions.get(f))||void 0===r?void 0:r.timeoutBids)||[],b=new Set,m=new Set;let y=null;const w=h.map(e=>{var t,r,n,i,o,s;const{bidderCode:a,bidderRequestId:c,bids:d=[]}=e,u=null!==(t=null===(r=e.ortb2.site)||void 0===r?void 0:r.domain)&&void 0!==t?t:"unknown",l=[...null!==(n=null===(i=e.ortb2.user)||void 0===i||null===(i=i.ext)||void 0===i?void 0:i.eids)&&void 0!==n?n:[],...null!==(o=null===(s=e.ortb2.user)||void 0===s?void 0:s.eids)&&void 0!==o?o:[]],f=Array.from(new Map(l.map(e=>[e.source,e])).values()).filter(e=>"optable.co"===e.inserter),h=[...new Set(f.map(e=>e.matcher).filter(Boolean))],p=[...new Set(f.map(e=>e.source).filter(Boolean))];return y=e.ortb2.device,{bidderCode:a,bidderRequestId:c,domain:u,optableTargetingDone:f.length>0,optableMatchers:h,optableSources:p,status:re,bids:d.map(e=>{var t,r;return{bidId:e.bidId,bidderRequestId:c,adUnitCode:e.adUnitCode,adUnitId:e.adUnitId,transactionId:e.transactionId,src:e.src,floorMin:null===(t=e.floorData)||void 0===t?void 0:t.floorMin,splitTestAssignment:null===(r=e.ortb2Imp)||void 0===r||null===(r=r.ext)||void 0===r||null===(r=r.optable)||void 0===r?void 0:r.splitTestAssignment,status:re}})}}),A=new Map(p.map(e=>[e.requestId,e])),S=new Set(g.map(e=>e.bidderRequestId)),M=new Set(v.map(e=>e.bidderRequestId));w.forEach(e=>{e.bids.forEach(t=>{const r=A.get(t.bidId);if(r){var n;t.status=ne,t.cpm=r.cpm,t.size="".concat(r.width,"x").concat(r.height),t.currency=r.currency;const i=null===(n=r.ortb2Imp)||void 0===n||null===(n=n.ext)||void 0===n||null===(n=n.optable)||void 0===n?void 0:n.splitTestAssignment;void 0!==i&&(t.splitTestAssignment=i),e.status===re&&(e.status=ne)}}),S.has(e.bidderRequestId)&&e.status===re&&(e.status=ie),M.has(e.bidderRequestId)&&(e.status=oe)});const P={bidderRequests:w.map(e=>(e.optableMatchers.forEach(e=>b.add(e)),e.optableSources.forEach(e=>m.add(e)),e)),auctionId:f,adUnitCode:"unknown",totalRequests:h.length,optableSampling:this.config.samplingRate||1,optableTargetingDone:b.size>0||m.size>0?"1":"0",optableMatchers:Array.from(b),optableSources:Array.from(m),bidWon:t.map(e=>({bidderCode:e.bidderCode,adUnitCode:e.adUnitCode,cpm:e.cpm})),missed:l,url:"".concat(window.location.hostname).concat(window.location.pathname),tenant:null!==(n=null===(i=this.optableInstance)||void 0===i||null===(i=i.dcn)||void 0===i?void 0:i.node)&&void 0!==n?n:"unknown",optableWrapperVersion:SDK_WRAPPER_VERSION||"unknown",userAgent:X.parse(window.navigator.userAgent),device:y,prebidjsVersion:(null===(o=this.prebidInstance)||void 0===o?void 0:o.version)||"unknown",sessionDepth:(null===(s=sessionStorage)||void 0===s?void 0:s.optableSessionDepth)||1,pageAuctionsCount:(null===(a=window.optable)||void 0===a?void 0:a.pageAuctionsCount)||1,originSlug:(null===(c=this.optableInstance)||void 0===c||null===(c=c.dcn)||void 0===c?void 0:c.site)||(null===(d=window.optable)||void 0===d?void 0:d.site)||"unknown"};return this.log("Auction ".concat(f," processed: ").concat(h.length," requests, ").concat(0," total bids, ").concat(p.length," received, ").concat(g.length," no-bids, ").concat(v.length," timeouts")),null!==(u=window.optable)&&void 0!==u&&u.customAnalytics&&await window.optable.customAnalytics().then(e=>{this.log("Adding custom data to payload ".concat(JSON.stringify(e))),Object.assign(P,e)}),P}};function ce(e){var t,r,n,i,o,s,a,c,d,u;return{advertiser_id:null===(t=e.advertiserId)||void 0===t?void 0:t.toString(),campaign_id:null===(r=e.campaignId)||void 0===r?void 0:r.toString(),creative_id:null===(n=e.creativeId)||void 0===n?void 0:n.toString(),is_empty:null===(i=e.isEmpty)||void 0===i?void 0:i.toString(),line_item_id:null===(o=e.lineItemId)||void 0===o?void 0:o.toString(),service_name:null===(s=e.serviceName)||void 0===s?void 0:s.toString(),size:null===(a=e.size)||void 0===a?void 0:a.toString(),slot_element_id:null===(c=e.slot)||void 0===c?void 0:c.getSlotElementId(),source_agnostic_creative_id:null===(d=e.sourceAgnosticCreativeId)||void 0===d?void 0:d.toString(),source_agnostic_line_item_id:null===(u=e.sourceAgnosticLineItemId)||void 0===u?void 0:u.toString()}}$.prototype.installGPTEventListeners=function(e){const t=this;t.installGPTEventListeners=function(){},window.googletag=window.googletag||{cmd:[]};const r=window.googletag,n=["slotRenderEnded","impressionViewable"];function i(e,t){if(!e||!t||!t.length)return{};const r={};for(const n of t)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}r.cmd.push(function(){try{const o=r.pubads&&r.pubads();if(!o||"function"!=typeof o.addEventListener)return;const s=e?Object.keys(e):n;for(const r of s){const n=e?e[r]:"all";o.addEventListener(r,function(e){const o=ce(e),s=Array.isArray(n)&&n.length?i(o,n):o;Object.keys(s).length>0&&t.witness("gpt_events_"+r.replace(/[A-Z]/g,e=>"_"+e.toLowerCase()),s)})}}catch(e){}})},$.prototype.installGPTSecureSignals=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];window.googletag=window.googletag||{cmd:[]};const n=window.googletag;t&&t.length>0&&n.cmd.push(()=>{t.forEach(e=>{let{provider:t,id:r}=e;n.secureSignalProviders.push({id:t,collectorFunction:()=>Promise.resolve(r)})})})};const de=/^[a-f0-9]{64}$/i;$.prototype.tryIdentifyFromParams=function(e,t){const r=new RegExp("^".concat(e||"oeid","$"),"i"),n=new URLSearchParams(window.location.search);let i="";for(const[e,t]of n)if(r.test(e)){i=t;break}""!=i&&(t||function(e){return de.test(e)}(i))&&this.identify((t||"e")+":"+i)},window.optable=window.optable||{},window.optable.SDK=$,window.optable.OptablePrebidAnalytics=ae,window.optable.cmd=new class{constructor(e){if(this.cmds=e,Array.isArray(this.cmds))for(const e of this.cmds)"function"==typeof e&&e()}push(e){e()}}(window.optable.cmd||[]),window.optable.utils={resolveMultiNodeTargeting:async function(e){return e?e.some(e=>e.priority)?async function(e){const t=new Set,r=new Set,{refs:n,process:i}=K(),o={user:{data:[],eids:[]}},s=new Map,a=new Map,c=new Map;const d=e.map(e=>{let{targetingFn:t,matcher:r,mm:n,priority:d}=e;return t().then(e=>function(e,t,r){var n,d,u;let l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;const f=Math.max(0,l),{data:h=[],eids:p=[]}=null!==(n=null===(d=e.ortb2)||void 0===d?void 0:d.user)&&void 0!==n?n:{};o.user.data.push(...h),c.set(f,null!==(u=e.resolved_ids)&&void 0!==u?u:[]),p.filter(e=>e.uids.length).forEach(n=>{var o,c,d,u,l;const h=null!==(o=n.matcher)&&void 0!==o?o:t,p=null!==(c=s.get(f))&&void 0!==c?c:[];h&&s.set(f,[...p,h]);const g=q(q({},i(e,n)),{},{matcher:null!==(d=n.matcher)&&void 0!==d?d:t,mm:null!==(u=n.mm)&&void 0!==u?u:r}),v=null!==(l=a.get(f))&&void 0!==l?l:[];a.set(f,[...v,g])})}(e,r,n,d))});await Promise.allSettled(d);const u=Array.from(a.keys()).sort((e,t)=>e-t).filter(e=>{var t;return null===(t=a.get(e))||void 0===t?void 0:t.length}).shift();if(u){const e=s.get(u)||[],n=c.get(u)||[];o.user.eids.push(...a.get(u)||[]),e.forEach(e=>t.add(e)),n.forEach(e=>r.add(e))}return{ortb2:o,eidSources:t,refs:n,resolvedIds:r}}(e):async function(e){const t=new Set,r=new Set,{refs:n,process:i}=K(),o={user:{data:[],eids:[]}};const s=e.map(e=>{let{targetingFn:n,matcher:s,mm:a}=e;return n().then(e=>function(e,n,s){var a,c,d;const{data:u=[],eids:l=[]}=null!==(a=null===(c=e.ortb2)||void 0===c?void 0:c.user)&&void 0!==a?a:{};o.user.data.push(...u),null===(d=e.resolved_ids)||void 0===d||d.forEach(e=>r.add(e)),l.filter(e=>e.uids.length).forEach(r=>{var a,c,d;const u=null!==(a=r.matcher)&&void 0!==a?a:n;u&&t.add(u),o.user.eids.push(q(q({},i(e,r)),{},{mm:null!==(c=r.mm)&&void 0!==c?c:s,matcher:null!==(d=r.matcher)&&void 0!==d?d:n}))})}(e,s,a))});return await Promise.allSettled(s),{ortb2:o,eidSources:t,refs:n,resolvedIds:r}}(e):Promise.reject("No targeting rules provided")}},window.optable.instance_config&&(window.optable.instance=new $(window.optable.instance_config))})()})();
|
|
2
|
+
(()=>{var e={129(){},432(){},704(e){e.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0});t.push(0);var r=t[0],n=t[1];if(10===r)switch(n){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}switch(r){case 11:return"Big Sur";case 12:return"Monterey";case 13:return"Ventura";case 14:return"Sonoma";case 15:return"Sequoia";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0});if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),o=e.getVersionPrecision(r),s=Math.max(i,o),a=0,c=e.map([t,r],function(t){var r=s-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),function(e){return new Array(20-e.length).join("0")+e}).reverse()});for(n&&(a=s-Math.min(i,o)),s-=1;s>=a;){if(c[0][s]>c[1][s])return 1;if(c[0][s]===c[1][s]){if(s===a)return 0;s-=1}else if(c[0][s]<c[1][s])return-1}},e.map=function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n},e.find=function(e,t){var r,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,n=e.length;r<n;r+=1){var i=e[r];if(t(i,r))return i}},e.assign=function(e){for(var t,r,n=e,i=arguments.length,o=new Array(i>1?i-1:0),s=1;s<i;s++)o[s-1]=arguments[s];if(Object.assign)return Object.assign.apply(Object,[e].concat(o));var a=function(){var e=o[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach(function(t){n[t]=e[t]})};for(t=0,r=o.length;t<r;t+=1)a();return e},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||""},e}();t.default=i,e.exports=t.default},18:function(e,t,r){"use strict";t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0,t.BROWSER_ALIASES_MAP={AmazonBot:"amazonbot","Amazon Silk":"amazon_silk","Android Browser":"android",BaiduSpider:"baiduspider",Bada:"bada",BingCrawler:"bingcrawler",Brave:"brave",BlackBerry:"blackberry","ChatGPT-User":"chatgpt_user",Chrome:"chrome",ClaudeBot:"claudebot",Chromium:"chromium",Diffbot:"diffbot",DuckDuckBot:"duckduckbot",DuckDuckGo:"duckduckgo",Electron:"electron",Epiphany:"epiphany",FacebookExternalHit:"facebookexternalhit",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot",GPTBot:"gptbot","Internet Explorer":"ie",InternetArchiveCrawler:"internetarchivecrawler","K-Meleon":"k_meleon",LibreWolf:"librewolf",Linespider:"linespider",Maxthon:"maxthon","Meta-ExternalAds":"meta_externalads","Meta-ExternalAgent":"meta_externalagent","Meta-ExternalFetcher":"meta_externalfetcher","Meta-WebIndexer":"meta_webindexer","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver","OAI-SearchBot":"oai_searchbot",Omgilibot:"omgilibot",Opera:"opera","Opera Coast":"opera_coast","Pale Moon":"pale_moon",PerplexityBot:"perplexitybot","Perplexity-User":"perplexity_user",PhantomJS:"phantomjs",PingdomBot:"pingdombot",Puffin:"puffin",QQ:"qq",QQLite:"qqlite",QupZilla:"qupzilla",Roku:"roku",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SlackBot:"slackbot",SeaMonkey:"seamonkey",Sleipnir:"sleipnir","Sogou Browser":"sogou",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat",YahooSlurp:"yahooslurp","Yandex Browser":"yandex",YandexBot:"yandexbot",YouBot:"youbot"},t.BROWSER_MAP={amazonbot:"AmazonBot",amazon_silk:"Amazon Silk",android:"Android Browser",baiduspider:"BaiduSpider",bada:"Bada",bingcrawler:"BingCrawler",blackberry:"BlackBerry",brave:"Brave",chatgpt_user:"ChatGPT-User",chrome:"Chrome",claudebot:"ClaudeBot",chromium:"Chromium",diffbot:"Diffbot",duckduckbot:"DuckDuckBot",duckduckgo:"DuckDuckGo",edge:"Microsoft Edge",electron:"Electron",epiphany:"Epiphany",facebookexternalhit:"FacebookExternalHit",firefox:"Firefox",focus:"Focus",generic:"Generic",google_search:"Google Search",googlebot:"Googlebot",gptbot:"GPTBot",ie:"Internet Explorer",internetarchivecrawler:"InternetArchiveCrawler",k_meleon:"K-Meleon",librewolf:"LibreWolf",linespider:"Linespider",maxthon:"Maxthon",meta_externalads:"Meta-ExternalAds",meta_externalagent:"Meta-ExternalAgent",meta_externalfetcher:"Meta-ExternalFetcher",meta_webindexer:"Meta-WebIndexer",mz:"MZ Browser",naver:"NAVER Whale Browser",oai_searchbot:"OAI-SearchBot",omgilibot:"Omgilibot",opera:"Opera",opera_coast:"Opera Coast",pale_moon:"Pale Moon",perplexitybot:"PerplexityBot",perplexity_user:"Perplexity-User",phantomjs:"PhantomJS",pingdombot:"PingdomBot",puffin:"Puffin",qq:"QQ Browser",qqlite:"QQ Browser Lite",qupzilla:"QupZilla",roku:"Roku",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",slackbot:"SlackBot",sleipnir:"Sleipnir",sogou:"Sogou Browser",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yahooslurp:"YahooSlurp",yandex:"Yandex Browser",yandexbot:"YandexBot",youbot:"YouBot"},t.PLATFORMS_MAP={bot:"bot",desktop:"desktop",mobile:"mobile",tablet:"tablet",tv:"tv"},t.OS_MAP={Android:"Android",Bada:"Bada",BlackBerry:"BlackBerry",ChromeOS:"Chrome OS",HarmonyOS:"HarmonyOS",iOS:"iOS",Linux:"Linux",MacOS:"macOS",PlayStation4:"PlayStation 4",Roku:"Roku",Tizen:"Tizen",WebOS:"WebOS",Windows:"Windows",WindowsPhone:"Windows Phone"},t.ENGINE_MAP={Blink:"Blink",EdgeHTML:"EdgeHTML",Gecko:"Gecko",Presto:"Presto",Trident:"Trident",WebKit:"WebKit"}},90:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,i=(n=r(91))&&n.__esModule?n:{default:n},o=r(18);function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var a=function(){function e(){}var t,r;return e.getParser=function(e,t,r){if(void 0===t&&(t=!1),void 0===r&&(r=null),"string"!=typeof e)throw new Error("UserAgent should be a string");return new i.default(e,t,r)},e.parse=function(e,t){return void 0===t&&(t=null),new i.default(e,t).getResult()},t=e,r=[{key:"BROWSER_MAP",get:function(){return o.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return o.ENGINE_MAP}},{key:"OS_MAP",get:function(){return o.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return o.PLATFORMS_MAP}}],null&&s(t.prototype,null),r&&s(t,r),e}();t.default=a,e.exports=t.default},91:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n=c(r(92)),i=c(r(93)),o=c(r(94)),s=c(r(95)),a=c(r(17));function c(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t,r){if(void 0===t&&(t=!1),void 0===r&&(r=null),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e;var n=!1;"boolean"==typeof t?(n=t,this._hints=r):this._hints=null!=t&&"object"==typeof t?t:null,this.parsedResult={},!0!==n&&this.parse()}var t=e.prototype;return t.getHints=function(){return this._hints},t.hasBrand=function(e){if(!this._hints||!Array.isArray(this._hints.brands))return!1;var t=e.toLowerCase();return this._hints.brands.some(function(e){return e.brand&&e.brand.toLowerCase()===t})},t.getBrandVersion=function(e){if(this._hints&&Array.isArray(this._hints.brands)){var t=e.toLowerCase(),r=this._hints.brands.find(function(e){return e.brand&&e.brand.toLowerCase()===t});return r?r.version:void 0}},t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=a.default.find(n.default,function(t){if("function"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.browser=t.describe(this.getUA(),this)),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=a.default.find(i.default,function(t){if("function"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=a.default.find(o.default,function(t){if("function"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=a.default.find(s.default,function(t){if("function"==typeof t.test)return t.test(e);if(Array.isArray(t.test))return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return a.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},n=0,i={},o=0;if(Object.keys(e).forEach(function(t){var s=e[t];"string"==typeof s?(i[t]=s,o+=1):"object"==typeof s&&(r[t]=s,n+=1)}),n>0){var s=Object.keys(r),c=a.default.find(s,function(e){return t.isOS(e)});if(c){var d=this.satisfies(r[c]);if(void 0!==d)return d}var u=a.default.find(s,function(e){return t.isPlatform(e)});if(u){var l=this.satisfies(r[u]);if(void 0!==l)return l}}if(o>0){var f=Object.keys(i),h=a.default.find(f,function(e){return t.isBrowser(e,!0)});if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=a.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(a.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some(function(e){return t.is(e)})},e}();t.default=d,e.exports=t.default},92:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/gptbot/i],describe:function(e){var t={name:"GPTBot"},r=i.default.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chatgpt-user/i],describe:function(e){var t={name:"ChatGPT-User"},r=i.default.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/oai-searchbot/i],describe:function(e){var t={name:"OAI-SearchBot"},r=i.default.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(e){var t={name:"ClaudeBot"},r=i.default.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(e){var t={name:"Omgilibot"},r=i.default.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/diffbot/i],describe:function(e){var t={name:"Diffbot"},r=i.default.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/perplexitybot/i],describe:function(e){var t={name:"PerplexityBot"},r=i.default.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/perplexity-user/i],describe:function(e){var t={name:"Perplexity-User"},r=i.default.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/youbot/i],describe:function(e){var t={name:"YouBot"},r=i.default.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-webindexer/i],describe:function(e){var t={name:"Meta-WebIndexer"},r=i.default.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-externalads/i],describe:function(e){var t={name:"Meta-ExternalAds"},r=i.default.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-externalagent/i],describe:function(e){var t={name:"Meta-ExternalAgent"},r=i.default.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-externalfetcher/i],describe:function(e){var t={name:"Meta-ExternalFetcher"},r=i.default.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/linespider/i],describe:function(e){var t={name:"Linespider"},r=i.default.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/amazonbot/i],describe:function(e){var t={name:"AmazonBot"},r=i.default.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/bingbot/i],describe:function(e){var t={name:"BingCrawler"},r=i.default.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/baiduspider/i],describe:function(e){var t={name:"BaiduSpider"},r=i.default.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/duckduckbot/i],describe:function(e){var t={name:"DuckDuckBot"},r=i.default.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ia_archiver/i],describe:function(e){var t={name:"InternetArchiveCrawler"},r=i.default.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{name:"FacebookExternalHit"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(e){var t={name:"SlackBot"},r=i.default.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/yahoo!?[\s/]*slurp/i],describe:function(){return{name:"YahooSlurp"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{name:"YandexBot"}}},{test:[/pingdom/i],describe:function(){return{name:"PingdomBot"}}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/PaleMoon/i],describe:function(e){var t={name:"Pale Moon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:PaleMoon)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(o,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/librewolf/i],describe:function(e){var t={name:"LibreWolf"},r=i.default.getFirstMatch(/(?:librewolf)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sogoumobilebrowser/i,/metasr/i,/se 2\.[x]/i],describe:function(e){var t={name:"Sogou Browser"},r=i.default.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i,e),n=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e),o=i.default.getFirstMatch(/se ([\d.]+)x/i,e),s=r||n||o;return s&&(t.version=s),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return!!e.hasBrand("DuckDuckGo")||e.test(/\sDdg\/[\d.]+$/i)},describe:function(e,t){var r={name:"DuckDuckGo"};if(t){var n=t.getBrandVersion("DuckDuckGo");if(n)return r.version=n,r}var o=i.default.getFirstMatch(/\sDdg\/([\d.]+)$/i,e);return o&&(r.version=o),r}},{test:function(e){return e.hasBrand("Brave")},describe:function(e,t){var r={name:"Brave"};if(t){var n=t.getBrandVersion("Brave");if(n)return r.version=n,r}return r}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=s,e.exports=t.default},93:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:o.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:o.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:o.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:o.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:t}}},{test:[/OpenHarmony/i],describe:function(e){var t=i.default.getFirstMatch(/OpenHarmony\s+(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.HarmonyOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:o.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:o.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:o.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.PlayStation4,version:t}}}];t.default=s,e.exports=t.default},94:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:[/googlebot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Google"}}},{test:[/linespider/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Line"}}},{test:[/amazonbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Amazon"}}},{test:[/gptbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/chatgpt-user/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/oai-searchbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/baiduspider/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Baidu"}}},{test:[/bingbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Bing"}}},{test:[/duckduckbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"DuckDuckGo"}}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Anthropic"}}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Webz.io"}}},{test:[/diffbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Diffbot"}}},{test:[/perplexitybot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/perplexity-user/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/youbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"You.com"}}},{test:[/ia_archiver/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Internet Archive"}}},{test:[/meta-webindexer/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalads/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalagent/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalfetcher/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Slack"}}},{test:[/yahoo/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Yahoo"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Yandex"}}},{test:[/pingdom/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Pingdom"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/Nokia/i],describe:function(e){var t=i.default.getFirstMatch(/Nokia\s+([0-9]+(\.[0-9]+)?)/i,e),r={type:o.PLATFORMS_MAP.mobile,vendor:"Nokia"};return t&&(r.model=t),r}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:[/smart-?tv|smarttv/i],describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:[/netcast/i],describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];t.default=s,e.exports=t.default},95:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},o=r(18),s=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:o.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:o.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:o.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:o.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:o.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:o.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=s,e.exports=t.default}})},966(e,t,r){var n;!function(){"use strict";var t="input is invalid type",i="object"==typeof window,o=i?window:{};o.JS_SHA256_NO_WINDOW&&(i=!1);var s=!i&&"object"==typeof self,a=!o.JS_SHA256_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node&&"renderer"!=process.type;a?o=r.g:s&&(o=self);var c=!o.JS_SHA256_NO_COMMON_JS&&e.exports,d=r.amdO,u=!o.JS_SHA256_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,l="0123456789abcdef".split(""),f=[-2147483648,8388608,32768,128],h=[24,16,8,0],p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],g=["hex","array","digest","arrayBuffer"],b=[];!o.JS_SHA256_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),!u||!o.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return"object"==typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});var v=function(e,t){return function(r){return new S(t,!0).update(r)[e]()}},m=function(e){var t=v("hex",e);a&&(t=y(t,e)),t.create=function(){return new S(e)},t.update=function(e){return t.create().update(e)};for(var r=0;r<g.length;++r){var n=g[r];t[n]=v(n,e)}return t},y=function(e,n){var i,s=r(432),a=r(129).Buffer,c=n?"sha224":"sha256";return i=a.from&&!o.JS_SHA256_NO_BUFFER_FROM?a.from:function(e){return new a(e)},function(r){if("string"==typeof r)return s.createHash(c).update(r,"utf8").digest("hex");if(null==r)throw new Error(t);return r.constructor===ArrayBuffer&&(r=new Uint8Array(r)),Array.isArray(r)||ArrayBuffer.isView(r)||r.constructor===a?s.createHash(c).update(i(r)).digest("hex"):e(r)}},w=function(e,t){return function(r,n){return new M(r,t,!0).update(n)[e]()}},A=function(e){var t=w("hex",e);t.create=function(t){return new M(t,e)},t.update=function(e,r){return t.create(e).update(r)};for(var r=0;r<g.length;++r){var n=g[r];t[n]=w(n,e)}return t};function S(e,t){t?(b[0]=b[16]=b[1]=b[2]=b[3]=b[4]=b[5]=b[6]=b[7]=b[8]=b[9]=b[10]=b[11]=b[12]=b[13]=b[14]=b[15]=0,this.blocks=b):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],e?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=e}function M(e,r,n){var i,o=typeof e;if("string"===o){var s,a=[],c=e.length,d=0;for(i=0;i<c;++i)(s=e.charCodeAt(i))<128?a[d++]=s:s<2048?(a[d++]=192|s>>>6,a[d++]=128|63&s):s<55296||s>=57344?(a[d++]=224|s>>>12,a[d++]=128|s>>>6&63,a[d++]=128|63&s):(s=65536+((1023&s)<<10|1023&e.charCodeAt(++i)),a[d++]=240|s>>>18,a[d++]=128|s>>>12&63,a[d++]=128|s>>>6&63,a[d++]=128|63&s);e=a}else{if("object"!==o)throw new Error(t);if(null===e)throw new Error(t);if(u&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||u&&ArrayBuffer.isView(e)))throw new Error(t)}e.length>64&&(e=new S(r,!0).update(e).array());var l=[],f=[];for(i=0;i<64;++i){var h=e[i]||0;l[i]=92^h,f[i]=54^h}S.call(this,r,n),this.update(f),this.oKeyPad=l,this.inner=!0,this.sharedMemory=n}S.prototype.update=function(e){if(!this.finalized){var r,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(t);if(null===e)throw new Error(t);if(u&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||u&&ArrayBuffer.isView(e)))throw new Error(t);r=!0}for(var i,o,s=0,a=e.length,c=this.blocks;s<a;){if(this.hashed&&(this.hashed=!1,c[0]=this.block,this.block=c[16]=c[1]=c[2]=c[3]=c[4]=c[5]=c[6]=c[7]=c[8]=c[9]=c[10]=c[11]=c[12]=c[13]=c[14]=c[15]=0),r)for(o=this.start;s<a&&o<64;++s)c[o>>>2]|=e[s]<<h[3&o++];else for(o=this.start;s<a&&o<64;++s)(i=e.charCodeAt(s))<128?c[o>>>2]|=i<<h[3&o++]:i<2048?(c[o>>>2]|=(192|i>>>6)<<h[3&o++],c[o>>>2]|=(128|63&i)<<h[3&o++]):i<55296||i>=57344?(c[o>>>2]|=(224|i>>>12)<<h[3&o++],c[o>>>2]|=(128|i>>>6&63)<<h[3&o++],c[o>>>2]|=(128|63&i)<<h[3&o++]):(i=65536+((1023&i)<<10|1023&e.charCodeAt(++s)),c[o>>>2]|=(240|i>>>18)<<h[3&o++],c[o>>>2]|=(128|i>>>12&63)<<h[3&o++],c[o>>>2]|=(128|i>>>6&63)<<h[3&o++],c[o>>>2]|=(128|63&i)<<h[3&o++]);this.lastByteIndex=o,this.bytes+=o-this.start,o>=64?(this.block=c[16],this.start=o-64,this.hash(),this.hashed=!0):this.start=o}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296|0,this.bytes=this.bytes%4294967296),this}},S.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex;e[16]=this.block,e[t>>>2]|=f[3&t],this.block=e[16],t>=56&&(this.hashed||this.hash(),e[0]=this.block,e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.hBytes<<3|this.bytes>>>29,e[15]=this.bytes<<3,this.hash()}},S.prototype.hash=function(){var e,t,r,n,i,o,s,a,c,d=this.h0,u=this.h1,l=this.h2,f=this.h3,h=this.h4,g=this.h5,b=this.h6,v=this.h7,m=this.blocks;for(e=16;e<64;++e)t=((i=m[e-15])>>>7|i<<25)^(i>>>18|i<<14)^i>>>3,r=((i=m[e-2])>>>17|i<<15)^(i>>>19|i<<13)^i>>>10,m[e]=m[e-16]+t+m[e-7]+r|0;for(c=u&l,e=0;e<64;e+=4)this.first?(this.is224?(o=300032,v=(i=m[0]-1413257819)-150054599|0,f=i+24177077|0):(o=704751109,v=(i=m[0]-210244248)-1521486534|0,f=i+143694565|0),this.first=!1):(t=(d>>>2|d<<30)^(d>>>13|d<<19)^(d>>>22|d<<10),n=(o=d&u)^d&l^c,v=f+(i=v+(r=(h>>>6|h<<26)^(h>>>11|h<<21)^(h>>>25|h<<7))+(h&g^~h&b)+p[e]+m[e])|0,f=i+(t+n)|0),t=(f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10),n=(s=f&d)^f&u^o,b=l+(i=b+(r=(v>>>6|v<<26)^(v>>>11|v<<21)^(v>>>25|v<<7))+(v&h^~v&g)+p[e+1]+m[e+1])|0,t=((l=i+(t+n)|0)>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),n=(a=l&f)^l&d^s,g=u+(i=g+(r=(b>>>6|b<<26)^(b>>>11|b<<21)^(b>>>25|b<<7))+(b&v^~b&h)+p[e+2]+m[e+2])|0,t=((u=i+(t+n)|0)>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),n=(c=u&l)^u&f^a,h=d+(i=h+(r=(g>>>6|g<<26)^(g>>>11|g<<21)^(g>>>25|g<<7))+(g&b^~g&v)+p[e+3]+m[e+3])|0,d=i+(t+n)|0,this.chromeBugWorkAround=!0;this.h0=this.h0+d|0,this.h1=this.h1+u|0,this.h2=this.h2+l|0,this.h3=this.h3+f|0,this.h4=this.h4+h|0,this.h5=this.h5+g|0,this.h6=this.h6+b|0,this.h7=this.h7+v|0},S.prototype.hex=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,i=this.h4,o=this.h5,s=this.h6,a=this.h7,c=l[e>>>28&15]+l[e>>>24&15]+l[e>>>20&15]+l[e>>>16&15]+l[e>>>12&15]+l[e>>>8&15]+l[e>>>4&15]+l[15&e]+l[t>>>28&15]+l[t>>>24&15]+l[t>>>20&15]+l[t>>>16&15]+l[t>>>12&15]+l[t>>>8&15]+l[t>>>4&15]+l[15&t]+l[r>>>28&15]+l[r>>>24&15]+l[r>>>20&15]+l[r>>>16&15]+l[r>>>12&15]+l[r>>>8&15]+l[r>>>4&15]+l[15&r]+l[n>>>28&15]+l[n>>>24&15]+l[n>>>20&15]+l[n>>>16&15]+l[n>>>12&15]+l[n>>>8&15]+l[n>>>4&15]+l[15&n]+l[i>>>28&15]+l[i>>>24&15]+l[i>>>20&15]+l[i>>>16&15]+l[i>>>12&15]+l[i>>>8&15]+l[i>>>4&15]+l[15&i]+l[o>>>28&15]+l[o>>>24&15]+l[o>>>20&15]+l[o>>>16&15]+l[o>>>12&15]+l[o>>>8&15]+l[o>>>4&15]+l[15&o]+l[s>>>28&15]+l[s>>>24&15]+l[s>>>20&15]+l[s>>>16&15]+l[s>>>12&15]+l[s>>>8&15]+l[s>>>4&15]+l[15&s];return this.is224||(c+=l[a>>>28&15]+l[a>>>24&15]+l[a>>>20&15]+l[a>>>16&15]+l[a>>>12&15]+l[a>>>8&15]+l[a>>>4&15]+l[15&a]),c},S.prototype.toString=S.prototype.hex,S.prototype.digest=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,i=this.h4,o=this.h5,s=this.h6,a=this.h7,c=[e>>>24&255,e>>>16&255,e>>>8&255,255&e,t>>>24&255,t>>>16&255,t>>>8&255,255&t,r>>>24&255,r>>>16&255,r>>>8&255,255&r,n>>>24&255,n>>>16&255,n>>>8&255,255&n,i>>>24&255,i>>>16&255,i>>>8&255,255&i,o>>>24&255,o>>>16&255,o>>>8&255,255&o,s>>>24&255,s>>>16&255,s>>>8&255,255&s];return this.is224||c.push(a>>>24&255,a>>>16&255,a>>>8&255,255&a),c},S.prototype.array=S.prototype.digest,S.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(this.is224?28:32),t=new DataView(e);return t.setUint32(0,this.h0),t.setUint32(4,this.h1),t.setUint32(8,this.h2),t.setUint32(12,this.h3),t.setUint32(16,this.h4),t.setUint32(20,this.h5),t.setUint32(24,this.h6),this.is224||t.setUint32(28,this.h7),e},M.prototype=new S,M.prototype.finalize=function(){if(S.prototype.finalize.call(this),this.inner){this.inner=!1;var e=this.array();S.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(e),S.prototype.finalize.call(this)}};var P=m();P.sha256=P,P.sha224=m(!0),P.sha256.hmac=A(),P.sha224.hmac=A(!0),c?e.exports=P:(o.sha256=P.sha256,o.sha224=P.sha224,d&&(void 0===(n=function(){return P}.call(P,r,P,e))||(e.exports=n)))}()}},t={};function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n].call(o.exports,o,o.exports,r),o.exports}r.amdO={},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(t,r,n){return(r=function(t){var r=function(t){if("object"!=e(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!=e(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==e(r)?r:r+""}(r))in t?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,t}const n="v0.61.0";async function i(e){const t=await D("/config",e,{method:"GET",headers:{Accept:"application/json"}});return new A(e).setSite(t),t}const o={"Europe/Vienna":"gdpr","Europe/Brussels":"gdpr","Europe/Sofia":"gdpr","Europe/Zagreb":"gdpr","Asia/Nicosia":"gdpr","Europe/Nicosia":"gdpr","Europe/Prague":"gdpr","Europe/Copenhagen":"gdpr","Europe/Tallinn":"gdpr","Europe/Helsinki":"gdpr","Europe/Paris":"gdpr","Europe/Berlin":"gdpr","Europe/Athens":"gdpr","Europe/Budapest":"gdpr","Atlantic/Reykjavik":"gdpr","Europe/Dublin":"gdpr","Europe/Rome":"gdpr","Europe/Riga":"gdpr","Europe/Vaduz":"gdpr","Europe/Vilnius":"gdpr","Europe/Luxembourg":"gdpr","Europe/Malta":"gdpr","Europe/Oslo":"gdpr","Europe/Warsaw":"gdpr","Europe/Lisbon":"gdpr","Europe/Bucharest":"gdpr","Europe/Bratislava":"gdpr","Europe/Ljubljana":"gdpr","Europe/Madrid":"gdpr","Europe/Stockholm":"gdpr","Europe/Amsterdam":"gdpr","Atlantic/Azores":"gdpr","Atlantic/Canary":"gdpr","America/Cayenne":"gdpr","America/Guadeloupe":"gdpr","Atlantic/Madeira":"gdpr","America/Martinique":"gdpr","Indian/Mayotte":"gdpr","Indian/Reunion":"gdpr","America/Marigot":"gdpr","Europe/Zurich":"gdpr","Europe/London":"gdpr","America/Toronto":"can","America/Adak":"us","America/Anchorage":"us","America/Atka":"us","America/Boise":"us","America/Chicago":"us","America/Denver":"us","America/Detroit":"us","America/Indiana/Indianapolis":"us","America/Indiana/Knox":"us","America/Indiana/Marengo":"us","America/Indiana/Petersburg":"us","America/Indiana/Tell_City":"us","America/Indiana/Vevay":"us","America/Indiana/Vincennes":"us","America/Indiana/Winamac":"us","America/Indianapolis":"us","America/Juneau":"us","America/Kentucky/Louisville":"us","America/Kentucky/Monticello":"us","America/Knox_IN":"us","America/Los_Angeles":"us","America/Louisville":"us","America/Menominee":"us","America/Metlakatla":"us","America/New_York":"us","America/Nome":"us","America/North_Dakota/Beulah":"us","America/North_Dakota/Center":"us","America/North_Dakota/New_Salem":"us","America/Phoenix":"us","America/Shiprock":"us","America/Sitka":"us","America/Yakutat":"us","Pacific/Honolulu":"us"},s=["optableDebug","optableDisableConsent","optableResolve1P","optableResolve3P","optableEnableAnalytics","optableControlGroup","optableForceTargeting","optableForceGlobalRouting","optableForceSkipMerge","optableForceTokenize","optableResolveId5","optableResolveID5ID"];let a=null;function c(e){const t=(a||(a=function(){const e=function(e){const t={};try{const r=new URLSearchParams(window.location.search);for(const n of e)r.has(n)&&(t[n]=r.get(n)||"1")}catch(e){}try{for(const e of Object.keys(t))sessionStorage.setItem(e,t[e])}catch(e){}return t}(s);try{for(const t of s)if(!(t in e)){const r=sessionStorage.getItem(t);null!==r&&(e[t]=r)}}catch(e){}return e}()),a)[e];return!!t&&"0"!==t}const d=[2],u=[5],l=[7,8,10,12,17,13,18,14,19,20,21,15,22,16,11,9];function f(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=function(e,t){const{gdprApplies:r,gppSectionIDs:n,gdprData:i}=t;if(void 0!==r)return r?"gdpr":"gdpr"===e?null:e;if(void 0!==i&&"gdpr"===e)return"gdpr";if(void 0===n||1===n.length&&0===n[0])return e;if(1===n.length&&-1===n[0])return null;if(n.some(e=>d.includes(e)))return"gdpr";if(n.some(e=>u.includes(e)))return"can";if(n.some(e=>l.includes(e)))return"us";switch(e){case"gdpr":if(!n.some(e=>d.includes(e)))return null;break;case"can":if(!n.some(e=>u.includes(e)))return null;break;case"us":if(!n.some(e=>l.includes(e)))return null}return e}(e,t),i={reg:n,gpp:t.gppString,gppSectionIDs:t.gppSectionIDs,gdpr:t.gdprString,gdprApplies:t.gdprApplies,deviceAccess:!1,createProfilesForAdvertising:!1,useProfilesForAdvertising:!1,measureAdvertisingPerformance:!1};switch(n){case"gdpr":t.gdprData?(i.deviceAccess=p(t.gdprData,1,r.tcfeuVendorID),i.createProfilesForAdvertising=p(t.gdprData,3,r.tcfeuVendorID),i.useProfilesForAdvertising=p(t.gdprData,4,r.tcfeuVendorID),i.measureAdvertisingPerformance=p(t.gdprData,7,r.tcfeuVendorID)):t.gppData&&(i.deviceAccess=b(t.gppData,1,r.tcfeuVendorID),i.createProfilesForAdvertising=b(t.gppData,3,r.tcfeuVendorID),i.useProfilesForAdvertising=b(t.gppData,4,r.tcfeuVendorID),i.measureAdvertisingPerformance=b(t.gppData,7,r.tcfeuVendorID));break;case"can":i.deviceAccess=!0,t.gppData&&(i.createProfilesForAdvertising=g(t.gppData,3,r.tcfcaVendorID),i.useProfilesForAdvertising=g(t.gppData,4,r.tcfcaVendorID),i.measureAdvertisingPerformance=g(t.gppData,7,r.tcfcaVendorID));break;default:i.deviceAccess=!0,i.createProfilesForAdvertising=!0,i.useProfilesForAdvertising=!0,i.measureAdvertisingPerformance=!0}return i}function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(c("optableDisableConsent"))return{reg:null,deviceAccess:!0,createProfilesForAdvertising:!0,useProfilesForAdvertising:!0,measureAdvertisingPerformance:!0};const r={};!function(){if("function"==typeof window.__tcfapi)return;let e;const t={};let r=window;for(;r;){try{if(r.frames.__tcfapiLocator){e=r;break}}catch(e){}if(r===window.top)break;r=r.parent}e&&(window.__tcfapi=function(r,n,i){const o=Math.random()+"";t[o]=i,e.postMessage({__tcfapiCall:{command:r,version:n,callId:o}},"*")},window.addEventListener("message",e=>{let r={};try{r="string"==typeof e.data?JSON.parse(e.data):e.data}catch(e){}const n=r.__tcfapiReturn;n&&"function"==typeof t[n.callId]&&(t[n.callId](n.returnValue,n.success),delete t[n.callId])},!1))}(),function(){if("function"==typeof window.__gpp)return;let e;const t={};let r=window;for(;r;){try{if(r.frames.__gppLocator){e=r;break}}catch(e){}if(r===window.top)break;r=r.parent}e&&(window.__gpp=function(r,n){const i=Math.random()+"";t[i]=n,e.postMessage({__gppCall:{command:r,version:"1.1",callId:i}},"*")},window.addEventListener("message",e=>{let r={};try{r="string"==typeof e.data?JSON.parse(e.data):e.data}catch(e){}const n=r.__gppReturn;n&&"function"==typeof t[n.callId]&&(t[n.callId](n.returnValue,n.success),delete t[n.callId])},!1))}();const n=f(e,r,t);return"function"==typeof window.__tcfapi&&(null===(s=(a=window).__tcfapi)||void 0===s||s.call(a,"addEventListener",2,(i,o)=>{o&&("tcloaded"===i.eventStatus||"useractioncomplete"===i.eventStatus)&&(i=>{r.gdprString=i.tcString,r.gdprApplies=i.gdprApplies,r.gdprData=i,Object.assign(n,f(e,r,t))})(i)})),"function"==typeof window.__gpp&&(null===(i=(o=window).__gpp)||void 0===i||i.call(o,"addEventListener",(i,o)=>{o&&"signalStatus"===i.eventName&&"ready"===i.data&&(i=>{r.gppString=i.gppString,r.gppSectionIDs=i.applicableSections,r.gppData=i,Object.assign(n,f(e,r,t))})(i.pingData)})),n;var i,o,s,a}function p(e,t,r){var n,i,o;return r?!(null===(i=e.purpose)||void 0===i||null===(i=i.consents)||void 0===i||!i[t]||null===(o=e.vendor)||void 0===o||null===(o=o.consents)||void 0===o||!o[r]):!(null===(n=e.publisher)||void 0===n||null===(n=n.consents)||void 0===n||!n[t])}function g(e,t,r){var n;const i=t>1,o=(null===(n=e.parsedSections)||void 0===n?void 0:n.tcfcav1)||[];if("number"==typeof r){const e=o.find(e=>"Version"in e);if(!e)return!1;let n=e.PurposesExpressConsent.includes(t)&&e.VendorExpressConsent.includes(r);return i&&(n||(n=e.PurposesImpliedConsent.includes(t)&&e.VendorImpliedConsent.includes(r))),n}const s=o.find(e=>"SubsectionType"in e&&3===e.SubsectionType);if(!s)return!1;let a=s.PubPurposesExpressConsent.includes(t);return i&&(a||(a=s.PubPurposesImpliedConsent.includes(t))),a}function b(e,t,r){var n;const i=t>1,o=(null===(n=e.parsedSections)||void 0===n?void 0:n.tcfeuv2)||[];if("number"==typeof r){const e=o.find(e=>"Version"in e);if(!e)return!1;let n=e.PurposeConsent.includes(t)&&e.VendorConsent.includes(r);return i&&(n||(n=e.PurposesLITransparency.includes(t)&&e.VendorLegitimateInterest.includes(r))),n}const s=o.find(e=>"SegmentType"in e&&3===e.SegmentType);if(!s)return!1;let a=s.PubPurposesConsent.includes(t);return i&&(a||(a=s.PubPurposesLITransparency.includes(t))),a}class v{constructor(e){t(this,"consent",void 0),this.consent=e}getItem(e){return this.consent.deviceAccess?window.localStorage.getItem(e):null}setItem(e,t){this.consent.deviceAccess&&window.localStorage.setItem(e,t)}removeItem(e){this.consent.deviceAccess&&window.localStorage.removeItem(e)}}const m="_optable_pairId";function y(e){const t=new Uint16Array(e.length);for(let r=0;r<t.length;r++)t[r]=e.charCodeAt(r);return btoa(String.fromCharCode(...new Uint8Array(t.buffer)))}function w(e){return e.node?y("".concat(e.host,"/").concat(e.node)):y("".concat(e.host))}class A{constructor(e){t(this,"passportKeys",void 0),t(this,"targetingKeys",void 0),t(this,"siteKeys",void 0),t(this,"pairKeys",void 0),t(this,"oisKeys",void 0),t(this,"storage",void 0),this.config=e,this.passportKeys=function(e){const t=[],r=[],n="OPTABLE_PASSPORT_".concat(w(e));return t.push(n),r.push(n),e.legacyHostCache?(r.push("OPTABLE_PASSPORT_".concat(y("".concat(e.legacyHostCache)))),r.push("OPTABLE_PASS_".concat(y("".concat(e.legacyHostCache,"/").concat(e.site))))):r.push("OPTABLE_PASS_".concat(y("".concat(e.host,"/").concat(e.site)))),{write:t,read:r}}(e),this.targetingKeys=function(e){const t="OPTABLE_TARGETING_".concat(w(e));return{write:[t,e.optableCacheTargeting],read:[t]}}(e),this.siteKeys=function(e){const t="OPTABLE_SITE_".concat(w(e));return{write:[t],read:[t]}}(e),this.pairKeys={write:[m],read:[m]},this.oisKeys=function(e){const t="OPTABLE_OIS_".concat(w(e));return{write:[t],read:[t]}}(e),this.storage=new v(this.config.consent)}getPassport(){return this.readStorageKeys(this.passportKeys)}setPassport(e){this.writeToStorageKeys(this.passportKeys,e)}getVisitorId(){const e=this.getPassport();if(!e)return null;const t=e.split(".")[1];if(!t)return null;try{const e=t.replace(/-/g,"+").replace(/_/g,"/").padEnd(t.length+(4-t.length%4)%4,"="),r=JSON.parse(atob(e));return"string"==typeof(null==r?void 0:r.id)?r.id:null}catch(e){return null}}getOIS(){return this.readStorageKeys(this.oisKeys)}setOIS(e){this.writeToStorageKeys(this.oisKeys,e)}clearOIS(){this.clearStorageKeys(this.oisKeys)}oisKey(){return this.oisKeys.write[0]}getTargeting(){const e=this.readStorageKeys(this.targetingKeys);return e?JSON.parse(e):null}setTargeting(e){e&&(this.writeToStorageKeys(this.targetingKeys,JSON.stringify(e)),this.setPairIDs(e))}updateTargeting(e){let t=null;const r=[...new Set([...this.targetingKeys.read,...this.targetingKeys.write])].filter(Boolean);for(const n of r){const r=this.storage.getItem(n);if(!r)continue;let i;try{i=JSON.parse(r)}catch(e){continue}e(i)&&(this.storage.setItem(n,JSON.stringify(i)),t=i)}return t}getSite(){const e=this.readStorageKeys(this.siteKeys);return e?JSON.parse(e):null}setSite(e){e&&this.writeToStorageKeys(this.siteKeys,JSON.stringify(e))}setPairIDs(e){var t;const r=null===(t=e.ortb2)||void 0===t||null===(t=t.user)||void 0===t||null===(t=t.eids)||void 0===t?void 0:t.filter(e=>"pair-protocol.com"===e.source),n=null==r?void 0:r.flatMap(e=>e.uids);if(!n)return;const i=new Set(n.map(e=>e.id));this.writeToStorageKeys(this.pairKeys,btoa(JSON.stringify({envelope:[...i]})))}getPairIDs(){var e;const t=this.readStorageKeys(this.pairKeys);return t?null===(e=JSON.parse(atob(t)))||void 0===e?void 0:e.envelope:null}readStorageKeys(e){for(const t of e.read){const e=this.storage.getItem(t);if(e)return e}return null}writeToStorageKeys(e,t){if(t)for(const r of e.write)this.storage.setItem(r,t)}clearStorageKeys(e){for(const t of[...e.read,...e.write])this.storage.removeItem(t)}clearPassport(){this.clearStorageKeys(this.passportKeys)}clearTargeting(){this.clearStorageKeys(this.targetingKeys)}clearSite(){this.clearStorageKeys(this.siteKeys)}}function S(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}const M={lang:()=>{const{languages:e,language:t}=navigator;return null!=e&&e.length?e.join(","):t||void 0},tz:()=>Intl.DateTimeFormat().resolvedOptions().timeZone||void 0,scr:()=>{const{width:e,height:t}=window.screen;return P(e)&&P(t)?"".concat(e,"x").concat(t):void 0},mem:()=>O(navigator.deviceMemory),cores:()=>O(navigator.hardwareConcurrency)};function P(e){return Number.isInteger(e)&&e>0}function O(e){if(!("number"!=typeof e||!Number.isFinite(e)||e<0||e>1024))return"".concat(e)}let _;function I(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function k(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?I(Object(n),!0).forEach(function(r){t(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):I(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const E="X-Optable-OID",F="optable-ois:change",x=new Set(["/identify","/uid2/token","/profile"]);function T(e){return x.has(e)}function B(e){return new A(e).getOIS()}function R(e,t){window.dispatchEvent(new CustomEvent(F,{detail:k({instance:e.node||e.host},t)}))}function C(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function j(e,r,i){const{host:o,cookies:s,insecure:a}=r,c=new URL(e,"".concat(a?"http":"https","://").concat(o));if(c.searchParams.set("osdk","web-".concat(n)),c.searchParams.set("sid",r.sessionID),r.skipEnrichment&&c.searchParams.set("skip_enrichment","".concat(r.skipEnrichment)),r.node&&c.searchParams.set("t",r.node),r.site&&c.searchParams.set("o",r.site),void 0!==r.consent.gpp&&c.searchParams.set("gpp",r.consent.gpp),void 0!==r.consent.gppSectionIDs&&c.searchParams.set("gpp_sid",r.consent.gppSectionIDs.join(",")),void 0!==r.consent.gdpr&&c.searchParams.set("gdpr_consent",r.consent.gdpr),void 0!==r.consent.gdprApplies&&c.searchParams.set("gdpr",Number(r.consent.gdprApplies).toString()),r.readOnly&&c.searchParams.set("ro","true"),r.timeout&&c.searchParams.set("timeout",r.timeout),s)c.searchParams.set("cookies","yes");else{const e=new A(r).getPassport();c.searchParams.set("cookies","no"),c.searchParams.set("passport",e||"")}if(r.forwardSignals&&r.consent.deviceAccess){const e=(null!=_||(_=function(e){const t=new URLSearchParams;for(const[r,n]of Object.entries(e))t.append(r,n);const r=t.toString();if(!r)return"";try{return S(r)}catch(e){return""}}(function(){const e={};for(const t of Object.keys(M))try{const r=M[t]();r&&(e[t]=r)}catch(e){}return e}())),_);e&&c.searchParams.set("sig",e)}const d=function(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?C(Object(n),!0).forEach(function(r){t(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):C(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({},i);d.credentials=r.consent.deviceAccess?"include":"omit";const u=new Headers(d.headers);if(d.headers=u,r.mockedIP&&u.set("X-Forwarded-For",r.mockedIP),r.ois){const e=function(e,t){return T(t)&&e.consent.deviceAccess?B(e):null}(r,c.pathname);if(e)try{u.set(E,e)}catch(e){}}return new Request(c.toString(),d)}async function D(e,t,r){const n=j(e,t,r),i=await globalThis.fetch(n);t.ois&&function(e,t,r){if(!T(t)||!e.consent.deviceAccess)return;const n=r.get(E);if(!n)return;const i=new A(e);if(i.getOIS()!==n){try{i.setOIS(n)}catch(e){return}R(e,{id:n,storageKey:i.oisKey()})}}(t,new URL(n.url).pathname,i.headers);const o=i.headers.get("Content-Type"),s=null!=o&&o.startsWith("application/json")?await i.json():await i.text();if(!i.ok)throw new Error(s.error);return s.passport&&(new A(t).setPassport(s.passport),delete s.passport),s}new RegExp(["bot","crawler","spider","scraper","headless","phantomjs","selenium","webdriver","curl","wget","python","java","perl","ruby","go-http-client","okhttp","axios","fetch","postman","insomnia","googleother","google-extended","google-inspectiontool"].join("|"),"i");var N,L,V,W=((L=W||{})[L.Banner=1]="Banner",L[L.Video=2]="Video",L[L.Audio=3]="Audio",L[L.Native=4]="Native",L),K={},z={},q={};(V=N||(N={})).Placement=z,V.Media=q,V.Context=K;const U={cookies:!0,initPassport:!0,readOnly:!1,experiments:[],consent:{reg:null,deviceAccess:!0,createProfilesForAdvertising:!0,useProfilesForAdvertising:!0,measureAdvertisingPerformance:!0}};function G(){const e=new Uint8Array(16);return crypto.getRandomValues(e),S(String.fromCharCode(...e))}function H(e){var t,r;return{user:{data:(null!==(t=null==e?void 0:e.audience)&&void 0!==t?t:[]).map(e=>({name:e.provider,segment:e.ids,ext:{segtax:e.rtb_segtax}})),ext:{eids:(null!==(r=null==e?void 0:e.user)&&void 0!==r?r:[]).map(e=>({source:e.provider,uids:e.ids.map(e=>{let{id:t}=e;return{id:t,atype:3}})}))}}}}function J(e){const t={};if(!e)return t;for(const n of null!==(r=e.audience)&&void 0!==r?r:[]){var r;n.keyspace&&(n.keyspace in t||(t[n.keyspace]=[]),t[n.keyspace].push(...n.ids.map(e=>e.id)))}return t}function Y(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function Q(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function Z(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?Q(Object(n),!0).forEach(function(r){t(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Q(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function X(){const e={};let t=0;return{refs:e,process:(r,n)=>{if(!r.refs)return n;for(const o of n.uids){var i;if(Y(null===(i=o.ext)||void 0===i?void 0:i.optable)&&"ref"in o.ext.optable&&"string"==typeof o.ext.optable.ref){const n=r.refs[o.ext.optable.ref];t+=1;const i=t.toString(10);e[i]=n,o.ext.optable.ref=i}}return n}}}function $(e){var t;const r={title:document.title||""},n=document.querySelector('meta[name="description"]');if(n){const e=n.getAttribute("content");e&&(r.description=e)}const i=document.querySelector('meta[name="keywords"]');if(i){const e=i.getAttribute("content");e&&(r.keywords=e.split(",").map(e=>e.trim()).filter(Boolean))}const o=document.querySelector('link[rel="canonical"]');if(o){const e=o.getAttribute("href");e&&(r.canonicalUrl=e)}const s={};document.querySelectorAll('meta[property^="og:"]').forEach(e=>{const t=e.getAttribute("property"),r=e.getAttribute("content");if(t&&r){const e=t.replace("og:","");s[e]=r}}),Object.keys(s).length>0&&(r.ogTags=s);const a=[];document.querySelectorAll("h1, h2, h3").forEach(e=>{var t;if(a.length>=20)return;const r=parseInt(e.tagName.substring(1),10),n=null===(t=e.textContent)||void 0===t?void 0:t.trim();n&&a.push({level:r,text:n})}),a.length>0&&(r.headings=a);const c=null!==(t=e.maxContentLength)&&void 0!==t?t:5e3,d=function(e){if(e)return document.querySelector(e);const t=["main","article",'[role="main"]',".content","#content",".post",".article"];for(const e of t){const t=document.querySelector(e);if(t)return t}return document.body}(e.contentSelector);if(d){const e=(u=d)instanceof HTMLElement&&u.innerText?u.innerText.trim():"";e&&(r.content=e.substring(0,c))}var u;const l=document.querySelectorAll('script[type="application/ld+json"]'),f=[];l.forEach(e=>{try{const t=JSON.parse(e.textContent||"");t&&"object"==typeof t&&f.push(t)}catch(e){}}),f.length>0&&(r.jsonLd=f);const h=document.documentElement.getAttribute("lang");return h&&(r.language=h),r}function ee(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function te(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?ee(Object(n),!0).forEach(function(r){t(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ee(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const re=/["'=!+#*~^()<>[\],;&]/g;function ne(e){return e.toLowerCase().replace(re,"").replace(/\s+/g," ").trim().slice(0,40).trim()}var ie=r(966);class oe{constructor(e){var r;t(this,"dcn",void 0),t(this,"init",void 0),t(this,"contextSent",!1),t(this,"contextConfig",null),t(this,"contextualResponse",null),t(this,"warned",new Set),this.dcn=function(e){var t,r,n,i,s,a,c,d;const u={host:e.host,site:e.site,optableCacheTargeting:null!==(t=e.optableCacheTargeting)&&void 0!==t?t:"optable-cache:targeting",cookies:null!==(r=e.cookies)&&void 0!==r?r:U.cookies,initPassport:null!==(n=e.initPassport)&&void 0!==n?n:U.initPassport,consent:U.consent,readOnly:null!==(i=e.readOnly)&&void 0!==i?i:U.readOnly,node:e.node,legacyHostCache:e.legacyHostCache,experiments:null!==(s=e.experiments)&&void 0!==s?s:U.experiments,mockedIP:e.mockedIP,sessionID:null!==(a=e.sessionID)&&void 0!==a?a:G(),skipEnrichment:e.skipEnrichment,initTargeting:e.initTargeting,initContextual:e.initContextual,abTests:e.abTests,additionalTargetingSignals:e.additionalTargetingSignals,forwardSignals:e.forwardSignals,ois:e.ois,timeout:e.timeout,insecure:e.insecure};return null!==(c=e.consent)&&void 0!==c&&c.static?u.consent=e.consent.static:null!==(d=e.consent)&&void 0!==d&&d.cmpapi&&(u.consent=h(function(){const e=Intl.DateTimeFormat().resolvedOptions().timeZone,t=o[e];return"can"===t?["fr","fr-CA"].some(e=>navigator.languages.includes(e))?"can":null:null!=t?t:null}(),e.consent.cmpapi)),u}(e),this.contextConfig=(r=e.pageContext)?!0===r?{}:r:null,this.dcn.initContextual&&!this.contextConfig&&(this.contextConfig={}),this.init=this.initialize()}async initialize(){if(this.dcn.initPassport&&await i(this.dcn).catch(()=>{}),this.dcn.initTargeting&&this.targeting().catch(()=>{}),this.dcn.initContextual){const e="".concat(window.location.hostname).concat(window.location.pathname);this.witness("pageview",{url:e},{includeContext:!0}).catch(()=>{});const t="function"==typeof this.dcn.initContextual?this.dcn.initContextual:null,r=this.ctxSegments();(t?r.then(t):r).catch(()=>{})}}async identify(){await this.init;for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e,t){return D("/identify",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}(this.dcn,t.filter(e=>e))}async uid2Token(e){return await this.init,function(e,t){return D("/uid2/token",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}(this.dcn,e)}async targeting(){const e=function(e){if("string"==typeof e)return{ids:[e],hids:[]};var t,r;if(Y(e))return{ids:null!==(t=null==e?void 0:e.ids)&&void 0!==t?t:[],hids:null!==(r=null==e?void 0:e.hids)&&void 0!==r?r:[]};throw"Invalid request type for targeting. Expected string or object."}(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"__passport__");return await this.init,async function(e,t){var r;const n=new URLSearchParams;t.ids.forEach(e=>n.append("id",e)),t.hids.forEach(e=>n.append("hid",e));const i=function(e){if(!e||0===e.length)return null;if(e.reduce((e,t)=>e+t.trafficPercentage,0)>100)return console.error("AB Test Config Error: Traffic Percentage Sum Exceeds 100%"),null;const t=Math.floor(100*Math.random());let r=0;for(const n of e)if(r+=n.trafficPercentage,t<r)return n;return null}(e.abTests);i&&(n.append("ab_test_id",i.id),i.matcher_override&&[...i.matcher_override].sort((e,t)=>e.rank-t.rank).forEach(e=>{n.append("matcher_override",e.id)}),i.skipMatchers&&n.append("skip_matchers",i.skipMatchers.join(",")),i.skipResolvers&&n.append("skip_resolvers",i.skipResolvers.join(",")));null!==(r=e.additionalTargetingSignals)&&void 0!==r&&r.ref&&n.append("ref","".concat(window.location.protocol,"//").concat(window.location.host).concat(window.location.pathname));const o="/v2/targeting?"+n.toString(),s=await D(o,e,{method:"GET",headers:{Accept:"application/json"}});return s&&(new A(e).setTargeting(s),function(e,t){var r,n,i,o;const s=null===(r=t.ortb2)||void 0===r||null===(r=r.user)||void 0===r||null===(r=r.eids)||void 0===r?void 0:r.map(e=>e.matcher);window.dispatchEvent(new CustomEvent("optable-targeting:change",{detail:{instance:e.node||e.host,resolved:!(null===(n=t.ortb2)||void 0===n||null===(n=n.user)||void 0===n||null===(n=n.eids)||void 0===n||!n.length),resolvedIDs:null!==(i=t.resolved_ids)&&void 0!==i?i:[],abTestID:null!==(o=t.ab_test_id)&&void 0!==o?o:void 0,ortb2:t.ortb2,provenance:new Set(s)}}))}(e,s)),s}(this.dcn,e)}targetingFromCache(){return e=this.dcn,new A(e).getTargeting();var e}async site(){return i(this.dcn)}siteFromCache(){return e=this.dcn,new A(e).getSite();var e}warnOnce(e,t){this.warned.has(e)||(this.warned.add(e),function(e,t,r){const n=["error","warn","info"].includes(t)?t:"log";for(var i=arguments.length,o=new Array(i>3?i-3:0),s=3;s<i;s++)o[s-3]=arguments[s];console[n]("".concat(e," ").concat(r),...o)}("[Optable]","warn",t))}passport(){const e=new A(this.dcn).getPassport();return null===e&&this.warnOnce("passport","passport() returned null. The passport is cached in localStorage once the DCN returns one. Call before initialization (await sdk.site() or sdk.targeting()) may return null, and deployments where the DCN does not echo the passport in response bodies will never populate it client-side."),e}visitorId(){const e=new A(this.dcn).getVisitorId();return null===e&&this.warnOnce("visitorId","visitorId() returned null. The visitor ID is derived from the passport JWT in localStorage. Call before initialization (await sdk.site() or sdk.targeting()) may return null, and deployments where the DCN does not echo the passport in response bodies will never populate it client-side."),e}oisId(){const e=B(this.dcn);return null===e&&this.dcn.ois&&this.warnOnce("oisId","oisId() returned null. The derived OIS id is cached once the DCN returns it on the X-Optable-OID response header, which happens on the first identify() or profile() call — not during initialization. A node with OIS ID derivation disabled, or a non-residential IP, never returns one."),e}oisState(){return function(e){const t=new A(e);return{id:t.getOIS(),storageKey:t.oisKey()}}(this.dcn)}oisClear(){!function(e){const t=new A(e);null!==t.getOIS()&&(t.clearOIS(),R(e,{id:null,storageKey:t.oisKey()}))}(this.dcn)}targetingClearCache(){var e;e=this.dcn,new A(e).clearTargeting()}async prebidORTB2(){return H(await this.targeting())}prebidORTB2FromCache(){return H(this.targetingFromCache())}async targetingKeyValues(){return J(await this.targeting())}targetingKeyValuesFromCache(){return J(this.targetingFromCache())}async witness(e){let t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return await this.init,n.includeContext&&this.contextConfig&&!this.contextSent&&(t=function(e){const t={semantic:$(e),url:window.location.href,extractedAt:Date.now()};if(document.referrer&&(t.referrer=document.referrer),e.includeHtml){var r;const n=null!==(r=e.maxHtmlLength)&&void 0!==r?r:5e4;t.html=document.documentElement.outerHTML.substring(0,n)}return t}(this.contextConfig),this.contextSent=!0),function(e,t,r,n){const i={event:t,properties:r};return n&&(i.pageContext=n),D("/witness",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})}(this.dcn,e,r,t)}resetContext(){this.contextSent=!1}async profile(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return await this.init,function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;const i=te(te({traits:t},r&&{id:r}),n&&{neighbors:n});return D("/profile",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)})}(this.dcn,e,t,r)}async ctxSegments(e){const t=await async function(e,t){const r={url:t};return await D("/v1beta1/contextual",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})}(this.dcn,null!=e?e:window.location.href);return this.contextualResponse=t,t}ctxTargetingKeyValues(e,t){return function(e,t,r){var n,i,o;const s={},a=null!==(n=null==e||null===(i=e.classifications)||void 0===i?void 0:i.categories)&&void 0!==n?n:[];for(const e of a){const r=null==e?void 0:e.taxonomy;if(!r||null==e.id)continue;let n;if(t){if(!(r in t))continue;n=t[r]}else n=r;n in s||(s[n]=[]),s[n].includes(e.id)||s[n].push(e.id)}const c=null!==(o=null==r?void 0:r.keywordKey)&&void 0!==o?o:"ctx_kw";if(c){var d,u,l;const t=null!==(d=null==r?void 0:r.maxKeywords)&&void 0!==d?d:10,n=null!==(u=null==e||null===(l=e.classifications)||void 0===l?void 0:l.keywords)&&void 0!==u?u:[],i=e=>"number"==typeof(null==e?void 0:e.prominence)?e.prominence:Number.POSITIVE_INFINITY,o=[],a=new Set;for(const e of[...n].sort((e,t)=>i(e)-i(t))){if(o.length>=t)break;if("string"!=typeof(null==e?void 0:e.keyword))continue;const r=ne(e.keyword);0===r.length||a.has(r)||(a.add(r),o.push(r))}o.length>0&&(s[c]=o)}return s}(this.contextualResponse,e,t)}async tokenize(e){return await this.init,function(e,t){let r={id:t};return D("/v2/tokenize",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)})}(this.dcn,e)}async resolve(e){return await this.init,async function(e,t){const r=new URLSearchParams;"string"==typeof t&&r.append("id",t);const n="/v1/resolve?"+r.toString();return function(e){const t={clusters:[],lmpid:""};if("object"!=typeof e||null===e)return t;if("lmpid"in e&&"string"==typeof(null==e?void 0:e.lmpid)&&(t.lmpid=e.lmpid),!("clusters"in e)||!Array.isArray(null==e?void 0:e.clusters))return t;for(const r of e.clusters){const e={ids:[],traits:[]};if(Array.isArray(null==r?void 0:r.ids))for(const t of r.ids)"string"==typeof t&&e.ids.push(t);if(Array.isArray(null==r?void 0:r.traits))for(const t of r.traits)"string"==typeof(null==t?void 0:t.key)&&"string"==typeof(null==t?void 0:t.value)&&e.traits.push({key:t.key,value:t.value});(e.ids.length>0||e.traits.length>0)&&t.clusters.push(e)}return t}(await D(n,e,{method:"GET",headers:{Accept:"application/json"}}))}(this.dcn,e)}static eid(e){return e?"e:"+ie.sha256.hex(e.toLowerCase().trim()):""}static sha256(e){return e?ie.sha256.hex(e):""}static cid(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r="c:";if("string"!=typeof e)throw new Error("Invalid ppid");if("number"!=typeof t||isNaN(t)||t<0||t>19)throw new Error("Invalid variant");return t>0&&(r="c".concat(t,":")),e?r+e.trim():""}static TargetingKeyValues(e){return J(e)}static PrebidORTB2(e){return H(e)}}t(oe,"version",n);const se=oe;var ae=r(704);function ce(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function de(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?ce(Object(n),!0).forEach(function(r){t(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ce(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}const ue="REQUESTED",le="RECEIVED",fe="NO_BID",he="TIMEOUT",pe="optable:prebid:analytics:sample-number";const ge=class{constructor(e){var r,n,i,o,s;let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{samplingRate:1,samplingVolume:"event",bidWinTimeout:1e4};if(t(this,"isInitialized",!1),t(this,"labelStyle","color: white; background-color: #9198dc; padding: 2px 4px; border-radius: 2px;"),t(this,"maxAuctionDataSize",50),t(this,"auctions",new Map),t(this,"missedAuctionIds",new Set),t(this,"pendingTimeoutBids",new Map),t(this,"prebidInstance",void 0),t(this,"handleVisibilityChange",()=>{if("hidden"!==document.visibilityState)return;if(!this.optableInstance.dcn)return;const e=j("/witness",this.optableInstance.dcn).url;this.auctions.forEach((t,r)=>{t.auctionEndTimeoutId&&t.sampled&&(clearTimeout(t.auctionEndTimeoutId),this.auctions.delete(r),this.toWitness(t.auctionEnd,t.bidWonEvents,t.missed).then(r=>{r.auctionEndAt=t.createdAt.toISOString(),r.bidWonAt=t.bidWonEvents.length>0?new Date(Math.min(...t.bidWonEvents.map(e=>e._receivedAt.getTime()))).toISOString():null,r.optableLoaded=!t.missed,navigator.sendBeacon(e,new Blob([JSON.stringify({event:"optable.prebid.auction",properties:r})],{type:"application/json"}))}))})}),this.optableInstance=e,this.config=a,!e||"function"!=typeof e.witness)throw new Error("OptablePrebidAnalytics requires a valid optable instance with witness() method");this.config.debug=null!==(r=a.debug)&&void 0!==r&&r,this.config.bidWinTimeout=null!==(n=a.bidWinTimeout)&&void 0!==n?n:1e4,this.config.samplingRate=null!==(i=a.samplingRate)&&void 0!==i?i:1,this.config.samplingVolume=null!==(o=a.samplingVolume)&&void 0!==o?o:"event","session"===this.config.samplingVolume?sessionStorage.setItem(pe,Math.random().toFixed(2)):sessionStorage.removeItem(pe),sessionStorage.optableSessionDepth=(Number(null===(s=sessionStorage)||void 0===s?void 0:s.optableSessionDepth)||0)+1,this.isInitialized=!0,this.maxAuctionDataSize=50,document.addEventListener("visibilitychange",this.handleVisibilityChange),this.log("OptablePrebidAnalytics initialized")}log(){if(this.config.debug){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];console.log("%cOptable%c [OptablePrebidAnalytics]",this.labelStyle,"color: inherit;",...t)}}shouldSample(){if(this.config.samplingRate<=0)return!1;if(this.config.samplingRate>=1)return!0;if(this.config.samplingRateFn)return this.config.samplingRateFn();if("session"===this.config.samplingVolume)return Number(sessionStorage.getItem(pe)||"1")<this.config.samplingRate;if(this.config.samplingSeed){return[...this.config.samplingSeed].reduce((e,t)=>e+t.charCodeAt(0),0)%1e4/1e4<this.config.samplingRate}return Math.random()<this.config.samplingRate}async sendToWitnessAPI(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!this.config.analytics)return this.log("Witness API calls disabled - would send:",e,t),{disabled:!0,eventName:e,properties:t};try{await this.optableInstance.witness(e,t),this.log("Sending to Witness API:",e,t)}catch(r){throw this.log("Error sending to Witness API:",e,t,r),r}return{disabled:!1,eventName:e,properties:t}}setHooks(e){this.log("Processing past events"),e.getEvents().forEach(e=>{"auctionInit"===e.eventType?this.missedAuctionIds.add(e.args.auctionId):"bidTimeout"===e.eventType?e.args.forEach(e=>{const t=this.pendingTimeoutBids.get(e.auctionId)||[];t.push(e),this.pendingTimeoutBids.set(e.auctionId,t)}):"auctionEnd"===e.eventType?(this.missedAuctionIds.delete(e.args.auctionId),this.log("auction ".concat(e.args.auctionId," missed (completed before hook)")),this.trackAuctionEnd(e.args,!0)):"bidWon"===e.eventType&&(this.log("bid won missed"),this.trackBidWon(e.args,!0))}),this.log("Hooking into Prebid.js events"),e.onEvent("bidTimeout",e=>{this.log("bidTimeout event received",e),e.forEach(e=>{const t=this.pendingTimeoutBids.get(e.auctionId)||[];t.push(e),this.pendingTimeoutBids.set(e.auctionId,t)})}),e.onEvent("auctionEnd",e=>{this.log("auctionEnd event received");const t=this.missedAuctionIds.has(e.auctionId);t&&this.missedAuctionIds.delete(e.auctionId),this.trackAuctionEnd(e,t)}),e.onEvent("bidWon",e=>{this.log("bidWon event received"),this.trackBidWon(e)})}hookIntoPrebid(){const e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.pbjs;return this.prebidInstance=e,void 0===e?(this.log("Prebid.js not found"),!1):("function"!=typeof e.onEvent?(e.que=e.que||[],e.que.push(()=>this.setHooks(e))):this.setHooks(e),!0)}async trackAuctionEnd(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const{auctionId:r,timeout:n,bidderRequests:i=[],bidsReceived:o=[],noBids:s=[]}=e,a=this.pendingTimeoutBids.get(r)||[],c=!!this.config.analytics&&this.shouldSample();this.log("Processing auction ".concat(r," with ").concat(i.length," bidder requests")),window.optable=window.optable||{},window.optable.pageAuctionsCount=(Number(window.optable.pageAuctionsCount)||0)+1;const d={auctionId:r,timeout:n,bidderRequests:i.map(e=>{var t,r,n,i,o,s;const{bidderCode:a,bidderRequestId:c,bids:d=[]}=e,u=null!==(t=null===(r=e.ortb2.site)||void 0===r?void 0:r.domain)&&void 0!==t?t:"unknown",l=[...null!==(n=null===(i=e.ortb2.user)||void 0===i||null===(i=i.ext)||void 0===i?void 0:i.eids)&&void 0!==n?n:[],...null!==(o=null===(s=e.ortb2.user)||void 0===s?void 0:s.eids)&&void 0!==o?o:[]],f=Array.from(new Map(l.map(e=>[e.source,e])).values()).filter(e=>"optable.co"===e.inserter),h=[...new Set(f.map(e=>e.matcher).filter(Boolean))],p=[...new Set(f.map(e=>e.source).filter(Boolean))];return{bidderCode:a,bidderRequestId:c,domain:u,hasOEids:f.length>0,optableMatchers:h,optableSources:p,status:ue,bids:d.map(e=>{var t,r;return{bidId:e.bidId,bidderRequestId:c,adUnitCode:e.adUnitCode,adUnitId:e.adUnitId,transactionId:e.transactionId,src:e.src,floorMin:null===(t=e.floorData)||void 0===t?void 0:t.floorMin,splitTestAssignment:null===(r=e.ortb2Imp)||void 0===r||null===(r=r.ext)||void 0===r||null===(r=r.optable)||void 0===r?void 0:r.splitTestAssignment,status:ue}})}})},u={},l={},f={};d.bidderRequests.forEach(e=>{u[e.bidderRequestId]=e,e.bids.forEach(t=>{l[t.bidId]=t,f[t.bidId]=e})}),o.forEach(e=>{const t=e.requestId,r=f[t];if(!r)return void this.log("No bidderRequest found for bidId=".concat(t));let n=l[t];var i,o;n?Object.assign(n,{status:le,cpm:e.cpm,size:"".concat(e.width,"x").concat(e.height),currency:e.currency,splitTestAssignment:null===(i=e.ortb2Imp)||void 0===i||null===(i=i.ext)||void 0===i||null===(i=i.optable)||void 0===i?void 0:i.splitTestAssignment}):(n={bidId:t,bidderRequestId:r.bidderRequestId,adUnitCode:e.adUnitCode,adUnitId:e.adUnitId,transactionId:e.transactionId,src:e.src,cpm:e.cpm,size:"".concat(e.width,"x").concat(e.height),currency:e.currency,status:le,splitTestAssignment:null===(o=e.ortb2Imp)||void 0===o||null===(o=o.ext)||void 0===o||null===(o=o.optable)||void 0===o?void 0:o.splitTestAssignment},r.bids.push(n),l[t]=n,f[t]=r),r.status===ue&&(r.status=le)}),s.forEach(e=>{const t=u[e.bidderRequestId];t&&(t.status=fe,t.bids.forEach(e=>{e.status=fe}))}),a.forEach(e=>{const t=u[e.bidderRequestId];t&&(t.status=he,t.bids.forEach(e=>{e.status=he}))});const h=new Date,p=setTimeout(async()=>{const t=this.auctions.get(r);if(!t)return;if(!t.sampled)return void this.auctions.delete(r);const n=t.missed,i=await this.toWitness(e,t.bidWonEvents,n);i.auctionEndAt=h.toISOString(),i.bidWonAt=t.bidWonEvents.length>0?new Date(Math.min(...t.bidWonEvents.map(e=>e._receivedAt.getTime()))).toISOString():null,i.optableLoaded=!n,this.sendToWitnessAPI("optable.prebid.auction",i),this.auctions.delete(r)},this.config.bidWinTimeout);this.auctions.set(r,{auctionEnd:e,createdAt:h,missed:t,auctionEndTimeoutId:p,bidWonEvents:[],timeoutBids:a,sampled:c}),this.pendingTimeoutBids.delete(r),this.cleanupOldAuctions()}async trackBidWon(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.log("bidWon event",{auctionId:e.auctionId,bidderCode:e.bidderCode,missed:t});const r=this.auctions.get(e.auctionId);r?(r.bidWonEvents.push(de(de({},e),{},{_receivedAt:new Date})),t&&(r.missed=!0)):this.log("Missing 'auctionEnd' event. Skipping.")}cleanupOldAuctions(){const e=[...this.auctions.keys()];if(e.length>this.maxAuctionDataSize){const t=e[0];this.auctions.delete(t),this.log("Cleaned up old auction: ".concat(t))}}clearData(){this.auctions.clear(),this.missedAuctionIds.clear(),this.log("All analytics data cleared")}async toWitness(e,t){var r,n,i,o,s,a,c,d,u;let l=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{auctionId:f,bidderRequests:h=[],bidsReceived:p=[],noBids:g=[]}=e,b=(null===(r=this.auctions.get(f))||void 0===r?void 0:r.timeoutBids)||[],v=new Set,m=new Set;let y=null;const w=h.map(e=>{var t,r,n,i,o,s;const{bidderCode:a,bidderRequestId:c,bids:d=[]}=e,u=null!==(t=null===(r=e.ortb2.site)||void 0===r?void 0:r.domain)&&void 0!==t?t:"unknown",l=[...null!==(n=null===(i=e.ortb2.user)||void 0===i||null===(i=i.ext)||void 0===i?void 0:i.eids)&&void 0!==n?n:[],...null!==(o=null===(s=e.ortb2.user)||void 0===s?void 0:s.eids)&&void 0!==o?o:[]],f=Array.from(new Map(l.map(e=>[e.source,e])).values()).filter(e=>"optable.co"===e.inserter),h=[...new Set(f.map(e=>e.matcher).filter(Boolean))],p=[...new Set(f.map(e=>e.source).filter(Boolean))];return y=e.ortb2.device,{bidderCode:a,bidderRequestId:c,domain:u,optableTargetingDone:f.length>0,optableMatchers:h,optableSources:p,status:ue,bids:d.map(e=>{var t,r;return{bidId:e.bidId,bidderRequestId:c,adUnitCode:e.adUnitCode,adUnitId:e.adUnitId,transactionId:e.transactionId,src:e.src,floorMin:null===(t=e.floorData)||void 0===t?void 0:t.floorMin,splitTestAssignment:null===(r=e.ortb2Imp)||void 0===r||null===(r=r.ext)||void 0===r||null===(r=r.optable)||void 0===r?void 0:r.splitTestAssignment,status:ue}})}}),A=new Map(p.map(e=>[e.requestId,e])),S=new Set(g.map(e=>e.bidderRequestId)),M=new Set(b.map(e=>e.bidderRequestId));w.forEach(e=>{e.bids.forEach(t=>{const r=A.get(t.bidId);if(r){var n;t.status=le,t.cpm=r.cpm,t.size="".concat(r.width,"x").concat(r.height),t.currency=r.currency;const i=null===(n=r.ortb2Imp)||void 0===n||null===(n=n.ext)||void 0===n||null===(n=n.optable)||void 0===n?void 0:n.splitTestAssignment;void 0!==i&&(t.splitTestAssignment=i),e.status===ue&&(e.status=le)}}),S.has(e.bidderRequestId)&&e.status===ue&&(e.status=fe),M.has(e.bidderRequestId)&&(e.status=he)});const P={bidderRequests:w.map(e=>(e.optableMatchers.forEach(e=>v.add(e)),e.optableSources.forEach(e=>m.add(e)),e)),auctionId:f,adUnitCode:"unknown",totalRequests:h.length,optableSampling:this.config.samplingRate||1,optableTargetingDone:v.size>0||m.size>0?"1":"0",optableMatchers:Array.from(v),optableSources:Array.from(m),bidWon:t.map(e=>({bidderCode:e.bidderCode,adUnitCode:e.adUnitCode,cpm:e.cpm})),missed:l,url:"".concat(window.location.hostname).concat(window.location.pathname),tenant:null!==(n=null===(i=this.optableInstance)||void 0===i||null===(i=i.dcn)||void 0===i?void 0:i.node)&&void 0!==n?n:"unknown",optableWrapperVersion:SDK_WRAPPER_VERSION||"unknown",userAgent:ae.parse(window.navigator.userAgent),device:y,prebidjsVersion:(null===(o=this.prebidInstance)||void 0===o?void 0:o.version)||"unknown",sessionDepth:(null===(s=sessionStorage)||void 0===s?void 0:s.optableSessionDepth)||1,pageAuctionsCount:(null===(a=window.optable)||void 0===a?void 0:a.pageAuctionsCount)||1,originSlug:(null===(c=this.optableInstance)||void 0===c||null===(c=c.dcn)||void 0===c?void 0:c.site)||(null===(d=window.optable)||void 0===d?void 0:d.site)||"unknown"};return this.log("Auction ".concat(f," processed: ").concat(h.length," requests, ").concat(0," total bids, ").concat(p.length," received, ").concat(g.length," no-bids, ").concat(b.length," timeouts")),null!==(u=window.optable)&&void 0!==u&&u.customAnalytics&&await window.optable.customAnalytics().then(e=>{this.log("Adding custom data to payload ".concat(JSON.stringify(e))),Object.assign(P,e)}),P}};function be(e){var t,r,n,i,o,s,a,c,d,u;return{advertiser_id:null===(t=e.advertiserId)||void 0===t?void 0:t.toString(),campaign_id:null===(r=e.campaignId)||void 0===r?void 0:r.toString(),creative_id:null===(n=e.creativeId)||void 0===n?void 0:n.toString(),is_empty:null===(i=e.isEmpty)||void 0===i?void 0:i.toString(),line_item_id:null===(o=e.lineItemId)||void 0===o?void 0:o.toString(),service_name:null===(s=e.serviceName)||void 0===s?void 0:s.toString(),size:null===(a=e.size)||void 0===a?void 0:a.toString(),slot_element_id:null===(c=e.slot)||void 0===c?void 0:c.getSlotElementId(),source_agnostic_creative_id:null===(d=e.sourceAgnosticCreativeId)||void 0===d?void 0:d.toString(),source_agnostic_line_item_id:null===(u=e.sourceAgnosticLineItemId)||void 0===u?void 0:u.toString()}}se.prototype.installGPTEventListeners=function(e){const t=this;t.installGPTEventListeners=function(){},window.googletag=window.googletag||{cmd:[]};const r=window.googletag,n=["slotRenderEnded","impressionViewable"];function i(e,t){if(!e||!t||!t.length)return{};const r={};for(const n of t)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=e[n]);return r}r.cmd.push(function(){try{const o=r.pubads&&r.pubads();if(!o||"function"!=typeof o.addEventListener)return;const s=e?Object.keys(e):n;for(const r of s){const n=e?e[r]:"all";o.addEventListener(r,function(e){const o=be(e),s=Array.isArray(n)&&n.length?i(o,n):o;Object.keys(s).length>0&&t.witness("gpt_events_"+r.replace(/[A-Z]/g,e=>"_"+e.toLowerCase()),s)})}}catch(e){}})},se.prototype.installGPTSecureSignals=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];window.googletag=window.googletag||{cmd:[]};const n=window.googletag;t&&t.length>0&&n.cmd.push(()=>{t.forEach(e=>{let{provider:t,id:r}=e;n.secureSignalProviders.push({id:t,collectorFunction:()=>Promise.resolve(r)})})})};const ve=/^[a-f0-9]{64}$/i;se.prototype.tryIdentifyFromParams=function(e,t){const r=new RegExp("^".concat(e||"oeid","$"),"i"),n=new URLSearchParams(window.location.search);let i="";for(const[e,t]of n)if(r.test(e)){i=t;break}""!=i&&(t||function(e){return ve.test(e)}(i))&&this.identify((t||"e")+":"+i)},window.optable=window.optable||{},window.optable.SDK=se,window.optable.OptablePrebidAnalytics=ge,window.optable.cmd=new class{constructor(e){if(this.cmds=e,Array.isArray(this.cmds))for(const e of this.cmds)"function"==typeof e&&e()}push(e){e()}}(window.optable.cmd||[]),window.optable.utils={resolveMultiNodeTargeting:async function(e){return e?e.some(e=>e.priority)?async function(e){const t=new Set,r=new Set,{refs:n,process:i}=X(),o={user:{data:[],eids:[]}},s=new Map,a=new Map,c=new Map;const d=e.map(e=>{let{targetingFn:t,matcher:r,mm:n,priority:d}=e;return t().then(e=>function(e,t,r){var n,d,u;let l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;const f=Math.max(0,l),{data:h=[],eids:p=[]}=null!==(n=null===(d=e.ortb2)||void 0===d?void 0:d.user)&&void 0!==n?n:{};o.user.data.push(...h),c.set(f,null!==(u=e.resolved_ids)&&void 0!==u?u:[]),p.filter(e=>e.uids.length).forEach(n=>{var o,c,d,u,l;const h=null!==(o=n.matcher)&&void 0!==o?o:t,p=null!==(c=s.get(f))&&void 0!==c?c:[];h&&s.set(f,[...p,h]);const g=Z(Z({},i(e,n)),{},{matcher:null!==(d=n.matcher)&&void 0!==d?d:t,mm:null!==(u=n.mm)&&void 0!==u?u:r}),b=null!==(l=a.get(f))&&void 0!==l?l:[];a.set(f,[...b,g])})}(e,r,n,d))});await Promise.allSettled(d);const u=Array.from(a.keys()).sort((e,t)=>e-t).filter(e=>{var t;return null===(t=a.get(e))||void 0===t?void 0:t.length}).shift();if(u){const e=s.get(u)||[],n=c.get(u)||[];o.user.eids.push(...a.get(u)||[]),e.forEach(e=>t.add(e)),n.forEach(e=>r.add(e))}return{ortb2:o,eidSources:t,refs:n,resolvedIds:r}}(e):async function(e){const t=new Set,r=new Set,{refs:n,process:i}=X(),o={user:{data:[],eids:[]}};const s=e.map(e=>{let{targetingFn:n,matcher:s,mm:a}=e;return n().then(e=>function(e,n,s){var a,c,d;const{data:u=[],eids:l=[]}=null!==(a=null===(c=e.ortb2)||void 0===c?void 0:c.user)&&void 0!==a?a:{};o.user.data.push(...u),null===(d=e.resolved_ids)||void 0===d||d.forEach(e=>r.add(e)),l.filter(e=>e.uids.length).forEach(r=>{var a,c,d;const u=null!==(a=r.matcher)&&void 0!==a?a:n;u&&t.add(u),o.user.eids.push(Z(Z({},i(e,r)),{},{mm:null!==(c=r.mm)&&void 0!==c?c:s,matcher:null!==(d=r.matcher)&&void 0!==d?d:n}))})}(e,s,a))});return await Promise.allSettled(s),{ortb2:o,eidSources:t,refs:n,resolvedIds:r}}(e):Promise.reject("No targeting rules provided")}},window.optable.instance_config&&(window.optable.instance=new se(window.optable.instance_config))})()})();
|
package/lib/dist/build.json
CHANGED
package/lib/dist/config.d.ts
CHANGED
|
@@ -38,6 +38,7 @@ type InitConfig = {
|
|
|
38
38
|
abTests?: ABTestConfig[];
|
|
39
39
|
additionalTargetingSignals?: TargetingSignals;
|
|
40
40
|
forwardSignals?: boolean;
|
|
41
|
+
ois?: boolean;
|
|
41
42
|
timeout?: string;
|
|
42
43
|
insecure?: boolean;
|
|
43
44
|
pageContext?: PageContextConfig | boolean;
|
|
@@ -62,6 +63,7 @@ type ResolvedConfig = {
|
|
|
62
63
|
abTests?: ABTestConfig[];
|
|
63
64
|
additionalTargetingSignals?: TargetingSignals;
|
|
64
65
|
forwardSignals?: boolean;
|
|
66
|
+
ois?: boolean;
|
|
65
67
|
timeout?: string;
|
|
66
68
|
insecure?: boolean;
|
|
67
69
|
};
|
package/lib/dist/config.js
CHANGED
package/lib/dist/core/log.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
declare function consoleLog(prefix: string, level: string, message: string, ...args: any[]): void;
|
|
2
2
|
declare function debugLog(level: string, message: string, ...args: any[]): void;
|
|
3
|
-
|
|
3
|
+
declare function optableMessage(...args: any[]): void;
|
|
4
|
+
export { consoleLog, debugLog, optableMessage };
|
package/lib/dist/core/log.js
CHANGED
|
@@ -11,4 +11,10 @@ function debugLog(level, message, ...args) {
|
|
|
11
11
|
consoleLog("Optable:", level, message, ...args);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
// Debug logger for wrapper bundles, gated on the optableDebug flag.
|
|
15
|
+
function optableMessage(...args) {
|
|
16
|
+
if (flagEnabled("optableDebug")) {
|
|
17
|
+
console.log("[OPTABLE WRAPPER]", ...args); // eslint-disable-line no-console
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export { consoleLog, debugLog, optableMessage };
|
package/lib/dist/core/network.js
CHANGED
|
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { default as buildInfo } from "../build.json";
|
|
11
11
|
import { LocalStorage } from "./storage";
|
|
12
12
|
import { deviceSignals } from "./signals";
|
|
13
|
+
import { oisHeaderName, oisRequestID, readOISHeader } from "./ois";
|
|
13
14
|
function buildRequest(path, config, init) {
|
|
14
15
|
const { host, cookies, insecure } = config;
|
|
15
16
|
const url = new URL(path, `${insecure ? "http" : "https"}://${host}`);
|
|
@@ -59,16 +60,33 @@ function buildRequest(path, config, init) {
|
|
|
59
60
|
}
|
|
60
61
|
const requestInit = Object.assign({}, init);
|
|
61
62
|
requestInit.credentials = config.consent.deviceAccess ? "include" : "omit";
|
|
63
|
+
const headers = new Headers(requestInit.headers);
|
|
64
|
+
requestInit.headers = headers;
|
|
62
65
|
if (config.mockedIP) {
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
headers.set("X-Forwarded-For", config.mockedIP);
|
|
67
|
+
}
|
|
68
|
+
if (config.ois) {
|
|
69
|
+
const oisID = oisRequestID(config, url.pathname);
|
|
70
|
+
if (oisID) {
|
|
71
|
+
try {
|
|
72
|
+
headers.set(oisHeaderName, oisID);
|
|
73
|
+
}
|
|
74
|
+
catch (_a) {
|
|
75
|
+
// A stored value carrying characters a header cannot hold must not brick every call.
|
|
76
|
+
}
|
|
77
|
+
}
|
|
65
78
|
}
|
|
66
79
|
const request = new Request(url.toString(), requestInit);
|
|
67
80
|
return request;
|
|
68
81
|
}
|
|
69
82
|
function fetch(path, config, init) {
|
|
70
83
|
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
const
|
|
84
|
+
const request = buildRequest(path, config, init);
|
|
85
|
+
const response = yield globalThis.fetch(request);
|
|
86
|
+
// Ahead of the error throw below: a non-2xx can still carry a derived id.
|
|
87
|
+
if (config.ois) {
|
|
88
|
+
readOISHeader(config, new URL(request.url).pathname, response.headers);
|
|
89
|
+
}
|
|
72
90
|
const contentType = response.headers.get("Content-Type");
|
|
73
91
|
const data = (contentType === null || contentType === void 0 ? void 0 : contentType.startsWith("application/json")) ? yield response.json() : yield response.text();
|
|
74
92
|
if (!response.ok) {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ResolvedConfig } from "../config";
|
|
2
|
+
declare const oisHeaderName = "X-Optable-OID";
|
|
3
|
+
type OISState = {
|
|
4
|
+
id: string | null;
|
|
5
|
+
storageKey: string;
|
|
6
|
+
};
|
|
7
|
+
declare function getOISID(config: ResolvedConfig): string | null;
|
|
8
|
+
declare function readOISHeader(config: ResolvedConfig, pathname: string, headers: Headers): void;
|
|
9
|
+
declare function oisRequestID(config: ResolvedConfig, pathname: string): string | null;
|
|
10
|
+
declare function clearOISID(config: ResolvedConfig): void;
|
|
11
|
+
declare function getOISState(config: ResolvedConfig): OISState;
|
|
12
|
+
export { oisHeaderName, readOISHeader, oisRequestID, getOISID, getOISState, clearOISID };
|
|
13
|
+
export type { OISState };
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { LocalStorage } from "./storage";
|
|
2
|
+
const oisHeaderName = "X-Optable-OID";
|
|
3
|
+
const oisChangeEventName = "optable-ois:change";
|
|
4
|
+
const HEADER_PATHS = new Set(["/identify", "/uid2/token", "/profile"]);
|
|
5
|
+
function derivesOISID(pathname) {
|
|
6
|
+
return HEADER_PATHS.has(pathname);
|
|
7
|
+
}
|
|
8
|
+
function getOISID(config) {
|
|
9
|
+
return new LocalStorage(config).getOIS();
|
|
10
|
+
}
|
|
11
|
+
function readOISHeader(config, pathname, headers) {
|
|
12
|
+
if (!derivesOISID(pathname) || !config.consent.deviceAccess) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const id = headers.get(oisHeaderName);
|
|
16
|
+
if (!id) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const storage = new LocalStorage(config);
|
|
20
|
+
if (storage.getOIS() === id) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
storage.setOIS(id);
|
|
25
|
+
}
|
|
26
|
+
catch (_a) {
|
|
27
|
+
// Storage full or blocked.
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
notifyChange(config, { id, storageKey: storage.oisKey() });
|
|
31
|
+
}
|
|
32
|
+
function oisRequestID(config, pathname) {
|
|
33
|
+
if (!derivesOISID(pathname) || !config.consent.deviceAccess) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
return getOISID(config);
|
|
37
|
+
}
|
|
38
|
+
function clearOISID(config) {
|
|
39
|
+
const storage = new LocalStorage(config);
|
|
40
|
+
if (storage.getOIS() === null) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
storage.clearOIS();
|
|
44
|
+
notifyChange(config, { id: null, storageKey: storage.oisKey() });
|
|
45
|
+
}
|
|
46
|
+
function getOISState(config) {
|
|
47
|
+
const storage = new LocalStorage(config);
|
|
48
|
+
return { id: storage.getOIS(), storageKey: storage.oisKey() };
|
|
49
|
+
}
|
|
50
|
+
function notifyChange(config, state) {
|
|
51
|
+
window.dispatchEvent(new CustomEvent(oisChangeEventName, {
|
|
52
|
+
detail: Object.assign({ instance: config.node || config.host }, state),
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
export { oisHeaderName, readOISHeader, oisRequestID, getOISID, getOISState, clearOISID };
|
|
@@ -7,6 +7,7 @@ export declare function encodeBase64(str: string): string;
|
|
|
7
7
|
declare function generateSiteKeys(config: ResolvedConfig): StorageKeys;
|
|
8
8
|
declare function generateTargetingKeys(config: ResolvedConfig): StorageKeys;
|
|
9
9
|
declare function generatedPairKeys(): StorageKeys;
|
|
10
|
+
declare function generateOISKeys(config: ResolvedConfig): StorageKeys;
|
|
10
11
|
declare function generatePassportKeys(config: ResolvedConfig): StorageKeys;
|
|
11
12
|
export type { StorageKeys };
|
|
12
|
-
export { generateSiteKeys, generatedPairKeys, generatePassportKeys, generateTargetingKeys };
|
|
13
|
+
export { generateSiteKeys, generatedPairKeys, generatePassportKeys, generateTargetingKeys, generateOISKeys };
|
|
@@ -28,6 +28,12 @@ function generateTargetingKeys(config) {
|
|
|
28
28
|
function generatedPairKeys() {
|
|
29
29
|
return { write: [pairStorageKey], read: [pairStorageKey] };
|
|
30
30
|
}
|
|
31
|
+
// Generate the keys for the OIS id storage
|
|
32
|
+
// The keys are generated based on the host and node configs
|
|
33
|
+
function generateOISKeys(config) {
|
|
34
|
+
const key = `OPTABLE_OIS_${getWriteKeyBase64FromConfig(config)}`;
|
|
35
|
+
return { write: [key], read: [key] };
|
|
36
|
+
}
|
|
31
37
|
// Generate the keys for the passport storage
|
|
32
38
|
// The keys are generated based on the host and node configs
|
|
33
39
|
// We need to keep backward compatibility with the legacy host cache
|
|
@@ -50,4 +56,4 @@ function generatePassportKeys(config) {
|
|
|
50
56
|
}
|
|
51
57
|
return { write, read };
|
|
52
58
|
}
|
|
53
|
-
export { generateSiteKeys, generatedPairKeys, generatePassportKeys, generateTargetingKeys };
|
|
59
|
+
export { generateSiteKeys, generatedPairKeys, generatePassportKeys, generateTargetingKeys, generateOISKeys };
|
|
@@ -8,11 +8,16 @@ declare class LocalStorage {
|
|
|
8
8
|
private targetingKeys;
|
|
9
9
|
private siteKeys;
|
|
10
10
|
private pairKeys;
|
|
11
|
+
private oisKeys;
|
|
11
12
|
private storage;
|
|
12
13
|
constructor(config: ResolvedConfig);
|
|
13
14
|
getPassport(): string | null;
|
|
14
15
|
setPassport(passport: string): void;
|
|
15
16
|
getVisitorId(): string | null;
|
|
17
|
+
getOIS(): string | null;
|
|
18
|
+
setOIS(id: string): void;
|
|
19
|
+
clearOIS(): void;
|
|
20
|
+
oisKey(): string;
|
|
16
21
|
getTargeting(): TargetingResponse | null;
|
|
17
22
|
setTargeting(targeting?: TargetingResponse | null): void;
|
|
18
23
|
updateTargeting(update: (targeting: TargetingResponse) => boolean): TargetingResponse | null;
|
package/lib/dist/core/storage.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LocalStorageProxy } from "./regs/storage";
|
|
2
|
-
import { generatedPairKeys, generatePassportKeys, generateSiteKeys, generateTargetingKeys, } from "./storage-keys";
|
|
2
|
+
import { generatedPairKeys, generateOISKeys, generatePassportKeys, generateSiteKeys, generateTargetingKeys, } from "./storage-keys";
|
|
3
3
|
const pairEIDSource = "pair-protocol.com";
|
|
4
4
|
class LocalStorage {
|
|
5
5
|
constructor(config) {
|
|
@@ -8,6 +8,7 @@ class LocalStorage {
|
|
|
8
8
|
this.targetingKeys = generateTargetingKeys(config);
|
|
9
9
|
this.siteKeys = generateSiteKeys(config);
|
|
10
10
|
this.pairKeys = generatedPairKeys();
|
|
11
|
+
this.oisKeys = generateOISKeys(config);
|
|
11
12
|
this.storage = new LocalStorageProxy(this.config.consent);
|
|
12
13
|
}
|
|
13
14
|
getPassport() {
|
|
@@ -36,6 +37,18 @@ class LocalStorage {
|
|
|
36
37
|
return null;
|
|
37
38
|
}
|
|
38
39
|
}
|
|
40
|
+
getOIS() {
|
|
41
|
+
return this.readStorageKeys(this.oisKeys);
|
|
42
|
+
}
|
|
43
|
+
setOIS(id) {
|
|
44
|
+
this.writeToStorageKeys(this.oisKeys, id);
|
|
45
|
+
}
|
|
46
|
+
clearOIS() {
|
|
47
|
+
this.clearStorageKeys(this.oisKeys);
|
|
48
|
+
}
|
|
49
|
+
oisKey() {
|
|
50
|
+
return this.oisKeys.write[0];
|
|
51
|
+
}
|
|
39
52
|
getTargeting() {
|
|
40
53
|
const raw = this.readStorageKeys(this.targetingKeys);
|
|
41
54
|
return raw ? JSON.parse(raw) : null;
|
package/lib/dist/sdk.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { SiteResponse } from "./edge/site";
|
|
|
7
7
|
import { TargetingKeyValues, TargetingResponse, TargetingRequest, PrebidORTB2 } from "./edge/targeting";
|
|
8
8
|
import { ContextualSegmentsResponse, ContextualTargetingKeyValues, ContextualTargetingKeyValuesOptions } from "./edge/contextual_segments";
|
|
9
9
|
import { TokenizeResponse } from "./edge/tokenize";
|
|
10
|
+
import type { OISState } from "./core/ois";
|
|
10
11
|
declare class OptableSDK {
|
|
11
12
|
static version: string;
|
|
12
13
|
dcn: ResolvedConfig;
|
|
@@ -14,8 +15,7 @@ declare class OptableSDK {
|
|
|
14
15
|
private contextSent;
|
|
15
16
|
private contextConfig;
|
|
16
17
|
private contextualResponse;
|
|
17
|
-
private
|
|
18
|
-
private visitorIdNullWarned;
|
|
18
|
+
private warned;
|
|
19
19
|
constructor(dcn: InitConfig);
|
|
20
20
|
initialize(): Promise<void>;
|
|
21
21
|
identify(...ids: string[]): Promise<void>;
|
|
@@ -24,8 +24,12 @@ declare class OptableSDK {
|
|
|
24
24
|
targetingFromCache(): TargetingResponse | null;
|
|
25
25
|
site(): Promise<SiteResponse>;
|
|
26
26
|
siteFromCache(): SiteResponse | null;
|
|
27
|
+
private warnOnce;
|
|
27
28
|
passport(): string | null;
|
|
28
29
|
visitorId(): string | null;
|
|
30
|
+
oisId(): string | null;
|
|
31
|
+
oisState(): OISState;
|
|
32
|
+
oisClear(): void;
|
|
29
33
|
targetingClearCache(): void;
|
|
30
34
|
prebidORTB2(): Promise<PrebidORTB2>;
|
|
31
35
|
prebidORTB2FromCache(): PrebidORTB2;
|
package/lib/dist/sdk.js
CHANGED
|
@@ -22,13 +22,14 @@ import { ContextualSegments, ContextualTargetingKeyValues, } from "./edge/contex
|
|
|
22
22
|
import { sha256 } from "js-sha256";
|
|
23
23
|
import { Tokenize } from "./edge/tokenize";
|
|
24
24
|
import { LocalStorage } from "./core/storage";
|
|
25
|
+
import { clearOISID, getOISID, getOISState } from "./core/ois";
|
|
26
|
+
import { consoleLog } from "./core/log";
|
|
25
27
|
class OptableSDK {
|
|
26
28
|
constructor(dcn) {
|
|
27
29
|
this.contextSent = false;
|
|
28
30
|
this.contextConfig = null;
|
|
29
31
|
this.contextualResponse = null;
|
|
30
|
-
this.
|
|
31
|
-
this.visitorIdNullWarned = false;
|
|
32
|
+
this.warned = new Set();
|
|
32
33
|
this.dcn = getConfig(dcn);
|
|
33
34
|
this.contextConfig = normalizeContextConfig(dcn.pageContext);
|
|
34
35
|
if (this.dcn.initContextual && !this.contextConfig) {
|
|
@@ -83,11 +84,17 @@ class OptableSDK {
|
|
|
83
84
|
siteFromCache() {
|
|
84
85
|
return SiteFromCache(this.dcn);
|
|
85
86
|
}
|
|
87
|
+
warnOnce(key, message) {
|
|
88
|
+
if (this.warned.has(key)) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
this.warned.add(key);
|
|
92
|
+
consoleLog("[Optable]", "warn", message);
|
|
93
|
+
}
|
|
86
94
|
passport() {
|
|
87
95
|
const value = new LocalStorage(this.dcn).getPassport();
|
|
88
|
-
if (value === null
|
|
89
|
-
this.
|
|
90
|
-
console.warn("[Optable] passport() returned null. The passport is cached in localStorage once the DCN returns one. " +
|
|
96
|
+
if (value === null) {
|
|
97
|
+
this.warnOnce("passport", "passport() returned null. The passport is cached in localStorage once the DCN returns one. " +
|
|
91
98
|
"Call before initialization (await sdk.site() or sdk.targeting()) may return null, and deployments where the DCN " +
|
|
92
99
|
"does not echo the passport in response bodies will never populate it client-side.");
|
|
93
100
|
}
|
|
@@ -95,14 +102,28 @@ class OptableSDK {
|
|
|
95
102
|
}
|
|
96
103
|
visitorId() {
|
|
97
104
|
const value = new LocalStorage(this.dcn).getVisitorId();
|
|
98
|
-
if (value === null
|
|
99
|
-
this.
|
|
100
|
-
console.warn("[Optable] visitorId() returned null. The visitor ID is derived from the passport JWT in localStorage. " +
|
|
105
|
+
if (value === null) {
|
|
106
|
+
this.warnOnce("visitorId", "visitorId() returned null. The visitor ID is derived from the passport JWT in localStorage. " +
|
|
101
107
|
"Call before initialization (await sdk.site() or sdk.targeting()) may return null, and deployments where the DCN " +
|
|
102
108
|
"does not echo the passport in response bodies will never populate it client-side.");
|
|
103
109
|
}
|
|
104
110
|
return value;
|
|
105
111
|
}
|
|
112
|
+
oisId() {
|
|
113
|
+
const value = getOISID(this.dcn);
|
|
114
|
+
if (value === null && this.dcn.ois) {
|
|
115
|
+
this.warnOnce("oisId", "oisId() returned null. The derived OIS id is cached once the DCN returns it on the X-Optable-OID " +
|
|
116
|
+
"response header, which happens on the first identify() or profile() call — not during " +
|
|
117
|
+
"initialization. A node with OIS ID derivation disabled, or a non-residential IP, never returns one.");
|
|
118
|
+
}
|
|
119
|
+
return value;
|
|
120
|
+
}
|
|
121
|
+
oisState() {
|
|
122
|
+
return getOISState(this.dcn);
|
|
123
|
+
}
|
|
124
|
+
oisClear() {
|
|
125
|
+
clearOISID(this.dcn);
|
|
126
|
+
}
|
|
106
127
|
targetingClearCache() {
|
|
107
128
|
TargetingClearCache(this.dcn);
|
|
108
129
|
}
|
package/package.json
CHANGED