@optable/web-sdk 0.57.0 → 0.59.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 CHANGED
@@ -163,6 +163,9 @@ When creating an instance of `OptableSDK`, you can pass an `InitConfig` object t
163
163
  - **`optableCacheTargeting` (string, defaults: `optable-cache:targeting`)**
164
164
  Local storage cache key used to store latest targeting response.
165
165
 
166
+ - **`forwardSignals` (boolean, default: `false`)**
167
+ 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.
168
+
166
169
  These configurations allow fine-tuned control over how the `OptableSDK` interacts with the Optable DCN, ensuring compatibility with different environments and privacy settings.
167
170
 
168
171
  ## Usage Example
@@ -426,30 +429,46 @@ The response has the shape:
426
429
  type ContextualSegmentsResponse = {
427
430
  classifications: {
428
431
  categories: { id: string; name: string; score: number; taxonomy: string }[];
432
+ keywords: { keyword: string; prominence: number }[];
429
433
  };
430
434
  };
431
435
  ```
432
436
 
437
+ `classifications` groups results by classification method; the DCN populates only the methods it has enabled. `categories` are taxonomy classifications (each carrying its own `taxonomy`); `keywords` are free-form terms extracted from the page. A category's `score` is a relevance score from 0 to 1, whereas a keyword's `prominence` is a per-page ordinal rank (1 = most prominent), not a comparable score.
438
+
433
439
  Each call to `ctxSegments()` caches its response on the SDK instance (calling it again refreshes the cache). When `initContextual: true`, the SDK calls `ctxSegments()` for you during initialization, so the cache is populated automatically.
434
440
 
435
- > **Note:** The requested URL must already have been classified by the DCN. If the DCN has no classification for the URL, the response will contain an empty `categories` array.
441
+ > **Note:** The requested URL must already have been classified by the DCN. If the DCN has no classification for the URL, the response will contain empty `categories` and `keywords` arrays.
436
442
 
437
443
  #### Contextual targeting key-values
438
444
 
439
- `ctxTargetingKeyValues(taxonomyKeys?)` reads the cached `ctxSegments()` response and builds a `Record<string, string[]>` of category ids grouped by taxonomy, ready to pass to an ad server such as Google Ad Manager via `googletag.pubads().setTargeting()`.
440
-
441
- Without arguments, each taxonomy value is used as the key:
445
+ `ctxTargetingKeyValues(taxonomyKeys?, options?)` reads the cached `ctxSegments()` response and builds a `Record<string, string[]>`, ready to pass to an ad server such as Google Ad Manager via `googletag.pubads().setTargeting()`. It emits category ids grouped by taxonomy, plus, by default, the page's keywords under the key `ctx_kw`:
442
446
 
443
447
  ```javascript
444
448
  sdk.ctxTargetingKeyValues();
445
- // => { "iab_ct_3_1": ["53", "91", "58", "115", "90", "52"] }
449
+ // => {
450
+ // "iab_ct_3_1": ["53", "91", "58", "115", "90", "52"],
451
+ // "ctx_kw": ["advertising", "programmatic", "ad tech"]
452
+ // }
446
453
  ```
447
454
 
448
- Pass a `taxonomyKeys` map to rename keys. Only taxonomies present in the map are emitted (filter + rename), which is useful when you only want to set keys you have configured in your ad server:
455
+ Pass a `taxonomyKeys` map to rename category keys. Only taxonomies present in the map are emitted (filter + rename), which is useful when you only want to set keys you have configured in your ad server:
449
456
 
450
457
  ```javascript
451
458
  sdk.ctxTargetingKeyValues({ iab_ct_3_1: "foo" });
