(function() { var serverConfig = {"endpointUrl":"https:\/\/a.us.silktide.com\/v1\/events","permittedUrls":["https:\/\/www.stonybrook.edu\/spir\/","https:\/\/www.stonybrook.edu\/proposal-development\/","https:\/\/aertc-stage2.stonybrook.edu\/index.html","https:\/\/www.stonybrook.edu\/ipp\/","https:\/\/www.stonybrook.edu\/sbdc\/ ","https:\/\/www.stonybrook.edu\/research-security\/","https:\/\/www.stonybrook.edu\/research-innovation\/","https:\/\/www.stonybrook.edu\/innovation\/","https:\/\/www.limep.org\/index.html"],"downloadExtensions":["pdf","xlsx","docx","txt","rtf","csv","exe","key","pps","ppt","pptx","7z","pkg","rar","gz","zip","avi","mov","mp4","mpeg","wmv","midi","mp3","wav","wma"],"updated":1787901234,"honorDoNotTrack":false,"defaultConsentLevel":"hash","optInConsentLevel":"hash","visitorCookieExpirySeconds":31536000,"crossDomainMode":"auto","dropQueryParams":["fbclid","jsessionid","search"],"propertyKey":"stony-brook-2"}; // If client already initialized, register as additional property if (window.stEvents && window.stEvents.push !== Array.prototype.push) { window.silktide('addProperty', { propertyKey: serverConfig.propertyKey, endpointUrl: serverConfig.endpointUrl }); return; } // Normal first-load behavior: merge server config with any existing window.stConfig window.stConfig = Object.assign({}, serverConfig, window.stConfig || {}); })(); (()=>{"use strict";var e={6847(e,t){t.Logger=void 0,t.Logger=class{constructor(){this.entries=[],this.lastRenderedIndex=-1,this.outputEnabled=!1}log(e){const t={timestamp:Date.now(),message:e};this.entries.push(t),this.outputEnabled&&(this.renderEntry(t),this.lastRenderedIndex=this.entries.length-1)}enableOutput(){if(!this.outputEnabled){this.outputEnabled=!0;for(let e=this.lastRenderedIndex+1;e(this.consentManager.handleConsentEvent(null==t?void 0:t.level),!1)),this.eventBuffer.registerHandler(r.EVENT_TYPE_UNCONSENT,()=>(this.consentManager.handleUnconsentEvent(),!1)),this.eventBuffer.registerHandler(r.EVENT_TYPE_ENABLE_LOG,()=>(this.enableLogging(),!1)),this.eventBuffer.registerHandler(r.EVENT_TYPE_DISABLE_LOG,()=>(this.disableLogging(),!1)),this.eventBuffer.registerHandler(r.EVENT_TYPE_NEW_SESSION,()=>(this.handleNewSession(),!1)),this.eventBuffer.registerHandler(r.EVENT_TYPE_ADD_PROPERTY,(e,t)=>(this.handleAddProperty(t),!1)),this.eventBuffer.registerHandler(r.EVENT_TYPE_PAGE_UPDATE,(e,t)=>{if(t){t.duration=this.pageTimeTracker.get(),t.engagedDurationMs=this.engagedTimeTracker.get(),t.maxScroll=this.scrollDepthTracker.get();const e=this.performanceTracker.get();e&&(void 0!==e.fcpMs&&(t.fcpMs=e.fcpMs),void 0!==e.domContentLoadedMs&&(t.domContentLoadedMs=e.domContentLoadedMs),void 0!==e.loadEventMs&&(t.loadEventMs=e.loadEventMs),void 0!==e.lcpMs&&(t.lcpMs=e.lcpMs),void 0!==e.fullyLoaded&&(t.fullyLoaded=e.fullyLoaded))}return!0}),this.eventBuffer.registerHandler(r.EVENT_TYPE_PAGE_LOAD,()=>{var e,t,i,n,o;return this.eventBuffer&&this.eventBuffer.getEvents().length>0&&this.pageTimeTracker&&this.engagedTimeTracker&&this.scrollDepthTracker&&this.eventBuffer.push(r.EVENT_TYPE_PAGE_UPDATE,{duration:this.pageTimeTracker.get(),engagedDurationMs:this.engagedTimeTracker.get(),maxScroll:this.scrollDepthTracker.get()}),this.currentPageId=(0,y.generateUInt64Id)(),null===(e=this.eventBuffer)||void 0===e||e.setPageId(this.currentPageId),null===(t=this.pageTimeTracker)||void 0===t||t.reset(),null===(i=this.engagedTimeTracker)||void 0===i||i.onNewPage(),null===(n=this.scrollDepthTracker)||void 0===n||n.reset(),null===(o=this.performanceTracker)||void 0===o||o.reset(),this.logger.log(`New page view started with pageId ${this.currentPageId.slice(0,8)}`),!0}),window.stEvents||(window.stEvents=[]),this.eventBuffer.initialize(window.stEvents),this.frustrationDetector=new c.FrustrationDetector({doc:document,clickLocator:l,eventBuffer:this.eventBuffer,logger:this.logger});const S={onEnterActive:()=>{this.engagedTimeTracker.onPageVisible(),this.scrollDepthTracker.onPageVisible(),this.pageTimeTracker.onPageVisible()},onEnterIdle:()=>{this.flush()},onEnterHidden:()=>{this.engagedTimeTracker.onPageHidden(),this.scrollDepthTracker.onPageHidden(),this.pageTimeTracker.onPageHidden(),this.flush()},onEnterSuspended:()=>{this.flush()},onEnterUnloaded:()=>{this.flush()}};this.pageStateManager=new m.PageStateManager(this.eventBuffer,this.logger,S),this.engagedTimeTracker=new h.EngagedTimeTracker({idleTimeoutMs:1e4,onIdle:()=>{this.pageStateManager.setState("idle")},onActive:()=>{this.pageStateManager.setState("active")}}),this.visibilityTracker=new P.VisibilityTracker({callbacks:{onPageHidden:()=>{const e=this.pageStateManager.getCurrentState();"unloaded"!==e&&"suspended"!==e&&this.pageStateManager.setState("hidden")},onPageVisible:()=>{"unloaded"!==this.pageStateManager.getCurrentState()&&this.pageStateManager.setState("active")}},logger:this.logger}),this.clickDetector=new E.ClickDetector({clickLocator:l,eventBuffer:this.eventBuffer,config:{downloadExtensions:this.clientConfig.downloadExtensions,dropQueryParams:this.clientConfig.dropQueryParams},logger:this.logger}),this.fieldDetector=new d.FieldDetector({eventBuffer:this.eventBuffer,logger:this.logger}),this.historyTracker=new p.HistoryTracker({onUrlChange:(e,t,i)=>{var n,o,s;const a=this.pageTimeTracker.get(),l=this.engagedTimeTracker.get(),c=this.scrollDepthTracker.get();null===(n=this.eventBuffer)||void 0===n||n.push(r.EVENT_TYPE_PAGE_UPDATE,{pageUrl:e,duration:a,engagedDurationMs:l,maxScroll:c}),this.pageTimeTracker.onNewPage(),this.engagedTimeTracker.onNewPage(),this.scrollDepthTracker.onNewPage(),null===(o=this.eventBuffer)||void 0===o||o.setPageUrl(t),null===(s=this.eventBuffer)||void 0===s||s.push(r.EVENT_TYPE_PAGE_LOAD,{pageUrl:t,navType:i})}},this.logger),this.historyTracker.setup(),null===(e=this.clickDetector)||void 0===e||e.attach(),null===(t=this.fieldDetector)||void 0===t||t.attach(),null===(i=this.visibilityTracker)||void 0===i||i.attach(),this.engagedTimeTracker.attach(),this.scrollDepthTracker.attach(),null===(s=this.frustrationDetector)||void 0===s||s.attach(),this.pageTimeTracker.attach(),this.performanceTracker.attach(),this.engagedTimeTracker.onPageVisible(),this.scrollDepthTracker.onPageVisible(),this.pageTimeTracker.onPageVisible(),window.addEventListener("pageshow",e=>{if(e.persisted){this.logger.log("bfcache restore detected");const e=this.pageStateManager.getCurrentState();("suspended"===e||"active"!==e)&&this.pageStateManager.setState("active")}}),window.addEventListener("pagehide",e=>{e.persisted?this.pageStateManager.setState("suspended"):this.pageStateManager.setState("unloaded")}),this.initialized=!0}destroy(){var e,t,i,r,n,o,s,a;null===(e=this.clickDetector)||void 0===e||e.detach(),null===(t=this.fieldDetector)||void 0===t||t.detach(),null===(i=this.visibilityTracker)||void 0===i||i.detach(),null===(r=this.engagedTimeTracker)||void 0===r||r.detach(),null===(n=this.scrollDepthTracker)||void 0===n||n.detach(),null===(o=this.frustrationDetector)||void 0===o||o.detach(),null===(s=this.pageTimeTracker)||void 0===s||s.detach(),null===(a=this.performanceTracker)||void 0===a||a.detach(),this.eventBuffer&&(this.eventBuffer.cleanup(window.stEvents),this.eventBuffer=void 0),this.visibilityTracker&&(this.visibilityTracker.detach(),this.visibilityTracker=void 0),this.consentManager&&this.consentManager.cleanup(),this.historyTracker&&this.historyTracker.cleanup(),this.initialized=!1,delete window.stEvents,delete window.stConfig}getConsentLevel(){return this.consentManager?this.consentManager.getConsentLevel():void 0}push(e,t){this.eventBuffer&&this.eventBuffer.push(e,t)}flush(e={}){if(this.eventBuffer&&this.eventFlusher){const t=this.consentManager.getConsentLevel(),i=l.CookieManager.getVisitorId(),r=l.CookieManager.getSessionId();this.eventFlusher.flush(this.eventBuffer,t,i,r,e,this.additionalProperties)}}enableLogging(){var e,t;this.logger.enableOutput();const i=null!==(t=null===(e=this.consentManager)||void 0===e?void 0:e.getConsentLevel())&&void 0!==t?t:"unknown";this.logger.log(`Logging enabled (v${r.CLIENT_VERSION}, consent level: ${i})`)}disableLogging(){this.logger.log("Logging disabled"),this.logger.disableOutput()}handleAddProperty(e){if(!e||"string"!=typeof e.propertyKey||"string"!=typeof e.endpointUrl)return void this.logger.log("addProperty: Invalid data, requires propertyKey and endpointUrl strings");const{propertyKey:t,endpointUrl:i}=e;if(t===this.clientConfig.propertyKey||this.additionalProperties.some(e=>e.propertyKey===t))return void this.logger.log(`addProperty: Property '${t}' already registered, ignoring`);const r=i.replace(/\/$/,"");this.additionalProperties.push({propertyKey:t,endpointUrl:r}),this.logger.log(`addProperty: Registered additional property '${t}'`)}handleNewSession(){var e;if(!l.CookieManager.getSessionId())return void this.logger.log("newSession: No cookie-based session found, ignoring");this.logger.log("newSession: Starting session reset");const t=l.CookieManager.generateUInt64();l.CookieManager.deleteSessionId(),l.CookieManager.setSessionId(t,r.SESSION_COOKIE_EXPIRY_SECONDS),null===(e=this.eventBuffer)||void 0===e||e.clear(),this.eventFlusher=void 0,this.logger.log("newSession: Reloading page with new session"),window.location.reload()}}},373(e,t,i){t.ClientConfig=void 0;const r=i(2169),n=i(2466);class o extends Error{constructor(e,t){super(e),this.errors=t,this.name="ConfigError"}}class s{constructor(e){var t,i,s,a,l,c;const d=[];if(!e||"object"!=typeof e)throw d.push("Configuration must be an object"),null!=e&&(console.error("Configuration normalization failed:"),d.forEach(e=>{console.error(` - ${e}`)})),new o("Invalid configuration",d);const g=e;if("string"!=typeof g.propertyKey?d.push("propertyKey is required and must be a string"):0===g.propertyKey.length&&d.push("propertyKey cannot be an empty string"),"string"!=typeof g.endpointUrl)d.push("endpointUrl is required and must be a string");else if(0===g.endpointUrl.length)d.push("endpointUrl cannot be an empty string");else try{new URL(g.endpointUrl)}catch(e){d.push(`endpointUrl must be a valid URL: ${e}`)}void 0!==g.honorDoNotTrack&&"boolean"!=typeof g.honorDoNotTrack&&d.push("honorDoNotTrack must be a boolean"),void 0===g.downloadExtensions||Array.isArray(g.downloadExtensions)?Array.isArray(g.downloadExtensions)&&g.downloadExtensions.filter(e=>"string"!=typeof e).length>0&&d.push("downloadExtensions must contain only strings"):d.push("downloadExtensions must be an array");const h=[n.CONSENT_LEVEL_NONE,r.CONSENT_LEVEL_BASIC,r.CONSENT_LEVEL_HASH,r.CONSENT_LEVEL_COOKIES];null!=g.defaultConsentLevel&&""!==g.defaultConsentLevel&&("string"!=typeof g.defaultConsentLevel?d.push("defaultConsentLevel must be a string"):h.includes(g.defaultConsentLevel)||d.push("defaultConsentLevel must be 'none', 'basic', 'hash', or 'cookies'"));const u=[r.CONSENT_LEVEL_BASIC,r.CONSENT_LEVEL_HASH,r.CONSENT_LEVEL_COOKIES];if(void 0!==g.optInConsentLevel&&("string"!=typeof g.optInConsentLevel?d.push("optInConsentLevel must be a string"):u.includes(g.optInConsentLevel)||d.push("optInConsentLevel must be 'basic', 'hash', or 'cookies'")),void 0!==g.visitorCookieExpirySeconds&&("number"!=typeof g.visitorCookieExpirySeconds?d.push("visitorCookieExpirySeconds must be a number"):g.visitorCookieExpirySeconds<=0&&d.push("visitorCookieExpirySeconds must be greater than 0")),null!=g.crossDomainMode&&""!==g.crossDomainMode&&("string"!=typeof g.crossDomainMode?d.push("crossDomainMode must be a string"):[r.CROSS_DOMAIN_MODE_AUTO,r.CROSS_DOMAIN_MODE_MANUAL,r.CROSS_DOMAIN_MODE_OFF].includes(g.crossDomainMode)||d.push(`crossDomainMode must be '${r.CROSS_DOMAIN_MODE_AUTO}', '${r.CROSS_DOMAIN_MODE_MANUAL}', or '${r.CROSS_DOMAIN_MODE_OFF}'`)),void 0===g.permittedUrls||Array.isArray(g.permittedUrls)?Array.isArray(g.permittedUrls)&&g.permittedUrls.filter(e=>"string"!=typeof e).length>0&&d.push("permittedUrls must contain only strings"):d.push("permittedUrls must be an array"),void 0===g.dropQueryParams||Array.isArray(g.dropQueryParams)?Array.isArray(g.dropQueryParams)&&g.dropQueryParams.filter(e=>"string"!=typeof e).length>0&&d.push("dropQueryParams must contain only strings"):d.push("dropQueryParams must be an array"),d.length>0)throw console.error("Configuration normalization failed:"),d.forEach(e=>{console.error(` - ${e}`)}),new o("Invalid configuration",d);this.propertyKey=g.propertyKey,this.endpointUrl=g.endpointUrl.replace(/\/$/,""),this.downloadExtensions=null!==(t=g.downloadExtensions)&&void 0!==t?t:[],this.honorDoNotTrack=null!==(i=g.honorDoNotTrack)&&void 0!==i&&i,this.defaultConsentLevel=g.defaultConsentLevel||r.CONSENT_LEVEL_HASH,this.optInConsentLevel=null!==(s=g.optInConsentLevel)&&void 0!==s?s:r.CONSENT_LEVEL_HASH,this.visitorCookieExpirySeconds=null!==(a=g.visitorCookieExpirySeconds)&&void 0!==a?a:n.DEFAULT_VISITOR_COOKIE_EXPIRY_SECONDS,this.crossDomainMode=g.crossDomainMode||r.CROSS_DOMAIN_MODE_AUTO,this.permittedUrls=null!==(l=g.permittedUrls)&&void 0!==l?l:[],this.dropQueryParams=null!==(c=g.dropQueryParams)&&void 0!==c?c:[]}static fromWindow(){return new s(window.stConfig)}getConsentConfig(){return{defaultConsentLevel:this.defaultConsentLevel,optInConsentLevel:this.optInConsentLevel,visitorCookieExpirySeconds:this.visitorCookieExpirySeconds,permittedUrls:this.permittedUrls,crossDomainMode:this.crossDomainMode}}getEligibilityConfig(){return{honorDoNotTrack:this.honorDoNotTrack}}}t.ClientConfig=s},7073(e,t,i){t.ConsentManager=void 0;const r=i(2169),n=i(3101);t.ConsentManager=class{constructor(e,t,i){this.config=e,this.logger=t,this.eventBuffer=i,this.cookieIdentity=new n.CookieIdentityManager({visitorCookieExpirySeconds:e.visitorCookieExpirySeconds,permittedUrls:e.permittedUrls,crossDomainMode:e.crossDomainMode},t),this.consentLevel=e.defaultConsentLevel,this.consentLevel===r.CONSENT_LEVEL_COOKIES&&this.cookieIdentity.enable(),this.setupGtagListener()}getConsentLevel(){return this.consentLevel}setupGtagListener(){if(void 0===window.dataLayer)return;if(this.originalDataLayerPush)return void this.logger.log("dataLayer.push already patched, skipping setup");this.originalDataLayerPush=window.dataLayer.push;const e=this;window.dataLayer.push=function(...t){const i=e.originalDataLayerPush.apply(window.dataLayer,t);for(const i of t){if(i&&"object"==typeof i&&"consent"===i[0]&&"update"===i[1]){const t=i[2];t&&"object"==typeof t&&e.handleGtagConsentUpdate(t)}i&&"consent_update"===i.event&&i.analytics_storage&&e.handleGtagConsentUpdate({analytics_storage:i.analytics_storage})}return i},this.checkExistingGtagConsent()}checkExistingGtagConsent(){try{if(window.google_tag_manager){const e=Object.keys(window.google_tag_manager);for(const t of e){const e=window.google_tag_manager[t];if(e&&e.dataLayer&&e.dataLayer.get){const t=e.dataLayer.get("consent.analytics_storage");if(t){this.handleGtagConsentUpdate({analytics_storage:t});break}}}}}catch(e){this.logger.log(`Failed to check existing GTM consent state: ${e}`)}}handleGtagConsentUpdate(e){e.analytics_storage&&(this.eventBuffer?"granted"===e.analytics_storage?(this.logger.log("gtag consent granted, firing consent event"),this.eventBuffer.push("consent",{})):"denied"===e.analytics_storage&&(this.logger.log("gtag consent denied, firing unconsent event"),this.eventBuffer.push("unconsent",{})):this.logger.log("Event buffer not available, cannot fire consent event"))}handleConsentEvent(e){let t;t="string"==typeof e?e:this.config.optInConsentLevel,this.logger.log(`Consent set to: ${t}`),this.setConsentLevel(t)}handleUnconsentEvent(){const e=this.config.defaultConsentLevel;this.logger.log(`Consent reverted to default: ${e}`),this.setConsentLevel(e)}setConsentLevel(e){this.consentLevel!==e&&(this.logger.log(`Consent level changed to: ${e}`),this.consentLevel=e,e===r.CONSENT_LEVEL_COOKIES?this.cookieIdentity.enable():this.cookieIdentity.disable())}cleanup(){this.cookieIdentity.disable(),this.originalDataLayerPush&&window.dataLayer&&(window.dataLayer.push=this.originalDataLayerPush,this.originalDataLayerPush=void 0)}}},3101(e,t,i){t.CookieIdentityManager=void 0;const r=i(7091),n=i(7197),o=i(2466);t.CookieIdentityManager=class{constructor(e,t){this.enabled=!1,this.config=e,this.logger=t}enable(){if(this.enabled)return void this.logger.log("Already enabled");const e=n.CrossDomainLinker.parseQueryParams(this.logger);let t=r.CookieManager.getVisitorId(),i=r.CookieManager.getSessionId();e.visitorId&&(t=e.visitorId,r.CookieManager.setVisitorId(t,this.config.visitorCookieExpirySeconds)),e.sessionId&&(i=e.sessionId,r.CookieManager.setSessionId(i,o.SESSION_COOKIE_EXPIRY_SECONDS)),t||(t=r.CookieManager.generateUInt64(),r.CookieManager.setVisitorId(t,this.config.visitorCookieExpirySeconds)),i||(i=r.CookieManager.generateUInt64(),r.CookieManager.setSessionId(i,o.SESSION_COOKIE_EXPIRY_SECONDS)),this.linker=new n.CrossDomainLinker(this.config.permittedUrls,this.config.crossDomainMode,this.logger),this.linker.initialize(),this.enabled=!0,this.logger.log("Cookies enabled")}disable(){this.enabled?(r.CookieManager.deleteVisitorId(),r.CookieManager.deleteSessionId(),this.linker=void 0,this.enabled=!1,this.logger.log("Cookies disabled")):this.logger.log("Cookies already disabled")}isEnabled(){return this.enabled}}},7091(e,t,i){t.CookieManager=void 0;const r=i(5771);class n{static getVisitorId(){return this.getCookie(this.VISITOR_COOKIE_NAME)}static getSessionId(){return this.getCookie(this.SESSION_COOKIE_NAME)}static setVisitorId(e,t){this.setCookie(this.VISITOR_COOKIE_NAME,e,t)}static setSessionId(e,t){this.setCookie(this.SESSION_COOKIE_NAME,e,t)}static deleteVisitorId(){this.deleteCookie(this.VISITOR_COOKIE_NAME)}static deleteSessionId(){this.deleteCookie(this.SESSION_COOKIE_NAME)}static generateUInt64(){return(0,r.generateUInt64Id)()}static setCookie(e,t,i){let r=`${e}=${encodeURIComponent(t)}`;if(i>0){const e=new Date;e.setTime(e.getTime()+1e3*i),r+=`; expires=${e.toUTCString()}`}r+="; path=/",r+="; SameSite=Lax","https:"===this.getProtocol()&&(r+="; Secure"),document.cookie=r}static deleteCookie(e){let t=`${e}=; expires=Thu, 01 Jan 1970 00:00:00 UTC`;t+="; path=/",t+="; SameSite=Lax","https:"===this.getProtocol()&&(t+="; Secure"),document.cookie=t}static getCookie(e){const t=e+"=",i=document.cookie.split(";");for(let e=0;e{var t;try{return new URL(e).hostname}catch(i){return null===(t=this.logger)||void 0===t||t.log(`Failed to parse permitted URL: ${e} - ${i}`),""}}).filter(e=>""!==e)}initialize(){this.mode!==r.CROSS_DOMAIN_MODE_OFF&&document.addEventListener("click",this.handleClick.bind(this),!0)}handleClick(e){const t=this.findLinkElement(e.target);t&&this.shouldDecorate(t)&&this.decorateLink(t)}findLinkElement(e){let t=e,i=0;for(;t&&i<5;){if("A"===t.tagName)return t;t=t.parentElement,i++}return null}shouldDecorate(e){var t;if(!e.href||e.href.startsWith("#")||e.href.startsWith("javascript:"))return!1;if(this.mode===r.CROSS_DOMAIN_MODE_MANUAL)return"true"===e.getAttribute("data-st-xdomain");try{const t=new URL(e.href),i=o.getHostname(),r=t.hostname;return r!==i&&this.permittedDomains.includes(r)}catch(i){return null===(t=this.logger)||void 0===t||t.log(`Invalid URL in shouldDecorate: ${e.href} - ${i}`),!1}}decorateLink(e){var t;const i=n.CookieManager.getVisitorId(),r=n.CookieManager.getSessionId();if(i||r)try{const t=new URL(e.href);i&&t.searchParams.set(o.VISITOR_PARAM,i),r&&t.searchParams.set(o.SESSION_PARAM,r),e.href=t.toString()}catch(i){null===(t=this.logger)||void 0===t||t.log(`Failed to decorate link: ${e.href} - ${i}`)}}static parseQueryParams(e){const t={};try{const i=new URL(o.getHref()),r=i.searchParams.get(this.VISITOR_PARAM),n=i.searchParams.get(this.SESSION_PARAM);r&&(t.visitorId=r),n&&(t.sessionId=n),(r||n)&&this.cleanupUrl(i,e)}catch(t){null==e||e.log(`[CrossDomainLinker] Failed to parse query params from URL: ${o.getHref()} - ${t}`)}return t}static cleanupUrl(e,t){const i=window.location.href;if(e.searchParams.delete(this.VISITOR_PARAM),e.searchParams.delete(this.SESSION_PARAM),window.history&&window.history.replaceState)try{null==t||t.log(`CrossDomainLinker.cleanupUrl: ${i} → ${e.toString()}`),window.history.replaceState(null,"",e.toString())}catch(e){null==t||t.log(`Failed to clean up URL: ${e}`)}}static getHostname(){return window.location.hostname}static getHref(){return window.location.href}}t.CrossDomainLinker=o,o.VISITOR_PARAM="_stv",o.SESSION_PARAM="_sts"},2466(e,t){t.DEFAULT_VISITOR_COOKIE_EXPIRY_SECONDS=t.SESSION_COOKIE_EXPIRY_SECONDS=t.FRUSTRATION_TEXT_MAX_LENGTH=t.HISTORY_DEBOUNCE_MS=t.ERROR_CORRELATION_WINDOW_MS=t.DEAD_CLICK_TIMEOUT_MS=t.EVENT_TYPE_ADD_PROPERTY=t.EVENT_TYPE_NEW_SESSION=t.EVENT_TYPE_DISABLE_LOG=t.EVENT_TYPE_ENABLE_LOG=t.EVENT_TYPE_UNCONSENT=t.EVENT_TYPE_CONSENT=t.EVENT_TYPE_FIELD=t.EVENT_TYPE_FRUSTRATION=t.EVENT_TYPE_DOWNLOAD=t.EVENT_TYPE_CLICK=t.EVENT_TYPE_PAGE_RETURN=t.EVENT_TYPE_PAGE_UPDATE=t.EVENT_TYPE_PAGE_LOAD=t.CONSENT_LEVEL_NONE=t.CLIENT_VERSION=void 0,t.CLIENT_VERSION="2.13.0",t.CONSENT_LEVEL_NONE="none",t.EVENT_TYPE_PAGE_LOAD="page_load",t.EVENT_TYPE_PAGE_UPDATE="page_update",t.EVENT_TYPE_PAGE_RETURN="page_return",t.EVENT_TYPE_CLICK="click",t.EVENT_TYPE_DOWNLOAD="download",t.EVENT_TYPE_FRUSTRATION="frustration",t.EVENT_TYPE_FIELD="field",t.EVENT_TYPE_CONSENT="consent",t.EVENT_TYPE_UNCONSENT="unconsent",t.EVENT_TYPE_ENABLE_LOG="enableLog",t.EVENT_TYPE_DISABLE_LOG="disableLog",t.EVENT_TYPE_NEW_SESSION="newSession",t.EVENT_TYPE_ADD_PROPERTY="addProperty",t.EVENT_TYPE_CONSENT,t.EVENT_TYPE_UNCONSENT,t.EVENT_TYPE_ENABLE_LOG,t.EVENT_TYPE_DISABLE_LOG,t.EVENT_TYPE_NEW_SESSION,t.EVENT_TYPE_ADD_PROPERTY,t.DEAD_CLICK_TIMEOUT_MS=1e3,t.ERROR_CORRELATION_WINDOW_MS=3e3,t.HISTORY_DEBOUNCE_MS=200,t.FRUSTRATION_TEXT_MAX_LENGTH=255,t.SESSION_COOKIE_EXPIRY_SECONDS=1800,t.DEFAULT_VISITOR_COOKIE_EXPIRY_SECONDS=31536e3},8671(e,t){t.AnalyticsEligibilityChecker=void 0,t.AnalyticsEligibilityChecker=class{constructor(e,t){this.config=e,this.logger=t}shouldDisableAnalytics(){return this.isBot()?(this.logger.log("Detected automated browser"),!0):this.isManuallyDisabled()?(this.logger.log("Ignoring Silktide Analytics"),!0):!!this.isDoNotTrackEnabled()&&(this.logger.log("Detected do not track request"),!0)}isBot(){return this.isPhantomJS()||this.isNightmareJS()||this.isCypress()||this.isWebDriver()}isPhantomJS(){return!!window._phantom}isNightmareJS(){return!!window.__nightmare}isCypress(){return!!window.Cypress}isWebDriver(){return!!window.navigator.webdriver}isManuallyDisabled(){return this.isLocalStorageDisabled()}isLocalStorageDisabled(){var e;try{return"true"===(null===(e=window.localStorage)||void 0===e?void 0:e.getItem("silktide_analytics_ignore"))}catch(e){return!1}}isDoNotTrackEnabled(){return!(!this.config.honorDoNotTrack||"1"!==window.navigator.doNotTrack)}}},8585(e,t,i){t.ClickDetector=void 0;const r=i(2466),n=i(7559),o=i(6477),s=i(514),a=i(7584);t.ClickDetector=class{constructor(e){this.handleClick=e=>{var t;this.logger.log("*** Click event received ***");const i=n.ClickValidator.validate(e,this.logger);if(!i)return;this.logger.log(`Processing click on: ${i.tagName}`);const o=this.clickLocator.fromMouseEvent(e);this.logger.log(`[ClickDetector] Selector: ${o.selector}, Position: ${o.x}%, ${o.y}%`);const l=i.getAttribute("data-is-download"),c=(0,a.getHref)(i),d=c?(0,s.stripDroppedQueryParams)(c,null!==(t=this.config.dropQueryParams)&&void 0!==t?t:[]):void 0;if(d&&this.logger.log(`Click has href: ${d}`),"string"==typeof l&&""!==l&&d)return this.logger.log(`Tracking as custom download: ${d}`),void this.eventBuffer.push(r.EVENT_TYPE_DOWNLOAD,{url:d});d?this.handleLinkClick(i,d,o):(this.logger.log(`Tracking click event: ${o.selector}`),this.eventBuffer.push(r.EVENT_TYPE_CLICK,{selector:o.selector,x:o.x,y:o.y}))},this.clickLocator=e.clickLocator,this.eventBuffer=e.eventBuffer,this.config=e.config,this.logger=e.logger,this.urlParser=new o.UrlParser(this.logger)}handleLinkClick(e,t,i){if(this.urlParser.hasDownloadExtension(t,this.config.downloadExtensions||[]))return this.logger.log(`Tracking as download event: ${t}`),void this.eventBuffer.push(r.EVENT_TYPE_DOWNLOAD,{url:t});this.logger.log(`Tracking link click: ${t}`),this.eventBuffer.push(r.EVENT_TYPE_CLICK,{selector:i.selector,url:t,x:i.x,y:i.y})}attach(){document.addEventListener("click",this.handleClick,{capture:!0}),this.logger.log("Click detector attached")}detach(){document.removeEventListener("click",this.handleClick,{capture:!0}),this.logger.log("Click detector detached")}}},1099(e,t,i){t.DeadClickDetector=void 0;const r=i(2466),n=i(7584),o=i(7559);class s{constructor(e){this.pendingMonitors=new Map,this.nextMonitorId=0,this.handleClick=e=>{const t=o.ClickValidator.validate(e,this.logger);if(!t)return void this.logger.log("Click validation failed");this.logger.log(`Click detected on: ${t.tagName}`);const i=(0,n.getHref)(t);if(i)return void this.logger.log(`Ignoring click - has href: ${i}`);const s=t.tagName;if("INPUT"===s||"SELECT"===s||"TEXTAREA"===s)return void this.logger.log(`Ignoring click - form control: ${s}`);if((0,n.elemHasParentTags)(t,["label"]))return void this.logger.log("Ignoring click - label");const a=(0,n.getNearestMatchingParent)(t,["a","button","img","figure","area"]);if(!a)return void this.logger.log("Ignoring click - no interactive parent");this.logger.log(`Monitoring click on interactive element: ${a.tagName}`);const l=this.clickLocator.fromMouseEvent(e),c=t;this.monitorEvents(r.DEAD_CLICK_TIMEOUT_MS,l,c)},this.handleMutation=()=>{const e=Array.from(this.pendingMonitors.keys());for(const t of e)this.resolveMonitor(t,"domMutation")},this.doc=e.doc,this.clickLocator=e.clickLocator,this.eventBuffer=e.eventBuffer,this.logger=e.logger}attach(){this.observer=new MutationObserver(this.handleMutation),this.observer.observe(this.doc.documentElement,s.config),document.addEventListener("click",this.handleClick,{capture:!0}),this.logger.log("Dead click detector attached")}detach(){var e;null===(e=this.observer)||void 0===e||e.disconnect(),document.removeEventListener("click",this.handleClick,{capture:!0});for(const e of this.pendingMonitors.values())window.clearTimeout(e.timeoutId);this.pendingMonitors.clear(),this.logger.log("Dead click detector detached")}monitorEvents(e,t,i){const r=this.nextMonitorId++,n=window.setTimeout(()=>{this.resolveMonitor(r,"timeout")},e);this.pendingMonitors.set(r,{clickLocation:t,clickedElement:i,timeoutId:n}),this.logger.log(`Started monitoring click (id: ${r}, pending: ${this.pendingMonitors.size})`)}resolveMonitor(e,t){const i=this.pendingMonitors.get(e);if(!i)return;window.clearTimeout(i.timeoutId),this.pendingMonitors.delete(e);const{clickLocation:o,clickedElement:s}=i;if(this.logger.log(`Monitoring result for click ${e}: ${t}`),"domMutation"!==t){if("timeout"===t){this.logger.log("Dead click detected - no DOM changes within timeout period - tracking frustration event");const e=(0,n.getNearestMatchingParent)(s,["a","button","img","figure","area"]);if(!e)return;const t=this.clickLocator.getSelector(e);this.eventBuffer.push(r.EVENT_TYPE_FRUSTRATION,{description:"Dead click",selector:t,x:o.x,y:o.y,type:"deadClick",text:(s.innerText||"").slice(0,r.FRUSTRATION_TEXT_MAX_LENGTH)})}}else this.logger.log("Not a dead click (DOM mutation detected - the page responded to the click)")}}t.DeadClickDetector=s,s.config={attributes:!0,childList:!0,subtree:!0}},5781(e,t,i){t.FieldDetector=void 0;const r=i(2466),n=i(4414);t.FieldDetector=class{constructor(e){this.handleChange=e=>{const t=e.target;if(!(t instanceof HTMLInputElement||t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement))return;const i=this.selectorGenerator.getCssSelector(t);this.logger.log(`[FieldDetector] Selector: ${i}`);const n=this.getFieldType(t);this.logger.log(`[FieldDetector] Field type: ${n}`);const o=this.getFieldLength(t);void 0!==o&&this.logger.log(`[FieldDetector] Field length: ${o}`),this.eventBuffer.push(r.EVENT_TYPE_FIELD,Object.assign({selector:i,fieldType:n},void 0!==o&&{length:o}))},this.eventBuffer=e.eventBuffer,this.logger=e.logger,this.selectorGenerator=new n.SelectorGenerator(this.logger)}getFieldType(e){return e instanceof HTMLInputElement?e.type||"text":e instanceof HTMLSelectElement?"select":e instanceof HTMLTextAreaElement?"textarea":"unknown"}getFieldLength(e){if(!(e instanceof HTMLSelectElement)){if(e instanceof HTMLInputElement){const t=e.type;if(!["text","email","password","search","tel","url","number"].includes(t))return}return e.value.length}}attach(){document.addEventListener("change",this.handleChange,{capture:!0}),this.logger.log("Field detector attached")}detach(){document.removeEventListener("change",this.handleChange,{capture:!0}),this.logger.log("Field detector detached")}}},5506(e,t,i){t.FrustrationDetector=void 0;const r=i(1099),n=i(2969);t.FrustrationDetector=class{constructor({doc:e,clickLocator:t,eventBuffer:i,logger:o}){const s={doc:e,clickLocator:t,eventBuffer:i,logger:o};this.deadClickDetector=new r.DeadClickDetector(s),this.postClickErrorDetector=new n.PostClickErrorDetector(t,i,o)}attach(){this.deadClickDetector.attach(),this.postClickErrorDetector.attach()}detach(){this.deadClickDetector.detach(),this.postClickErrorDetector.detach()}}},2969(e,t,i){t.PostClickErrorDetector=void 0;const r=i(7382),n=i(2466);t.PostClickErrorDetector=class{constructor(e,t,i,o=new r.SystemClock){this.handleError=()=>{if(this.lastClickTimestamp&&this.lastClickLocation){if(this.lastClickTimestamp+n.ERROR_CORRELATION_WINDOW_MS>=this.clock.getNow()){const e=this.lastClickLocation,t=document.querySelector(e.selector);this.eventBuffer.push(n.EVENT_TYPE_FRUSTRATION,{description:"Dead click",selector:e.selector,x:e.x,y:e.y,type:"deadClick",text:t?t.innerText:""})}else this.logger.log("Error occurred outside correlation window");this.reset()}else this.logger.log("No recent click to correlate with error")},this.handleClick=e=>{e.target instanceof Element&&(this.lastClickTimestamp=this.clock.getNow(),this.lastClickLocation=this.clickLocator.fromMouseEvent(e))},this.clickLocator=e,this.eventBuffer=t,this.logger=i,this.clock=o}reset(){this.lastClickTimestamp=void 0,this.lastClickLocation=void 0}attach(){window.addEventListener("click",this.handleClick),window.addEventListener("error",this.handleError)}detach(){window.removeEventListener("click",this.handleClick),window.removeEventListener("error",this.handleError)}}},5015(e,t){t.ClickLocation=void 0,t.ClickLocation=class{constructor(e,t,i,r){this.element=e,this.selector=t,this.x=i,this.y=r}}},7804(e,t,i){t.ClickLocator=void 0;const r=i(5015),n=i(4414);t.ClickLocator=class{constructor(e){this.selectorGenerator=new n.SelectorGenerator(e)}getXYPerc(e,t,i){const r=e.getBoundingClientRect(),n=t-r.left-window.scrollX,o=i-r.top-window.scrollY;return[Math.round(n/r.width*100),Math.round(o/r.height*100)]}fromMouseEvent(e){const t=e.target,i=this.selectorGenerator.getCssSelector(t),[n,o]=this.getXYPerc(t,e.pageX,e.pageY);return new r.ClickLocation(t,i,n,o)}fromElement(e,t,i){const n=this.selectorGenerator.getCssSelector(e),[o,s]=this.getXYPerc(e,t,i);return new r.ClickLocation(e,n,o,s)}getSelector(e){return this.selectorGenerator.getCssSelector(e)}}},4414(e,t){t.SelectorGenerator=void 0;class i{constructor(e){this.logger=e}getCssSelector(e){const t=e.parentElement;if(!t)return e.tagName.toLowerCase();const i=e.tagName.toLowerCase();return this.getUniqueIdSelector(e)||this.getTrustedAttributeSelector(e,i)||this.getUniqueAttributeSelector(e,i)||this.getBasicSelector(t,e,i)}getUniqueIdSelector(e){const t=e.getAttribute("id");if(!t||0===t.length||t.length>i.MAX_CHARS_PER_PROPERTY)return null;const n="#"+r(t);return 1===document.querySelectorAll(n).length?n:null}getTrustedAttributeSelector(e,t){for(const n of i.TRUSTED_ATTRIBUTES){const o=e.getAttribute(n);if(o&&o.length>0&&o.length<=i.MAX_CHARS_PER_PROPERTY&&this.isAttributeCombinationUnique(t,n,o))return`${t}[${n}="${r(o)}"]`}return null}getUniqueAttributeSelector(e,t){const n=e.getAttributeNames();for(const o of n){if("id"===o||i.TRUSTED_ATTRIBUTES.includes(o))continue;const n=e.getAttribute(o);if(n&&n.length>0&&n.length<=i.MAX_CHARS_PER_PROPERTY&&this.isAttributeCombinationUnique(t,o,n))return`${t}[${o}="${r(n)}"]`}return null}isAttributeCombinationUnique(e,t,i){const n=`${e}[${t}="${r(i)}"]`;try{return 1===document.querySelectorAll(n).length}catch(e){return this.logger.log(`Invalid selector: ${n} - ${e}`),!1}}getBasicSelector(e,t,i){const r=Array.from(e.children).filter(e=>e.tagName.toLowerCase()===i);let n=i;return r.length>1&&(n+=`:nth-of-type(${r.indexOf(t)+1})`),`${this.getCssSelector(e)}>${n}`}}function r(e){if(0==arguments.length)throw new TypeError("`cssEscape` requires an argument.");const t=String(e),i=t.length;let r,n=-1,o="";const s=t.charCodeAt(0);if(1==i&&45==s)return"\\"+t;for(;++n=1&&r<=31||127==r||0==n&&r>=48&&r<=57||1==n&&r>=48&&r<=57&&45==s?"\\"+r.toString(16)+" ":r>=128||45==r||95==r||r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122?t.charAt(n):"\\"+t.charAt(n):"�";return o}t.SelectorGenerator=i,i.MAX_CHARS_PER_PROPERTY=200,i.TRUSTED_ATTRIBUTES=["data-testid","data-test","data-qa","data-cy","data-test-id","data-qa-id","data-testing"]},7584(e,t){t.elemHasParentTags=function(e,t){if(!e)return!1;const i=t.map(e=>e.toUpperCase());let r=e,n=!1;for(;r;){if(i.includes(r.tagName)){n=!0;break}r=r.parentElement}return n},t.getNearestMatchingParent=function(e,t){if(!e)return null;const i=t.map(e=>e.toUpperCase());let r=e,n=null;for(;r;){if(i.includes(r.tagName)){n=r;break}r=r.parentElement}return n},t.getHref=function(e){let t=e;for(;t;){if("A"===t.tagName)return t.href;if("AREA"===t.tagName)return t.href;t=t.parentElement}}},6477(e,t){t.UrlParser=void 0,t.UrlParser=class{constructor(e){this.logger=e}hasDownloadExtension(e,t){try{const i=new URL(e);return t.some(e=>i.pathname.endsWith(`.${e}`))}catch(t){return this.logger.log(`Invalid URL in hasDownloadExtension: ${e} - ${t}`),!1}}}},514(e,t){t.stripDroppedQueryParams=function(e,t){if(0===t.length)return e;try{const i=new URL(e);if(""===i.searchParams.toString())return e;let r=!1;for(const e of t)i.searchParams.has(e)&&(i.searchParams.delete(e),r=!0);return r?i.toString():e}catch(t){return e}}},5771(e,t){t.generateUInt64Id=function(){const e=new Uint8Array(16);if(window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(e);else for(let t=0;t<16;t++)e[t]=Math.floor(256*Math.random());return Array.from(e).map(e=>e.toString(16).padStart(2,"0")).join("")}},7783(e,t,i){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),(new(r(i(7248)).default)).initialize()},6449(e,t,i){t.EngagedTimeTracker=void 0;const r=i(7382);t.EngagedTimeTracker=class{constructor(e={}){var t,i;this.activityEvents=["mousedown","mousemove","keypress","scroll","touchstart","click"],this.accumulatedMs=0,this.activeStartTime=null,this.idleTimeout=null,this.isAttached=!1,this.handleActivity=()=>{null===this.activeStartTime?(this.startTracking(),this.onActiveCallback&&this.onActiveCallback()):this.resetIdleTimeout()},this.handleIdle=()=>{this.stopTracking(),this.onIdleCallback&&this.onIdleCallback()},this.idleTimeoutMs=null!==(t=e.idleTimeoutMs)&&void 0!==t?t:1e4,this.onIdleCallback=e.onIdle,this.onActiveCallback=e.onActive,this.clock=null!==(i=e.clock)&&void 0!==i?i:new r.SystemClock}get(){return null!==this.activeStartTime?this.accumulatedMs+(this.clock.getNow()-this.activeStartTime):this.accumulatedMs}attach(){this.isAttached||(this.activityEvents.forEach(e=>{document.addEventListener(e,this.handleActivity,!0)}),this.isAttached=!0,this.startTracking())}detach(){this.isAttached&&(this.activityEvents.forEach(e=>{document.removeEventListener(e,this.handleActivity,!0)}),this.isAttached=!1,this.stopTracking())}onPageVisible(){this.accumulatedMs=0,null!==this.activeStartTime?(this.activeStartTime=this.clock.getNow(),this.resetIdleTimeout()):this.startTracking()}onPageHidden(){this.stopTracking()}onNewPage(){null!==this.idleTimeout&&(clearTimeout(this.idleTimeout),this.idleTimeout=null),this.accumulatedMs=0,this.activeStartTime=null,this.isAttached&&this.startTracking()}startTracking(){this.activeStartTime=this.clock.getNow(),this.resetIdleTimeout()}stopTracking(){null!==this.activeStartTime&&(this.accumulatedMs+=this.clock.getNow()-this.activeStartTime,this.activeStartTime=null),null!==this.idleTimeout&&(clearTimeout(this.idleTimeout),this.idleTimeout=null)}resetIdleTimeout(){null!==this.idleTimeout&&clearTimeout(this.idleTimeout),this.idleTimeout=window.setTimeout(this.handleIdle,this.idleTimeoutMs)}}},4911(e,t,i){var r=this&&this.__rest||function(e,t){var i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n{this.logger.log("Page activated - processing deferred page_load event"),this.processDeferredPageLoad()}));for(const i of e){const{event:e}=i,n=r(i,["event"]);if(e===o.EVENT_TYPE_PAGE_LOAD&&void 0===n.time){if(t){this.logger.log("Deferring page_load event (page is prerendering)"),this.deferredPageLoadEvent=i;continue}{const e=this.performanceTiming.getTimeOrigin();if(null!==e&&(n.time=e,this.logger.log(`page_load event: using timeOrigin ${e} for accurate timing`)),!n.navType){const e=this.performanceTiming.getNavigationType();null!==e&&(n.navType=e,this.logger.log(`page_load event: detected navType ${e}`))}}}this.push(e,n)}this.originalPush=e.push,e.push=e=>{const{event:t}=e,i=r(e,["event"]);return this.push(t,i),this.events.length}}processDeferredPageLoad(){if(!this.deferredPageLoadEvent)return;const e=this.deferredPageLoadEvent,{event:t}=e,i=r(e,["event"]),n=this.performanceTiming.getActivationStart();null!==n?(i.time=n,this.logger.log(`page_load event: using activationStart ${n} (page was prerendered)`)):(i.time=this.clock.getNow(),this.logger.log("page_load event: activationStart not available, using current time as fallback")),this.push(t,i),this.deferredPageLoadEvent=void 0}cleanup(e){this.originalPush&&e&&(e.push=this.originalPush)}}},1740(e,t,i){var r=this&&this.__rest||function(e,t){var i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n{})}buildWireEvents(e,t,i){return e.map(e=>{const{pageUrl:n,timeMs:o,pageId:s}=e,a=r(e,["pageUrl","timeMs","pageId"]),l=Object.assign(Object.assign({},a),{clientTimeMs:o});return n&&n!==t&&(l.pageUrl=n),s&&s!==i&&(l.pageId=s),l})}buildPayload(e,t,i,r,n,a,l){const c={propertyKey:e,url:t,pageId:i||void 0,referrer:0===document.referrer.length?void 0:document.referrer,viewWidth:window.innerWidth,events:r,consentLevel:n,clientVersion:s.CLIENT_VERSION};return n===o.CONSENT_LEVEL_COOKIES?(c.vid=null!=a?a:void 0,c.sid=null!=l?l:void 0):(c.vid=void 0,c.sid=void 0),c}}},6185(e,t,i){t.HistoryTracker=void 0;const r=i(7382),n=i(2466);class o{constructor(e,t,i=n.HISTORY_DEBOUNCE_MS,o=new r.SystemClock){this.isPopstate=!1,this.callbacks=e,this.logger=t,this.debounceMs=i,this.clock=o}setup(){window.history.pushState?this.originalPushState?this.logger.log("Already initialized, skipping setup"):(this.originalPushState=window.history.pushState,this.lastPageViewUrl=o.getHref(),this.lastPageViewTime=this.clock.getNow(),history.pushState=(...e)=>{this.originalPushState.apply(history,e),this.isPopstate=!1,this.handleUrlChange()},this.popstateHandler=()=>{this.isPopstate=!0,this.handleUrlChange()},window.addEventListener("popstate",this.popstateHandler),this.logger.log("History API tracking initialized")):this.logger.log("History API not available, skipping History API tracking")}handleUrlChange(){const e=o.getHref(),t=this.clock.getNow();if(!(this.lastPageViewUrl===e&&this.lastPageViewTime&&t-this.lastPageViewTime0){const t=e[0];return null==this.metrics.domContentLoadedMs&&t.domContentLoadedEventEnd>0&&(this.metrics.domContentLoadedMs=t.domContentLoadedEventEnd,this.logger.log(`PerformanceTracker.refreshNavigationTiming(): DOM Content Loaded now available at ${t.domContentLoadedEventEnd}ms`)),void(null==this.metrics.loadEventMs&&t.loadEventEnd>0&&(this.metrics.loadEventMs=t.loadEventEnd,this.metrics.fullyLoaded=!0,this.logger.log(`PerformanceTracker.refreshNavigationTiming(): Load Event now available at ${t.loadEventEnd}ms`)))}if(performance.timing){const e=performance.timing,t=e.navigationStart;null==this.metrics.domContentLoadedMs&&e.domContentLoadedEventEnd>0&&(this.metrics.domContentLoadedMs=e.domContentLoadedEventEnd-t,this.logger.log(`PerformanceTracker.refreshNavigationTiming(): DOM Content Loaded (legacy) at ${this.metrics.domContentLoadedMs}ms`)),null==this.metrics.loadEventMs&&e.loadEventEnd>0&&(this.metrics.loadEventMs=e.loadEventEnd-t,this.metrics.fullyLoaded=!0,this.logger.log(`PerformanceTracker.refreshNavigationTiming(): Load Event (legacy) at ${this.metrics.loadEventMs}ms`))}}catch(e){this.logger.log(`PerformanceTracker.refreshNavigationTiming(): error: ${e}`)}}attach(){}detach(){this.disconnectObservers()}reset(){var e;this.logger.log("PerformanceTracker.reset(): resetting for new page view"),this.disconnectObservers(),this.metrics=null,this.metricsRetrieved=!1,"undefined"!=typeof performance?(this.navigationStart=performance.timeOrigin||(null===(e=performance.timing)||void 0===e?void 0:e.navigationStart)||Date.now(),this.logger.log(`PerformanceTracker.reset(): new navigationStart=${this.navigationStart}`)):(this.navigationStart=Date.now(),this.logger.log("PerformanceTracker.reset(): Performance API not available")),this.collectMetrics()}onPageVisible(){}onPageHidden(){}collectMetrics(){this.logger.log("PerformanceTracker.collectMetrics(): starting collection"),this.metrics={},this.collectNavigationTiming(),this.observeFCP(),this.observeLCP(),this.logger.log(`PerformanceTracker.collectMetrics(): initial metrics state: ${JSON.stringify(this.metrics)}`)}collectNavigationTiming(){if(this.metrics)if("undefined"!=typeof performance){this.logger.log("PerformanceTracker.collectNavigationTiming(): checking for navigation entries...");try{const e=performance.getEntriesByType("navigation");if(this.logger.log(`PerformanceTracker: getEntriesByType('navigation') returned ${e?e.length:0} entries`),e&&e.length>0){const t=e[0];return this.logger.log(`PerformanceTracker: found navigation entry (domContentLoadedEventEnd=${t.domContentLoadedEventEnd}, loadEventEnd=${t.loadEventEnd})`),t.domContentLoadedEventEnd>0?(this.metrics.domContentLoadedMs=t.domContentLoadedEventEnd,this.logger.log(`PerformanceTracker: DOM Content Loaded at ${t.domContentLoadedEventEnd}ms`)):this.logger.log("PerformanceTracker: DOM Content Loaded not yet fired (domContentLoadedEventEnd=0)"),void(t.loadEventEnd>0?(this.metrics.loadEventMs=t.loadEventEnd,this.metrics.fullyLoaded=!0,this.logger.log(`PerformanceTracker: Load Event at ${t.loadEventEnd}ms (page fully loaded)`)):(this.metrics.loadEventMs=null,this.metrics.fullyLoaded=!1,this.logger.log("PerformanceTracker: Load Event not yet fired (loadEventEnd=0)")))}if(this.logger.log("PerformanceTracker: no modern navigation entries, trying legacy API..."),performance.timing){this.logger.log("PerformanceTracker: using legacy performance.timing API");const e=performance.timing,t=e.navigationStart;this.logger.log(`PerformanceTracker: legacy timing - navigationStart=${t}, domContentLoadedEventEnd=${e.domContentLoadedEventEnd}, loadEventEnd=${e.loadEventEnd}`),e.domContentLoadedEventEnd>0?(this.metrics.domContentLoadedMs=e.domContentLoadedEventEnd-t,this.logger.log(`PerformanceTracker: DOM Content Loaded at ${this.metrics.domContentLoadedMs}ms (legacy)`)):this.logger.log("PerformanceTracker: DOM Content Loaded not yet fired (legacy, value=0)"),e.loadEventEnd>0?(this.metrics.loadEventMs=e.loadEventEnd-t,this.metrics.fullyLoaded=!0,this.logger.log(`PerformanceTracker: Load Event at ${this.metrics.loadEventMs}ms (legacy)`)):(this.metrics.loadEventMs=null,this.metrics.fullyLoaded=!1,this.logger.log("PerformanceTracker: Load Event not yet fired (legacy, value=0)"))}else this.logger.log("PerformanceTracker: no navigation entries AND no legacy timing API available!")}catch(e){this.logger.log(`PerformanceTracker.collectNavigationTiming(): error: ${e}`)}}else this.logger.log("PerformanceTracker.collectNavigationTiming(): skipped (Performance API not available)");else this.logger.log("PerformanceTracker.collectNavigationTiming(): skipped (no metrics object)")}observeFCP(){if(this.metrics)if("undefined"!=typeof PerformanceObserver)try{this.fcpObserver=new PerformanceObserver(e=>{for(const t of e.getEntries())"first-contentful-paint"===t.name&&this.metrics&&(this.metrics.fcpMs=t.startTime,this.logger.log(`PerformanceTracker: FCP captured at ${t.startTime}ms`))}),this.fcpObserver.observe({type:"paint",buffered:!0}),this.logger.log("PerformanceTracker: FCP observer started (buffered=true)")}catch(e){this.logger.log(`PerformanceTracker.observeFCP(): error setting up observer: ${e}`)}else this.logger.log("PerformanceTracker.observeFCP(): PerformanceObserver not available");else this.logger.log("PerformanceTracker.observeFCP(): skipped (no metrics object)")}observeLCP(){if(this.metrics)if("undefined"!=typeof PerformanceObserver)try{this.lcpObserver=new PerformanceObserver(e=>{const t=e.getEntries();if(t.length>0&&this.metrics){const e=t[t.length-1];this.metrics.lcpMs=e.startTime,this.logger.log(`PerformanceTracker: LCP captured at ${e.startTime}ms (${t.length} entries)`)}}),this.lcpObserver.observe({type:"largest-contentful-paint",buffered:!0}),this.logger.log("PerformanceTracker: LCP observer started (buffered=true)")}catch(e){this.logger.log(`PerformanceTracker.observeLCP(): error setting up observer: ${e}`)}else this.logger.log("PerformanceTracker.observeLCP(): PerformanceObserver not available");else this.logger.log("PerformanceTracker.observeLCP(): skipped (no metrics object)")}areMetricsReady(){if(!this.metrics)return this.logger.log("PerformanceTracker.areMetricsReady(): no metrics object"),!1;const e=void 0!==this.metrics.domContentLoadedMs;return this.logger.log(`PerformanceTracker.areMetricsReady(): ${e} (domContentLoadedMs=${this.metrics.domContentLoadedMs}, fcpMs=${this.metrics.fcpMs}, lcpMs=${this.metrics.lcpMs})`),e}areMetricsStale(){var e;return"undefined"!=typeof performance&&(performance.timeOrigin||(null===(e=performance.timing)||void 0===e?void 0:e.navigationStart)||0)!==this.navigationStart}disconnectObservers(){this.fcpObserver&&(this.fcpObserver.disconnect(),this.fcpObserver=void 0,this.logger.log("PerformanceTracker: FCP observer disconnected")),this.lcpObserver&&(this.lcpObserver.disconnect(),this.lcpObserver=void 0,this.logger.log("PerformanceTracker: LCP observer disconnected"))}}},3363(e,t){t.ScrollDepthTracker=void 0,t.ScrollDepthTracker=class{constructor(){this.maxScroll=null,this.isAttached=!1,this.handleScroll=()=>{this.update()};const e=this.getScrollPercent();this.maxScroll=void 0===e?null:e}get(){return null===this.maxScroll?void 0:this.maxScroll}attach(){this.isAttached||(window.addEventListener("scroll",this.handleScroll),this.isAttached=!0)}detach(){this.isAttached&&(window.removeEventListener("scroll",this.handleScroll),this.isAttached=!1)}onPageVisible(){const e=this.getScrollPercent();this.maxScroll=void 0===e?null:e,this.attach()}onPageHidden(){this.detach()}onNewPage(){const e=this.getScrollPercent();this.maxScroll=void 0===e?null:e}reset(){const e=this.getScrollPercent();this.maxScroll=void 0===e?null:e}update(){const e=this.getScrollPercent();void 0!==e&&(this.maxScroll=Math.max(this.maxScroll||0,e))}getScrollPercent(){const e=document.scrollingElement;if(!e)return;if(0===e.scrollHeight)return 100;const t=(e.scrollTop+e.clientHeight)/e.scrollHeight;return Math.round(100*t)}}},8213(e,t){t.VisibilityTracker=void 0,t.VisibilityTracker=class{constructor(e){this.config=e,this.handleVisibilityChange=this.onVisibilityChange.bind(this)}attach(){document.addEventListener("visibilitychange",this.handleVisibilityChange)}detach(){document.removeEventListener("visibilitychange",this.handleVisibilityChange)}onVisibilityChange(){"hidden"===document.visibilityState?this.config.callbacks.onPageHidden():this.config.callbacks.onPageVisible()}}},7559(e,t){t.ClickValidator=void 0,t.ClickValidator=class{static validate(e,t){const i=window.getSelection();return i&&"Range"===i.type?(null==t||t.log("Ignoring click - text selection detected"),null):e.button>0?(null==t||t.log(`Ignoring click - non-left button: ${e.button}`),null):e.target instanceof HTMLElement?e.target:(null==t||t.log("Ignoring click - target is not HTMLElement"),null)}}},7382(e,t,i){var r=this&&this.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),n=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||r(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0}),n(i(4570),t),n(i(2456),t),n(i(9632),t)},9632(e,t,i){Object.defineProperty(t,"__esModule",{value:!0}),t.MockPrerenderState=t.RealPrerenderState=void 0;var r=i(3250);Object.defineProperty(t,"RealPrerenderState",{enumerable:!0,get:function(){return r.RealPrerenderState}});var n=i(1856);Object.defineProperty(t,"MockPrerenderState",{enumerable:!0,get:function(){return n.MockPrerenderState}})},1856(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MockPrerenderState=void 0,t.MockPrerenderState=class{constructor(e=!1){this.prerendering=e}isPrerendering(){return this.prerendering}onActivation(e){this.prerendering&&(this.activationCallback=e)}activate(){this.prerendering&&(this.prerendering=!1,this.activationCallback&&(this.activationCallback(),this.activationCallback=void 0))}setPrerendering(e){this.prerendering=e}}},3250(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.RealPrerenderState=void 0,t.RealPrerenderState=class{isPrerendering(){return!0===document.prerendering}onActivation(e){this.isPrerendering()&&document.addEventListener("prerenderingchange",e,{once:!0})}}},8532(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MockClock=t.SystemClock=void 0,t.SystemClock=class{getNow(){return Date.now()}},t.MockClock=class{constructor(e=0){this.currentTime=e}getNow(){return this.currentTime}setTime(e){this.currentTime=e}advance(e){this.currentTime+=e}}},4570(e,t,i){Object.defineProperty(t,"__esModule",{value:!0}),t.MockPerformanceTiming=t.RealPerformanceTiming=t.MockClock=t.SystemClock=void 0;var r=i(8532);Object.defineProperty(t,"SystemClock",{enumerable:!0,get:function(){return r.SystemClock}}),Object.defineProperty(t,"MockClock",{enumerable:!0,get:function(){return r.MockClock}});var n=i(1130);Object.defineProperty(t,"RealPerformanceTiming",{enumerable:!0,get:function(){return n.RealPerformanceTiming}});var o=i(4408);Object.defineProperty(t,"MockPerformanceTiming",{enumerable:!0,get:function(){return o.MockPerformanceTiming}})},4408(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MockPerformanceTiming=void 0,t.MockPerformanceTiming=class{constructor(e=null){this.timeOrigin=e,this.activationStart=null,this.navigationType=null}getTimeOrigin(){return this.timeOrigin}getActivationStart(){return this.activationStart}getNavigationType(){return this.navigationType}setTimeOrigin(e){this.timeOrigin=e}setActivationStart(e){this.activationStart=e}setNavigationType(e){this.navigationType=e}}},1130(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.RealPerformanceTiming=void 0,t.RealPerformanceTiming=class{getTimeOrigin(){if("undefined"==typeof performance)return null;const e=performance;return e.timeOrigin?Math.round(e.timeOrigin):e.timing?.navigationStart?e.timing.navigationStart:null}getActivationStart(){if("undefined"==typeof performance)return null;const e=performance.getEntriesByType("navigation");if(0===e.length)return null;const t=e[0];if(t.activationStart&&t.activationStart>0){const e=this.getTimeOrigin();if(null!==e)return Math.round(e+t.activationStart)}return null}getNavigationType(){if("undefined"==typeof performance)return null;const e=performance.getEntriesByType("navigation");if(0===e.length)return null;switch(e[0].type){case"navigate":case"prerender":return"navigate";case"reload":return"reload";case"back_forward":return"back_forward";default:return null}}}},2456(e,t,i){var r=this&&this.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),n=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||r(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0}),n(i(2800),t)},2800(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isUrlInternal=function(e,t){if(!e||""===e.trim())return!1;let i;try{i=new URL(e).hostname}catch{return!1}const r=i.replace(/^www\./,"");return t.map(e=>{let t;try{t=new URL(e).hostname}catch{t=e.toLowerCase()}return t.replace(/^www\./,"")}).some(e=>r===e)}},1540(e,t,i){var r=this&&this.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),n=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||r(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0}),n(i(3361),t)},3361(e,t){var i,r;Object.defineProperty(t,"__esModule",{value:!0}),t.QueryParamFilterAction=t.SegmentRuleMatchTypes=void 0,function(e){e.equals="==",e.starts="starts",e.ends="ends",e.contains="contains",e.shorterThan="shorterThan",e.longerThan="longerThan"}(i||(t.SegmentRuleMatchTypes=i={})),function(e){e.keep="keep",e.drop="drop",e.campaign="campaign",e.source="source",e.medium="medium",e.term="term",e.content="content",e.log="log"}(r||(t.QueryParamFilterAction=r={}))},8e3(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.CROSS_DOMAIN_MODE_OFF=t.CROSS_DOMAIN_MODE_MANUAL=t.CROSS_DOMAIN_MODE_AUTO=t.REFERRER_INTERNAL=t.SCRUBBED_IP_ADDRESS=t.NO_TRACKING_VISITOR_ID=t.CONSENT_LEVEL_COOKIES=t.CONSENT_LEVEL_HASH=t.CONSENT_LEVEL_BASIC=t.UINT64_BYTES=t.UINT32_BYTES=void 0,t.UINT32_BYTES=4,t.UINT64_BYTES=8,t.CONSENT_LEVEL_BASIC="basic",t.CONSENT_LEVEL_HASH="hash",t.CONSENT_LEVEL_COOKIES="cookies",t.NO_TRACKING_VISITOR_ID="0",t.SCRUBBED_IP_ADDRESS="",t.REFERRER_INTERNAL="internal",t.CROSS_DOMAIN_MODE_AUTO="auto",t.CROSS_DOMAIN_MODE_MANUAL="manual",t.CROSS_DOMAIN_MODE_OFF="off"},5231(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.MissingPropertyKeyError=void 0;class i extends Error{}t.MissingPropertyKeyError=i},7773(e,t,i){var r=this&&this.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),n=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||r(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0}),n(i(5231),t)},3382(e,t){var i;t.EventNames=void 0,function(e){e.PAGE_LOAD="page_load",e.PAGE_UPDATE="page_update",e.PAGE_RETURN="page_return",e.CLICK="click",e.FRUSTRATION="frustration",e.DOWNLOAD="download",e.FIELD="field"}(i||(t.EventNames=i={}))},5211(e,t,i){Object.defineProperty(t,"__esModule",{value:!0}),t.EventNames=void 0;const r=i(3382);Object.defineProperty(t,"EventNames",{enumerable:!0,get:function(){return r.EventNames}})},3200(e,t){Object.defineProperty(t,"__esModule",{value:!0})},2169(e,t,i){var r=this&&this.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),n=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||r(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0}),n(i(1540),t),n(i(8e3),t),n(i(7773),t),n(i(5211),t),n(i(3200),t),n(i(2258),t),n(i(9855),t)},2258(e,t){Object.defineProperty(t,"__esModule",{value:!0})},9855(e,t){Object.defineProperty(t,"__esModule",{value:!0})}},t={};!function i(r){var n=t[r];if(void 0!==n)return n.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,i),o.exports}(7783)})();