452
- // => { "foo": ["53", "91", "58", "115", "90", "52"] }
459
+ // => { "foo": ["53", "91", "58", "115", "90", "52"], "ctx_kw": ["advertising", "programmatic", "ad tech"] }
460
+ ```
461
+
462
+ Keyword values are ordered by `prominence` (most prominent first), capped to the top 10, and sanitized to GAM's value rules (lowercased, [reserved characters](https://support.google.com/admanager/answer/10020177) stripped, truncated to the 40-character value limit). Use the `options` argument to change the keyword key (`keywordKey`), change the cap (`maxKeywords`), or opt out of keyword key-values by passing an empty `keywordKey`:
463
+
464
+ ```javascript
465
+ // Rename the keyword key and emit only the top 5 keywords:
466
+ sdk.ctxTargetingKeyValues({ iab_ct_3_1: "foo" }, { keywordKey: "kw", maxKeywords: 5 });
467
+ // => { "foo": ["53", ...], "kw": ["advertising", "programmatic", "ad tech", "marketing", "audience targeting"] }
468
+
469
+ // Opt out of keyword key-values entirely:
470
+ sdk.ctxTargetingKeyValues(undefined, { keywordKey: "" });
471
+ // => { "iab_ct_3_1": ["53", "91", "58", "115", "90", "52"] }
453
472
  ```
454
473
 
455
474
  A typical Google Ad Manager activation uses a `loadGAM()` helper:
@@ -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(i){if(t[i])return t[i].exports;var n=t[i]={i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},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 i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));return i},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 i=r(18),n=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],i=t[1];if(10===r)switch(i){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,i){void 0===i&&(i=!1);var n=e.getVersionPrecision(t),o=e.getVersionPrecision(r),s=Math.max(n,o),a=0,c=e.map([t,r],function(t){var r=s-e.getVersionPrecision(t),i=t+new Array(r+1).join(".0");return e.map(i.split("."),function(e){return new Array(20-e.length).join("0")+e}).reverse()});for(i&&(a=s-Math.min(n,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,i=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)i.push(t(e[r]));return i},e.find=function(e,t){var r,i;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,i=e.length;r<i;r+=1){var n=e[r];if(t(n,r))return n}},e.assign=function(e){for(var t,r,i=e,n=arguments.length,o=new Array(n>1?n-1:0),s=1;s<n;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){i[t]=e[t]})};for(t=0,r=o.length;t<r;t+=1)a();return e},e.getBrowserAlias=function(e){return i.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return i.BROWSER_MAP[e]||""},e}();t.default=n,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 i,n=(i=r(91))&&i.__esModule?i:{default:i},o=r(18);function s(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}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 n.default(e,t,r)},e.parse=function(e,t){return void 0===t&&(t=null),new n.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 i=c(r(92)),n=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 i=!1;"boolean"==typeof t?(i=t,this._hints=r):this._hints=null!=t&&"object"==typeof t?t:null,this.parsedResult={},!0!==i&&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(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.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(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.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={},i=0,n={},o=0;if(Object.keys(e).forEach(function(t){var s=e[t];"string"==typeof s?(n[t]=s,o+=1):"object"==typeof s&&(r[t]=s,i+=1)}),i>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(n),h=a.default.find(f,function(e){return t.isBrowser(e,!0)});if(void 0!==h)return this.compareVersion(n[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),i=e.toLowerCase(),n=a.default.getBrowserTypeByAlias(i);return t&&n&&(i=n.toLowerCase()),i===r},t.compareVersion=function(e){var t=[0],r=e,i=!1,n=this.getBrowserVersion();if("string"==typeof n)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(i=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(i=!0,r=e.substr(1)),t.indexOf(a.default.compareVersions(n,r,i))>-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 i,n=(i=r(17))&&i.__esModule?i:{default:i},o=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/gptbot/i],describe:function(e){var t={name:"GPTBot"},r=n.default.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chatgpt-user/i],describe:function(e){var t={name:"ChatGPT-User"},r=n.default.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/oai-searchbot/i],describe:function(e){var t={name:"OAI-SearchBot"},r=n.default.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i,e)||n.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=n.default.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(e){var t={name:"Omgilibot"},r=n.default.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/diffbot/i],describe:function(e){var t={name:"Diffbot"},r=n.default.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/perplexitybot/i],describe:function(e){var t={name:"PerplexityBot"},r=n.default.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/perplexity-user/i],describe:function(e){var t={name:"Perplexity-User"},r=n.default.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/youbot/i],describe:function(e){var t={name:"YouBot"},r=n.default.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-webindexer/i],describe:function(e){var t={name:"Meta-WebIndexer"},r=n.default.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-externalads/i],describe:function(e){var t={name:"Meta-ExternalAds"},r=n.default.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-externalagent/i],describe:function(e){var t={name:"Meta-ExternalAgent"},r=n.default.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/meta-externalfetcher/i],describe:function(e){var t={name:"Meta-ExternalFetcher"},r=n.default.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=n.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/linespider/i],describe:function(e){var t={name:"Linespider"},r=n.default.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/amazonbot/i],describe:function(e){var t={name:"AmazonBot"},r=n.default.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/bingbot/i],describe:function(e){var t={name:"BingCrawler"},r=n.default.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/baiduspider/i],describe:function(e){var t={name:"BaiduSpider"},r=n.default.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/duckduckbot/i],describe:function(e){var t={name:"DuckDuckBot"},r=n.default.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ia_archiver/i],describe:function(e){var t={name:"InternetArchiveCrawler"},r=n.default.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i,e)||n.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=n.default.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,e)||n.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=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=n.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=n.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=n.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||n.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=n.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=n.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=n.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=n.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=n.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=n.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=n.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=n.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=n.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=n.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=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(o,e)||n.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=n.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=n.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=n.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/librewolf/i],describe:function(e){var t={name:"LibreWolf"},r=n.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=n.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=n.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=n.default.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i,e),i=n.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e),o=n.default.getFirstMatch(/se ([\d.]+)x/i,e),s=r||i||o;return s&&(t.version=s),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=n.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 i=t.getBrandVersion("DuckDuckGo");if(i)return r.version=i,r}var o=n.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 i=t.getBrandVersion("Brave");if(i)return r.version=i,r}return r}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=n.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=n.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=n.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=n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=n.default.getFirstMatch(o,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:n.default.getFirstMatch(t,e),version:n.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 i,n=(i=r(17))&&i.__esModule?i:{default:i},o=r(18),s=[{test:[/Roku\/DVP/],describe:function(e){var t=n.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=n.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=n.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=n.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=n.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=n.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=n.default.getMacOSVersionName(t),i={name:o.OS_MAP.MacOS,version:t};return r&&(i.versionName=r),i}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=n.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=n.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=n.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=n.default.getAndroidVersionName(t),i={name:o.OS_MAP.Android,version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=n.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=n.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||n.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||n.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:o.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=n.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:o.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=n.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=n.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 i,n=(i=r(17))&&i.__esModule?i:{default:i},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=n.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=n.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=n.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 i,n=(i=r(17))&&i.__esModule?i:{default:i},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=n.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=n.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=n.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=n.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=n.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 i;!function(){"use strict";var t="input is invalid type",n="object"==typeof window,o=n?window:{};o.JS_SHA256_NO_WINDOW&&(n=!1);var s=!n&&"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 i=g[r];t[i]=b(i,e)}return t},y=function(e,i){var n,s=r(432),a=r(129).Buffer,c=i?"sha224":"sha256";return n=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(n(r)).digest("hex"):e(r)}},w=function(e,t){return function(r,i){return new M(r,t,!0).update(i)[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 i=g[r];t[i]=w(i,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,i){var n,o=typeof e;if("string"===o){var s,a=[],c=e.length,d=0;for(n=0;n<c;++n)(s=e.charCodeAt(n))<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(++n)),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(n=0;n<64;++n){var h=e[n]||0;l[n]=92^h,f[n]=54^h}S.call(this,r,i),this.update(f),this.oKeyPad=l,this.inner=!0,this.sharedMemory=i}S.prototype.update=function(e){if(!this.finalized){var r,i=typeof e;if("string"!==i){if("object"!==i)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 n,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)(n=e.charCodeAt(s))<128?c[o>>>2]|=n<<h[3&o++]:n<2048?(c[o>>>2]|=(192|n>>>6)<<h[3&o++],c[o>>>2]|=(128|63&n)<<h[3&o++]):n<55296||n>=57344?(c[o>>>2]|=(224|n>>>12)<<h[3&o++],c[o>>>2]|=(128|n>>>6&63)<<h[3&o++],c[o>>>2]|=(128|63&n)<<h[3&o++]):(n=65536+((1023&n)<<10|1023&e.charCodeAt(++s)),c[o>>>2]|=(240|n>>>18)<<h[3&o++],c[o>>>2]|=(128|n>>>12&63)<<h[3&o++],c[o>>>2]|=(128|n>>>6&63)<<h[3&o++],c[o>>>2]|=(128|63&n)<<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,i,n,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=((n=m[e-15])>>>7|n<<25)^(n>>>18|n<<14)^n>>>3,r=((n=m[e-2])>>>17|n<<15)^(n>>>19|n<<13)^n>>>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=(n=m[0]-1413257819)-150054599|0,f=n+24177077|0):(o=704751109,b=(n=m[0]-210244248)-1521486534|0,f=n+143694565|0),this.first=!1):(t=(d>>>2|d<<30)^(d>>>13|d<<19)^(d>>>22|d<<10),i=(o=d&u)^d&l^c,b=f+(n=b+(r=(h>>>6|h<<26)^(h>>>11|h<<21)^(h>>>25|h<<7))+(h&g^~h&v)+p[e]+m[e])|0,f=n+(t+i)|0),t=(f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10),i=(s=f&d)^f&u^o,v=l+(n=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=n+(t+i)|0)>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),i=(a=l&f)^l&d^s,g=u+(n=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=n+(t+i)|0)>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),i=(c=u&l)^u&f^a,h=d+(n=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=n+(t+i)|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,i=this.h3,n=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[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[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[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,i=this.h3,n=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,i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,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===(i=function(){return P}.call(P,r,P,e))||(e.exports=i)))}()}},t={};function r(i){var n=t[i];if(void 0!==n)return n.exports;var o=t[i]={exports:{}};return e[i].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,i){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 i=r.call(t,"string");if("object"!=e(i))return i;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:i,enumerable:!0,configurable:!0,writable:!0}):t[r]=i,t}const i="v0.57.0";async function n(e){const t=await A("/config",e,{method:"GET",headers:{Accept:"application/json"}});return new m(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=[2],a=[5],c=[7,8,10,12,17,13,18,14,19,20,21,15,22,16,11,9];function d(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const i=function(e,t){const{gdprApplies:r,gppSectionIDs:i,gdprData:n}=t;if(void 0!==r)return r?"gdpr":"gdpr"===e?null:e;if(void 0!==n&&"gdpr"===e)return"gdpr";if(void 0===i||1===i.length&&0===i[0])return e;if(1===i.length&&-1===i[0])return null;if(i.some(e=>s.includes(e)))return"gdpr";if(i.some(e=>a.includes(e)))return"can";if(i.some(e=>c.includes(e)))return"us";switch(e){case"gdpr":if(!i.some(e=>s.includes(e)))return null;break;case"can":if(!i.some(e=>a.includes(e)))return null;break;case"us":if(!i.some(e=>c.includes(e)))return null}return e}(e,t),n={reg:i,gpp:t.gppString,gppSectionIDs:t.gppSectionIDs,gdpr:t.gdprString,gdprApplies:t.gdprApplies,deviceAccess:!1,createProfilesForAdvertising:!1,useProfilesForAdvertising:!1,measureAdvertisingPerformance:!1};switch(i){case"gdpr":t.gdprData?(n.deviceAccess=l(t.gdprData,1,r.tcfeuVendorID),n.createProfilesForAdvertising=l(t.gdprData,3,r.tcfeuVendorID),n.useProfilesForAdvertising=l(t.gdprData,4,r.tcfeuVendorID),n.measureAdvertisingPerformance=l(t.gdprData,7,r.tcfeuVendorID)):t.gppData&&(n.deviceAccess=h(t.gppData,1,r.tcfeuVendorID),n.createProfilesForAdvertising=h(t.gppData,3,r.tcfeuVendorID),n.useProfilesForAdvertising=h(t.gppData,4,r.tcfeuVendorID),n.measureAdvertisingPerformance=h(t.gppData,7,r.tcfeuVendorID));break;case"can":n.deviceAccess=!0,t.gppData&&(n.createProfilesForAdvertising=f(t.gppData,3,r.tcfcaVendorID),n.useProfilesForAdvertising=f(t.gppData,4,r.tcfcaVendorID),n.measureAdvertisingPerformance=f(t.gppData,7,r.tcfcaVendorID));break;default:n.deviceAccess=!0,n.createProfilesForAdvertising=!0,n.useProfilesForAdvertising=!0,n.measureAdvertisingPerformance=!0}return n}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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,i,n){const o=Math.random()+"";t[o]=n,e.postMessage({__tcfapiCall:{command:r,version:i,callId:o}},"*")},window.addEventListener("message",e=>{let r={};try{r="string"==typeof e.data?JSON.parse(e.data):e.data}catch(e){}const i=r.__tcfapiReturn;i&&"function"==typeof t[i.callId]&&(t[i.callId](i.returnValue,i.success),delete t[i.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,i){const n=Math.random()+"";t[n]=i,e.postMessage({__gppCall:{command:r,version:"1.1",callId:n}},"*")},window.addEventListener("message",e=>{let r={};try{r="string"==typeof e.data?JSON.parse(e.data):e.data}catch(e){}const i=r.__gppReturn;i&&"function"==typeof t[i.callId]&&(t[i.callId](i.returnValue,i.success),delete t[i.callId])},!1))}();const i=d(e,r,t);return"function"==typeof window.__tcfapi&&(null===(s=(a=window).__tcfapi)||void 0===s||s.call(a,"addEventListener",2,(n,o)=>{o&&("tcloaded"===n.eventStatus||"useractioncomplete"===n.eventStatus)&&(n=>{r.gdprString=n.tcString,r.gdprApplies=n.gdprApplies,r.gdprData=n,Object.assign(i,d(e,r,t))})(n)})),"function"==typeof window.__gpp&&(null===(n=(o=window).__gpp)||void 0===n||n.call(o,"addEventListener",(n,o)=>{o&&"signalStatus"===n.eventName&&"ready"===n.data&&(n=>{r.gppString=n.gppString,r.gppSectionIDs=n.applicableSections,r.gppData=n,Object.assign(i,d(e,r,t))})(n.pingData)})),i;var n,o,s,a}function l(e,t,r){var i,n,o;return r?!(null===(n=e.purpose)||void 0===n||null===(n=n.consents)||void 0===n||!n[t]||null===(o=e.vendor)||void 0===o||null===(o=o.consents)||void 0===o||!o[r]):!(null===(i=e.publisher)||void 0===i||null===(i=i.consents)||void 0===i||!i[t])}function f(e,t,r){var i;const n=t>1,o=(null===(i=e.parsedSections)||void 0===i?void 0:i.tcfcav1)||[];if("number"==typeof r){const e=o.find(e=>"Version"in e);if(!e)return!1;let i=e.PurposesExpressConsent.includes(t)&&e.VendorExpressConsent.includes(r);return n&&(i||(i=e.PurposesImpliedConsent.includes(t)&&e.VendorImpliedConsent.includes(r))),i}const s=o.find(e=>"SubsectionType"in e&&3===e.SubsectionType);if(!s)return!1;let a=s.PubPurposesExpressConsent.includes(t);return n&&(a||(a=s.PubPurposesImpliedConsent.includes(t))),a}function h(e,t,r){var i;const n=t>1,o=(null===(i=e.parsedSections)||void 0===i?void 0:i.tcfeuv2)||[];if("number"==typeof r){const e=o.find(e=>"Version"in e);if(!e)return!1;let i=e.PurposeConsent.includes(t)&&e.VendorConsent.includes(r);return n&&(i||(i=e.PurposesLITransparency.includes(t)&&e.VendorLegitimateInterest.includes(r))),i}const s=o.find(e=>"SegmentType"in e&&3===e.SegmentType);if(!s)return!1;let a=s.PubPurposesConsent.includes(t);return n&&(a||(a=s.PubPurposesLITransparency.includes(t))),a}class p{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 g="_optable_pairId";function v(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 b(e){return e.node?v("".concat(e.host,"/").concat(e.node)):v("".concat(e.host))}class m{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=[],i="OPTABLE_PASSPORT_".concat(b(e));return t.push(i),r.push(i),e.legacyHostCache?(r.push("OPTABLE_PASSPORT_".concat(v("".concat(e.legacyHostCache)))),r.push("OPTABLE_PASS_".concat(v("".concat(e.legacyHostCache,"/").concat(e.site))))):r.push("OPTABLE_PASS_".concat(v("".concat(e.host,"/").concat(e.site)))),{write:t,read:r}}(e),this.targetingKeys=function(e){const t="OPTABLE_TARGETING_".concat(b(e));return{write:[t,e.optableCacheTargeting],read:[t]}}(e),this.siteKeys=function(e){const t="OPTABLE_SITE_".concat(b(e));return{write:[t],read:[t]}}(e),this.pairKeys={write:[g],read:[g]},this.storage=new p(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))}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),i=null==r?void 0:r.flatMap(e=>e.uids);if(!i)return;const n=new Set(i.map(e=>e.id));this.writeToStorageKeys(this.pairKeys,btoa(JSON.stringify({envelope:[...n]})))}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 y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function w(e,r,n){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(i)),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 m(r).getPassport();c.searchParams.set("cookies","no"),c.searchParams.set("passport",e||"")}const d=function(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?y(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):y(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}({},n);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 A(e,t,r){const i=await globalThis.fetch(w(e,t,r)),n=i.headers.get("Content-Type"),o=null!=n&&n.startsWith("application/json")?await i.json():await i.text();if(!i.ok)throw new Error(o.error);return o.passport&&(new m(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 S,M,P,_=((M=_||{})[M.Banner=1]="Banner",M[M.Video=2]="Video",M[M.Audio=3]="Audio",M[M.Native=4]="Native",M),O={},k={},E={};(P=S||(S={})).Placement=k,P.Media=E,P.Context=O;const F={cookies:!0,initPassport:!0,readOnly:!1,experiments:[],consent:{reg:null,deviceAccess:!0,createProfilesForAdvertising:!0,useProfilesForAdvertising:!0,measureAdvertisingPerformance:!0}};function x(){const e=new Uint8Array(16);return crypto.getRandomValues(e),btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function I(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 T(e){const t={};if(!e)return t;for(const i of null!==(r=e.audience)&&void 0!==r?r:[]){var r;i.keyspace&&(i.keyspace in t||(t[i.keyspace]=[]),t[i.keyspace].push(...i.ids.map(e=>e.id)))}return t}function B(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function R(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function C(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?R(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):R(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}function N(){const e={};let t=0;return{refs:e,process:(r,i)=>{if(!r.refs)return i;for(const o of i.uids){var n;if(B(null===(n=o.ext)||void 0===n?void 0:n.optable)&&"ref"in o.ext.optable&&"string"==typeof o.ext.optable.ref){const i=r.refs[o.ext.optable.ref];t+=1;const n=t.toString(10);e[n]=i,o.ext.optable.ref=n}}return i}}}function L(e){var t;const r={title:document.title||""},i=document.querySelector('meta[name="description"]');if(i){const e=i.getAttribute("content");e&&(r.description=e)}const n=document.querySelector('meta[name="keywords"]');if(n){const e=n.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),i=null===(t=e.textContent)||void 0===t?void 0:t.trim();i&&a.push({level:r,text:i})}),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 D(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function j(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?D(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):D(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}var W=r(966);class V{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,i,n,s,a,c,d;const l={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:F.cookies,initPassport:null!==(i=e.initPassport)&&void 0!==i?i:F.initPassport,consent:F.consent,readOnly:null!==(n=e.readOnly)&&void 0!==n?n:F.readOnly,node:e.node,legacyHostCache:e.legacyHostCache,experiments:null!==(s=e.experiments)&&void 0!==s?s:F.experiments,mockedIP:e.mockedIP,sessionID:null!==(a=e.sessionID)&&void 0!==a?a:x(),skipEnrichment:e.skipEnrichment,initTargeting:e.initTargeting,initContextual:e.initContextual,abTests:e.abTests,additionalTargetingSignals:e.additionalTargetingSignals,timeout:e.timeout,insecure:e.insecure};return null!==(c=e.consent)&&void 0!==c&&c.static?l.consent=e.consent.static:null!==(d=e.consent)&&void 0!==d&&d.cmpapi&&(l.consent=u(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)),l}(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 n(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 A("/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 A("/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(B(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 i=new URLSearchParams;t.ids.forEach(e=>i.append("id",e)),t.hids.forEach(e=>i.append("hid",e));const n=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 i of e)if(r+=i.trafficPercentage,t<r)return i;return null}(e.abTests);n&&(i.append("ab_test_id",n.id),n.matcher_override&&[...n.matcher_override].sort((e,t)=>e.rank-t.rank).forEach(e=>{i.append("matcher_override",e.id)}),n.skipMatchers&&i.append("skip_matchers",n.skipMatchers.join(",")),n.skipResolvers&&i.append("skip_resolvers",n.skipResolvers.join(",")));null!==(r=e.additionalTargetingSignals)&&void 0!==r&&r.ref&&i.append("ref","".concat(window.location.protocol,"//").concat(window.location.host).concat(window.location.pathname));const o="/v2/targeting?"+i.toString(),s=await A(o,e,{method:"GET",headers:{Accept:"application/json"}});return s&&(new m(e).setTargeting(s),function(e,t){var r,i,n,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===(i=t.ortb2)||void 0===i||null===(i=i.user)||void 0===i||null===(i=i.eids)||void 0===i||!i.length),resolvedIDs:null!==(n=t.resolved_ids)&&void 0!==n?n:[],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 m(e).getTargeting();var e}async site(){return n(this.dcn)}siteFromCache(){return e=this.dcn,new m(e).getSite();var e}passport(){const e=new m(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 m(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 m(e).clearTargeting()}async prebidORTB2(){return I(await this.targeting())}prebidORTB2FromCache(){return I(this.targetingFromCache())}async targetingKeyValues(){return T(await this.targeting())}targetingKeyValuesFromCache(){return T(this.targetingFromCache())}async witness(e){let t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return await this.init,i.includeContext&&this.contextConfig&&!this.contextSent&&(t=function(e){const t={semantic:L(e),url:window.location.href,extractedAt:Date.now()};if(document.referrer&&(t.referrer=document.referrer),e.includeHtml){var r;const i=null!==(r=e.maxHtmlLength)&&void 0!==r?r:5e4;t.html=document.documentElement.outerHTML.substring(0,i)}return t}(this.contextConfig),this.contextSent=!0),function(e,t,r,i){const n={event:t,properties:r};return i&&(n.pageContext=i),A("/witness",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}(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,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;const n=j(j({traits:t},r&&{id:r}),i&&{neighbors:i});return A("/profile",e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}(this.dcn,e,t,r)}async ctxSegments(e){const t=await async function(e,t){const r={url:t};return await A("/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){return function(e,t){var r,i;const n={},o=null!==(r=null==e||null===(i=e.classifications)||void 0===i?void 0:i.categories)&&void 0!==r?r:[];for(const e of o){const r=null==e?void 0:e.taxonomy;if(!r||null==e.id)continue;let i;if(t){if(!(r in t))continue;i=t[r]}else i=r;i in n||(n[i]=[]),n[i].includes(e.id)||n[i].push(e.id)}return n}(this.contextualResponse,e)}async tokenize(e){return await this.init,function(e,t){let r={id:t};return A("/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 i="/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 A(i,e,{method:"GET",headers:{Accept:"application/json"}}))}(this.dcn,e)}static eid(e){return e?"e:"+W.sha256.hex(e.toLowerCase().trim()):""}static sha256(e){return e?W.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 T(e)}static PrebidORTB2(e){return I(e)}}t(V,"version",i);const z=V;var q=r(704);function U(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,i)}return r}function K(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?U(Object(i),!0).forEach(function(r){t(e,r,i[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):U(Object(i)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))})}return e}const G="REQUESTED",H="RECEIVED",J="NO_BID",Y="TIMEOUT",Q="optable:prebid:analytics:sample-number";const Z=class{constructor(e){var r,i,n,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=w("/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!==(i=a.bidWinTimeout)&&void 0!==i?i:1e4,this.config.samplingRate=null!==(n=a.samplingRate)&&void 0!==n?n:1,this.config.samplingVolume=null!==(o=a.samplingVolume)&&void 0!==o?o:"event","session"===this.config.samplingVolume?sessionStorage.setItem(Q,Math.random().toFixed(2)):sessionStorage.removeItem(Q),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(Q)||"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:i,bidderRequests:n=[],bidsReceived:o=[],noBids:s=[]}=e,a=this.pendingTimeoutBids.get(r)||[],c=!!this.config.analytics&&this.shouldSample();this.log("Processing auction ".concat(r," with ").concat(n.length," bidder requests")),window.optable=window.optable||{},window.optable.pageAuctionsCount=(Number(window.optable.pageAuctionsCount)||0)+1;const d={auctionId:r,timeout:i,bidderRequests:n.map(e=>{var t,r,i,n,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!==(i=null===(n=e.ortb2.user)||void 0===n||null===(n=n.ext)||void 0===n?void 0:n.eids)&&void 0!==i?i:[],...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:G,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:G}})}})},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 i=l[t];var n,o;i?Object.assign(i,{status:H,cpm:e.cpm,size:"".concat(e.width,"x").concat(e.height),currency:e.currency,splitTestAssignment:null===(n=e.ortb2Imp)||void 0===n||null===(n=n.ext)||void 0===n||null===(n=n.optable)||void 0===n?void 0:n.splitTestAssignment}):(i={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:H,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(i),l[t]=i,f[t]=r),r.status===G&&(r.status=H)}),s.forEach(e=>{const t=u[e.bidderRequestId];t&&(t.status=J,t.bids.forEach(e=>{e.status=J}))}),a.forEach(e=>{const t=u[e.bidderRequestId];t&&(t.status=Y,t.bids.forEach(e=>{e.status=Y}))});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 i=t.missed,n=await this.toWitness(e,t.bidWonEvents,i);n.auctionEndAt=h.toISOString(),n.bidWonAt=t.bidWonEvents.length>0?new Date(Math.min(...t.bidWonEvents.map(e=>e._receivedAt.getTime()))).toISOString():null,n.optableLoaded=!i,this.sendToWitnessAPI("optable.prebid.auction",n),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(K(K({},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,i,n,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,i,n,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!==(i=null===(n=e.ortb2.user)||void 0===n||null===(n=n.ext)||void 0===n?void 0:n.eids)&&void 0!==i?i:[],...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:G,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:G}})}}),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 i;t.status=H,t.cpm=r.cpm,t.size="".concat(r.width,"x").concat(r.height),t.currency=r.currency;const n=null===(i=r.ortb2Imp)||void 0===i||null===(i=i.ext)||void 0===i||null===(i=i.optable)||void 0===i?void 0:i.splitTestAssignment;void 0!==n&&(t.splitTestAssignment=n),e.status===G&&(e.status=H)}}),S.has(e.bidderRequestId)&&e.status===G&&(e.status=J),M.has(e.bidderRequestId)&&(e.status=Y)});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!==(i=null===(n=this.optableInstance)||void 0===n||null===(n=n.dcn)||void 0===n?void 0:n.node)&&void 0!==i?i:"unknown",optableWrapperVersion:SDK_WRAPPER_VERSION||"unknown",userAgent:q.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 $(e){var t,r,i,n,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===(i=e.creativeId)||void 0===i?void 0:i.toString(),is_empty:null===(n=e.isEmpty)||void 0===n?void 0:n.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()}}z.prototype.installGPTEventListeners=function(e){const t=this;t.installGPTEventListeners=function(){},window.googletag=window.googletag||{cmd:[]};const r=window.googletag,i=["slotRenderEnded","impressionViewable"];function n(e,t){if(!e||!t||!t.length)return{};const r={};for(const i of t)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i]);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):i;for(const r of s){const i=e?e[r]:"all";o.addEventListener(r,function(e){const o=$(e),s=Array.isArray(i)&&i.length?n(o,i):o;Object.keys(s).length>0&&t.witness("gpt_events_"+r.replace(/[A-Z]/g,e=>"_"+e.toLowerCase()),s)})}}catch(e){}})},z.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 i=window.googletag;t&&t.length>0&&i.cmd.push(()=>{t.forEach(e=>{let{provider:t,id:r}=e;i.secureSignalProviders.push({id:t,collectorFunction:()=>Promise.resolve(r)})})})};const X=/^[a-f0-9]{64}$/i;z.prototype.tryIdentifyFromParams=function(e,t){const r=new RegExp("^".concat(e||"oeid","$"),"i"),i=new URLSearchParams(window.location.search);let n="";for(const[e,t]of i)if(r.test(e)){n=t;break}""!=n&&(t||function(e){return X.test(e)}(n))&&this.identify((t||"e")+":"+n)},window.optable=window.optable||{},window.optable.SDK=z,window.optable.OptablePrebidAnalytics=Z,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:i,process:n}=N(),o={user:{data:[],eids:[]}},s=new Map,a=new Map,c=new Map;const d=e.map(e=>{let{targetingFn:t,matcher:r,mm:i,priority:d}=e;return t().then(e=>function(e,t,r){var i,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!==(i=null===(d=e.ortb2)||void 0===d?void 0:d.user)&&void 0!==i?i:{};o.user.data.push(...h),c.set(f,null!==(u=e.resolved_ids)&&void 0!==u?u:[]),p.filter(e=>e.uids.length).forEach(i=>{var o,c,d,u,l;const h=null!==(o=i.matcher)&&void 0!==o?o:t,p=null!==(c=s.get(f))&&void 0!==c?c:[];h&&s.set(f,[...p,h]);const g=C(C({},n(e,i)),{},{matcher:null!==(d=i.matcher)&&void 0!==d?d:t,mm:null!==(u=i.mm)&&void 0!==u?u:r}),v=null!==(l=a.get(f))&&void 0!==l?l:[];a.set(f,[...v,g])})}(e,r,i,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)||[],i=c.get(u)||[];o.user.eids.push(...a.get(u)||[]),e.forEach(e=>t.add(e)),i.forEach(e=>r.add(e))}return{ortb2:o,eidSources:t,refs:i,resolvedIds:r}}(e):async function(e){const t=new Set,r=new Set,{refs:i,process:n}=N(),o={user:{data:[],eids:[]}};const s=e.map(e=>{let{targetingFn:i,matcher:s,mm:a}=e;return i().then(e=>function(e,i,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:i;u&&t.add(u),o.user.eids.push(C(C({},n(e,r)),{},{mm:null!==(c=r.mm)&&void 0!==c?c:s,matcher:null!==(d=r.matcher)&&void 0!==d?d:i}))})}(e,s,a))});return await Promise.allSettled(s),{ortb2:o,eidSources:t,refs:i,resolvedIds:r}}(e):Promise.reject("No targeting rules provided")}},window.optable.instance_config&&(window.optable.instance=new z(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"],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.59.0";async function i(e){const t=await O("/config",e,{method:"GET",headers:{Accept:"application/json"}});return new m(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=[2],a=[5],c=[7,8,10,12,17,13,18,14,19,20,21,15,22,16,11,9];function d(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=>s.includes(e)))return"gdpr";if(n.some(e=>a.includes(e)))return"can";if(n.some(e=>c.includes(e)))return"us";switch(e){case"gdpr":if(!n.some(e=>s.includes(e)))return null;break;case"can":if(!n.some(e=>a.includes(e)))return null;break;case"us":if(!n.some(e=>c.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=l(t.gdprData,1,r.tcfeuVendorID),i.createProfilesForAdvertising=l(t.gdprData,3,r.tcfeuVendorID),i.useProfilesForAdvertising=l(t.gdprData,4,r.tcfeuVendorID),i.measureAdvertisingPerformance=l(t.gdprData,7,r.tcfeuVendorID)):t.gppData&&(i.deviceAccess=h(t.gppData,1,r.tcfeuVendorID),i.createProfilesForAdvertising=h(t.gppData,3,r.tcfeuVendorID),i.useProfilesForAdvertising=h(t.gppData,4,r.tcfeuVendorID),i.measureAdvertisingPerformance=h(t.gppData,7,r.tcfeuVendorID));break;case"can":i.deviceAccess=!0,t.gppData&&(i.createProfilesForAdvertising=f(t.gppData,3,r.tcfcaVendorID),i.useProfilesForAdvertising=f(t.gppData,4,r.tcfcaVendorID),i.measureAdvertisingPerformance=f(t.gppData,7,r.tcfcaVendorID));break;default:i.deviceAccess=!0,i.createProfilesForAdvertising=!0,i.useProfilesForAdvertising=!0,i.measureAdvertisingPerformance=!0}return i}function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};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=d(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,d(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,d(e,r,t))})(i.pingData)})),n;var i,o,s,a}function l(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 f(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 h(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 p{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 g="_optable_pairId";function v(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 b(e){return e.node?v("".concat(e.host,"/").concat(e.node)):v("".concat(e.host))}class m{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(b(e));return t.push(n),r.push(n),e.legacyHostCache?(r.push("OPTABLE_PASSPORT_".concat(v("".concat(e.legacyHostCache)))),r.push("OPTABLE_PASS_".concat(v("".concat(e.legacyHostCache,"/").concat(e.site))))):r.push("OPTABLE_PASS_".concat(v("".concat(e.host,"/").concat(e.site)))),{write:t,read:r}}(e),this.targetingKeys=function(e){const t="OPTABLE_TARGETING_".concat(b(e));return{write:[t,e.optableCacheTargeting],read:[t]}}(e),this.siteKeys=function(e){const t="OPTABLE_SITE_".concat(b(e));return{write:[t],read:[t]}}(e),this.pairKeys={write:[g],read:[g]},this.storage=new p(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))}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 y(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}const w={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 A(e)&&A(t)?"".concat(e,"x").concat(t):void 0},mem:()=>S(navigator.deviceMemory),cores:()=>S(navigator.hardwareConcurrency)};function A(e){return Number.isInteger(e)&&e>0}function S(e){if(!("number"!=typeof e||!Number.isFinite(e)||e<0||e>1024))return"".concat(e)}let M;function P(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 _(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 m(r).getPassport();c.searchParams.set("cookies","no"),c.searchParams.set("passport",e||"")}if(r.forwardSignals&&r.consent.deviceAccess){const e=(null!=M||(M=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 y(r)}catch(e){return""}}(function(){const e={};for(const t of Object.keys(w))try{const r=w[t]();r&&(e[t]=r)}catch(e){}return e}())),M);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?P(Object(n),!0).forEach(function(r){t(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):P(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 O(e,t,r){const n=await globalThis.fetch(_(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 m(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 k,E,F,I=((E=I||{})[E.Banner=1]="Banner",E[E.Video=2]="Video",E[E.Audio=3]="Audio",E[E.Native=4]="Native",E),x={},T={},B={};(F=k||(k={})).Placement=T,F.Media=B,F.Context=x;const R={cookies:!0,initPassport:!0,readOnly:!1,experiments:[],consent:{reg:null,deviceAccess:!0,createProfilesForAdvertising:!0,useProfilesForAdvertising:!0,measureAdvertisingPerformance:!0}};function C(){const e=new Uint8Array(16);return crypto.getRandomValues(e),y(String.fromCharCode(...e))}function N(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 L(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 j(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function D(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 W(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?D(Object(n),!0).forEach(function(r){t(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function V(){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(j(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 z(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 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 K(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}const U=/["'=!+#*~^()<>[\],;&]/g;function G(e){return e.toLowerCase().replace(U,"").replace(/\s+/g," ").trim().slice(0,40).trim()}var H=r(966);class J{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 l={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:R.cookies,initPassport:null!==(n=e.initPassport)&&void 0!==n?n:R.initPassport,consent:R.consent,readOnly:null!==(i=e.readOnly)&&void 0!==i?i:R.readOnly,node:e.node,legacyHostCache:e.legacyHostCache,experiments:null!==(s=e.experiments)&&void 0!==s?s:R.experiments,mockedIP:e.mockedIP,sessionID:null!==(a=e.sessionID)&&void 0!==a?a:C(),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?l.consent=e.consent.static:null!==(d=e.consent)&&void 0!==d&&d.cmpapi&&(l.consent=u(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)),l}(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 O("/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 O("/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(j(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 O(o,e,{method:"GET",headers:{Accept:"application/json"}});return s&&(new m(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 m(e).getTargeting();var e}async site(){return i(this.dcn)}siteFromCache(){return e=this.dcn,new m(e).getSite();var e}passport(){const e=new m(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 m(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 m(e).clearTargeting()}async prebidORTB2(){return N(await this.targeting())}prebidORTB2FromCache(){return N(this.targetingFromCache())}async targetingKeyValues(){return L(await this.targeting())}targetingKeyValuesFromCache(){return L(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:z(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),O("/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=K(K({traits:t},r&&{id:r}),n&&{neighbors:n});return O("/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 O("/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=G(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 O("/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 O(n,e,{method:"GET",headers:{Accept:"application/json"}}))}(this.dcn,e)}static eid(e){return e?"e:"+H.sha256.hex(e.toLowerCase().trim()):""}static sha256(e){return e?H.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 L(e)}static PrebidORTB2(e){return N(e)}}t(J,"version",n);const Y=J;var Q=r(704);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 $(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}const X="REQUESTED",ee="RECEIVED",te="NO_BID",re="TIMEOUT",ne="optable:prebid:analytics:sample-number";const ie=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=_("/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(ne,Math.random().toFixed(2)):sessionStorage.removeItem(ne),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(ne)||"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:X,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:X}})}})},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:ee,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:ee,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===X&&(r.status=ee)}),s.forEach(e=>{const t=u[e.bidderRequestId];t&&(t.status=te,t.bids.forEach(e=>{e.status=te}))}),a.forEach(e=>{const t=u[e.bidderRequestId];t&&(t.status=re,t.bids.forEach(e=>{e.status=re}))});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($($({},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:X,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:X}})}}),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=ee,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===X&&(e.status=ee)}}),S.has(e.bidderRequestId)&&e.status===X&&(e.status=te),M.has(e.bidderRequestId)&&(e.status=re)});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:Q.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 oe(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()}}Y.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=oe(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){}})},Y.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 se=/^[a-f0-9]{64}$/i;Y.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 se.test(e)}(i))&&this.identify((t||"e")+":"+i)},window.optable=window.optable||{},window.optable.SDK=Y,window.optable.OptablePrebidAnalytics=ie,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}=V(),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=W(W({},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}=V(),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(W(W({},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 Y(window.optable.instance_config))})()})();
@@ -97,7 +97,7 @@ export function setupAB(config) {
97
97
  });
98
98
  });
99
99
  }
100
- function setHooks(pbjsInstance) {
100
+ function registerHooks(pbjsInstance) {
101
101
  pbjsInstance.getEvents().forEach((event) => {
102
102
  if (event.eventType === "auctionEnd") {
103
103
  applyToAuctionEvent(event.args);
@@ -105,6 +105,22 @@ export function setupAB(config) {
105
105
  });
106
106
  pbjsInstance.onEvent("auctionEnd", applyToAuctionEvent);
107
107
  }
108
+ // Mirrors OptablePrebidAnalytics.hookIntoPrebid: when Prebid.js has not
109
+ // finished loading yet (`onEvent` is not a function), defer registration onto
110
+ // its command queue so hooks attach once the real global drains `que`.
111
+ // This lets callers pass a queue-only stub (`{ que: [] }`) safely instead of
112
+ // having to queue `setHooks` themselves.
113
+ function setHooks(pbjsInstance) {
114
+ if (!pbjsInstance)
115
+ return;
116
+ if (typeof pbjsInstance.onEvent !== "function") {
117
+ pbjsInstance.que = pbjsInstance.que || [];
118
+ pbjsInstance.que.push(() => registerHooks(pbjsInstance));
119
+ }
120
+ else {
121
+ registerHooks(pbjsInstance);
122
+ }
123
+ }
108
124
  if (pbjs) {
109
125
  setHooks(pbjs);
110
126
  }
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "v0.57.0"
2
+ "version": "v0.59.0"
3
3
  }
@@ -37,6 +37,7 @@ type InitConfig = {
37
37
  optableCacheTargeting?: string;
38
38
  abTests?: ABTestConfig[];
39
39
  additionalTargetingSignals?: TargetingSignals;
40
+ forwardSignals?: boolean;
40
41
  timeout?: string;
41
42
  insecure?: boolean;
42
43
  pageContext?: PageContextConfig | boolean;
@@ -60,6 +61,7 @@ type ResolvedConfig = {
60
61
  initContextual?: boolean | ((response: ContextualSegmentsResponse) => void);
61
62
  abTests?: ABTestConfig[];
62
63
  additionalTargetingSignals?: TargetingSignals;
64
+ forwardSignals?: boolean;
63
65
  timeout?: string;
64
66
  insecure?: boolean;
65
67
  };
@@ -1,3 +1,4 @@
1
+ import { encodeBase64URL } from "./core/base64";
1
2
  import { getConsent, inferRegulation } from "./core/regs/consent";
2
3
  const DCN_DEFAULTS = {
3
4
  cookies: true,
@@ -32,6 +33,7 @@ function getConfig(init) {
32
33
  initContextual: init.initContextual,
33
34
  abTests: init.abTests,
34
35
  additionalTargetingSignals: init.additionalTargetingSignals,
36
+ forwardSignals: init.forwardSignals,
35
37
  timeout: init.timeout,
36
38
  insecure: init.insecure,
37
39
  };
@@ -47,9 +49,6 @@ function generateSessionID() {
47
49
  const arr = new Uint8Array(16);
48
50
  crypto.getRandomValues(arr);
49
51
  // Equivalent to esnext arr.toBase64({ omitPadding: true, alphabet: "base64url" })
50
- return btoa(String.fromCharCode(...arr))
51
- .replace(/\+/g, "-")
52
- .replace(/\//g, "_")
53
- .replace(/=+$/g, "");
52
+ return encodeBase64URL(String.fromCharCode(...arr));
54
53
  }
55
54
  export { getConfig, DCN_DEFAULTS, generateSessionID };
@@ -0,0 +1,2 @@
1
+ declare function encodeBase64URL(value: string): string;
2
+ export { encodeBase64URL };
@@ -0,0 +1,4 @@
1
+ function encodeBase64URL(value) {
2
+ return btoa(value).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
3
+ }
4
+ export { encodeBase64URL };
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { default as buildInfo } from "../build.json";
11
11
  import { LocalStorage } from "./storage";
12
+ import { deviceSignals } from "./signals";
12
13
  function buildRequest(path, config, init) {
13
14
  const { host, cookies, insecure } = config;
14
15
  const url = new URL(path, `${insecure ? "http" : "https"}://${host}`);
@@ -50,6 +51,12 @@ function buildRequest(path, config, init) {
50
51
  url.searchParams.set("cookies", "no");
51
52
  url.searchParams.set("passport", pass ? pass : "");
52
53
  }
54
+ if (config.forwardSignals && config.consent.deviceAccess) {
55
+ const sig = deviceSignals();
56
+ if (sig) {
57
+ url.searchParams.set("sig", sig);
58
+ }
59
+ }
53
60
  const requestInit = Object.assign({}, init);
54
61
  requestInit.credentials = config.consent.deviceAccess ? "include" : "omit";
55
62
  if (config.mockedIP) {
@@ -0,0 +1,6 @@
1
+ type SignalKey = "lang" | "tz" | "scr" | "mem" | "cores";
2
+ type Signals = Partial<Record<SignalKey, string>>;
3
+ declare function readSignals(): Signals;
4
+ declare function encodeSignals(signals: Signals): string;
5
+ declare function deviceSignals(): string;
6
+ export { deviceSignals, readSignals, encodeSignals };
@@ -0,0 +1,74 @@
1
+ // The blob is built as query-string style key=value pairs, then base64url
2
+ // encoded without padding into a single opaque param, readable by design.
3
+ //
4
+ // An absent key means the signal was not forwarded, which is distinct from
5
+ // forwarding an empty value, so a reader that cannot read its signal returns
6
+ // undefined rather than an empty string.
7
+ import { encodeBase64URL } from "./base64";
8
+ const NUMERIC_MAX = 1024;
9
+ const READERS = {
10
+ lang: () => {
11
+ const { languages, language } = navigator;
12
+ return (languages === null || languages === void 0 ? void 0 : languages.length) ? languages.join(",") : language || undefined;
13
+ },
14
+ tz: () => Intl.DateTimeFormat().resolvedOptions().timeZone || undefined,
15
+ scr: () => {
16
+ const { width, height } = window.screen;
17
+ return isDimension(width) && isDimension(height) ? `${width}x${height}` : undefined;
18
+ },
19
+ mem: () => numeric(navigator.deviceMemory),
20
+ cores: () => numeric(navigator.hardwareConcurrency),
21
+ };
22
+ function isDimension(value) {
23
+ return Number.isInteger(value) && value > 0;
24
+ }
25
+ function numeric(value) {
26
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 0 || value > NUMERIC_MAX) {
27
+ return undefined;
28
+ }
29
+ return `${value}`;
30
+ }
31
+ function readSignals() {
32
+ const signals = {};
33
+ for (const key of Object.keys(READERS)) {
34
+ try {
35
+ const value = READERS[key]();
36
+ if (value) {
37
+ signals[key] = value;
38
+ }
39
+ }
40
+ catch (_a) {
41
+ // The API is absent or blocked by a privacy shield; treat the signal as
42
+ // unavailable and keep the remaining readers running.
43
+ }
44
+ }
45
+ return signals;
46
+ }
47
+ function encodeSignals(signals) {
48
+ const params = new URLSearchParams();
49
+ for (const [key, value] of Object.entries(signals)) {
50
+ params.append(key, value);
51
+ }
52
+ const query = params.toString();
53
+ if (!query) {
54
+ return "";
55
+ }
56
+ try {
57
+ return encodeBase64URL(query);
58
+ }
59
+ catch (_a) {
60
+ // A value the base64 alphabet cannot represent must not break the request;
61
+ // forward nothing instead.
62
+ return "";
63
+ }
64
+ }
65
+ // Every signal is fixed for the lifetime of the page, so the blob is read once
66
+ // and reused rather than rebuilt on each request.
67
+ let blob;
68
+ // Returns the encoded `sig` blob to forward, or an empty string when no signal
69
+ // is available.
70
+ function deviceSignals() {
71
+ blob !== null && blob !== void 0 ? blob : (blob = encodeSignals(readSignals()));
72
+ return blob;
73
+ }
74
+ export { deviceSignals, readSignals, encodeSignals };
@@ -5,15 +5,24 @@ type ContextualCategory = {
5
5
  score: number;
6
6
  taxonomy: string;
7
7
  };
8
+ type ContextualKeyword = {
9
+ keyword: string;
10
+ prominence: number;
11
+ };
8
12
  type ContextualClassifications = {
9
13
  categories: ContextualCategory[];
14
+ keywords: ContextualKeyword[];
10
15
  };
11
16
  type ContextualSegmentsResponse = {
12
17
  classifications: ContextualClassifications;
13
18
  };
14
19
  declare function ContextualSegments(config: ResolvedConfig, url: string): Promise<ContextualSegmentsResponse>;
15
20
  type ContextualTargetingKeyValues = Record<string, string[]>;
16
- declare function ContextualTargetingKeyValues(response: ContextualSegmentsResponse | null, taxonomyKeys?: Record<string, string>): ContextualTargetingKeyValues;
21
+ type ContextualTargetingKeyValuesOptions = {
22
+ keywordKey?: string;
23
+ maxKeywords?: number;
24
+ };
25
+ declare function ContextualTargetingKeyValues(response: ContextualSegmentsResponse | null, taxonomyKeys?: Record<string, string>, options?: ContextualTargetingKeyValuesOptions): ContextualTargetingKeyValues;
17
26
  export { ContextualSegments, ContextualTargetingKeyValues };
18
27
  export default ContextualSegments;
19
- export type { ContextualCategory, ContextualClassifications, ContextualSegmentsResponse };
28
+ export type { ContextualCategory, ContextualKeyword, ContextualClassifications, ContextualSegmentsResponse, ContextualTargetingKeyValuesOptions, };
@@ -23,6 +23,29 @@ function ContextualSegments(config, url) {
23
23
  return response;
24
24
  });
25
25
  }
26
+ // Default GAM key under which keyword values are emitted.
27
+ const DEFAULT_KEYWORD_KEY = "ctx_kw";
28
+ // Default number of keyword values emitted when maxKeywords is not provided.
29
+ const DEFAULT_MAX_KEYWORDS = 10;
30
+ // Characters GAM reserves in custom targeting keys and values, stripped from
31
+ // keyword values before emitting. See "Valid key-value entry" in the GAM docs:
32
+ // https://support.google.com/admanager/answer/10020177
33
+ const GAM_RESERVED_CHARS = /["'=!+#*~^()<>[\],;&]/g;
34
+ // GAM custom targeting values are capped at 40 characters.
35
+ const GAM_MAX_VALUE_LENGTH = 40;
36
+ // Normalizes a keyword into a GAM-safe custom targeting value: lowercases (values
37
+ // are case-insensitive), strips GAM-reserved characters, collapses whitespace,
38
+ // and truncates to the 40-character value limit. Returns "" if nothing usable
39
+ // remains, so the caller can drop it.
40
+ function sanitizeGamValue(keyword) {
41
+ return keyword
42
+ .toLowerCase()
43
+ .replace(GAM_RESERVED_CHARS, "")
44
+ .replace(/\s+/g, " ")
45
+ .trim()
46
+ .slice(0, GAM_MAX_VALUE_LENGTH)
47
+ .trim();
48
+ }
26
49
  // Builds GAM-style targeting key-values from a contextual segments response by
27
50
  // grouping category ids under a key derived from each category's taxonomy.
28
51
  //
@@ -32,8 +55,19 @@ function ContextualSegments(config, url) {
32
55
  // With taxonomyKeys, only taxonomies present in the map are emitted, renamed to
33
56
  // the mapped key (filter + rename):
34
57
  // ContextualTargetingKeyValues(resp, { iab_ct_3_1: "foo" }) => { "foo": ["53", ...] }
35
- function ContextualTargetingKeyValues(response, taxonomyKeys) {
36
- var _a, _b;
58
+ //
59
+ // Keyword classifications are additionally emitted by default under
60
+ // DEFAULT_KEYWORD_KEY, sorted by prominence (1 = most prominent), sanitized to
61
+ // GAM's value rules, and capped to options.maxKeywords (default
62
+ // DEFAULT_MAX_KEYWORDS):
63
+ // ContextualTargetingKeyValues(resp)
64
+ // => { "iab_ct_3_1": ["53", ...], "ctx_kw": ["nba", "playoffs", ...] }
65
+ //
66
+ // Pass options.keywordKey to emit keywords under a different key, or an empty
67
+ // string to opt out of keyword emission entirely:
68
+ // ContextualTargetingKeyValues(resp, undefined, { keywordKey: "" }) // no keywords
69
+ function ContextualTargetingKeyValues(response, taxonomyKeys, options) {
70
+ var _a, _b, _c, _d, _e, _f;
37
71
  const result = {};
38
72
  const categories = (_b = (_a = response === null || response === void 0 ? void 0 : response.classifications) === null || _a === void 0 ? void 0 : _a.categories) !== null && _b !== void 0 ? _b : [];
39
73
  for (const category of categories) {
@@ -60,6 +94,35 @@ function ContextualTargetingKeyValues(response, taxonomyKeys) {
60
94
  result[key].push(category.id);
61
95
  }
62
96
  }
97
+ // Default the keyword key so keywords are emitted without opting in; an
98
+ // explicit empty string opts out.
99
+ const keywordKey = (_c = options === null || options === void 0 ? void 0 : options.keywordKey) !== null && _c !== void 0 ? _c : DEFAULT_KEYWORD_KEY;
100
+ if (keywordKey) {
101
+ const maxKeywords = (_d = options === null || options === void 0 ? void 0 : options.maxKeywords) !== null && _d !== void 0 ? _d : DEFAULT_MAX_KEYWORDS;
102
+ const keywords = (_f = (_e = response === null || response === void 0 ? void 0 : response.classifications) === null || _e === void 0 ? void 0 : _e.keywords) !== null && _f !== void 0 ? _f : [];
103
+ // Sort by prominence (1 = most prominent); missing/invalid prominence sorts last.
104
+ const prominenceOf = (k) => typeof (k === null || k === void 0 ? void 0 : k.prominence) === "number" ? k.prominence : Number.POSITIVE_INFINITY;
105
+ const values = [];
106
+ const seen = new Set();
107
+ for (const keyword of [...keywords].sort((a, b) => prominenceOf(a) - prominenceOf(b))) {
108
+ if (values.length >= maxKeywords) {
109
+ break;
110
+ }
111
+ if (typeof (keyword === null || keyword === void 0 ? void 0 : keyword.keyword) !== "string") {
112
+ continue;
113
+ }
114
+ const value = sanitizeGamValue(keyword.keyword);
115
+ // Drop empties and dedupe (values are case-insensitive to GAM).
116
+ if (value.length === 0 || seen.has(value)) {
117
+ continue;
118
+ }
119
+ seen.add(value);
120
+ values.push(value);
121
+ }
122
+ if (values.length > 0) {
123
+ result[keywordKey] = values;
124
+ }
125
+ }
63
126
  return result;
64
127
  }
65
128
  export { ContextualSegments, ContextualTargetingKeyValues };
package/lib/dist/sdk.d.ts CHANGED
@@ -5,7 +5,7 @@ import { Uid2TokenResponse } from "./edge/uid2_token";
5
5
  import { ResolveResponse } from "./edge/resolve";
6
6
  import { SiteResponse } from "./edge/site";
7
7
  import { TargetingKeyValues, TargetingResponse, TargetingRequest, PrebidORTB2 } from "./edge/targeting";
8
- import { ContextualSegmentsResponse, ContextualTargetingKeyValues } from "./edge/contextual_segments";
8
+ import { ContextualSegmentsResponse, ContextualTargetingKeyValues, ContextualTargetingKeyValuesOptions } from "./edge/contextual_segments";
9
9
  import { TokenizeResponse } from "./edge/tokenize";
10
10
  declare class OptableSDK {
11
11
  static version: string;
@@ -37,7 +37,7 @@ declare class OptableSDK {
37
37
  resetContext(): void;
38
38
  profile(traits: ProfileTraits, id?: string | null, neighbors?: string[] | null): Promise<void>;
39
39
  ctxSegments(url?: string): Promise<ContextualSegmentsResponse>;
40
- ctxTargetingKeyValues(taxonomyKeys?: Record<string, string>): ContextualTargetingKeyValues;
40
+ ctxTargetingKeyValues(taxonomyKeys?: Record<string, string>, options?: ContextualTargetingKeyValuesOptions): ContextualTargetingKeyValues;
41
41
  tokenize(id: string): Promise<TokenizeResponse>;
42
42
  resolve(id?: string): Promise<ResolveResponse>;
43
43
  static eid(email: string): string;
package/lib/dist/sdk.js CHANGED
@@ -151,8 +151,8 @@ class OptableSDK {
151
151
  return response;
152
152
  });
153
153
  }
154
- ctxTargetingKeyValues(taxonomyKeys) {
155
- return ContextualTargetingKeyValues(this.contextualResponse, taxonomyKeys);
154
+ ctxTargetingKeyValues(taxonomyKeys, options) {
155
+ return ContextualTargetingKeyValues(this.contextualResponse, taxonomyKeys, options);
156
156
  }
157
157
  tokenize(id) {
158
158
  return __awaiter(this, void 0, void 0, function* () {
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "homepage": "https://optable.co",
11
11
  "license": "SEE LICENSE IN LICENSE",
12
- "version": "v0.57.0",
12
+ "version": "v0.59.0",
13
13
  "devDependencies": {
14
14
  "@babel/core": "^7.29.7",
15
15
  "@babel/plugin-proposal-class-properties": "^7.12.1",