stormcloud-video-player 0.8.75 → 0.8.76

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.
Files changed (39) hide show
  1. package/dist/stormcloud-vp.min.js +1 -1
  2. package/lib/Player.cjs +10 -12
  3. package/lib/Player.cjs.map +1 -1
  4. package/lib/Player.d.cts +1 -1
  5. package/lib/StormcloudPlayer.cjs +163 -78
  6. package/lib/StormcloudPlayer.cjs.map +1 -1
  7. package/lib/index.cjs +174 -133
  8. package/lib/index.cjs.map +1 -1
  9. package/lib/index.d.cts +1 -1
  10. package/lib/index.d.ts +5 -19
  11. package/lib/index.js +168 -131
  12. package/lib/index.js.map +1 -1
  13. package/lib/player/AdBreakOrchestrator.cjs +45 -13
  14. package/lib/player/AdBreakOrchestrator.cjs.map +1 -1
  15. package/lib/player/AdConfigManager.cjs +17 -3
  16. package/lib/player/AdConfigManager.cjs.map +1 -1
  17. package/lib/player/AdConfigManager.d.cts +3 -0
  18. package/lib/player/EdgePodRequest.cjs +31 -1
  19. package/lib/player/EdgePodRequest.cjs.map +1 -1
  20. package/lib/player/EdgePodRequest.d.cts +21 -3
  21. package/lib/player/FloorLadder.cjs +86 -27
  22. package/lib/player/FloorLadder.cjs.map +1 -1
  23. package/lib/player/FloorLadder.d.cts +8 -7
  24. package/lib/player/StormcloudVideoPlayer.cjs +163 -78
  25. package/lib/player/StormcloudVideoPlayer.cjs.map +1 -1
  26. package/lib/player/StormcloudVideoPlayer.d.cts +3 -9
  27. package/lib/players/HlsPlayer.cjs +163 -78
  28. package/lib/players/HlsPlayer.cjs.map +1 -1
  29. package/lib/players/index.cjs +163 -78
  30. package/lib/players/index.cjs.map +1 -1
  31. package/lib/props.cjs +10 -12
  32. package/lib/props.cjs.map +1 -1
  33. package/lib/types.d.cts +3 -7
  34. package/lib/ui/StormcloudVideoPlayer.cjs +167 -139
  35. package/lib/ui/StormcloudVideoPlayer.cjs.map +1 -1
  36. package/lib/utils/tracking.cjs +7 -0
  37. package/lib/utils/tracking.cjs.map +1 -1
  38. package/lib/utils/tracking.d.cts +2 -1
  39. package/package.json +1 -1
package/lib/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","DEFAULT_FLOOR_LADDER_BOUNDS","DEFAULT_REQUEST_SAFETY_MS","DEFAULT_TRACKING_INGEST_CONFIG","DEFAULT_WEB_FLOOR_LADDER_CONFIG","GAM_AD_OPPORTUNITY_DURATION_MS","IS_BROWSER","IS_GLOBAL","IS_IOS","IS_SAFARI","SUPPORTS_DASH","SUPPORTS_HLS","StormcloudPlayer","StormcloudPlayer_default","StormcloudVideoPlayer","StormcloudVideoPlayerComponent","applyTrackingIngestConfig","buildAnalyticsContext","canPlay","configureTrackingIngest","createHlsAdPlayer","createPalNonceManager","createStormcloudPlayer","default","detectBrowser","fixedFloorSelector","generateFloorLevels","getBrowserConfigOverrides","getBrowserID","getClientInfo","ingestPlayerTracking","initializePolyfills","isMediaStream","isTrackingIngestEnabled","lazy","logBrowserInfo","merge","omit","parseQuery","players","players_default","randomString","requiresMediaPipelineResetAfterAds","resolveFloorLadderBounds","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","supportsFeature","supportsModernJS","supportsWebKitPresentationMode","trackingIngestConfig","validateFloorCents","validateFloorLadderConfig","module","exports","import_react","require","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","bridgeDeviceId","validDeviceId","deviceId","realDeviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","platformLat","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isMacroPlaceholder","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","SCVP_MACRO_DETECT","SCVP_MACRO_PATTERN","SCVP_WHOLE_VALUE_PATTERN","NESTED_QUERY_PARAM_KEYS","SCVP_POD_MACROS","hasScvpMacros","safeDecode","findScvpMacroNames","names","text","pass","_m","bracketName","parenName","add","toUpperCase","decoded","Array","resolveScvpMacroValues","values","Map","str","toFlag","palNonce","programTitle","channelName","pod","streamCorrelator","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","keepNone","substituteScvpParams","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","substituteScvpMacros","replaced","entries","append","applyScvpMacros","deferred","stripScvpMacros","applyVastMacros","expandedUrl","replaceCorrelatorFallback","existingUrl","pageUrl","adTest","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","gdprApplies","storageAllowed","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","minCents","maxCents","levels","cents","overrides","config","bounds","ok","reason","configLevels","gamLevels","indexOf","ready","isArray","errors","check","selected","select","context","floorCents","resolveOpportunityFloor","selector","base","position","skipped","status","positions","decodeQueryComponent","mergeCustParams","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","update","next","FloorLadderController","initial","getBounds","validate","setSelector","snapshotFor","import_hls","getWebKitVersion","getPlatform","userAgentData","platform","version","majorVersion","isSmartTV","isLegacyTV","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","getChromeVersion","webkitVersion","supportsModernJS2","browser","allowNativeHls","pauseContentDuringAds","assign","e","debug","log","feature","TextEncoder","fetch","subtle","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","formatPlayhead","seconds","isFinite","total","hh","mm","ss","ms","resolveMacroValues","adPlayhead","adPlayheadSeconds","contentPlayheadSeconds","playerWidth","maxAdsPerBreak","assetUri","mediaMime","toISOString","errorCode","playerHeight","round","clientUa","podSequence","adServingId","substituteVastTrackingMacros","POD_PARAM_KEYS","POSITIVE_INT","NON_NEGATIVE_INT","nonNegativeInt","positiveInt","resolveAdPodConfig","adPodConfig","requestSafetyMs","minPodDurationMs","podMaxAds","maxPodDurationMs","podMaxDurationMs","exactDuration","podExactDuration","measureBreakCapacity","timing","nowMonoMs","scheduled","breakStartMonoMs","endMonoMs","breakEndMonoMs","untilEnd","min","scheduledBreakDurationMs","remainingAtGamDispatchMs","pmxd","max","capacity","unplayed","elapsedBeforeGamRequestMs","resolvePodParams","input","tagMaxDurationMs","kind","minUsable","minUsablePmxdMs","pmxdCandidateMs","pmnd","pmad","error","Error","message","podRequestAborted","diagnostics","firstPositiveIntParam","getAll","isOptimizedPodUrl","some","scteBreakDurationMs","optimizedPod","decision","problems","remainingMs","givn","finalizeGamRequestUrl","nowEpochMs","breakId","safetyReserveMs","substituted","finalUrl","validateGamRequestUrl","pmxdSource","pmndSent","pmxdSent","pmadSent","palNoncePresent","gamRequestDispatchTimestamp","strippedMacros","expect","leftover","concat","computePodResponseDiagnostics","vastAdCount","totalVastCreativeDurationMs","estimatedUnusedPodMs","estimatedUnmatchedCount","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VAST_ERROR_NO_SUPPORTED_MEDIA","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","code","gamCredentialsMode","contentVideo","options","adPlaying","originalMutedState","originalVolume","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","warn","SENSITIVE_URL_PARAMS","redactUrl","logFunnel","stage","extra","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","urls","macroContext","trackingUrl","trackingHost","host","unexpanded","macros","img","Image","timeoutId","release","outcome","onload","clearTimeout","onerror","src","getMainStreamQuality","currentLevel","autoLevel","loadLevel","width","level2","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","devicePixelRatio","containerWidth","containerHeight","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","accepted","file","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","canPlayType","playable","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","sort","a","b","mediaFile","isProgressiveMediaFile","isAudioMediaFile","getMediaProbe","mf","evaluateMediaFile","getAttribute","delivery","codec","category","whyRejected","apiFramework","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","collectVideoMediaFiles","linear","verbose","stats","mediaFileElements","querySelectorAll","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","collectAdLevelTracking","adBody","verification","mergeTrackingUrls","targetLists","sourceLists","incoming","parseXml","xmlString","xmlDoc","parserError","DOMParser","parseFromString","querySelector","getAdSequence","adElement","sequence","emptyVastResult","root","errorUrls","parseVastXml","documentElement","adElements","ordered","firstEmpty","parseAdElement","usedAdIndex","adCount","vastAdTagUri","wrapper","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","finalizeRequestUrl","controller","startedAt","attempt","resolveDispatchUrl","requestVast","response","AbortController","abort","creds","pending","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","isPodRequestAbortedError","errorMessage","statusText","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","fireTrackingPixels","fetchAndParseVastAd","isEdgeEmptySentinelAd","durations","fetchAndParsePod","isEdge","trimmedXml","empty","resolveAd","candidates","podElements","buffet","resolveAll","ads","adElementCount","inlineCount","wrapperCount","vastVersion","sentinelCount","catch","createAdVideoElement","sampleViewability","shift","video","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","noteAdProgress","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","onCanPlay","startStallWatchdog","onPlaying","mutedByAutoplay","candidateIndex","pixelCount","creativeView","onEnded","settleViewability","advanceToNextPodAd","handleAdComplete","onError","vastErrorCode","currentSrc","mediaErrorCode","networkState","readyState","recoverFromAdFailure","onVolumeChange","userActivation","isActive","paused","mute","unmute","ended","isTrackablePlayback","onPlay","onPause","pause","handler","onMediaDiagnostic","addEventListener","teardownAdEventListeners","removeEventListener","handleAdClick","open","reportCurrentAdError","notUsed","inView","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","disconnect","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","settlePendingPlay","failAdPlayback","toVastPlayErrorCode","errorName","startAdPlayback","isMutedRetry","computed","getComputedStyle","containerDisplay","display","containerVisibility","visibility","playPromise","play","finally","prepareVideoElementForNewSource","destroy","removeAttribute","load","recreateAdVideoElement","remove","appendChild","clearMediaStartTimer","startMediaStartTimer","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","loadCurrentAdMedia","handleAdError","isHlsAd","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","fragUrl","frag","clearInterval","cancelVideoFrameProbe","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","isFrameCounterReliable","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","requestVideoFrameCallback","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","timeAdvancing","releaseAdDecoder","pointerEvents","continueLiveStreamDuringAds","opacity","container","right","bottom","alignItems","zIndex","parentElement","requestAds","requestOptions","preloaded","reject","impressionUrls","adIndex","contentVolume","loadError","resume","stop","previousMutedState","fireNotUsedForUnplayedAds","clear","isAdPlaying","abortPendingRequest","size","resize","listener","off","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","clamped","requestedVolume","getAdVolume","showPlaceholder","justifyContent","hidePlaceholder","getLoadedAdDuration","getLoadedAdId","getPodAdCount","getPodTotalDurationMs","reduce","limitPodToBudget","maxDurationMs","maxAds","dropped","totalMs","durationMs","keptCount","droppedCount","keptDurationMs","PRIVATE_HOST_PATTERNS","isLocalDevHost","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonceManager","pendingNonce","generateNonce","run","generate","settle","getCurrentNonce","currentNonce","waitForNonce","maxWaitMs","timer","nonce","injectNonce","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","reset","loader","request","manager","NonceRequest","playerVolume","continuousPlayback","iconsSupported","playerType","playerVersion","supportedApiFrameworks","descriptionUrl","ppid","JSON","stringify","loadNonceManager","getNonce","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","licenseKey","body","method","Authorization","contentChannel","contentTitle","contentNetwork","debugAdTiming","isLiveStream","inputStreamType","screen","vendor","memory","deviceMemory","hardwareConcurrency","screenInfo","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","origin","path","language","languages","cookieEnabled","doNotTrack","referrer","sha256Hex","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","digest","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","cachedBrowserId","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","input_stream_type","metricEvent","events","adDetectInfo","adLoadedInfo","adImpressionInfo","ad_played_count","ad_url","adUrl","content_network","content_channel","content_title","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","parseQueryString","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","getDateRangeDurationSeconds","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","byteOffset","byteLength","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","detectTsPacketFormat","sectionAssemblers","tsStart","secondByte","thirdByte","hasPayload","adaptationLength","readBits","fourthByte","adaptationFieldControl","payloadStart","payloadEnd","BitReader","bytePos","bitPos","numBits","remainingInByte","toRead","currentByte","bits","mask","skipBits","bytePosition","readSpliceTime","r","ptsAdjustmentTicks","timeSpecifiedFlag","high","low","ptsTicks","markerTypeFromSegmentationTypeId","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","segmentationUpidLength","identifier","segmentationEventId","cancelIndicator","segmentationDurationFlag","programSegmentationFlag","componentCount","durationTicks","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorTag","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceEventId","commandBodyStart","spliceCommandType","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","processedTsScte35Sections","Scte35CueManager","componentPtsSeconds","expectedDescriptorOffset","splice_event_id","segmentation_event_id","callbacks","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","activeScte35BreakKeyValue","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","onScte35Cue","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","withDeferredPodParams","deferNonce","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","defaultEdgePodMaxAds","palNonceDispatchWaitMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","apiUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","aStart","bStart","timeOffset","hms","minutes","millis","hours","adBreak","durationSec","breakStartMs","tol","ratio","getAdBreakKey","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","driftToleranceMs","findBreakForTime","selectVastTagsForBreak","beginNewAdPod","resolveEdgeMaxAds","getPalDescriptionUrl","generatePodVastUrl","adPlayer","envSignals","ctvAdRequest","autoplay","nonceReady","completeDeferredRequestSignals","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","monotonicNow","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","maxBackoffMs","defaultMinRemainingMsToStartAd","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","beginBreakTiming","startWallClockMs","currentAdBreakStartWallClockMs","markBreakEndedNow","scteAdBreakEndWallClockMs","setAdBreakDurationBoundary","expectedAdBreakDurationMs","getBreakTimingSnapshot","playedDurationMs","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","recordPlayedAdDuration","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","exponent","recordGamNoFill","backoff","pow","resetGamNoFillCounter","enforceGlobalRateLimit","waitMs","startAdRequestWatchdog","token","clearAdRequestWatchdog","adFailsafeTimeoutMs","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","failsafeMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","import_hls2","HlsEngine","cueManager","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","shouldUseNativeHls","getStreamType","canNative","setupNativeHls","adBehavior","isLive","maxLiveSyncPlaybackRate","maxBufferHole","setupHls","hls","enableWorker","backBufferLength","liveDurationInfinity","maxBufferLength","maxBufferSize","highBufferWatchdogPeriod","nudgeOffset","nudgeMaxRetry","startPosition","_","_data","minSegments","live","onManifestParsed","detectedLowLatencyStream","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","idx","isDateRange","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","canBlockReload","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","payloadData","getLiveSyncPosition","liveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","resolveEdgePodBaseUrl","enableEdgePodRequest","hasPlaceholder","LICENSE_KEY_PLACEHOLDER","encodedKey","buildEdgePodUrl","remainingAdLimit","maxMs","classifyEdgeVastResponse","podAdCount","describeEdgeUrl","getAdAudioVolume","newMutedState","toggleMute","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setVolume","clampedVolume","getVolume","isFullscreen","resizePlayer","analyticsContext","nextAdRequestUrl","baseVastUrl","attachImaEventListeners","getAdPlayer","generation","controllerGeneration","logOrchestratorFunnel","staleControllerId","onAdClick","onAdInteraction","countFunnelStage","recordRequestDiagnostic","setSlotState","playbackStartedForCurrentRequest","currentVastUrl","remaining","requestNextAd","errorPayload","controllerCallInFlight","cause","innerError","causeMessage","handleAdFailure","currentPodSource","isShowingPlaceholder","recreateAdController","slotState","currentRequestId","state","shouldShowPlaceholder","placeholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","newAdPlayer","createAdPlayer","setAdPlayer","initialize","clearPendingAdBreak","prefetchTimerId","pendingAdBreak","adConfig","isBreakActive","getSlotState","beginVmapBreak","breakSource","breakKey","resetEdgeStateForBreak","followUpBaseVastUrl","unusableResponsesInBreak","noteOpportunity","handleAdStart","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","edgeUrl","podPlayed","getEdgePodBaseUrl","adPodQueue","waitForBreakDuration","breakDurationWaitMs","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","edgeExhaustedForBreak","markEdgeExhausted","isLiveBreak","startOptimizedPod","deadline","waitedForMs","podUrl","prefetched","requestToken","requestUrl","podCount","vastUrls","noteVastUrlGenerated","beginFunnelRequest","applyOpportunityFloor","isStale","completeGamRequestSignals","createGamDispatchFinalizer","callController","recordPodResponseDiagnostics","recordRequestFailure","handlePodRequestNotSent","edgeRequestsInBreak","edgeRequests","remainingAds","adsInBreak","getMinRemainingMsToRequestAd","trigger","overrunAllowanceMs","classification","diag","endpoint","maxAdBreakExtensionMs","requestDiagnostics","previous","minRemainingMsToRequestAd","defaultMinRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","defaultMaxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","nextAdTimerId","stopReason","requestsSent","unusableResponses","handleAdPodComplete","requestFollowUpAd","epoch2","cancelScheduledRequest","playSingleAd","continueAfterRequestFailure","adType","podParamsDeferredToDispatch","impressionFired","failureReason","failureKey","dispatchedUrl","impressionCount","requestFloorFields","gamRequestSent","logPodDispatch","edgeRequestSent","vastHttpStatus","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","REQUEST_FAILURE_STAGES","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","_dispatchedUrl","podDispatchLogged","_logged","fields","podResponse","opportunityFloorFields","opportunityFloor","floorStatus","floorSource","floorReason","floorSelector","floorConfigVersion","adPosition","floorApplied","wrapperDepth","amount","breakFunnel","opportunityBreakKey","opportunityEpoch","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","setFunnelContext","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeFills","edgeEmptySentinels","requestsSuppressed","filled","noFill","wrapperFailures","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestAbortedTimeout","requestFailed","credentialsModeChanges","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","discardedBudget","mediaRejected","mediaFallbacks","mutedRetry","startTimeouts","impressions","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages","previousState","alreadyEnded","contentWasInterrupted","adDetectSentForCurrentBreak","restoredMuted","restoredVolume"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n DEFAULT_FLOOR_LADDER_BOUNDS: () => DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_REQUEST_SAFETY_MS: () => DEFAULT_REQUEST_SAFETY_MS,\n DEFAULT_TRACKING_INGEST_CONFIG: () => DEFAULT_TRACKING_INGEST_CONFIG,\n DEFAULT_WEB_FLOOR_LADDER_CONFIG: () => DEFAULT_WEB_FLOOR_LADDER_CONFIG,\n GAM_AD_OPPORTUNITY_DURATION_MS: () => GAM_AD_OPPORTUNITY_DURATION_MS,\n IS_BROWSER: () => IS_BROWSER,\n IS_GLOBAL: () => IS_GLOBAL,\n IS_IOS: () => IS_IOS,\n IS_SAFARI: () => IS_SAFARI,\n SUPPORTS_DASH: () => SUPPORTS_DASH,\n SUPPORTS_HLS: () => SUPPORTS_HLS,\n StormcloudPlayer: () => StormcloudPlayer_default,\n StormcloudVideoPlayer: () => StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent: () => StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig: () => applyTrackingIngestConfig,\n buildAnalyticsContext: () => buildAnalyticsContext,\n canPlay: () => canPlay,\n configureTrackingIngest: () => configureTrackingIngest,\n createHlsAdPlayer: () => createHlsAdPlayer,\n createPalNonceManager: () => createPalNonceManager,\n createStormcloudPlayer: () => createStormcloudPlayer,\n default: () => StormcloudVideoPlayerComponent,\n detectBrowser: () => detectBrowser,\n fixedFloorSelector: () => fixedFloorSelector,\n generateFloorLevels: () => generateFloorLevels,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n ingestPlayerTracking: () => ingestPlayerTracking,\n initializePolyfills: () => initializePolyfills,\n isMediaStream: () => isMediaStream,\n isTrackingIngestEnabled: () => isTrackingIngestEnabled,\n lazy: () => lazy,\n logBrowserInfo: () => logBrowserInfo,\n merge: () => merge,\n omit: () => omit,\n parseQuery: () => parseQuery,\n players: () => players_default,\n randomString: () => randomString,\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds: () => resolveFloorLadderBounds,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode,\n trackingIngestConfig: () => trackingIngestConfig,\n validateFloorCents: () => validateFloorCents,\n validateFloorLadderConfig: () => validateFloorLadderConfig\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_react = __toESM(require(\"react\"), 1);\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const bridgeDeviceId = validDeviceId(bridgeSignals.deviceId);\n const realDeviceId = bridgeDeviceId || (isCtv ? validDeviceId(readStoredDeviceId()) : void 0) || validDeviceId(platformDevice.deviceId);\n let deviceId = realDeviceId;\n let deviceIdType = (bridgeDeviceId ? bridgeSignals.deviceIdType : void 0) || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeDeviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking();\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction validDeviceId(value) {\n return value && !isMacroPlaceholder(value) ? value : void 0;\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar SCVP_MACRO_DETECT = /\\[SCVP-|%5BSCVP-|\\(SCVP-|%28SCVP-/i;\nvar SCVP_MACRO_PATTERN = /\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\)/gi;\nvar SCVP_WHOLE_VALUE_PATTERN = /^\\s*(?:\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\))\\s*$/i;\nvar NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([\"cust_params\"]);\nvar SCVP_POD_MACROS = /* @__PURE__ */ new Set([\"PMND\", \"PMXD\", \"PMAD\"]);\nfunction hasScvpMacros(url) {\n return !!url && SCVP_MACRO_DETECT.test(url);\n}\nfunction safeDecode(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return value;\n }\n}\nfunction findScvpMacroNames(url) {\n if (!url) return [];\n const names = /* @__PURE__ */ new Set();\n let text = url;\n for (let pass = 0; pass < 3; pass++) {\n text.replace(SCVP_MACRO_PATTERN, (_m, bracketName, parenName) => {\n names.add(String(bracketName || parenName).toUpperCase());\n return \"\";\n });\n const decoded = safeDecode(text);\n if (decoded === text) break;\n text = decoded;\n }\n return Array.from(names);\n}\nfunction resolveScvpMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (name, value) => {\n if (value == null) return;\n const str = String(value).trim();\n if (str) values.set(name, str);\n };\n const toFlag = (value) => value == null ? void 0 : value ? \"1\" : \"0\";\n const deviceId = ctx.deviceId?.trim();\n const deviceIdType = deviceId ? ctx.deviceIdType?.trim() || inferDeviceIdType() : void 0;\n if (deviceId && deviceIdType) {\n set(\"RDID\", deviceId);\n set(\"IDTYPE\", deviceIdType);\n set(\"IS-LAT\", toFlag(ctx.limitAdTracking) ?? \"0\");\n }\n set(\"SID\", ctx.sessionId);\n set(\"DTH\", ctx.deviceTypeHint);\n set(\"GIVN\", ctx.palNonce);\n set(\"CT-TI\", ctx.programTitle);\n set(\"CT-CH\", ctx.channelName);\n set(\"POD\", ctx.pod);\n set(\"CORRELATOR\", ctx.correlator);\n set(\"SCOR\", ctx.streamCorrelator);\n set(\"VPMUTE\", toFlag(ctx.adWillPlayMuted));\n if (ctx.adWillAutoPlay != null) {\n set(\"VPA\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n set(\"GDPR\", ctx.consent?.gdpr);\n set(\"GDPR-CONSENT\", ctx.consent?.gdprConsent);\n set(\"US-PRIVACY\", ctx.consent?.usPrivacy);\n return values;\n}\nvar keepNone = () => false;\nfunction substituteScvpParams(params, values, unresolved, keep, nested) {\n const out = [];\n const replaceMacro = (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return value;\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n };\n params.forEach((value, key) => {\n const whole = value.match(SCVP_WHOLE_VALUE_PATTERN);\n if (whole) {\n const name = String(whole[1] || whole[2]).toUpperCase();\n const resolved = values.get(name);\n if (resolved != null) {\n out.push([key, resolved]);\n } else if (keep(name)) {\n out.push([key, value]);\n } else {\n unresolved.add(name);\n }\n return;\n }\n if (!SCVP_MACRO_DETECT.test(value)) {\n out.push([key, value]);\n return;\n }\n if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {\n const inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);\n if (inner.length > 0) {\n out.push([\n key,\n inner.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join(\"&\")\n ]);\n }\n return;\n }\n out.push([key, value.replace(SCVP_MACRO_PATTERN, replaceMacro)]);\n });\n return out;\n}\nfunction substituteScvpMacros(baseUrl, values, keep = keepNone) {\n const unresolved = /* @__PURE__ */ new Set();\n let url;\n try {\n url = new URL(normalizeVastTagUrl(baseUrl));\n } catch {\n const replaced = baseUrl.replace(\n SCVP_MACRO_PATTERN,\n (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n }\n );\n return { url: replaced, unresolved: Array.from(unresolved) };\n }\n const entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);\n const search = new URLSearchParams();\n for (const [key, value] of entries) search.append(key, value);\n url.search = search.toString();\n return { url: url.toString(), unresolved: Array.from(unresolved) };\n}\nfunction applyScvpMacros(baseUrl, ctx, deferred = /* @__PURE__ */ new Set()) {\n return substituteScvpMacros(baseUrl, resolveScvpMacroValues(ctx), (name) => deferred.has(name));\n}\nfunction stripScvpMacros(url) {\n if (findScvpMacroNames(url).length === 0) return { url, unresolved: [] };\n return substituteScvpMacros(url, /* @__PURE__ */ new Map());\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/FloorLadder.ts\nvar DEFAULT_WEB_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"airytv_web_floor\",\n minFloorCents: 25,\n maxFloorCents: 300,\n stepCents: 25,\n selectedFloorCents: 25,\n fallbackFloorCents: 25,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [\"midroll\"],\n targetAdUnitPath: \"/21821455290/airytvadx/airytv-web\",\n configurationVersion: \"2026-09-29.1\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction isInteger(value) {\n return typeof value === \"number\" && Number.isInteger(value);\n}\nfunction generateFloorLevels(minCents, maxCents, stepCents) {\n if (!isInteger(minCents) || !isInteger(maxCents) || !isInteger(stepCents)) return [];\n if (stepCents <= 0 || minCents <= 0 || maxCents < minCents) return [];\n const levels = [];\n for (let cents = minCents; cents <= maxCents; cents += stepCents) {\n levels.push(cents);\n }\n return levels;\n}\nfunction resolveFloorLadderBounds(overrides = {}) {\n return {\n minCents: overrides.minCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.minCents,\n maxCents: overrides.maxCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,\n stepCents: overrides.stepCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.stepCents\n };\n}\nfunction validateFloorCents(value, config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n if (!isInteger(value)) return { ok: false, reason: \"not_integer\" };\n if (!(value >= bounds.minCents && value <= bounds.maxCents) || !(value >= config.minFloorCents && value <= config.maxFloorCents)) {\n return { ok: false, reason: \"out_of_range\" };\n }\n const gamLevels = generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents);\n const configLevels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents);\n if (gamLevels.indexOf(value) === -1 || configLevels.indexOf(value) === -1) {\n return { ok: false, reason: \"not_step_multiple\" };\n }\n const ready = Array.isArray(config.readyFloorCents) ? config.readyFloorCents : [];\n if (ready.indexOf(value) === -1) return { ok: false, reason: \"not_ready\" };\n return { ok: true };\n}\nfunction validateFloorLadderConfig(config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n const errors = [];\n if (generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents).length === 0) {\n errors.push(\"invalid_gam_bounds\");\n }\n const levels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents).filter((cents) => validateFloorCents(cents, { ...config, readyFloorCents: [cents] }, bounds).ok);\n if (levels.length === 0) errors.push(\"invalid_level_bounds\");\n if (config.minFloorCents < bounds.minCents || config.maxFloorCents > bounds.maxCents) {\n errors.push(\"level_bounds_outside_gam_ladder\");\n }\n if (!config.targetingKey) errors.push(\"missing_targeting_key\");\n if (config.mode !== \"fixed\") errors.push(`unsupported_mode:${String(config.mode)}`);\n if (!Array.isArray(config.readyFloorCents)) {\n errors.push(\"ready_floor_cents_not_array\");\n } else {\n for (const cents of config.readyFloorCents) {\n const check = validateFloorCents(cents, config, bounds);\n if (!check.ok) errors.push(`ready_floor_invalid:${String(cents)}:${check.reason}`);\n }\n }\n const selected = validateFloorCents(config.selectedFloorCents, config, bounds);\n if (!selected.ok) errors.push(`selected_floor_invalid:${selected.reason}`);\n const fallback = validateFloorCents(config.fallbackFloorCents, config, bounds);\n if (!fallback.ok) errors.push(`fallback_floor_invalid:${fallback.reason}`);\n return { ok: errors.length === 0, levels, errors };\n}\nvar fixedFloorSelector = {\n name: \"fixed\",\n select(config, context) {\n if (config.mode !== \"fixed\") return { source: \"none\", reason: \"unsupported_mode\" };\n const selected = validateFloorCents(config.selectedFloorCents, config, context.bounds);\n if (selected.ok) return { floorCents: config.selectedFloorCents, source: \"selected\" };\n const fallback = validateFloorCents(config.fallbackFloorCents, config, context.bounds);\n if (fallback.ok) {\n return {\n floorCents: config.fallbackFloorCents,\n source: \"fallback\",\n reason: `selected_${selected.reason}`\n };\n }\n return {\n source: \"none\",\n reason: `no_valid_floor:selected_${selected.reason}:fallback_${fallback.reason}`\n };\n }\n};\nfunction resolveOpportunityFloor(config, context, selector = fixedFloorSelector) {\n const base = {\n selector: selector.name,\n position: context.position,\n configurationVersion: String(config.configurationVersion ?? \"\"),\n targetingKey: config.targetingKey,\n targetAdUnitPath: config.targetAdUnitPath\n };\n const skipped = (reason, source = \"none\") => Object.freeze({ ...base, status: \"skipped\", floorCents: void 0, source, reason });\n if (!config.enabled) return skipped(\"disabled\");\n const positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];\n if (positions.indexOf(context.position) === -1) return skipped(\"position_not_allowed\");\n if (context.isCtv) return skipped(\"ctv_excluded\");\n if (!config.targetingKey) return skipped(\"missing_targeting_key\");\n if (!config.targetAdUnitPath) return skipped(\"missing_target_ad_unit\");\n let result;\n try {\n result = selector.select(config, context);\n } catch {\n return skipped(\"selector_error\");\n }\n if (result.floorCents == null) return skipped(result.reason ?? \"no_valid_floor\", result.source);\n const check = validateFloorCents(result.floorCents, config, context.bounds);\n if (!check.ok) return skipped(`selector_floor_${check.reason}`);\n return Object.freeze({\n ...base,\n status: \"armed\",\n floorCents: result.floorCents,\n source: result.source,\n reason: result.reason\n });\n}\nfunction decodeQueryComponent(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return void 0;\n }\n}\nfunction mergeCustParams(decoded, key, cents) {\n const prefix = `${key}=`;\n const kept = decoded.split(\"&\").filter((pair) => pair !== \"\" && pair !== key && pair.indexOf(prefix) !== 0);\n kept.push(`${prefix}${cents}`);\n return kept.join(\"&\");\n}\nfunction applyFloorToVastUrl(url, floor) {\n if (floor.status !== \"armed\" || floor.floorCents == null) {\n return { url, applied: false, reason: floor.reason };\n }\n let parsed;\n try {\n parsed = new URL(url);\n } catch {\n return { url, applied: false, reason: \"invalid_url\" };\n }\n if (!GAM_AD_HOSTS.has(parsed.hostname)) {\n return { url, applied: false, reason: \"not_gam_host\" };\n }\n if (parsed.searchParams.get(\"iu\") !== floor.targetAdUnitPath) {\n return { url, applied: false, reason: \"ad_unit_mismatch\" };\n }\n const hashIndex = url.indexOf(\"#\");\n const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const hash = hashIndex === -1 ? \"\" : url.slice(hashIndex);\n const queryIndex = beforeHash.indexOf(\"?\");\n const base = beforeHash.slice(0, queryIndex);\n const segments = beforeHash.slice(queryIndex + 1).split(\"&\");\n const existing = [];\n let insertAt = -1;\n const rest = [];\n for (const segment of segments) {\n const eq = segment.indexOf(\"=\");\n const rawKey = eq === -1 ? segment : segment.slice(0, eq);\n if (decodeQueryComponent(rawKey) === \"cust_params\") {\n if (insertAt === -1) insertAt = rest.length;\n const value = eq === -1 ? \"\" : decodeQueryComponent(segment.slice(eq + 1));\n if (value === void 0) {\n return { url, applied: false, reason: \"malformed_cust_params\" };\n }\n if (value) existing.push(value);\n continue;\n }\n rest.push(segment);\n }\n if (insertAt === -1) insertAt = rest.length;\n const merged = mergeCustParams(existing.join(\"&\"), floor.targetingKey, floor.floorCents);\n rest.splice(insertAt, 0, `cust_params=${encodeURIComponent(merged)}`);\n const query = rest.filter((segment) => segment !== \"\").join(\"&\");\n return { url: `${base}?${query}${hash}`, applied: true, reason: void 0 };\n}\nfunction copyConfig(config) {\n return {\n ...config,\n readyFloorCents: Array.isArray(config.readyFloorCents) ? config.readyFloorCents.slice() : [],\n allowedPositions: Array.isArray(config.allowedPositions) ? config.allowedPositions.slice() : []\n };\n}\nfunction mergeDefined(target, update) {\n const next = copyConfig(target);\n if (!update) return next;\n for (const key of Object.keys(update)) {\n const value = update[key];\n if (value !== void 0) next[key] = value;\n }\n return copyConfig(next);\n}\nvar FloorLadderController = class {\n constructor(initial, bounds, selector = fixedFloorSelector) {\n this.config = mergeDefined(copyConfig(DEFAULT_WEB_FLOOR_LADDER_CONFIG), initial);\n this.bounds = Object.freeze(resolveFloorLadderBounds(bounds));\n this.selector = selector;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...this.bounds };\n }\n update(update) {\n this.config = mergeDefined(this.config, update);\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n validate() {\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n setSelector(selector) {\n this.selector = selector;\n }\n snapshotFor(context) {\n return resolveOpportunityFloor(\n copyConfig(this.config),\n { ...context, bounds: this.bounds },\n this.selector\n );\n }\n};\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/player/OptimizedPodRequest.ts\nvar DEFAULT_REQUEST_SAFETY_MS = 1500;\nvar GAM_AD_OPPORTUNITY_DURATION_MS = 3e4;\nvar POD_PARAM_KEYS = [\"pmnd\", \"pmxd\", \"pmad\"];\nvar POSITIVE_INT = /^[1-9]\\d*$/;\nvar NON_NEGATIVE_INT = /^(0|[1-9]\\d*)$/;\nfunction nonNegativeInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : void 0;\n}\nfunction positiveInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : void 0;\n}\nfunction resolveAdPodConfig(config) {\n const pod = config.adPodConfig ?? {};\n return {\n requestSafetyMs: nonNegativeInt(pod.requestSafetyMs) ?? DEFAULT_REQUEST_SAFETY_MS,\n minPodDurationMs: nonNegativeInt(pod.minPodDurationMs) ?? 0,\n maxAdsPerBreak: pod.maxAdsPerBreak === void 0 ? positiveInt(config.podMaxAds) : positiveInt(pod.maxAdsPerBreak),\n maxPodDurationMs: positiveInt(pod.maxPodDurationMs) ?? positiveInt(config.podMaxDurationMs),\n exactDuration: config.podExactDuration === true\n };\n}\nfunction measureBreakCapacity(timing, nowMonoMs) {\n const scheduled = timing.scheduledBreakDurationMs;\n if (scheduled == null || !(scheduled > 0) || timing.breakStartMonoMs == null) {\n return void 0;\n }\n const endMonoMs = timing.breakEndMonoMs ?? timing.breakStartMonoMs + scheduled;\n const untilEnd = Math.min(scheduled, endMonoMs - nowMonoMs);\n const unplayed = scheduled - Math.max(0, timing.playedDurationMs);\n return {\n scheduledBreakDurationMs: scheduled,\n elapsedBeforeGamRequestMs: Math.max(0, nowMonoMs - timing.breakStartMonoMs),\n remainingAtGamDispatchMs: Math.max(0, Math.min(untilEnd, unplayed))\n };\n}\nfunction resolvePodParams(input) {\n const { capacity, config } = input;\n let pmxd;\n let source;\n if (capacity) {\n pmxd = Math.floor(capacity.remainingAtGamDispatchMs - config.requestSafetyMs);\n source = \"break_remaining\";\n } else if (config.maxPodDurationMs != null) {\n pmxd = config.maxPodDurationMs;\n source = \"configured_cap\";\n } else if (input.tagMaxDurationMs != null) {\n pmxd = input.tagMaxDurationMs;\n source = \"tag_cap\";\n } else {\n return { kind: \"omit\" };\n }\n const minUsable = Math.max(1, Math.floor(input.minUsablePmxdMs));\n if (!Number.isFinite(pmxd) || pmxd < minUsable) {\n return {\n kind: \"abort\",\n reason: capacity ? \"insufficient_break_capacity\" : \"invalid_pod_cap\",\n pmxdCandidateMs: Number.isFinite(pmxd) ? pmxd : 0\n };\n }\n const pmnd = config.exactDuration ? pmxd : Math.min(config.minPodDurationMs, pmxd);\n return { kind: \"send\", params: { pmnd, pmxd, pmad: config.maxAdsPerBreak }, source };\n}\nfunction podRequestAborted(reason, message, diagnostics) {\n const error = new Error(`Optimized pod request not sent (${reason}): ${message}`);\n error.podRequestAborted = true;\n error.reason = reason;\n error.diagnostics = diagnostics;\n return error;\n}\nfunction isPodRequestAbortedError(error) {\n return !!error && error.podRequestAborted === true;\n}\nfunction firstPositiveIntParam(params, key) {\n for (const value of params.getAll(key)) {\n if (POSITIVE_INT.test(value.trim())) return Number(value.trim());\n }\n return void 0;\n}\nfunction isOptimizedPodUrl(url) {\n if (findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name))) return true;\n try {\n const params = new URL(url).searchParams;\n return POD_PARAM_KEYS.some((key) => params.has(key));\n } catch {\n return false;\n }\n}\nfunction finalizeGamRequestUrl(rawUrl, ctx, nowEpochMs = Date.now()) {\n const optimizedPod = isOptimizedPodUrl(rawUrl);\n const capacity = ctx.capacity;\n const base = {\n breakId: ctx.breakId,\n optimizedPod,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs\n };\n let decision = { kind: \"omit\" };\n if (optimizedPod) {\n let tagMaxDurationMs;\n try {\n tagMaxDurationMs = firstPositiveIntParam(new URL(rawUrl).searchParams, \"pmxd\");\n } catch {\n }\n decision = resolvePodParams({\n capacity,\n config: ctx.config,\n minUsablePmxdMs: ctx.minUsablePmxdMs,\n tagMaxDurationMs\n });\n if (decision.kind === \"abort\") {\n throw podRequestAborted(\n decision.reason,\n `pmxd would be ${decision.pmxdCandidateMs}ms (minimum ${ctx.minUsablePmxdMs}ms)`,\n base\n );\n }\n }\n const pod = decision.kind === \"send\" ? decision.params : void 0;\n const values = /* @__PURE__ */ new Map();\n if (pod) {\n values.set(\"PMND\", String(pod.pmnd));\n values.set(\"PMXD\", String(pod.pmxd));\n if (pod.pmad != null) values.set(\"PMAD\", String(pod.pmad));\n }\n const substituted = substituteScvpMacros(rawUrl, values);\n let finalUrl;\n try {\n const url = new URL(normalizeVastTagUrl(substituted.url));\n if (pod) {\n url.searchParams.set(\"pmnd\", String(pod.pmnd));\n url.searchParams.set(\"pmxd\", String(pod.pmxd));\n if (pod.pmad != null) url.searchParams.set(\"pmad\", String(pod.pmad));\n else url.searchParams.delete(\"pmad\");\n } else {\n for (const key of POD_PARAM_KEYS) url.searchParams.delete(key);\n }\n finalUrl = url.toString();\n } catch {\n throw podRequestAborted(\"invalid_url\", \"GAM request URL could not be parsed\", base);\n }\n const problems = validateGamRequestUrl(finalUrl, {\n optimizedPod: !!pod,\n remainingMs: decision.kind === \"send\" && decision.source === \"break_remaining\" ? capacity?.remainingAtGamDispatchMs : void 0\n });\n if (problems.length > 0) {\n throw podRequestAborted(\"invalid_url\", problems.join(\"; \"), base);\n }\n let givn = null;\n try {\n givn = new URL(finalUrl).searchParams.get(\"givn\");\n } catch {\n }\n return {\n url: finalUrl,\n diagnostics: {\n breakId: ctx.breakId,\n optimizedPod: !!pod,\n pmxdSource: decision.kind === \"send\" ? decision.source : void 0,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs,\n pmndSent: pod?.pmnd,\n pmxdSent: pod?.pmxd,\n pmadSent: pod?.pmad,\n palNoncePresent: !!givn,\n gamRequestDispatchTimestamp: new Date(nowEpochMs).toISOString(),\n strippedMacros: substituted.unresolved.filter((name) => !SCVP_POD_MACROS.has(name))\n }\n };\n}\nfunction validateGamRequestUrl(url, expect) {\n const problems = [];\n const leftover = findScvpMacroNames(url);\n if (leftover.length > 0) problems.push(`unresolved SCVP macros: ${leftover.join(\", \")}`);\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n return problems.concat(\"URL could not be parsed\");\n }\n for (const key of POD_PARAM_KEYS) {\n if (params.getAll(key).length > 1) problems.push(`duplicate ${key}`);\n }\n if (!expect.optimizedPod) {\n for (const key of POD_PARAM_KEYS) {\n if (params.has(key)) problems.push(`${key} present on a non-pod request`);\n }\n return problems;\n }\n const pmxd = params.get(\"pmxd\");\n const pmnd = params.get(\"pmnd\");\n const pmad = params.get(\"pmad\");\n if (pmxd == null || !POSITIVE_INT.test(pmxd)) problems.push(`pmxd must be a positive integer (got ${pmxd})`);\n if (pmnd == null || !NON_NEGATIVE_INT.test(pmnd)) problems.push(`pmnd must be a non-negative integer (got ${pmnd})`);\n if (pmxd != null && pmnd != null && Number(pmnd) > Number(pmxd)) problems.push(\"pmnd exceeds pmxd\");\n if (pmad != null && !POSITIVE_INT.test(pmad)) problems.push(`pmad must be a positive integer or absent (got ${pmad})`);\n if (expect.remainingMs != null && pmxd != null && Number(pmxd) > expect.remainingMs) {\n problems.push(`pmxd ${pmxd} exceeds remaining break ${expect.remainingMs}ms`);\n }\n return problems;\n}\nfunction computePodResponseDiagnostics(pmxdSent, vastAdCount, totalVastCreativeDurationMs) {\n const estimatedUnusedPodMs = Math.max(0, pmxdSent - totalVastCreativeDurationMs);\n return {\n vastAdCount,\n totalVastCreativeDurationMs,\n estimatedUnusedPodMs,\n estimatedUnmatchedCount: Math.floor(estimatedUnusedPodMs / GAM_AD_OPPORTUNITY_DURATION_MS)\n };\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nvar gamCredentialsMode = \"include\";\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingHost}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingHost}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? import_hls.default.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n accepted.push({ file, score, insecure });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (import_hls.default.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${redactUrl(parsed.vastAdTagUri)}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\", finalizeRequestUrl) {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const resolveDispatchUrl = () => {\n if (kind === \"wrapper\") return vastTagUrl;\n if (finalizeRequestUrl) return finalizeRequestUrl(vastTagUrl, attempt);\n const { url, unresolved } = stripScvpMacros(vastTagUrl);\n if (unresolved.length > 0) {\n console.warn(\"[HlsAdPlayer] Removed unresolved SCVP macros before dispatch:\", unresolved.join(\", \"));\n }\n return url;\n };\n const requestVast = async (creds) => {\n attempt++;\n const pending = fetch(resolveDispatchUrl(), {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_http_request_sent`, { attempt, credentials: creds });\n }\n const response = await pending;\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_response_received`, {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (kind === \"gam\" && !controller?.signal.aborted && !isPodRequestAbortedError(error)) {\n gamCredentialsMode = credentials === \"include\" ? \"omit\" : \"include\";\n console.warn(\n `[HlsAdPlayer] GAM fetch failed with credentials=\"${credentials}\"; next GAM request will use credentials=\"${gamCredentialsMode}\":`,\n error\n );\n logFunnel(\"gam_credentials_mode_changed\", {\n from: credentials,\n to: gamCredentialsMode,\n errorMessage: error?.message\n });\n }\n throw error;\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(`[HlsAdPlayer] VAST XML received (length=${vastXml.length})`);\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n function isEdgeEmptySentinelAd(adElement) {\n if ((adElement.getAttribute(\"id\") || \"\").trim().toLowerCase() === \"empty\") {\n return true;\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) return false;\n if (/^no ad available$/i.test(textOf(inLine.querySelector(\":scope > AdTitle\")) ?? \"\")) {\n return true;\n }\n const durations = Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear > Duration\")\n ).map((el) => parseVastTime(textOf(el)));\n return durations.length > 0 && durations.every((seconds) => seconds === 0);\n }\n async function fetchAndParsePod(vastTagUrl, source = \"gam\", finalizeRequestUrl) {\n lastPodAdElementCount = 0;\n const isEdge = source === \"edge\";\n const vastXml = await fetchVastXml(\n vastTagUrl,\n isEdge ? \"omit\" : gamCredentialsMode,\n source,\n finalizeRequestUrl\n );\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n let candidates = adElements;\n if (isEdge) {\n candidates = adElements.filter((el) => !isEdgeEmptySentinelAd(el));\n if (candidates.length < adElements.length) {\n logFunnel(\"edge_empty_sentinel\", {\n sentinelCount: adElements.length - candidates.length,\n adElementCount: adElements.length\n });\n }\n }\n const podElements = candidates.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = candidates.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return isEdge ? ads.filter((ad) => ad.duration > 0) : ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === import_hls.default.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl, requestOptions) {\n const source = requestOptions?.source ?? \"gam\";\n console.log(`[HlsAdPlayer] Requesting ads (${source}):`, redactUrl(vastTagUrl));\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl, source, requestOptions?.finalizeRequestUrl);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n },\n limitPodToBudget(maxDurationMs, maxAds) {\n if (adPlaying) return podAds.length;\n const kept = [];\n const dropped = [];\n let totalMs = 0;\n for (const ad of podAds) {\n const durationMs = Math.round(ad.duration * 1e3);\n if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {\n kept.push(ad);\n totalMs += durationMs;\n } else {\n dropped.push(ad);\n }\n }\n if (dropped.length > 0) {\n logFunnel(\"pod_trimmed_to_budget\", {\n keptCount: kept.length,\n droppedCount: dropped.length,\n keptDurationMs: totalMs,\n maxDurationMs,\n maxAds\n });\n for (const ad of dropped) {\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n podAds = kept;\n podIndex = 0;\n currentAd = kept[0];\n currentAdMediaFile = void 0;\n return kept.length;\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n let pendingNonce;\n return {\n generateNonce(options = {}) {\n const run = generate(options);\n pendingNonce = run;\n const settle = () => {\n if (pendingNonce === run) pendingNonce = void 0;\n };\n run.then(settle, settle);\n return run;\n },\n getCurrentNonce() {\n return currentNonce;\n },\n waitForNonce(maxWaitMs) {\n if (currentNonce) return Promise.resolve(currentNonce);\n const pending = pendingNonce;\n if (!pending || !(maxWaitMs > 0)) return Promise.resolve(\"\");\n return new Promise((resolve) => {\n const timer = setTimeout(() => resolve(currentNonce), maxWaitMs);\n pending.then(\n (nonce) => {\n clearTimeout(timer);\n resolve(nonce);\n },\n () => {\n clearTimeout(timer);\n resolve(\"\");\n }\n );\n });\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n pendingNonce = void 0;\n }\n };\n async function generate(options) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n }\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\n}\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n const contentNetwork = config.contentNetwork?.trim();\n const contentChannel = config.channelName?.trim();\n const contentTitle = config.programTitle?.trim();\n if (contentNetwork) context.contentNetwork = contentNetwork;\n if (contentChannel) context.contentChannel = contentChannel;\n if (contentTitle) context.contentTitle = contentTitle;\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp,\n source: \"gam\",\n ...context.contentNetwork ? { content_network: context.contentNetwork } : {},\n ...context.contentChannel ? { content_channel: context.contentChannel } : {},\n ...context.contentTitle ? { content_title: context.contentTitle } : {}\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction getDateRangeDurationSeconds(attrs) {\n return toNumber(attrs[\"DURATION\"]) ?? toNumber(attrs[\"PLANNED-DURATION\"]);\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nfunction withDeferredPodParams(rawUrl, deferNonce) {\n try {\n const url = new URL(rawUrl);\n url.searchParams.set(\"pmnd\", \"[SCVP-PMND]\");\n url.searchParams.set(\"pmxd\", \"[SCVP-PMXD]\");\n url.searchParams.set(\"pmad\", \"[SCVP-PMAD]\");\n if (deferNonce && !url.searchParams.get(\"givn\")) {\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", \"[SCVP-GIVN]\");\n }\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultEdgePodMaxAds = 6;\n this.palNonceDispatchWaitMs = 1500;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://edge.stormcloudhub.com/api/v1/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolveAdPodConfig() {\n return resolveAdPodConfig(this.config);\n }\n resolveEdgeMaxAds() {\n return this.resolveAdPodConfig().maxAdsPerBreak ?? (this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultEdgePodMaxAds);\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const macroContext = {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals,\n palNonce: palNonce.getCurrentNonce() || void 0\n };\n const nonceReady = !!macroContext.palNonce;\n let finalUrl;\n if (hasScvpMacros(baseUrl)) {\n const deferred = new Set(SCVP_POD_MACROS);\n if (!nonceReady) deferred.add(\"GIVN\");\n const { url, unresolved } = applyScvpMacros(baseUrl, macroContext, deferred);\n if (unresolved.length > 0) {\n console.warn(\n \"[StormcloudVideoPlayer] Unresolved SCVP macros (removed from request):\",\n unresolved.join(\", \")\n );\n }\n finalUrl = ensureVideoAdType(url);\n } else {\n finalUrl = withDeferredPodParams(\n palNonce.injectNonce(ensureVideoAdType(applyVastMacros(baseUrl, macroContext))),\n !nonceReady\n );\n }\n console.log(\n `[StormcloudVideoPlayer] Prepared optimized-pod request URL (pod=${this.podCounter}; pmnd/pmxd/pmad resolved at dispatch):`,\n finalUrl\n );\n return finalUrl;\n }\n async completeDeferredRequestSignals(url, palNonce) {\n if (findScvpMacroNames(url).indexOf(\"GIVN\") === -1) return url;\n const nonce = palNonce.getCurrentNonce() || await palNonce.waitForNonce(this.palNonceDispatchWaitMs);\n if (!nonce) return url;\n return substituteScvpMacros(url, /* @__PURE__ */ new Map([[\"GIVN\", nonce]]), (name) => name !== \"GIVN\").url;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nfunction monotonicNow() {\n return typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\n}\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n beginBreakTiming(startWallClockMs) {\n this.currentAdBreakStartWallClockMs = startWallClockMs;\n this.breakStartMonoMs = monotonicNow() + (startWallClockMs - Date.now());\n this.breakEndMonoMs = void 0;\n }\n markBreakEndedNow() {\n this.scteAdBreakEndWallClockMs = Date.now();\n this.breakEndMonoMs = monotonicNow();\n }\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n this.breakEndMonoMs = durationMs != null && this.breakStartMonoMs != null ? this.breakStartMonoMs + durationMs : void 0;\n }\n getBreakTimingSnapshot() {\n return {\n scheduledBreakDurationMs: this.expectedAdBreakDurationMs,\n breakStartMonoMs: this.breakStartMonoMs,\n breakEndMonoMs: this.breakEndMonoMs,\n playedDurationMs: this.adBreakPlayedDurationMs\n };\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.breakStartMonoMs = void 0;\n this.breakEndMonoMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls2.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls2.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const isDateRange = tag.includes(\"EXT-X-DATERANGE\");\n const attrs = isDateRange ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls2.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = getDateRangeDurationSeconds(attrs);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nvar LICENSE_KEY_PLACEHOLDER = /\\{licenseKey\\}|%7BlicenseKey%7D/gi;\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n const licenseKey = config.licenseKey?.trim();\n if (!licenseKey) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only\"\n );\n return void 0;\n }\n const encodedKey = encodeURIComponent(licenseKey);\n try {\n const hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;\n const url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n if (!hasPlaceholder) {\n const path = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = /\\/[^/]+\\/pod$/.test(path) ? path.replace(/\\/[^/]+\\/pod$/, `/${encodedKey}/pod`) : `${path}/${encodedKey}/pod`;\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\n}\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n return this.host.generatePodVastUrl(baseVastUrl);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey, position) {\n this.breakSource = \"vmap\";\n this.resetEdgeStateForBreak();\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey, position);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey, \"midroll\");\n const epoch = this.timing.adBreakEpoch;\n if (adBreakDurationMs == null) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n let requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => adPlayer.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, adPlayer);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n if (this.handlePodRequestNotSent(error)) return false;\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n return buildEdgePodUrl(baseUrl, remainingMs, remainingAds);\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n )\n );\n const overrunAllowanceMs = Math.max(0, this.host.config.maxAdBreakExtensionMs ?? 0);\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs + overrunAllowanceMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs,\n overrunAllowanceMs\n });\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl && !this.canRequestEdge()) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (!this.canRequestEdge() && this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n podParamsDeferredToDispatch: findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name)),\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n const failureKey = diag?.dispatchedUrl && findScvpMacroNames(vastTagUrl).some((name) => SCVP_POD_MACROS.has(name)) ? diag.dispatchedUrl : vastTagUrl;\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(failureKey, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(failureKey);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak,\n vastAdCount: diag?.vastAdCount,\n impressionCount: diag?.impressionCount,\n ...this.requestFloorFields(diag)\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n this.logPodDispatch(diag);\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n diag.impressionCount++;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, dispatchedUrl: _dispatchedUrl, podDispatchLogged: _logged, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n createGamDispatchFinalizer(requestToken) {\n const breakId = this.timing.adBreakEpoch;\n const config = this.adConfig.resolveAdPodConfig();\n const minUsablePmxdMs = this.timing.getMinRemainingMsToStartAd();\n return (url) => {\n const capacity = measureBreakCapacity(this.timing.getBreakTimingSnapshot(), monotonicNow());\n const diag = this.requestDiagnostics.get(requestToken);\n try {\n const result = finalizeGamRequestUrl(url, { breakId, capacity, config, minUsablePmxdMs });\n if (diag) {\n diag.pod = result.diagnostics;\n diag.dispatchedUrl = result.url;\n diag.podDispatchLogged = false;\n }\n this.currentVastUrl = result.url;\n return result.url;\n } catch (error) {\n if (diag && isPodRequestAbortedError(error)) {\n diag.failureReason = `pod_request_not_sent:${error.reason}`;\n }\n throw error;\n }\n };\n }\n logPodDispatch(diag) {\n if (!diag.pod || diag.podDispatchLogged) return;\n diag.podDispatchLogged = true;\n this.logOrchestratorFunnel(\n diag.pod.optimizedPod ? \"optimized_pod_request_dispatched\" : \"gam_request_dispatched\",\n { ...diag.pod }\n );\n }\n recordPodResponseDiagnostics(requestToken, adPlayer) {\n const diag = this.requestDiagnostics.get(requestToken);\n if (!diag?.pod || diag.pod.pmxdSent == null || diag.podResponse) return;\n if (diag.gamRequestSent === 0 && diag.vastHttpStatus == null) return;\n diag.podResponse = computePodResponseDiagnostics(\n diag.pod.pmxdSent,\n diag.vastAdCount ?? 0,\n adPlayer.getPodTotalDurationMs?.() ?? 0\n );\n this.logOrchestratorFunnel(\"optimized_pod_response\", {\n pmxdSent: diag.pod.pmxdSent,\n ...diag.podResponse\n });\n }\n handlePodRequestNotSent(error) {\n if (!isPodRequestAbortedError(error) || error.reason === \"invalid_url\") return false;\n const aborted = error;\n this.countFunnelStage(`request_outcome:pod_request_not_sent`);\n this.logOrchestratorFunnel(\"pod_request_not_sent\", {\n reason: aborted.reason,\n errorMessage: aborted.message,\n ...aborted.diagnostics\n });\n return true;\n }\n opportunityFloorFields(floor = this.opportunityFloor) {\n if (!floor) return {};\n return {\n floorStatus: floor.status,\n floorCents: floor.floorCents,\n floorSource: floor.source,\n floorReason: floor.reason,\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n };\n }\n requestFloorFields(diag) {\n if (!diag || diag.floorApplied === void 0) return {};\n return {\n floorApplied: diag.floorApplied,\n floorCents: diag.floorCents,\n floorSource: diag.floorSource,\n floorReason: diag.floorReason,\n floorConfigVersion: diag.floorConfigVersion\n };\n }\n applyOpportunityFloor(url) {\n const floor = this.opportunityFloor;\n if (!floor) return url;\n const result = applyFloorToVastUrl(url, floor);\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag) {\n diag.floorApplied = result.applied;\n if (result.applied && floor.floorCents != null) diag.floorCents = floor.floorCents;\n diag.floorSource = result.applied ? floor.source : \"none\";\n if (result.reason) diag.floorReason = result.reason;\n diag.floorConfigVersion = floor.configurationVersion;\n }\n if (floor.status === \"skipped\" && floor.reason === \"disabled\") {\n this.countFunnelStage(\"floor_skipped:disabled\");\n return result.url;\n }\n this.logOrchestratorFunnel(result.applied ? \"floor_applied\" : \"floor_skipped\", {\n reason: result.reason,\n floorCents: result.applied ? floor.floorCents : void 0,\n floorSource: result.applied ? floor.source : \"none\",\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n });\n if (!result.applied && result.reason) {\n this.countFunnelStage(`floor_skipped:${result.reason}`);\n }\n return result.url;\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey, position) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n try {\n this.opportunityFloor = this.host.getFloorSnapshot(position);\n } catch {\n this.opportunityFloor = void 0;\n }\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs,\n ...this.opportunityFloorFields()\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger, source = \"gam\") {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n source,\n gamRequestSent: 0,\n edgeRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n impressionCount: 0,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n let requestUrl = this.applyOpportunityFloor(ensureVideoAdType(vastTagUrl));\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => ap.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, ap);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n if (this.handlePodRequestNotSent(error)) throw error;\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n ...this.opportunityFloorFields(),\n floorAppliedRequests: count(\"floor_applied\"),\n floorSkippedRequests: count(\"floor_skipped\") + count(\"floor_skipped:disabled\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsModeChanges: count(\"gam_credentials_mode_changed\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.opportunityFloor = void 0;\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n const floorBounds = {};\n if (this.config.adFloorMinCents != null) floorBounds.minCents = this.config.adFloorMinCents;\n if (this.config.adFloorMaxCents != null) floorBounds.maxCents = this.config.adFloorMaxCents;\n if (this.config.adFloorStepCents != null) floorBounds.stepCents = this.config.adFloorStepCents;\n this.floorLadder = new FloorLadderController(this.config.adFloorLadder, floorBounds);\n this.floorLadderEnabled = this.config.adFloorLadderEnabled === true;\n this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base) => this.generatePodVastUrl(base),\n completeGamRequestSignals: (url) => this.adConfig.completeDeferredRequestSignals(url, this.palNonce),\n getEdgePodBaseUrl: () => this.edgePodBaseUrl,\n getFloorSnapshot: (position) => this.floorLadderEnabled ? this.floorLadder.snapshotFor({ position, isCtv: this.isCtvEnvironment() }) : void 0,\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n isCtvEnvironment() {\n if (this.config.ctvAdRequest) return true;\n const hint = inferDeviceTypeHint(false);\n return hint === DEVICE_TYPE_HINT.CONNECTED_TV || hint === DEVICE_TYPE_HINT.SET_TOP_BOX;\n }\n setAdFloorLadder(update) {\n const report = this.floorLadder.update(update);\n this.warnOnInvalidFloorLadder(report);\n return report;\n }\n setAdFloorLadderEnabled(enabled) {\n this.floorLadderEnabled = enabled;\n if (enabled) this.warnOnInvalidFloorLadder(this.floorLadder.validate());\n }\n isAdFloorLadderEnabled() {\n return this.floorLadderEnabled;\n }\n setEdgePodRequest(update) {\n if (update.enableEdgePodRequest === this.config.enableEdgePodRequest && update.edgePodUrl === this.config.edgePodUrl) {\n return;\n }\n if (update.enableEdgePodRequest === void 0) delete this.config.enableEdgePodRequest;\n else this.config.enableEdgePodRequest = update.enableEdgePodRequest;\n if (update.edgePodUrl === void 0) delete this.config.edgePodUrl;\n else this.config.edgePodUrl = update.edgePodUrl;\n this.edgePodBaseUrl = resolveEdgePodBaseUrl(this.config);\n }\n getEdgePodUrl() {\n return this.edgePodBaseUrl;\n }\n warnOnInvalidFloorLadder(report) {\n const config = this.floorLadder.get();\n if (report.ok || !this.floorLadderEnabled || !config.enabled) return;\n console.warn(\"[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent\", {\n errors: report.errors,\n configurationVersion: config.configurationVersion,\n bounds: this.floorLadder.getBounds()\n });\n }\n getAdFloorLadder() {\n return this.floorLadder.get();\n }\n getAdFloorBounds() {\n return this.floorLadder.getBounds();\n }\n setAdFloorSelector(selector) {\n this.floorLadder.setSelector(selector);\n }\n generatePodVastUrl(baseUrl) {\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.markBreakEndedNow();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.beginBreakTiming(this.timing.resolveScteBreakStartWallClockMs(marker));\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.beginBreakTiming(Date.now());\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n const position = adBreak.startTimeMs === 0 ? \"preroll\" : adBreak.startTimeMs < 0 ? \"postroll\" : \"midroll\";\n this.adBreak.beginVmapBreak(key, position);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n 0;\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_fa = require(\"react-icons/fa\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"ctvAdRequest\",\n \"adFloorMinCents\",\n \"adFloorMaxCents\",\n \"adFloorStepCents\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = import_react.default.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n contentNetwork,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n maxAdBreakExtensionMs,\n adFloorLadderEnabled,\n adFloorLadder,\n adFloorMinCents,\n adFloorMaxCents,\n adFloorStepCents,\n enableEdgePodRequest,\n edgePodUrl,\n ...restVideoAttrs\n } = props;\n const adFloorLadderKey = JSON.stringify(adFloorLadder ?? null);\n const videoRef = (0, import_react.useRef)(null);\n const playerRef = (0, import_react.useRef)(null);\n const appliedFloorLadderKeyRef = (0, import_react.useRef)(null);\n const bufferingTimeoutRef = (0, import_react.useRef)(null);\n const controlsTimerRef = (0, import_react.useRef)(null);\n const wrapperRef = (0, import_react.useRef)(null);\n const [adStatus, setAdStatus] = import_react.default.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = import_react.default.useState(true);\n const [isMuted2, setIsMuted] = import_react.default.useState(false);\n const [isFullscreen2, setIsFullscreen] = import_react.default.useState(false);\n const [isPlaying, setIsPlaying] = import_react.default.useState(false);\n const [currentTime, setCurrentTime] = import_react.default.useState(0);\n const [duration, setDuration] = import_react.default.useState(0);\n const [volume, setVolume2] = import_react.default.useState(1);\n const [playbackRate, setPlaybackRate] = import_react.default.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = import_react.default.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = import_react.default.useState(false);\n const [isLoading, setIsLoading] = import_react.default.useState(true);\n const [isBuffering, setIsBuffering] = import_react.default.useState(false);\n const [showCenterPlay, setShowCenterPlay] = import_react.default.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = import_react.default.useState(false);\n const [controlsVisible, setControlsVisible] = import_react.default.useState(true);\n const [viewportWidth, setViewportWidth] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = import_react.default.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = (0, import_react.useCallback)(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = (0, import_react.useCallback)(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = (0, import_react.useCallback)(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = (0, import_react.useMemo)(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs,\n adFloorMinCents,\n adFloorMaxCents,\n adFloorStepCents\n ]);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n if (contentNetwork !== void 0) cfg.contentNetwork = contentNetwork;\n if (minRemainingMsToStartAd !== void 0)\n cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;\n if (minRemainingMsToRequestAd !== void 0)\n cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;\n if (maxNoFillsPerBreak !== void 0)\n cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;\n if (maxAdBreakExtensionMs !== void 0)\n cfg.maxAdBreakExtensionMs = maxAdBreakExtensionMs;\n if (adFloorLadderEnabled !== void 0)\n cfg.adFloorLadderEnabled = adFloorLadderEnabled;\n if (adFloorLadder !== void 0) cfg.adFloorLadder = adFloorLadder;\n if (adFloorMinCents !== void 0) cfg.adFloorMinCents = adFloorMinCents;\n if (adFloorMaxCents !== void 0) cfg.adFloorMaxCents = adFloorMaxCents;\n if (adFloorStepCents !== void 0) cfg.adFloorStepCents = adFloorStepCents;\n if (enableEdgePodRequest !== void 0)\n cfg.enableEdgePodRequest = enableEdgePodRequest;\n if (edgePodUrl !== void 0) cfg.edgePodUrl = edgePodUrl;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n appliedFloorLadderKeyRef.current = adFloorLadderKey;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || adFloorLadder === void 0) return;\n if (appliedFloorLadderKeyRef.current === adFloorLadderKey) return;\n appliedFloorLadderKeyRef.current = adFloorLadderKey;\n playerRef.current.setAdFloorLadder(adFloorLadder);\n }, [adFloorLadderKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n const enabled = adFloorLadderEnabled === true;\n if (playerRef.current.isAdFloorLadderEnabled() === enabled) return;\n playerRef.current.setAdFloorLadderEnabled(enabled);\n }, [adFloorLadderEnabled]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n playerRef.current.setEdgePodRequest({\n ...enableEdgePodRequest !== void 0 ? { enableEdgePodRequest } : {},\n ...edgePodUrl !== void 0 ? { edgePodUrl } : {}\n });\n }, [enableEdgePodRequest, edgePodUrl]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n (0, import_react.useEffect)(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n (0, import_react.useEffect)(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n (0, import_react.useEffect)(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? import_fa.FaVolumeMute : volume < 0.5 ? import_fa.FaVolumeDown : import_fa.FaVolumeUp;\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n import_fa.FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n if (prevProps.adFloorLadderEnabled !== nextProps.adFloorLadderEnabled || prevProps.enableEdgePodRequest !== nextProps.enableEdgePodRequest || prevProps.edgePodUrl !== nextProps.edgePodUrl) {\n return false;\n }\n if (JSON.stringify(prevProps.adFloorLadder ?? null) !== JSON.stringify(nextProps.adFloorLadder ?? null)) {\n return false;\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nvar import_react6 = __toESM(require(\"react\"), 1);\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nvar import_react2 = require(\"react\");\nvar lazy = import_react2.lazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar import_react3 = require(\"react\");\nvar HlsPlayer = class extends import_react3.Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nvar import_react4 = require(\"react\");\nvar FilePlayer = class extends import_react4.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nvar import_react5 = __toESM(require(\"react\"), 1);\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react5.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return import_react5.default.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? import_react6.Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends import_react6.Component {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return import_react6.default.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return import_react6.default.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n import_react6.default.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_REQUEST_SAFETY_MS,\n DEFAULT_TRACKING_INGEST_CONFIG,\n DEFAULT_WEB_FLOOR_LADDER_CONFIG,\n GAM_AD_OPPORTUNITY_DURATION_MS,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n detectBrowser,\n fixedFloorSelector,\n generateFloorLevels,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseQuery,\n players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig,\n validateFloorCents,\n validateFloorLadderConfig\n});\n"]}
1
+ {"version":3,"sources":["d:\\project\\stormcloud-vp\\lib\\index.cjs"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","index_exports","DEFAULT_FLOOR_LADDER_BOUNDS","DEFAULT_REQUEST_SAFETY_MS","DEFAULT_TRACKING_INGEST_CONFIG","DISABLED_FLOOR_LADDER_CONFIG","GAM_AD_OPPORTUNITY_DURATION_MS","IS_BROWSER","IS_GLOBAL","IS_IOS","IS_SAFARI","SUPPORTS_DASH","SUPPORTS_HLS","StormcloudPlayer","StormcloudPlayer_default","StormcloudVideoPlayer","StormcloudVideoPlayerComponent","applyTrackingIngestConfig","buildAnalyticsContext","canPlay","configureTrackingIngest","createHlsAdPlayer","createPalNonceManager","createStormcloudPlayer","default","detectBrowser","fixedFloorSelector","generateFloorLevels","getBrowserConfigOverrides","getBrowserID","getClientInfo","ingestPlayerTracking","initializePolyfills","isMediaStream","isTrackingIngestEnabled","lazy","logBrowserInfo","merge","omit","parseApiFloorLadder","parseQuery","players","players_default","randomString","requiresMediaPipelineResetAfterAds","resolveFloorLadderBounds","sendAdDetectTracking","sendAdImpressionTracking","sendAdLoadedTracking","sendHeartbeat","sendInitialTracking","supportsFeature","supportsModernJS","supportsWebKitPresentationMode","trackingIngestConfig","validateFloorCents","validateFloorLadderConfig","module","exports","import_react","require","CTV_SESSION_STORAGE_KEY","PLAYER_ID_STORAGE_KEY","DEVICE_ID_STORAGE_KEYS","ANDROID_ID_TYPES","Set","resolveVastEnvironmentSignals","isCtv","bridgeSignals","readNativeBridgeSignals","platformDevice","readPlatformNativeDeviceId","bridgeDeviceId","validDeviceId","deviceId","realDeviceId","readStoredDeviceId","deviceIdType","readStoredString","inferDeviceIdType","platformLat","limitAdTracking","readStoredLimitAdTracking","dpid","getOrCreateStoredUuid","deviceTypeHint","resolveDeviceTypeHint","sessionId","getOrCreateCtvSessionId","DEVICE_TYPE_HINT","FEATURE_PHONE","SMARTPHONE","DESKTOP","TABLET","CONNECTED_TV","GAME_CONSOLE","SET_TOP_BOX","DEVICE_TYPE_HINT_ALIASES","featurephone","smartphone","mobile","phone","desktop","pc","tablet","ctv","tv","connectedtv","smarttv","console","gameconsole","stb","settopbox","SET_TOP_BOX_UA","GAME_CONSOLE_UA","CONNECTED_TV_UA","FEATURE_PHONE_UA","override","readDeviceTypeHintOverride","inferDeviceTypeHint","fallback","navigator","ua","userAgent","maxTouchPoints","test","window","keys","fromGlobal","normalizeDeviceTypeHint","__STORMCLOUD_DTH__","getNativeBridgeSources","source","normalized","safeCall","Number","isInteger","trimmed","trim","parseInt","toLowerCase","replace","fn","thisArg","isMacroPlaceholder","isEquivalentDeviceIdType","tagType","runtimeType","tag","runtime","has","resolveNativeDeviceId","includeStored","isZeroedAdId","storageKey","existing","readPersistentId","writePersistentId","id","createUuid","readCookie","localStorage","setItem","writeCookie","PERSISTENT_ID_COOKIE_MAX_AGE","document","prefix","encodeURIComponent","parts","cookie","split","part","entry","startsWith","decodeURIComponent","slice","length","bytes","crypto","randomUUID","Uint8Array","getRandomValues","seed","Date","now","Math","floor","performanceNow","i","random","hex","toString","padStart","performance","adinfo","webapis","tifa","getTIFA","lat","isLATEnabled","webOSDev","lgudid","LGUDID","roku","Roku","rida","getPublisherUniqueId","ZEROED_AD_ID_PATTERNS","t","contentUrl","readBridgeValue","appId","appName","readBridgeBoolean","__STORMCLOUD_CTV_AD_INFO__","__STORMCLOUD_CTV__","stormcloudCtv","AiryTV","Android","webOS","tizen","amazon","filter","Boolean","result","normalizeBoolean","getItem","UNEXPANDED_MACRO_PATTERN","INVALID_VAST_PARAM_KEY","EXAMPLE_COM_URL","CTV_UNSUPPORTED_PARAMS","INLINE_DEVICE_MACRO_REPLACEMENTS","pattern","getValue","ctx","correlator","isMacroPlaceholder2","generateCorrelator","buf","Uint32Array","String","MAX_SAFE_INTEGER","pageViewCorrelator","getPageViewCorrelator","location","pathname","search","expandInlineMacroPlaceholders","baseUrl","url","applyDeviceIdentityParams","params","runtimeId","tagRdid","tagLat","latValue","set","delete","tagRdidValid","tagTypeValid","removeBrokenAppNameOrphans","toDelete","forEach","_value","push","includes","suffix","normalizeVastTagUrl","raw","URL","anValue","searchParams","orphanFragments","reconstructed","join","_match","val","GAM_AD_HOSTS","ensureVideoAdType","rawUrl","hostname","SCVP_MACRO_DETECT","SCVP_MACRO_PATTERN","SCVP_WHOLE_VALUE_PATTERN","NESTED_QUERY_PARAM_KEYS","SCVP_POD_MACROS","hasScvpMacros","safeDecode","findScvpMacroNames","names","text","pass","_m","bracketName","parenName","add","toUpperCase","decoded","Array","resolveScvpMacroValues","values","Map","str","toFlag","palNonce","programTitle","channelName","pod","streamCorrelator","adWillPlayMuted","adWillAutoPlay","consent","gdpr","gdprConsent","usPrivacy","keepNone","substituteScvpParams","unresolved","keep","nested","out","replaceMacro","match","whole","resolved","inner","URLSearchParams","map","k","v","substituteScvpMacros","replaced","entries","append","applyScvpMacros","deferred","stripScvpMacros","applyVastMacros","expandedUrl","replaceCorrelatorFallback","existingUrl","pageUrl","adTest","staleKeys","correlatorRegex","sep","fetchConsentSignals","timeoutMs","signals","Promise","resolve","tasks","tcfApi","__tcfapi","settled","tcData","success","eventStatus","storageAllowed","gdprApplies","purpose","consents","tcString","listenerId","setTimeout","uspApi","__uspapi","data","uspString","then","freeze","enabled","targetingKey","minFloorCents","maxFloorCents","stepCents","selectedFloorCents","fallbackFloorCents","readyFloorCents","mode","allowedPositions","targetAdUnitPath","configurationVersion","minCents","maxCents","overrides","levels","cents","config","bounds","ok","reason","gamLevels","configLevels","indexOf","ready","isArray","errors","check","selected","select","context","floorCents","resolveOpportunityFloor","selector","base","skipped","status","positions","position","decodeQueryComponent","mergeCustParams","kept","pair","applyFloorToVastUrl","applied","parsed","hashIndex","beforeHash","hash","queryIndex","segments","insertAt","rest","segment","eq","rawKey","merged","splice","query","copyConfig","mergeDefined","update","next","AD_POSITIONS","finiteNumber","isFinite","src","min","max","step","FloorLadderController","isEnabled","applyApiConfig","reset","getBounds","validate","setSelector","snapshotFor","import_hls","getChromeVersion","getWebKitVersion","getPlatform","userAgentData","platform","version","majorVersion","isSmartTV","isLegacyTV","supportsModernJS2","webOSVersion","tizenVersion","chromeVersionNum","chromeVersion","webkitVersion","browser","allowNativeHls","pauseContentDuringAds","assign","e","debug","feature","TextEncoder","fetch","subtle","VAST_MACRO_PATTERN","CACHEBUSTING_ALIASES","KNOWN_VAST_MACROS","generateCachebuster","seconds","total","hh","mm","ss","ms","adPlayhead","formatPlayhead","playerWidth","resolveMacroValues","adPlayheadSeconds","contentPlayheadSeconds","assetUri","mediaMime","toISOString","errorCode","playerHeight","round","clientUa","podSequence","adServingId","POD_PARAM_KEYS","POSITIVE_INT","nonNegativeInt","positiveInt","resolveAdPodConfig","adPodConfig","requestSafetyMs","minPodDurationMs","maxPodDurationMs","podMaxDurationMs","exactDuration","podExactDuration","measureBreakCapacity","timing","nowMonoMs","scheduled","scheduledBreakDurationMs","breakStartMonoMs","endMonoMs","untilEnd","breakEndMonoMs","unplayed","playedDurationMs","elapsedBeforeGamRequestMs","remainingAtGamDispatchMs","resolvePodParams","input","capacity","pmxd","tagMaxDurationMs","kind","minUsable","minUsablePmxdMs","pmxdCandidateMs","pmnd","pmad","maxAdsPerBreak","podRequestAborted","message","diagnostics","error","isPodRequestAbortedError","getAll","isOptimizedPodUrl","breakId","safetyReserveMs","some","finalizeGamRequestUrl","optimizedPod","scteBreakDurationMs","decision","firstPositiveIntParam","substituted","finalUrl","problems","validateGamRequestUrl","givn","pmxdSource","pmndSent","pmxdSent","pmadSent","palNoncePresent","gamRequestDispatchTimestamp","nowEpochMs","expect","leftover","concat","NON_NEGATIVE_INT","remainingMs","computePodResponseDiagnostics","vastAdCount","totalVastCreativeDurationMs","estimatedUnusedPodMs","estimatedUnmatchedCount","LINEAR_TRACKING_EVENTS","textOf","el","textContent","parseVastTime","p","parseFloat","h","m","s","every","n","parseProgressOffset","offset","endsWith","percent","offsetPercent","offsetSeconds","MAX_VAST_WRAPPER_DEPTH","VAST_REQUEST_TIMEOUT_MS","BEACON_TIMEOUT_MS","inFlightBeacons","VAST_ERROR_MEDIA_DISPLAY","VAST_ERROR_WRAPPER_TIMEOUT","VAST_ERROR_WRAPPER_LIMIT","VAST_ERROR_WRAPPER_NO_ADS","VERIFICATION_NOT_SUPPORTED_REASON","VIEWABLE_MIN_VISIBLE_RATIO","VIEWABLE_MIN_CONTINUOUS_S","toVastMediaErrorCode","code","gamCredentialsMode","contentVideo","options","adPlaying","originalMutedState","originalVolume","volume","listeners","mainHlsInstance","AD_CONTAINER_PROP","AD_VIDEO_PROP","FRAME_COUNTER_RELIABLE_PROP","RVFC_RELIABLE_PROP","adVideoElement","adHls","adContainerEl","adEventHandlers","containerHandlers","currentAd","currentAdMediaFile","podAds","podIndex","preloadedAds","preloadingAds","destroyed","pendingTimeouts","STALL_TIMEOUT_MS","STALL_CHECK_INTERVAL_MS","BLACKFRAME_MIN_PLAYBACK_S","stallWatchdogId","lastAdProgressTime","lastAdProgressPosition","sawDecodedVideoFrame","videoFrameCallbackHandle","pendingPlayPromise","currentVastTagUrl","funnelContext","mediaProbe","lastPodAdElementCount","mediaCandidates","mediaCandidateIndex","mediaStartTimerId","MEDIA_START_TIMEOUT_MS","mediaStartTimeoutMs","VAST_ERROR_MEDIA_TIMEOUT","pendingVastRequests","pendingRequestAbortReason","forcedMuteByAutoplay","createTrackingState","impression","loaded","start","firstQuartile","midpoint","thirdQuartile","complete","viewabilitySettled","lastMuted","progressFired","trackingFired","resolvedAds","viewObserver","visibleRatio","continuousVisibleS","lastViewSampleTime","lastPlayerExpanded","documentHandlers","emit","event","payload","warn","SENSITIVE_URL_PARAMS","redactUrl","logFunnel","stage","extra","requestId","controllerId","visibilityState","adId","podSize","vastUrl","mediaUrl","mediaType","type","muted","log","buildTrackingMacroContext","options2","ad","currentTime","clientWidth","clientHeight","href","fireTrackingPixels","urls","macroContext","trackingUrl","substituteVastTrackingMacros","trackingHost","host","unexpanded","img","Image","timeoutId","clearTimeout","onload","onerror","outcome","release","getMainStreamQuality","currentLevel","autoLevel","loadLevel","level2","width","height","bitrate","level","getMediaTargetQuality","mainQuality","dpr","devicePixelRatio","containerWidth","containerHeight","rankMediaCandidates","mediaFiles","probe","createElement","pageIsHttps","protocol","accepted","file","index","isHls","isHlsMediaFile","mimeForProbe","canPlay2","canPlayType","playable","isSupported","insecure","details","candidateUrl","candidateType","hlsJs","why","score","resolutionDiff","abs","bitrateDiff","sort","a","b","mediaFile","isProgressiveMediaFile","getMediaProbe","isAudioMediaFile","evaluateMediaFile","mf","getAttribute","delivery","codec","category","whyRejected","apiFramework","bitrateAttr","bitrateValue","hasExplicitDimensions","nativeHls","whyAccepted","baseType","withCodec","collectVideoMediaFiles","mediaFileElements","linear","verbose","querySelectorAll","stats","fileUrl","categories","createEmptyTrackingUrls","clickTracking","viewable","notViewable","viewUndetermined","verificationNotExecuted","progress","pushUrls","elements","collectLinearTracking","into","collectAdLevelTracking","adBody","verification","targetLists","mergeTrackingUrls","sourceLists","incoming","parserError","parseXml","xmlString","xmlDoc","DOMParser","parseFromString","getAdSequence","adElement","sequence","errorUrls","root","parseVastXml","documentElement","adElements","emptyVastResult","ordered","firstEmpty","parseAdElement","usedAdIndex","vastAdTagUri","wrapper","querySelector","trackingUrls2","linear2","trackingUrls","rules","followAdditionalWrappers","inLine","conditionalAd","VAST_ERROR_NO_SUPPORTED_MEDIA","rejectStats","candidate","files","top","count","mediaFileCount","rejectedByCategory","title","duration","clickThrough","fetchVastXml","vastTagUrl","credentials","finalizeRequestUrl","controller","startedAt","attempt","resolveDispatchUrl","requestVast","response","Error","AbortController","abort","creds","pending","headers","referrerPolicy","signal","httpStatus","elapsedMs","aborted","errorMessage","statusText","fetchAndParseVastAd","depth","accumulatedTracking","vastXml","fetchStartedAt","wrapperUrl","isEdgeEmptySentinelAd","durations","fetchAndParsePod","isEdge","trimmedXml","empty","resolveAd","candidates","podElements","buffet","resolveAll","ads","adElementCount","vastVersion","inlineCount","sentinelCount","catch","shift","createAdVideoElement","video","style","left","objectFit","backgroundColor","playsInline","setupAdEventListeners","onTimeUpdate","sampleViewability","threshold","onLoadedMetadata","videoWidth","videoHeight","handleVideoDecodeFailure","mutedByAutoplay","candidateIndex","onCanPlay","onPlaying","startStallWatchdog","creativeView","settleViewability","onEnded","onError","vastErrorCode","mediaErrorCode","readyState","currentSrc","recoverFromAdFailure","onMediaDiagnostic","networkState","onVolumeChange","userActivation","isActive","mute","unmute","isTrackablePlayback","ended","onPause","onPlay","resume","handler","addEventListener","removeEventListener","handleAdClick","open","fireNotUsedForUnplayedAds","notUsed","inView","paused","handleFullscreenChange","fullscreenEl","fullscreenElement","webkitFullscreenElement","expanded","contains","fullscreen","playerExpand","exitFullscreen","playerCollapse","attachContainerHandlers","onClick","onInteraction","onFullscreenChange","IntersectionObserver","isIntersecting","intersectionRatio","observe","detachContainerHandlers","setAdPlayingFlag","isPlaying","dataset","stormcloudAdPlaying","resetAdTracking","isRvfcSupported","requestVideoFrameCallback","settlePendingPlay","toVastPlayErrorCode","failAdPlayback","errorName","startAdPlayback","isMutedRetry","computed","getComputedStyle","isConnected","containerDisplay","display","containerVisibility","visibility","playPromise","play","finally","prepareVideoElementForNewSource","destroy","pause","removeAttribute","load","recreateAdVideoElement","teardownAdEventListeners","remove","appendChild","clearMediaStartTimer","startMediaStartTimer","resetVideoElementForNextSource","clearStallWatchdog","tryNextMediaCandidate","failedUrl","nextUrl","nextType","candidateCount","loadMediaCandidate","reportCurrentAdError","handleAdError","advanceToNextPodAd","loadCurrentAdMedia","isHlsAd","enableWorker","lowLatencyMode","pipeline","loadSource","attachMedia","on","Events","MANIFEST_PARSED","ERROR","_event","fatal","ErrorTypes","NETWORK_ERROR","responseCode","responseText","fragUrl","frag","clearInterval","cancelVideoFrameProbe","noteAdProgress","handleAdStall","getDecodedVideoFrameCount","getVideoPlaybackQuality","quality","totalVideoFrames","legacyCount","webkitDecodedFrameCount","markFrameCounterReliable","isRvfcReliable","markRvfcReliable","cancelVideoFrameCallback","startVideoFrameProbe","rvfc","onPresentedFrame","blackFrameDetectionEnabled","setInterval","decodedFrames","releaseAdDecoder","timeAdvancing","pointerEvents","handleAdComplete","continueLiveStreamDuringAds","opacity","initialize","container","right","bottom","alignItems","justifyContent","zIndex","parentElement","requestAds","requestOptions","preloaded","reject","adCount","impressionUrls","adIndex","missingAdId","contentVolume","loadError","stop","previousMutedState","clear","clamped","off","isAdPlaying","abortPendingRequest","size","resize","listener","updateOriginalMutedState","nextVolume","isNaN","getOriginalMutedState","getOriginalVolume","setAdVolume","requestedVolume","getAdVolume","hidePlaceholder","getLoadedAdDuration","getPodAdCount","getPodTotalDurationMs","reduce","limitPodToBudget","maxDurationMs","maxAds","dropped","totalMs","durationMs","keptCount","droppedCount","keptDurationMs","PRIVATE_HOST_PATTERNS","isLocalDevHost","toDevSafeUrl","cleanPath","PAL_SDK_URL","_nonceLoader","_nonceLoaderAllowStorage","_palLoadPromise","loadPalSdk","goog","pal","timeout","script","async","setAttribute","head","getOrCreateNonceLoader","allowStorage","consentSettings","ConsentSettings","NonceLoader","currentNonce","currentNonceManager","pendingNonce","generateNonce","run","generate","settle","getCurrentNonce","maxWaitMs","nonce","timer","injectNonce","sendPlaybackStart","sendPlaybackEnd","sendAdClick","sendAdTouch","loader","request","manager","NonceRequest","playerVolume","continuousPlayback","descriptionUrl","iconsSupported","playerType","playerVersion","supportedApiFrameworks","ppid","loadNonceManager","getNonce","normalizeIngestBaseUrl","buildTrackingIngestUrl","channel","licenseKey","body","method","Authorization","JSON","stringify","cachedBrowserId","contentTitle","contentNetwork","contentChannel","debugAdTiming","isLiveStream","screen","vendor","memory","hardwareConcurrency","deviceMemory","availWidth","availHeight","orientation","pixelDepth","deviceType","brand","os","model","isAndroid","isWebView","isWebApp","webosMatch","tizenMatch","tvMatch","androidModelMatch","outerHeight","outerWidth","matchMedia","matches","standalone","angle","substring","domain","path","origin","screenInfo","language","languages","cookieEnabled","doNotTrack","referrer","sha256Hex","encodedData","utf8","buffer","hashBuffer","char","fallbackHash","timestamp","digest","encode","unescape","charCodeAt","padEnd","resolvePlayerIdentitySeed","clientInfo","nativeDeviceId","persistedId","getCachedBrowserId","canPublish","buildPlayerMetricEvent","flags","playerId","captureAt","player_id","device_type","ad_loaded","adLoaded","ad_detect","adDetect","capture_at","inputStreamType","input_stream_type","metricEvent","events","adDetectInfo","adLoadedInfo","adImpressionInfo","ad_played_count","ad_url","adUrl","content_network","content_channel","content_title","heartbeatData","polyfillURLSearchParams","URLSearchParamsPolyfill","init","parseQueryString","cleanQuery","param","decodedKey","safeDecodeURIComponent","decodedValue","callback","polyfillTextEncoder","TextEncoderPolyfill","encoding","charcode","polyfillPromiseFinally","constructor","polyfillObjectAssign","sources","TypeError","nextSource","nextKey","polyfillArrayFrom","arrayLike","mapFn","items","len","polyfillStringStartsWith","pos","polyfillStringEndsWith","polyfillStringIncludes","parseCueOutDuration","num","dStr","d","parseCueOutCont","res","elapsedMatch","durationMatch","elapsed","slashMatch","parseAttributeList","attrs","regex","exec","rawVal","toNumber","getDateRangeDurationSeconds","isManifestBasedMarker","marker","id3","splice_command_type","decodeId3ValueToText","decoder","TextDecoder","decode","fromCharCode","getFragmentStartSeconds","startPTS","parseScte35FromId3","cueOutMatch","arg","dur","ptsSeconds","durationSeconds","cueOutContMatch","cont","cueInMatch","daterangeMatch","hasScteOut","hasScteIn","klass","bin","parseScte35Binary","normalizeFragmentPayload","ArrayBuffer","isView","view","byteOffset","byteLength","detectTsPacketFormat","packetSizes","packetSize","tsPayloadOffset","matchedPackets","packetStart","getPsiSectionStart","payloadUnitStart","pointerField","sectionStart","getPsiSectionLength","parsePatSection","pmtPids","sectionLength","sectionEnd","programNumber","pid","descriptorsIdentifyScte35","end","descriptorStart","descriptorEnd","registration","parsePmtSection","tsScte35Pids","programInfoLength","streamType","elementaryPid","esInfoLength","hasProcessedTsScte35Section","section","processedSections","checksum","firstKey","addScte35SectionMarker","markers","appendScte35Bytes","assemblers","assembler","expectedLength","collectScte35SectionsFromPayload","previousAssembler","subarray","tableId","totalLength","parseScte35FromTsPackets","packetInfo","sectionAssemblers","tsStart","secondByte","thirdByte","fourthByte","adaptationFieldControl","hasPayload","payloadStart","adaptationLength","payloadEnd","bytePos","readSpliceTime","readBits","ptsTicks","high","BitReader","bitPos","numBits","remainingInByte","toRead","currentByte","mask","bits","skipBits","bytePosition","r","ptsAdjustmentTicks","timeSpecifiedFlag","low","segmentationTypeId","parseScte35SegmentationDescriptor","descriptor","identifier","segmentationEventId","cancelIndicator","programSegmentationFlag","segmentationDurationFlag","durationTicks","componentCount","segmentationUpidLength","markerType","parseScte35SegmentationDescriptors","descriptorLoopLength","descriptorOffset","descriptorLength","descriptorDataStart","descriptorDataEnd","descriptorTag","descriptorMarker","ptsAdjHigh","ptsAdjLow","spliceCommandLength","spliceCommandType","spliceEventId","commandBodyStart","cancel","outOfNetwork","programSpliceFlag","durationFlag","spliceImmediateFlag","componentPtsSeconds","expectedDescriptorOffset","activeScte35BreakKeyValue","callbacks","onScte35Cue","splice_event_id","segmentation_event_id","Scte35CueManager","pendingScte35Cues","recentScte35CueKeys","recentScte35CueLimit","processedTsScte35Sections","pendingScte35CueKey","pendingScte35CueKeyValue","activeScte35BreakKey","scheduledScte35BreakKey","scheduledScte35BreakKeyValue","createScte35CueContext","readiness","sn","fragmentSn","fragmentStartSec","fragmentStartSeconds","cue","createScte35Cue","pendingKey","getPendingScte35CueKey","trimRecentScte35CueMaps","onEarlyStartCue","shouldAcceptScte35EndCue","inAdBreak","isInAdBreak","hasRecentlyHandledScte35Cue","markScte35CueHandled","onPlaybackCue","activatePendingScte35CuesForFragment","matchingCues","getScte35CueKey","getScte35MarkerRaw","toIdentityString","daterangeId","ID","scteValue","isStrongScte35CueKey","recentKey","withDeferredPodParams","deferNonce","defaultEdgePodMaxAds","AdConfigManager","vmapBreaks","consumedVmapBreakIds","consentSignals","podCounter","podAssignedByPrefetch","lastHeartbeatTime","palNonceDispatchWaitMs","viewCorrelator","isVmapEnabled","isVmap","vmapUrl","fetchAdConfiguration","apiUrl","apiEnableEdge","apiEdgeUrl","imaPayload","decodedPayload","numberAds","fetchAndParseVmap","apiVastTagUrl","json","enableEdgePodRequest","edgePodUrl","apiEnableEdgePodRequest","apiEdgePodUrl","apiFloorLadder","floorLadder","ima","vast","cue_tones","number_ads","apiNumberAds","vmapXml","parseVmapToBreaks","doc","VMAP_NS","adBreakNodes","getElementsByTagNameNS","getElementsByTagName","localName","node","timeOffsetRaw","startTimeMs","parseVmapTimeOffsetToMs","adTagNode","adTagUrl","aStart","bStart","timeOffset","hms","hours","minutes","millis","ratio","durationSec","getAdBreakKey","adBreak","resolveBreakStartMs","findCurrentOrNextBreak","nowMs","schedule","tol","driftToleranceMs","breakStartMs","findBreakForTime","selectVastTagsForBreak","beginNewAdPod","resolveEdgeMaxAds","getPalDescriptionUrl","generatePodVastUrl","adPlayer","envSignals","ctvAdRequest","autoplay","nonceReady","completeDeferredRequestSignals","waitForNonce","initializeTracking","heartbeatInterval","sendHeartbeatIfNeeded","destroyTracking","monotonicNow","AdTimingService","adRequestWatchdogToken","adFailsafeToken","ptsDriftEmaMs","adBreakPlayedDurationMs","adBreakEpoch","adRequestTokenCounter","activeAdRequestToken","maxBackoffMs","defaultMinRemainingMsToStartAd","currentAdIndex","totalAdsInBreak","totalAdRequestsInBreak","maxTotalAdRequestsPerBreak","lastAdRequestTime","consecutiveFailures","maxConsecutiveFailures","minAdRequestIntervalMs","backoffBaseMs","failedVastUrls","temporaryFailureUrls","temporaryFailureCooldownMs","globalConsecutiveNoFills","globalNoFillThreshold","globalNoFillCooldownUntil","globalNoFillBackoffBaseMs","globalNoFillBackoffMaxMs","globalLastGamRequestTime","globalMinGamIntervalMs","scheduleAdStopCountdown","clearAdStopTimer","ensureAdStoppedByTimer","adStopTimerId","onAdStopTimerFired","scheduleAdStartIn","delayMs","cueKey","clearAdStartTimer","onAdStartTimerFired","adStartTimerId","updatePtsDrift","ptsSecondsSample","sampleMs","alpha","resolveScteBreakStartWallClockMs","nowWallClockMs","estimatedCurrentPtsMs","deltaMs","beginBreakTiming","currentAdBreakStartWallClockMs","startWallClockMs","markBreakEndedNow","setAdBreakDurationBoundary","expectedAdBreakDurationMs","scteAdBreakEndWallClockMs","getBreakTimingSnapshot","scheduleAdStopAtBreakBoundary","getWallClockRemainingAdMs","endWallClockMs","getAdBreakEndWallClockMs","getDurationBudgetRemainingMs","getLoadedAdDurationMs","adController","adFitsRemainingBudget","logAdDurationDecision","remainingBudget","getLoadedAdId","ensureLoadedAdFitsBudget","fits","rejectLoadedAdForDuration","markAdStarted","noteAdRequestSent","notePodAdStarted","getRemainingAdMs","wallClockRemaining","budgetRemaining","getMinRemainingMsToStartAd","configured","minRemainingMsToStartAd","hasTimeToStartAnotherAd","minRemaining","isTemporaryAdError","isUrlInCooldown","failureTime","cleanupTemporaryFailures","isGamInCooldown","recordGamNoFill","waitMs","backoff","exponent","pow","resetGamNoFillCounter","enforceGlobalRateLimit","startAdRequestWatchdog","clearAdRequestWatchdog","token","adRequestWatchdogId","logAdState","onWatchdogTimeout","startAdFailsafeTimer","clearAdFailsafeTimer","failsafeMs","adFailsafeTimeoutMs","adFailsafeTimerId","videoPaused","onFailsafeTimeout","getAdState","showAds","resetForBreakEnd","PlaceholderLayer","ensureContainer","transition","show","wasHidden","offsetHeight","requestAnimationFrame","hide","removeChild","HlsEngine","import_hls2","nativeHlsMode","videoSrcProtection","reloadingLiveStream","bufferedSegmentsCount","shouldAutoplayAfterBuffering","hasInitialBufferCompleted","latencyProfileApplied","cueManager","shouldUseNativeHls","getStreamType","canNative","setupNativeHls","adBehavior","isLive","setupHls","hls","backBufferLength","liveDurationInfinity","maxLiveSyncPlaybackRate","maxBufferLength","maxMaxBufferLength","nudgeMaxRetry","highBufferWatchdogPeriod","maxBufferSize","maxBufferHole","nudgeOffset","startPosition","MEDIA_ATTACHED","_","_data","minSegments","live","minSegmentsBeforePlay","LEVEL_LOADED","_evt","applyStreamLatencyProfile","hasPendingAdBreak","fragments","fragmentsToScan","tagList","idx","isDateRange","earlyDetection","FRAG_BUFFERED","err","FRAG_PARSING_METADATA","id3Tags","samples","pts","onId3Tag","FRAG_LOADED","processFragmentScte35Payload","FRAG_DECRYPTED","FRAG_CHANGED","activatePendingCuesForFragment","prog","startLoad","MEDIA_ERROR","recoverMediaError","onFatalDestroy","isLowLatencyStream","detectedLowLatencyStream","isLowLatencyManifest","useLowLatency","cfg","liveSyncDuration","liveSyncDurationCount","lowLatencyModeRequested","partTarget","partHoldBack","partListLength","partList","targetDuration","targetduration","hasParts","hasPartTarget","hasPartHoldBack","canBlockReload","payloadData","getLiveSyncPosition","restartLoadAt","stopLoad","reloadLiveStream","detachMedia","recreateDelayMs","EDGE_POD_MAX_ADS","EDGE_POD_EXCEEDS_BUDGET","LICENSE_KEY_PLACEHOLDER","resolveEdgePodBaseUrl","encodedKey","hasPlaceholder","resolveEdgePodRequestContext","setOptionalParam","buildEdgePodUrl","remainingAdLimit","maxMs","classifyEdgeVastResponse","podAdCount","getAdAudioVolume","toggleMute","newMutedState","restoreVolume","toggleFullscreen","requestFullscreen","isMuted","setMuted","AdBreakOrchestrator","adConfig","placeholder","isShowingPlaceholder","adDetectSentForCurrentBreak","slotState","unusableResponsesInBreak","controllerGeneration","requestDiagnostics","breakFunnel","controllerCallInFlight","playbackStartedForCurrentRequest","opportunityEpoch","edgeExhaustedForBreak","edgeRequestsInBreak","adPodQueue","defaultMaxNoFillsPerBreak","defaultLiveMaxNoFillsPerBreak","breakDurationWaitMs","pendingAdBreak","analyticsContext","nextAdRequestUrl","baseVastUrl","attachImaEventListeners","getAdPlayer","generation","logOrchestratorFunnel","staleControllerId","currentControllerId","onAdClick","onAdInteraction","countFunnelStage","pixelCount","recordRequestDiagnostic","setSlotState","currentVastUrl","recordPlayedAdDuration","remaining","requestNextAd","errorPayload","cause","innerError","causeMessage","handleAdFailure","currentPodSource","recreateAdController","currentRequestId","state","shouldShowPlaceholder","showPlaceholder","preservedMutedState","preservedVolumeState","shouldContinueLiveStreamDuringAds","setAdPlayer","newAdPlayer","clearPendingAdBreak","prefetchTimerId","isBreakActive","getSlotState","beginVmapBreak","breakKey","resetEdgeStateForBreak","followUpBaseVastUrl","noteOpportunity","handleAdStart","edgeConfigured","adBreakDurationMs","currentMuted","currentVolume","epoch","edgeUrl","podPlayed","getEdgePodBaseUrl","breakSource","waitForBreakDuration","canRequestEdge","prepareEdgePodRequest","runEdgePod","continueAfterEdgeOutcome","markEdgeExhausted","isLiveBreak","startOptimizedPod","deadline","waitedForMs","prefetched","requestToken","requestUrl","podCount","vastUrls","podUrl","noteVastUrlGenerated","beginFunnelRequest","applyOpportunityFloor","completeGamRequestSignals","isStale","createGamDispatchFinalizer","callController","recordPodResponseDiagnostics","recordRequestFailure","handlePodRequestNotSent","remainingAds","getMinRemainingMsToRequestAd","offsetWidth","trigger","overrunAllowanceMs","classification","diag","endpoint","describeEdgeUrl","maxAdBreakExtensionMs","failureReason","previous","minRemainingMsToRequestAd","defaultMinRemainingMsToRequestAd","getMaxNoFillsPerBreak","maxNoFillsPerBreak","isBreakTimeBounded","getStopRequestingReason","getNextRequestDelayMs","failures","minInterval","sinceLast","nextAdTimerId","stopReason","requestsSent","unusableResponses","handleAdPodComplete","epoch2","requestFollowUpAd","playSingleAd","continueAfterRequestFailure","cancelScheduledRequest","adType","podParamsDeferredToDispatch","impressionFired","failureKey","dispatchedUrl","impressionCount","requestFloorFields","gamRequestSent","logPodDispatch","edgeRequestSent","vastHttpStatus","wrapperDepth","inlineResolved","mediaCandidateCount","supportedMediaCount","playStarted","REQUEST_FAILURE_STAGES","finalizeRequestDiagnostics","endReason","gamReturnedAdWithoutImpression","_dispatchedUrl","podDispatchLogged","_logged","fields","podResponse","opportunityFloorFields","opportunityFloor","floorStatus","floorReason","floorSelector","floorConfigVersion","adPosition","floorApplied","floorSource","amount","opportunityBreakKey","getFloorSnapshot","expectedDurationMs","newRequestId","requestStartedAt","setFunnelContext","isAdLoadingWithoutPlayback","noteStopBeforeStart","elapsedSinceRequestMs","handleRequestWatchdogTimeout","ap","adDurationS","adDurationMs","logBreakFunnel","funnel","countPrefix","requestRetries","requests","opportunities","floorAppliedRequests","floorSkippedRequests","vastUrlsGenerated","gamResponses","edgeRequests","edgeEmptySentinels","edgeFallbacks","requestsSuppressed","duplicates","filled","noFill","fillRejected","gamAdWithoutImpression","playbackFailedAfterFill","requestFailed","requestAbortedTimeout","credentialsModeChanges","wrapperFailures","noSupportedMedia","vpaidOnly","audioOnly","mediaFilesEvaluated","mediaFilesAccepted","controllerDestroys","staleCallbacks","tagAllowsAudio","missingImpression","discardedBudget","mediaRejected","mediaFallbacks","playCalled","playRejected","mutedRetry","startTimeouts","impressions","trackingRequests","trackingNotLoaded","trackingUnexpandedMacros","trackingInvalidUrls","vastAdFallbacks","mediaEvents","quartile25","quartile50","quartile75","stoppedBeforeStart","stoppedBeforeStartByBreakEnd","unexpectedUnmutes","unmuteBlocked","visibilityHidden","playbackFailures","stages"],"mappings":"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","sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n DEFAULT_FLOOR_LADDER_BOUNDS: () => DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_REQUEST_SAFETY_MS: () => DEFAULT_REQUEST_SAFETY_MS,\n DEFAULT_TRACKING_INGEST_CONFIG: () => DEFAULT_TRACKING_INGEST_CONFIG,\n DISABLED_FLOOR_LADDER_CONFIG: () => DISABLED_FLOOR_LADDER_CONFIG,\n GAM_AD_OPPORTUNITY_DURATION_MS: () => GAM_AD_OPPORTUNITY_DURATION_MS,\n IS_BROWSER: () => IS_BROWSER,\n IS_GLOBAL: () => IS_GLOBAL,\n IS_IOS: () => IS_IOS,\n IS_SAFARI: () => IS_SAFARI,\n SUPPORTS_DASH: () => SUPPORTS_DASH,\n SUPPORTS_HLS: () => SUPPORTS_HLS,\n StormcloudPlayer: () => StormcloudPlayer_default,\n StormcloudVideoPlayer: () => StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent: () => StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig: () => applyTrackingIngestConfig,\n buildAnalyticsContext: () => buildAnalyticsContext,\n canPlay: () => canPlay,\n configureTrackingIngest: () => configureTrackingIngest,\n createHlsAdPlayer: () => createHlsAdPlayer,\n createPalNonceManager: () => createPalNonceManager,\n createStormcloudPlayer: () => createStormcloudPlayer,\n default: () => StormcloudVideoPlayerComponent,\n detectBrowser: () => detectBrowser,\n fixedFloorSelector: () => fixedFloorSelector,\n generateFloorLevels: () => generateFloorLevels,\n getBrowserConfigOverrides: () => getBrowserConfigOverrides,\n getBrowserID: () => getBrowserID,\n getClientInfo: () => getClientInfo,\n ingestPlayerTracking: () => ingestPlayerTracking,\n initializePolyfills: () => initializePolyfills,\n isMediaStream: () => isMediaStream,\n isTrackingIngestEnabled: () => isTrackingIngestEnabled,\n lazy: () => lazy,\n logBrowserInfo: () => logBrowserInfo,\n merge: () => merge,\n omit: () => omit,\n parseApiFloorLadder: () => parseApiFloorLadder,\n parseQuery: () => parseQuery,\n players: () => players_default,\n randomString: () => randomString,\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds: () => resolveFloorLadderBounds,\n sendAdDetectTracking: () => sendAdDetectTracking,\n sendAdImpressionTracking: () => sendAdImpressionTracking,\n sendAdLoadedTracking: () => sendAdLoadedTracking,\n sendHeartbeat: () => sendHeartbeat,\n sendInitialTracking: () => sendInitialTracking,\n supportsFeature: () => supportsFeature,\n supportsModernJS: () => supportsModernJS,\n supportsWebKitPresentationMode: () => supportsWebKitPresentationMode,\n trackingIngestConfig: () => trackingIngestConfig,\n validateFloorCents: () => validateFloorCents,\n validateFloorLadderConfig: () => validateFloorLadderConfig\n});\nmodule.exports = __toCommonJS(index_exports);\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_react = __toESM(require(\"react\"), 1);\n\n// src/utils/vastEnvironmentSignals.ts\nvar CTV_SESSION_STORAGE_KEY = \"stormcloud.ctv.sid\";\nvar PLAYER_ID_STORAGE_KEY = \"stormcloud.player.id\";\nvar DEVICE_ID_STORAGE_KEYS = [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"advertising_id\",\n \"deviceAdvertisingId\",\n \"aaid\",\n \"adid\",\n \"rida\",\n \"tifa\",\n \"lgudid\"\n];\nvar ANDROID_ID_TYPES = /* @__PURE__ */ new Set([\"aaid\", \"adid\"]);\nfunction resolveVastEnvironmentSignals(isCtv) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const bridgeDeviceId = validDeviceId(bridgeSignals.deviceId);\n const realDeviceId = bridgeDeviceId || (isCtv ? validDeviceId(readStoredDeviceId()) : void 0) || validDeviceId(platformDevice.deviceId);\n let deviceId = realDeviceId;\n let deviceIdType = (bridgeDeviceId ? bridgeSignals.deviceIdType : void 0) || readStoredString(\"deviceIdType\") || readStoredString(\"idtype\") || platformDevice.deviceIdType || inferDeviceIdType();\n const platformLat = bridgeDeviceId ? bridgeSignals.limitAdTracking : platformDevice.limitAdTracking;\n let limitAdTracking = deviceId != null ? platformLat ?? readStoredLimitAdTracking() : void 0;\n if (!deviceId && isCtv) {\n const dpid = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (dpid) {\n deviceId = dpid;\n deviceIdType = \"dpid\";\n limitAdTracking = platformLat ?? readStoredLimitAdTracking();\n }\n }\n const deviceTypeHint = resolveDeviceTypeHint(isCtv);\n if (isCtv) {\n return {\n isCtv: true,\n sessionId: getOrCreateCtvSessionId(),\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n }\n return {\n isCtv: false,\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {},\n deviceTypeHint\n };\n}\nvar DEVICE_TYPE_HINT = {\n FEATURE_PHONE: 1,\n SMARTPHONE: 2,\n DESKTOP: 3,\n TABLET: 4,\n CONNECTED_TV: 5,\n GAME_CONSOLE: 6,\n SET_TOP_BOX: 7\n};\nvar DEVICE_TYPE_HINT_ALIASES = {\n featurephone: DEVICE_TYPE_HINT.FEATURE_PHONE,\n smartphone: DEVICE_TYPE_HINT.SMARTPHONE,\n mobile: DEVICE_TYPE_HINT.SMARTPHONE,\n phone: DEVICE_TYPE_HINT.SMARTPHONE,\n desktop: DEVICE_TYPE_HINT.DESKTOP,\n pc: DEVICE_TYPE_HINT.DESKTOP,\n tablet: DEVICE_TYPE_HINT.TABLET,\n ctv: DEVICE_TYPE_HINT.CONNECTED_TV,\n tv: DEVICE_TYPE_HINT.CONNECTED_TV,\n connectedtv: DEVICE_TYPE_HINT.CONNECTED_TV,\n smarttv: DEVICE_TYPE_HINT.CONNECTED_TV,\n console: DEVICE_TYPE_HINT.GAME_CONSOLE,\n gameconsole: DEVICE_TYPE_HINT.GAME_CONSOLE,\n stb: DEVICE_TYPE_HINT.SET_TOP_BOX,\n settopbox: DEVICE_TYPE_HINT.SET_TOP_BOX\n};\nvar SET_TOP_BOX_UA = /LGSTB|\\bSTB\\b|STB\\d|Set-?Top|SetTopBox|TV ?Box|Kaon|Humax|Arris|Technicolor|Sagemcom|Infomir|MAG\\d{3}|KreaTV|Amino|Formuler|Dune ?HD|TiVo|MiBOX|Mi Box|SHIELD Android TV|\\bAFT[A-Z]|Roku|AppleTV|Apple TV|CrKey/i;\nvar GAME_CONSOLE_UA = /PlayStation|Xbox|Nintendo/i;\nvar CONNECTED_TV_UA = /Web0S|webOS|Tizen|SMART-TV|SmartTV|NetCast|BRAVIA|HbbTV|VIDAA|Hisense|Philips|Viera|AQUOS|Android TV|Google TV|\\bTV\\b/i;\nvar FEATURE_PHONE_UA = /KAIOS|MIDP|J2ME|Series40|Opera Mini/i;\nfunction resolveDeviceTypeHint(isCtv) {\n const override = readDeviceTypeHintOverride(isCtv);\n if (override != null) return override;\n return inferDeviceTypeHint(isCtv);\n}\nfunction inferDeviceTypeHint(isCtv) {\n const fallback = isCtv ? DEVICE_TYPE_HINT.CONNECTED_TV : DEVICE_TYPE_HINT.DESKTOP;\n if (typeof navigator === \"undefined\") return fallback;\n const ua = navigator.userAgent || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n if (SET_TOP_BOX_UA.test(ua)) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n if (GAME_CONSOLE_UA.test(ua)) return DEVICE_TYPE_HINT.GAME_CONSOLE;\n if (CONNECTED_TV_UA.test(ua) && !/Mobile/i.test(ua)) {\n return DEVICE_TYPE_HINT.CONNECTED_TV;\n }\n if (FEATURE_PHONE_UA.test(ua)) return DEVICE_TYPE_HINT.FEATURE_PHONE;\n if (/iPad/i.test(ua) || /Macintosh/i.test(ua) && maxTouchPoints > 1) {\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/iPhone|iPod/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (/Android/i.test(ua)) {\n if (/Mobile/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n if (maxTouchPoints === 0) return DEVICE_TYPE_HINT.SET_TOP_BOX;\n return DEVICE_TYPE_HINT.TABLET;\n }\n if (/Mobile|Windows Phone|BlackBerry/i.test(ua)) return DEVICE_TYPE_HINT.SMARTPHONE;\n return fallback;\n}\nfunction readDeviceTypeHintOverride(isCtv) {\n if (typeof window === \"undefined\") return void 0;\n const keys = [\"dth\", \"deviceTypeHint\"];\n const fromGlobal = normalizeDeviceTypeHint(window.__STORMCLOUD_DTH__);\n if (fromGlobal != null) return fromGlobal;\n for (const source of getNativeBridgeSources()) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeDeviceTypeHint(\n typeof value === \"function\" ? safeCall(value, source) : value\n );\n if (normalized != null) return normalized;\n }\n }\n if (!isCtv) return void 0;\n for (const key of [\"stormcloud.dth\", \"dth\"]) {\n const normalized = normalizeDeviceTypeHint(readStoredString(key));\n if (normalized != null) return normalized;\n }\n return void 0;\n}\nfunction normalizeDeviceTypeHint(value) {\n if (typeof value === \"number\") {\n return Number.isInteger(value) && value >= 1 && value <= 7 ? value : void 0;\n }\n if (typeof value !== \"string\") return void 0;\n const trimmed = value.trim();\n if (/^[1-7]$/.test(trimmed)) return parseInt(trimmed, 10);\n return DEVICE_TYPE_HINT_ALIASES[trimmed.toLowerCase().replace(/[\\s_-]/g, \"\")];\n}\nfunction safeCall(fn, thisArg) {\n try {\n return fn.call(thisArg);\n } catch {\n return void 0;\n }\n}\nfunction inferDeviceIdType() {\n if (typeof navigator === \"undefined\") {\n return void 0;\n }\n const ua = navigator.userAgent;\n if (/Roku/i.test(ua)) return \"rida\";\n if (/Tizen|Samsung/i.test(ua)) return \"tifa\";\n if (/AppleTV|Apple TV/i.test(ua)) return \"tvOS\";\n if (/AFT|Fire TV|Amazon/i.test(ua)) return \"afai\";\n if (/Web0S|webOS|LG Browser|LGSTB|LGE/i.test(ua)) return \"lgudid\";\n if (/Android|Google TV/i.test(ua)) return \"aaid\";\n if (/iPhone|iPad|iPod/i.test(ua)) return \"idfa\";\n return void 0;\n}\nfunction isEquivalentDeviceIdType(tagType, runtimeType) {\n if (!tagType || !runtimeType) return false;\n const tag = tagType.toLowerCase();\n const runtime = runtimeType.toLowerCase();\n if (tag === runtime) return true;\n return ANDROID_ID_TYPES.has(tag) && ANDROID_ID_TYPES.has(runtime);\n}\nfunction resolveNativeDeviceId(includeStored = true) {\n const bridgeSignals = readNativeBridgeSignals();\n const platformDevice = readPlatformNativeDeviceId();\n const deviceId = bridgeSignals.deviceId || (includeStored ? readStoredDeviceId() : void 0) || platformDevice.deviceId;\n if (!deviceId || isMacroPlaceholder(deviceId) || isZeroedAdId(deviceId)) {\n return void 0;\n }\n return deviceId;\n}\nfunction getOrCreateStoredUuid(storageKey) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n const existing = readPersistentId(storageKey);\n if (existing) {\n writePersistentId(storageKey, existing);\n return existing;\n }\n const id = createUuid();\n writePersistentId(storageKey, id);\n return id;\n}\nfunction getOrCreateCtvSessionId() {\n const existing = readPersistentId(CTV_SESSION_STORAGE_KEY);\n if (existing) {\n writePersistentId(CTV_SESSION_STORAGE_KEY, existing);\n return existing;\n }\n const sessionId = createUuid();\n writePersistentId(CTV_SESSION_STORAGE_KEY, sessionId);\n return sessionId;\n}\nfunction readPersistentId(storageKey) {\n return readStoredString(storageKey) || readCookie(storageKey);\n}\nfunction writePersistentId(storageKey, value) {\n try {\n window.localStorage?.setItem(storageKey, value);\n } catch {\n }\n writeCookie(storageKey, value);\n}\nvar PERSISTENT_ID_COOKIE_MAX_AGE = 60 * 60 * 24 * 365 * 5;\nfunction readCookie(name) {\n if (typeof document === \"undefined\") {\n return void 0;\n }\n try {\n const prefix = encodeURIComponent(name) + \"=\";\n const parts = document.cookie ? document.cookie.split(\";\") : [];\n for (const part of parts) {\n const entry = part.trim();\n if (entry.startsWith(prefix)) {\n return decodeURIComponent(entry.slice(prefix.length)) || void 0;\n }\n }\n } catch {\n }\n return void 0;\n}\nfunction writeCookie(name, value) {\n if (typeof document === \"undefined\") {\n return;\n }\n try {\n document.cookie = encodeURIComponent(name) + \"=\" + encodeURIComponent(value) + \";path=/;max-age=\" + PERSISTENT_ID_COOKIE_MAX_AGE + \";SameSite=Lax\";\n } catch {\n }\n}\nfunction createUuid() {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const bytes = new Uint8Array(16);\n if (typeof crypto !== \"undefined\" && typeof crypto.getRandomValues === \"function\") {\n crypto.getRandomValues(bytes);\n } else {\n let seed = Date.now() ^ Math.floor(performanceNow() * 1e3);\n for (let i = 0; i < 16; i++) {\n seed = seed * 1103515245 + 12345 & 2147483647;\n bytes[i] = (seed ^ Math.floor(Math.random() * 256)) & 255;\n }\n }\n bytes[6] = (bytes[6] ?? 0) & 15 | 64;\n bytes[8] = (bytes[8] ?? 0) & 63 | 128;\n let hex = \"\";\n for (let i = 0; i < 16; i++) {\n hex += (bytes[i] ?? 0).toString(16).padStart(2, \"0\");\n }\n return hex.slice(0, 8) + \"-\" + hex.slice(8, 12) + \"-\" + hex.slice(12, 16) + \"-\" + hex.slice(16, 20) + \"-\" + hex.slice(20, 32);\n}\nfunction performanceNow() {\n try {\n if (typeof performance !== \"undefined\" && typeof performance.now === \"function\") {\n return performance.now();\n }\n } catch {\n }\n return 0;\n}\nfunction readPlatformNativeDeviceId() {\n if (typeof window === \"undefined\") return {};\n try {\n const adinfo = window.webapis?.adinfo;\n if (adinfo) {\n const tifa = typeof adinfo.getTIFA === \"function\" ? adinfo.getTIFA() : adinfo.tifa;\n if (typeof tifa === \"string\" && tifa && !isMacroPlaceholder(tifa)) {\n const lat = typeof adinfo.isLATEnabled === \"function\" ? adinfo.isLATEnabled() : void 0;\n return {\n deviceId: tifa,\n deviceIdType: \"tifa\",\n ...typeof lat === \"boolean\" ? { limitAdTracking: lat } : {}\n };\n }\n }\n } catch {\n }\n try {\n const webOSDev = window.webOSDev;\n if (webOSDev) {\n const lgudid = typeof webOSDev.LGUDID === \"function\" ? webOSDev.LGUDID() : webOSDev.lgudid ?? webOSDev.LGUDID;\n if (typeof lgudid === \"string\" && lgudid) {\n if (isZeroedAdId(lgudid)) {\n return { deviceIdType: \"lgudid\", limitAdTracking: true };\n }\n if (!isMacroPlaceholder(lgudid)) {\n return { deviceId: lgudid, deviceIdType: \"lgudid\", limitAdTracking: false };\n }\n }\n }\n } catch {\n }\n try {\n const roku = window.Roku;\n if (roku) {\n const rida = typeof roku.getPublisherUniqueId === \"function\" ? roku.getPublisherUniqueId() : roku.rida;\n if (typeof rida === \"string\" && rida && !isMacroPlaceholder(rida)) {\n return { deviceId: rida, deviceIdType: \"rida\", limitAdTracking: false };\n }\n }\n } catch {\n }\n return {};\n}\nvar ZEROED_AD_ID_PATTERNS = /* @__PURE__ */ new Set([\n \"38400000-8cf0-11bd-b23e-10b96e40000d\",\n \"00000000-0000-0000-0000-000000000000\"\n]);\nfunction isMacroPlaceholder(value) {\n const t = value.trim();\n return !t || /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/.test(t) || /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(t) || ZEROED_AD_ID_PATTERNS.has(t.toLowerCase());\n}\nfunction validDeviceId(value) {\n return value && !isMacroPlaceholder(value) ? value : void 0;\n}\nfunction isZeroedAdId(value) {\n return ZEROED_AD_ID_PATTERNS.has(value.trim().toLowerCase());\n}\nfunction readNativeBridgeSignals() {\n for (const source of getNativeBridgeSources()) {\n const contentUrl = readBridgeValue(source, [\"contentUrl\", \"url\", \"videoUrl\", \"canonicalUrl\"]) || void 0;\n const appId = readBridgeValue(source, [\"appId\", \"msid\", \"applicationId\", \"packageName\"]) || void 0;\n const appName = readBridgeValue(source, [\"appName\", \"an\", \"applicationName\"]) || void 0;\n const deviceId = readBridgeValue(source, [\n \"rdid\",\n \"ifa\",\n \"advertisingId\",\n \"adId\",\n \"deviceId\",\n \"lgudid\",\n \"LGUDID\",\n \"tifa\",\n \"rida\",\n \"afai\",\n \"aaid\"\n ]) || void 0;\n if (!contentUrl && !deviceId && !appId && !appName) continue;\n const deviceIdType = readBridgeValue(source, [\n \"idtype\",\n \"deviceIdType\",\n \"advertisingIdType\",\n \"idType\"\n ]) || inferDeviceIdType();\n const limitAdTracking = readBridgeBoolean(source, [\n \"is_lat\",\n \"limitAdTracking\",\n \"limitedAdTracking\",\n \"lat\"\n ]);\n return {\n ...contentUrl ? { contentUrl } : {},\n ...appId ? { appId } : {},\n ...appName ? { appName } : {},\n ...deviceId ? { deviceId } : {},\n ...deviceId && deviceIdType ? { deviceIdType } : {},\n ...deviceId && limitAdTracking != null ? { limitAdTracking } : {}\n };\n }\n return {};\n}\nfunction getNativeBridgeSources() {\n if (typeof window === \"undefined\") {\n return [];\n }\n return [\n window.__STORMCLOUD_CTV_AD_INFO__,\n window.__STORMCLOUD_CTV__,\n window.stormcloudCtv,\n window.AiryTV,\n window.Android,\n window.webOS,\n window.tizen,\n window.amazon\n ].filter(Boolean);\n}\nfunction readBridgeValue(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n if (typeof value === \"string\" && value) {\n return value;\n }\n if (typeof value === \"function\") {\n try {\n const result = value.call(source);\n if (typeof result === \"string\" && result) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readBridgeBoolean(source, keys) {\n for (const key of keys) {\n const value = source?.[key];\n const normalized = normalizeBoolean(value);\n if (normalized != null) {\n return normalized;\n }\n if (typeof value === \"function\") {\n try {\n const result = normalizeBoolean(value.call(source));\n if (result != null) {\n return result;\n }\n } catch {\n }\n }\n }\n return void 0;\n}\nfunction readStoredDeviceId() {\n for (const key of DEVICE_ID_STORAGE_KEYS) {\n const value = readStoredString(key);\n if (value) {\n return value;\n }\n }\n return void 0;\n}\nfunction readStoredString(key) {\n if (typeof window === \"undefined\") {\n return void 0;\n }\n try {\n const value = window.localStorage?.getItem(key);\n return value || void 0;\n } catch {\n return void 0;\n }\n}\nfunction readStoredLimitAdTracking() {\n return normalizeBoolean(\n readStoredString(\"limitAdTracking\") || readStoredString(\"limitedAdTracking\") || readStoredString(\"is_lat\")\n );\n}\nfunction normalizeBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value === 1;\n }\n if (typeof value === \"string\") {\n const normalized = value.toLowerCase();\n if (normalized === \"1\" || normalized === \"true\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"0\" || normalized === \"false\" || normalized === \"no\") {\n return false;\n }\n }\n return void 0;\n}\n\n// src/utils/vastMacros.ts\nvar UNEXPANDED_MACRO_PATTERN = /^(\\[[^\\]]*\\]|\\{[^}]*\\}|%%[^%]*%%)$/;\nvar INVALID_VAST_PARAM_KEY = /^\\s|\\s$/;\nvar EXAMPLE_COM_URL = /example\\.com/i;\nvar CTV_UNSUPPORTED_PARAMS = [\n \"tfcd\",\n \"npa\",\n \"min_ad_duration\",\n \"max_ad_duration\",\n \"unviewed_position_start\",\n \"impl\",\n \"vad_type\",\n \"gdpr\",\n \"gdpr_consent\",\n \"us_privacy\"\n];\nvar INLINE_DEVICE_MACRO_REPLACEMENTS = [\n { pattern: /\\[RDID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IFA\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[ADVERTISING[_-]?ID(?:ENTIFIER)?\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[DEVICE[_-]?ID\\]/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\[IDTYPE\\]/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /\\{rdid\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{device[_-]?id\\}/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /\\{idtype\\}/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_IDENTIFIER_PLAIN%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%ADVERTISING_ID_OPT_OUT%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%ADVERTISING_ID_TYPE%%/gi, getValue: (ctx) => ctx.deviceIdType },\n { pattern: /%%ADVERTISING_ID%%/gi, getValue: (ctx) => ctx.deviceId },\n { pattern: /%%LIMIT_AD_TRACKING%%/gi, getValue: (ctx) => ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0 },\n { pattern: /%%SESSION_ID%%/gi, getValue: (ctx) => ctx.sessionId },\n { pattern: /%%CORRELATOR%%/gi, getValue: (ctx) => ctx.correlator }\n];\nfunction isMacroPlaceholder2(value) {\n if (value == null) return true;\n const trimmed = value.trim();\n if (!trimmed) return true;\n if (UNEXPANDED_MACRO_PATTERN.test(trimmed)) return true;\n return /^(unknown|null|undefined|none|n\\/a|\\$\\{[^}]+\\})$/i.test(trimmed);\n}\nfunction generateCorrelator() {\n if (typeof crypto !== \"undefined\" && crypto.getRandomValues) {\n try {\n const buf = new Uint32Array(2);\n crypto.getRandomValues(buf);\n const value = (buf[0] ?? 0) * 2097152 + ((buf[1] ?? 0) & 2097151);\n if (value > 0) {\n return String(value);\n }\n } catch {\n }\n }\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + 1);\n}\nvar pageViewCorrelator;\nfunction getPageViewCorrelator() {\n const key = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\n if (!pageViewCorrelator || pageViewCorrelator.key !== key) {\n pageViewCorrelator = { key, value: generateCorrelator() };\n }\n return pageViewCorrelator.value;\n}\nfunction expandInlineMacroPlaceholders(baseUrl, ctx) {\n let url = baseUrl;\n for (const { pattern, getValue } of INLINE_DEVICE_MACRO_REPLACEMENTS) {\n const value = getValue(ctx);\n if (value != null && value !== \"\") {\n url = url.replace(pattern, encodeURIComponent(value));\n }\n }\n return url;\n}\nfunction applyDeviceIdentityParams(params, ctx) {\n const runtimeId = ctx.deviceId?.trim();\n const runtimeType = ctx.deviceIdType?.trim() || inferDeviceIdType();\n const tagRdid = params.get(\"rdid\");\n const tagType = params.get(\"idtype\");\n const tagLat = params.get(\"is_lat\");\n const latValue = ctx.limitAdTracking != null ? ctx.limitAdTracking ? \"1\" : \"0\" : void 0;\n if (runtimeId) {\n params.set(\"rdid\", runtimeId);\n params.set(\"idtype\", runtimeType || tagType || \"aaid\");\n params.set(\"is_lat\", latValue ?? (isMacroPlaceholder2(tagLat) ? \"0\" : tagLat));\n return;\n }\n if (!ctx.isCtv) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n const tagRdidValid = Boolean(tagRdid && !isMacroPlaceholder2(tagRdid));\n const tagTypeValid = Boolean(tagType && !isMacroPlaceholder2(tagType));\n if (tagRdidValid && tagTypeValid && runtimeType && !isEquivalentDeviceIdType(tagType, runtimeType)) {\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n return;\n }\n if (tagRdidValid) {\n if (isMacroPlaceholder2(tagType) && runtimeType) {\n params.set(\"idtype\", runtimeType);\n }\n if (isMacroPlaceholder2(tagLat)) {\n params.set(\"is_lat\", latValue ?? \"0\");\n }\n return;\n }\n params.delete(\"rdid\");\n params.delete(\"idtype\");\n params.delete(\"is_lat\");\n}\nfunction removeBrokenAppNameOrphans(params, appName) {\n const toDelete = [];\n params.forEach((_value, key) => {\n if (!key || INVALID_VAST_PARAM_KEY.test(key)) {\n toDelete.push(key);\n }\n });\n if (appName && appName.includes(\"&\")) {\n for (const suffix of appName.split(\"&\").slice(1)) {\n const trimmed = suffix.replace(/^\\s+/, \"\");\n if (!trimmed) continue;\n toDelete.push(suffix, ` ${trimmed}`, trimmed);\n }\n }\n for (const key of new Set(toDelete)) {\n if (key) params.delete(key);\n }\n}\nfunction normalizeVastTagUrl(raw) {\n if (!raw) return raw;\n try {\n const url = new URL(raw);\n const anValue = url.searchParams.get(\"an\");\n if (anValue !== null) {\n const orphanFragments = [];\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n orphanFragments.push(key.trim());\n }\n });\n if (orphanFragments.length > 0) {\n const reconstructed = [anValue.replace(/\\s+$/, \"\"), ...orphanFragments].filter(Boolean).join(\" & \");\n url.searchParams.forEach((_value, key) => {\n if (key && INVALID_VAST_PARAM_KEY.test(key)) {\n url.searchParams.delete(key);\n }\n });\n url.searchParams.set(\"an\", reconstructed);\n return url.toString().replace(\n /([?&]an=)([^&]*)/,\n (_match, prefix, val) => prefix + val.replace(/\\+/g, \"%20\")\n );\n }\n }\n removeBrokenAppNameOrphans(url.searchParams);\n return url.toString();\n } catch {\n return raw;\n }\n}\nvar GAM_AD_HOSTS = /* @__PURE__ */ new Set([\n \"pubads.g.doubleclick.net\",\n \"securepubads.g.doubleclick.net\"\n]);\nfunction ensureVideoAdType(rawUrl) {\n try {\n const url = new URL(rawUrl);\n if (!GAM_AD_HOSTS.has(url.hostname)) return rawUrl;\n if (url.searchParams.has(\"ad_type\")) return rawUrl;\n url.searchParams.set(\"ad_type\", \"video\");\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar SCVP_MACRO_DETECT = /\\[SCVP-|%5BSCVP-|\\(SCVP-|%28SCVP-/i;\nvar SCVP_MACRO_PATTERN = /\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\)/gi;\nvar SCVP_WHOLE_VALUE_PATTERN = /^\\s*(?:\\[SCVP-([A-Z0-9-]+)\\]|\\(SCVP-([A-Z0-9-]+)\\))\\s*$/i;\nvar NESTED_QUERY_PARAM_KEYS = /* @__PURE__ */ new Set([\"cust_params\"]);\nvar SCVP_POD_MACROS = /* @__PURE__ */ new Set([\"PMND\", \"PMXD\", \"PMAD\"]);\nfunction hasScvpMacros(url) {\n return !!url && SCVP_MACRO_DETECT.test(url);\n}\nfunction safeDecode(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return value;\n }\n}\nfunction findScvpMacroNames(url) {\n if (!url) return [];\n const names = /* @__PURE__ */ new Set();\n let text = url;\n for (let pass = 0; pass < 3; pass++) {\n text.replace(SCVP_MACRO_PATTERN, (_m, bracketName, parenName) => {\n names.add(String(bracketName || parenName).toUpperCase());\n return \"\";\n });\n const decoded = safeDecode(text);\n if (decoded === text) break;\n text = decoded;\n }\n return Array.from(names);\n}\nfunction resolveScvpMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (name, value) => {\n if (value == null) return;\n const str = String(value).trim();\n if (str) values.set(name, str);\n };\n const toFlag = (value) => value == null ? void 0 : value ? \"1\" : \"0\";\n const deviceId = ctx.deviceId?.trim();\n const deviceIdType = deviceId ? ctx.deviceIdType?.trim() || inferDeviceIdType() : void 0;\n if (deviceId && deviceIdType) {\n set(\"RDID\", deviceId);\n set(\"IDTYPE\", deviceIdType);\n set(\"IS-LAT\", toFlag(ctx.limitAdTracking) ?? \"0\");\n }\n set(\"SID\", ctx.sessionId);\n set(\"DTH\", ctx.deviceTypeHint);\n set(\"GIVN\", ctx.palNonce);\n set(\"CT-TI\", ctx.programTitle);\n set(\"CT-CH\", ctx.channelName);\n set(\"POD\", ctx.pod);\n set(\"CORRELATOR\", ctx.correlator);\n set(\"SCOR\", ctx.streamCorrelator);\n set(\"VPMUTE\", toFlag(ctx.adWillPlayMuted));\n if (ctx.adWillAutoPlay != null) {\n set(\"VPA\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n set(\"GDPR\", ctx.consent?.gdpr);\n set(\"GDPR-CONSENT\", ctx.consent?.gdprConsent);\n set(\"US-PRIVACY\", ctx.consent?.usPrivacy);\n return values;\n}\nvar keepNone = () => false;\nfunction substituteScvpParams(params, values, unresolved, keep, nested) {\n const out = [];\n const replaceMacro = (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return value;\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n };\n params.forEach((value, key) => {\n const whole = value.match(SCVP_WHOLE_VALUE_PATTERN);\n if (whole) {\n const name = String(whole[1] || whole[2]).toUpperCase();\n const resolved = values.get(name);\n if (resolved != null) {\n out.push([key, resolved]);\n } else if (keep(name)) {\n out.push([key, value]);\n } else {\n unresolved.add(name);\n }\n return;\n }\n if (!SCVP_MACRO_DETECT.test(value)) {\n out.push([key, value]);\n return;\n }\n if (!nested && NESTED_QUERY_PARAM_KEYS.has(key)) {\n const inner = substituteScvpParams(new URLSearchParams(value), values, unresolved, keep, true);\n if (inner.length > 0) {\n out.push([\n key,\n inner.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join(\"&\")\n ]);\n }\n return;\n }\n out.push([key, value.replace(SCVP_MACRO_PATTERN, replaceMacro)]);\n });\n return out;\n}\nfunction substituteScvpMacros(baseUrl, values, keep = keepNone) {\n const unresolved = /* @__PURE__ */ new Set();\n let url;\n try {\n url = new URL(normalizeVastTagUrl(baseUrl));\n } catch {\n const replaced = baseUrl.replace(\n SCVP_MACRO_PATTERN,\n (match, bracketName, parenName) => {\n const name = String(bracketName || parenName).toUpperCase();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n if (keep(name)) return match;\n unresolved.add(name);\n return \"\";\n }\n );\n return { url: replaced, unresolved: Array.from(unresolved) };\n }\n const entries = substituteScvpParams(url.searchParams, values, unresolved, keep, false);\n const search = new URLSearchParams();\n for (const [key, value] of entries) search.append(key, value);\n url.search = search.toString();\n return { url: url.toString(), unresolved: Array.from(unresolved) };\n}\nfunction applyScvpMacros(baseUrl, ctx, deferred = /* @__PURE__ */ new Set()) {\n return substituteScvpMacros(baseUrl, resolveScvpMacroValues(ctx), (name) => deferred.has(name));\n}\nfunction stripScvpMacros(url) {\n if (findScvpMacroNames(url).length === 0) return { url, unresolved: [] };\n return substituteScvpMacros(url, /* @__PURE__ */ new Map());\n}\nfunction applyVastMacros(baseUrl, ctx) {\n const expandedUrl = expandInlineMacroPlaceholders(baseUrl, ctx);\n let url;\n try {\n url = new URL(normalizeVastTagUrl(expandedUrl));\n } catch {\n return replaceCorrelatorFallback(expandedUrl, ctx.correlator);\n }\n const params = url.searchParams;\n removeBrokenAppNameOrphans(params);\n params.set(\"correlator\", ctx.correlator);\n params.set(\"scor\", ctx.streamCorrelator);\n if (ctx.isCtv) {\n for (const key of CTV_UNSUPPORTED_PARAMS) {\n params.delete(key);\n }\n } else {\n params.set(\"unviewed_position_start\", \"1\");\n }\n if (ctx.pod != null) {\n params.set(\"pod\", String(ctx.pod));\n }\n params.delete(\"ppos\");\n params.delete(\"lip\");\n const existingUrl = params.get(\"url\") || \"\";\n if (EXAMPLE_COM_URL.test(existingUrl)) {\n params.delete(\"url\");\n params.delete(\"description_url\");\n }\n if (!ctx.isCtv && ctx.pageUrl) {\n if (isMacroPlaceholder2(params.get(\"url\"))) {\n params.set(\"url\", ctx.pageUrl);\n }\n if (isMacroPlaceholder2(params.get(\"description_url\"))) {\n params.set(\"description_url\", params.get(\"url\") || ctx.pageUrl);\n }\n }\n if (!ctx.isCtv) {\n params.delete(\"an\");\n params.delete(\"msid\");\n params.delete(\"sid\");\n }\n if (ctx.adWillPlayMuted != null) {\n params.set(\"vpmute\", ctx.adWillPlayMuted ? \"1\" : \"0\");\n }\n if (ctx.adWillAutoPlay != null) {\n params.set(\"vpa\", ctx.adWillAutoPlay ? \"auto\" : \"click\");\n }\n if (ctx.sessionId) {\n params.set(\"sid\", ctx.sessionId);\n }\n if (ctx.deviceTypeHint != null) {\n params.set(\"dth\", String(ctx.deviceTypeHint));\n } else if (ctx.isCtv) {\n params.set(\"dth\", \"5\");\n }\n applyDeviceIdentityParams(params, ctx);\n if (!ctx.isCtv) {\n const consent = ctx.consent;\n if (consent?.gdpr != null) {\n params.set(\"gdpr\", consent.gdpr);\n }\n if (consent?.gdprConsent != null) {\n params.set(\"gdpr_consent\", consent.gdprConsent);\n }\n if (consent?.usPrivacy != null) {\n params.set(\"us_privacy\", consent.usPrivacy);\n }\n }\n if (ctx.adTest) {\n params.set(\"adtest\", \"on\");\n }\n if (ctx.programTitle) {\n params.set(\"ct_ti\", ctx.programTitle);\n }\n if (ctx.channelName) {\n params.set(\"ct_ch\", ctx.channelName);\n }\n const staleKeys = [];\n params.forEach((value, key) => {\n if (isMacroPlaceholder2(value)) {\n staleKeys.push(key);\n }\n });\n for (const key of staleKeys) {\n params.delete(key);\n }\n removeBrokenAppNameOrphans(params);\n return url.toString();\n}\nfunction replaceCorrelatorFallback(baseUrl, correlator) {\n const correlatorRegex = /([?&])correlator=([^&]*)/;\n if (correlatorRegex.test(baseUrl)) {\n return baseUrl.replace(correlatorRegex, `$1correlator=${correlator}`);\n }\n const sep = baseUrl.includes(\"?\") ? \"&\" : \"?\";\n return `${baseUrl}${sep}correlator=${correlator}`;\n}\nfunction fetchConsentSignals(timeoutMs = 1500) {\n const signals = {};\n if (typeof window === \"undefined\") {\n return Promise.resolve(signals);\n }\n const tasks = [];\n const tcfApi = window.__tcfapi;\n if (typeof tcfApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n let settled = false;\n try {\n tcfApi(\"addEventListener\", 2, (tcData, success) => {\n if (settled) return;\n if (success && tcData && (tcData.eventStatus === \"tcloaded\" || tcData.eventStatus === \"useractioncomplete\")) {\n settled = true;\n signals.gdpr = tcData.gdprApplies ? \"1\" : \"0\";\n signals.storageAllowed = tcData.gdprApplies ? tcData.purpose?.consents?.[1] === true : true;\n if (typeof tcData.tcString === \"string\" && tcData.tcString) {\n signals.gdprConsent = tcData.tcString;\n }\n try {\n tcfApi(\"removeEventListener\", 2, () => {\n }, tcData.listenerId);\n } catch {\n }\n resolve();\n }\n });\n } catch {\n resolve();\n }\n setTimeout(() => {\n if (!settled) {\n settled = true;\n resolve();\n }\n }, timeoutMs);\n })\n );\n }\n const uspApi = window.__uspapi;\n if (typeof uspApi === \"function\") {\n tasks.push(\n new Promise((resolve) => {\n try {\n uspApi(\"getUSPData\", 1, (data, success) => {\n if (success && typeof data?.uspString === \"string\" && data.uspString) {\n signals.usPrivacy = data.uspString;\n }\n resolve();\n });\n } catch {\n resolve();\n }\n setTimeout(resolve, timeoutMs);\n })\n );\n }\n if (tasks.length === 0) {\n return Promise.resolve(signals);\n }\n return Promise.all(tasks).then(() => signals);\n}\n\n// src/player/FloorLadder.ts\nvar DISABLED_FLOOR_LADDER_CONFIG = Object.freeze({\n enabled: false,\n targetingKey: \"\",\n minFloorCents: 0,\n maxFloorCents: 0,\n stepCents: 0,\n selectedFloorCents: 0,\n fallbackFloorCents: 0,\n readyFloorCents: [],\n mode: \"fixed\",\n allowedPositions: [],\n targetAdUnitPath: \"\",\n configurationVersion: \"\"\n});\nvar DEFAULT_FLOOR_LADDER_BOUNDS = Object.freeze({\n minCents: 25,\n maxCents: 300,\n stepCents: 25\n});\nfunction isInteger(value) {\n return typeof value === \"number\" && Number.isInteger(value);\n}\nfunction generateFloorLevels(minCents, maxCents, stepCents) {\n if (!isInteger(minCents) || !isInteger(maxCents) || !isInteger(stepCents)) return [];\n if (stepCents <= 0 || minCents <= 0 || maxCents < minCents) return [];\n const levels = [];\n for (let cents = minCents; cents <= maxCents; cents += stepCents) {\n levels.push(cents);\n }\n return levels;\n}\nfunction resolveFloorLadderBounds(overrides = {}) {\n return {\n minCents: overrides.minCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.minCents,\n maxCents: overrides.maxCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.maxCents,\n stepCents: overrides.stepCents ?? DEFAULT_FLOOR_LADDER_BOUNDS.stepCents\n };\n}\nfunction validateFloorCents(value, config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n if (!isInteger(value)) return { ok: false, reason: \"not_integer\" };\n if (!(value >= bounds.minCents && value <= bounds.maxCents) || !(value >= config.minFloorCents && value <= config.maxFloorCents)) {\n return { ok: false, reason: \"out_of_range\" };\n }\n const gamLevels = generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents);\n const configLevels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents);\n if (gamLevels.indexOf(value) === -1 || configLevels.indexOf(value) === -1) {\n return { ok: false, reason: \"not_step_multiple\" };\n }\n const ready = Array.isArray(config.readyFloorCents) ? config.readyFloorCents : [];\n if (ready.indexOf(value) === -1) return { ok: false, reason: \"not_ready\" };\n return { ok: true };\n}\nfunction validateFloorLadderConfig(config, bounds = DEFAULT_FLOOR_LADDER_BOUNDS) {\n const errors = [];\n if (generateFloorLevels(bounds.minCents, bounds.maxCents, bounds.stepCents).length === 0) {\n errors.push(\"invalid_gam_bounds\");\n }\n const levels = generateFloorLevels(config.minFloorCents, config.maxFloorCents, config.stepCents).filter((cents) => validateFloorCents(cents, { ...config, readyFloorCents: [cents] }, bounds).ok);\n if (levels.length === 0) errors.push(\"invalid_level_bounds\");\n if (config.minFloorCents < bounds.minCents || config.maxFloorCents > bounds.maxCents) {\n errors.push(\"level_bounds_outside_gam_ladder\");\n }\n if (!config.targetingKey) errors.push(\"missing_targeting_key\");\n if (config.mode !== \"fixed\") errors.push(`unsupported_mode:${String(config.mode)}`);\n if (!Array.isArray(config.readyFloorCents)) {\n errors.push(\"ready_floor_cents_not_array\");\n } else {\n for (const cents of config.readyFloorCents) {\n const check = validateFloorCents(cents, config, bounds);\n if (!check.ok) errors.push(`ready_floor_invalid:${String(cents)}:${check.reason}`);\n }\n }\n const selected = validateFloorCents(config.selectedFloorCents, config, bounds);\n if (!selected.ok) errors.push(`selected_floor_invalid:${selected.reason}`);\n const fallback = validateFloorCents(config.fallbackFloorCents, config, bounds);\n if (!fallback.ok) errors.push(`fallback_floor_invalid:${fallback.reason}`);\n return { ok: errors.length === 0, levels, errors };\n}\nvar fixedFloorSelector = {\n name: \"fixed\",\n select(config, context) {\n if (config.mode !== \"fixed\") return { source: \"none\", reason: \"unsupported_mode\" };\n const selected = validateFloorCents(config.selectedFloorCents, config, context.bounds);\n if (selected.ok) return { floorCents: config.selectedFloorCents, source: \"selected\" };\n const fallback = validateFloorCents(config.fallbackFloorCents, config, context.bounds);\n if (fallback.ok) {\n return {\n floorCents: config.fallbackFloorCents,\n source: \"fallback\",\n reason: `selected_${selected.reason}`\n };\n }\n return {\n source: \"none\",\n reason: `no_valid_floor:selected_${selected.reason}:fallback_${fallback.reason}`\n };\n }\n};\nfunction resolveOpportunityFloor(config, context, selector = fixedFloorSelector) {\n const base = {\n selector: selector.name,\n position: context.position,\n configurationVersion: String(config.configurationVersion ?? \"\"),\n targetingKey: config.targetingKey,\n targetAdUnitPath: config.targetAdUnitPath\n };\n const skipped = (reason, source = \"none\") => Object.freeze({ ...base, status: \"skipped\", floorCents: void 0, source, reason });\n if (!config.enabled) return skipped(\"disabled\");\n const positions = Array.isArray(config.allowedPositions) ? config.allowedPositions : [];\n if (positions.indexOf(context.position) === -1) return skipped(\"position_not_allowed\");\n if (!config.targetingKey) return skipped(\"missing_targeting_key\");\n if (!config.targetAdUnitPath) return skipped(\"missing_target_ad_unit\");\n let result;\n try {\n result = selector.select(config, context);\n } catch {\n return skipped(\"selector_error\");\n }\n if (result.floorCents == null) return skipped(result.reason ?? \"no_valid_floor\", result.source);\n const check = validateFloorCents(result.floorCents, config, context.bounds);\n if (!check.ok) return skipped(`selector_floor_${check.reason}`);\n return Object.freeze({\n ...base,\n status: \"armed\",\n floorCents: result.floorCents,\n source: result.source,\n reason: result.reason\n });\n}\nfunction decodeQueryComponent(value) {\n try {\n return decodeURIComponent(value.replace(/\\+/g, \" \"));\n } catch {\n return void 0;\n }\n}\nfunction mergeCustParams(decoded, key, cents) {\n const prefix = `${key}=`;\n const kept = decoded.split(\"&\").filter((pair) => pair !== \"\" && pair !== key && pair.indexOf(prefix) !== 0);\n kept.push(`${prefix}${cents}`);\n return kept.join(\"&\");\n}\nfunction applyFloorToVastUrl(url, floor) {\n if (floor.status !== \"armed\" || floor.floorCents == null) {\n return { url, applied: false, reason: floor.reason };\n }\n let parsed;\n try {\n parsed = new URL(url);\n } catch {\n return { url, applied: false, reason: \"invalid_url\" };\n }\n if (!GAM_AD_HOSTS.has(parsed.hostname)) {\n return { url, applied: false, reason: \"not_gam_host\" };\n }\n if (parsed.searchParams.get(\"iu\") !== floor.targetAdUnitPath) {\n return { url, applied: false, reason: \"ad_unit_mismatch\" };\n }\n const hashIndex = url.indexOf(\"#\");\n const beforeHash = hashIndex === -1 ? url : url.slice(0, hashIndex);\n const hash = hashIndex === -1 ? \"\" : url.slice(hashIndex);\n const queryIndex = beforeHash.indexOf(\"?\");\n const base = beforeHash.slice(0, queryIndex);\n const segments = beforeHash.slice(queryIndex + 1).split(\"&\");\n const existing = [];\n let insertAt = -1;\n const rest = [];\n for (const segment of segments) {\n const eq = segment.indexOf(\"=\");\n const rawKey = eq === -1 ? segment : segment.slice(0, eq);\n if (decodeQueryComponent(rawKey) === \"cust_params\") {\n if (insertAt === -1) insertAt = rest.length;\n const value = eq === -1 ? \"\" : decodeQueryComponent(segment.slice(eq + 1));\n if (value === void 0) {\n return { url, applied: false, reason: \"malformed_cust_params\" };\n }\n if (value) existing.push(value);\n continue;\n }\n rest.push(segment);\n }\n if (insertAt === -1) insertAt = rest.length;\n const merged = mergeCustParams(existing.join(\"&\"), floor.targetingKey, floor.floorCents);\n rest.splice(insertAt, 0, `cust_params=${encodeURIComponent(merged)}`);\n const query = rest.filter((segment) => segment !== \"\").join(\"&\");\n return { url: `${base}?${query}${hash}`, applied: true, reason: void 0 };\n}\nfunction copyConfig(config) {\n return {\n ...config,\n readyFloorCents: Array.isArray(config.readyFloorCents) ? config.readyFloorCents.slice() : [],\n allowedPositions: Array.isArray(config.allowedPositions) ? config.allowedPositions.slice() : []\n };\n}\nfunction mergeDefined(target, update) {\n const next = copyConfig(target);\n if (!update) return next;\n for (const key of Object.keys(update)) {\n const value = update[key];\n if (value !== void 0) next[key] = value;\n }\n return copyConfig(next);\n}\nvar AD_POSITIONS = [\"preroll\", \"midroll\", \"postroll\"];\nfunction finiteNumber(value) {\n return typeof value === \"number\" && isFinite(value) ? value : void 0;\n}\nfunction parseApiFloorLadder(raw) {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return void 0;\n const src = raw;\n const out = {};\n if (typeof src.enabled === \"boolean\") out.enabled = src.enabled;\n if (typeof src.targetingKey === \"string\") out.targetingKey = src.targetingKey;\n if (typeof src.targetAdUnitPath === \"string\") out.targetAdUnitPath = src.targetAdUnitPath;\n if (typeof src.configurationVersion === \"string\") out.configurationVersion = src.configurationVersion;\n if (typeof src.mode === \"string\") out.mode = src.mode;\n const min = finiteNumber(src.minFloorCents);\n const max = finiteNumber(src.maxFloorCents);\n const step = finiteNumber(src.stepCents);\n const selected = finiteNumber(src.selectedFloorCents);\n const fallback = finiteNumber(src.fallbackFloorCents);\n if (min !== void 0) out.minFloorCents = min;\n if (max !== void 0) out.maxFloorCents = max;\n if (step !== void 0) out.stepCents = step;\n if (selected !== void 0) out.selectedFloorCents = selected;\n if (fallback !== void 0) out.fallbackFloorCents = fallback;\n if (Array.isArray(src.readyFloorCents)) {\n out.readyFloorCents = src.readyFloorCents.filter(\n (cents) => finiteNumber(cents) !== void 0\n );\n }\n if (Array.isArray(src.allowedPositions)) {\n out.allowedPositions = src.allowedPositions.filter(\n (position) => AD_POSITIONS.indexOf(position) !== -1\n );\n }\n return out;\n}\nvar FloorLadderController = class {\n constructor(selector = fixedFloorSelector) {\n this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;\n this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);\n this.selector = selector;\n }\n isEnabled() {\n return this.config.enabled === true;\n }\n applyApiConfig(raw) {\n const parsed = parseApiFloorLadder(raw);\n this.config = mergeDefined(copyConfig(DISABLED_FLOOR_LADDER_CONFIG), parsed);\n this.bounds = Object.freeze({\n minCents: this.config.minFloorCents,\n maxCents: this.config.maxFloorCents,\n stepCents: this.config.stepCents\n });\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n reset() {\n this.config = copyConfig(DISABLED_FLOOR_LADDER_CONFIG);\n this.bounds = DEFAULT_FLOOR_LADDER_BOUNDS;\n }\n get() {\n return copyConfig(this.config);\n }\n getBounds() {\n return { ...this.bounds };\n }\n validate() {\n return validateFloorLadderConfig(this.config, this.bounds);\n }\n setSelector(selector) {\n this.selector = selector;\n }\n snapshotFor(context) {\n return resolveOpportunityFloor(\n copyConfig(this.config),\n { ...context, bounds: this.bounds },\n this.selector\n );\n }\n};\n\n// src/sdk/hlsAdPlayer.ts\nvar import_hls = __toESM(require(\"hls.js\"), 1);\n\n// src/utils/browserCompat.ts\nfunction getChromeVersion(ua) {\n const match = ua.match(/Chrome\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getWebKitVersion(ua) {\n const match = ua.match(/AppleWebKit\\/(\\d+)/);\n return match && match[1] ? parseInt(match[1], 10) : 0;\n}\nfunction getPlatform() {\n if (\"userAgentData\" in navigator && navigator.userAgentData?.platform) {\n return navigator.userAgentData.platform;\n }\n const ua = navigator.userAgent;\n if (/Mac|iPhone|iPad|iPod/i.test(ua)) {\n return /iPhone|iPad|iPod/i.test(ua) ? \"iPhone\" : \"MacIntel\";\n }\n if (/Win/i.test(ua)) {\n return \"Win32\";\n }\n if (/Linux/i.test(ua)) {\n return /Android/i.test(ua) ? \"Linux armv8l\" : \"Linux x86_64\";\n }\n if (/CrOS/i.test(ua)) {\n return \"CrOS\";\n }\n return navigator.platform || \"Unknown\";\n}\nfunction detectBrowser() {\n const ua = navigator.userAgent;\n const platform = getPlatform();\n let name = \"Unknown\";\n let version = \"0\";\n let majorVersion = 0;\n let isSmartTV = false;\n let isLegacyTV = false;\n let supportsModernJS2 = true;\n let webOSVersion;\n let tizenVersion;\n let chromeVersionNum;\n const chromeVersion = getChromeVersion(ua);\n const webkitVersion = getWebKitVersion(ua);\n chromeVersionNum = chromeVersion > 0 ? chromeVersion : void 0;\n if (/Web0S|webOS|LG Browser|LGSTB/i.test(ua)) {\n name = \"LG WebOS\";\n isSmartTV = true;\n let match = ua.match(/Web0S[/\\s]*([\\d.]+)/i) || ua.match(/webOS[/\\s]*([\\d.]+)/i);\n if (!match || !match[1]) {\n match = ua.match(/webOSTV[/\\s-]*([\\d.]+)/i) || ua.match(/webOS\\.TV[/\\s-]*([\\d.]+)/i);\n }\n if (match && match[1]) {\n version = match[1];\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n webOSVersion = majorVersion;\n } else if (chromeVersion > 0) {\n if (chromeVersion >= 79) {\n webOSVersion = 6;\n version = \"6.0\";\n majorVersion = 6;\n } else if (chromeVersion >= 68) {\n webOSVersion = 5;\n version = \"5.0\";\n majorVersion = 5;\n } else if (chromeVersion >= 53) {\n webOSVersion = 4;\n version = \"4.0\";\n majorVersion = 4;\n } else if (chromeVersion >= 38) {\n webOSVersion = 3;\n version = \"3.0\";\n majorVersion = 3;\n } else {\n webOSVersion = 2;\n version = \"2.0\";\n majorVersion = 2;\n }\n } else {\n version = \"Unknown\";\n webOSVersion = void 0;\n }\n isLegacyTV = webOSVersion !== void 0 && webOSVersion < 3;\n } else if (/Tizen/i.test(ua)) {\n name = \"Samsung Tizen\";\n isSmartTV = true;\n const match = ua.match(/Tizen[/\\s]*([\\d.]+)/i);\n version = match && match[1] ? match[1] : \"Unknown\";\n if (version !== \"Unknown\") {\n const parts = version.split(\".\");\n majorVersion = parts[0] ? parseInt(parts[0], 10) : 0;\n tizenVersion = majorVersion;\n }\n isLegacyTV = tizenVersion !== void 0 && tizenVersion < 3;\n } else if (/SMART-TV|SmartTV/i.test(ua)) {\n name = \"Smart TV\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else if (/NetCast/i.test(ua)) {\n name = \"LG NetCast\";\n isSmartTV = true;\n isLegacyTV = true;\n } else if (/BRAVIA/i.test(ua)) {\n name = \"Sony BRAVIA\";\n isSmartTV = true;\n isLegacyTV = chromeVersion > 0 && chromeVersion < 53;\n } else {\n if (chromeVersion > 0) {\n name = \"Chrome\";\n version = chromeVersion.toString();\n majorVersion = chromeVersion;\n if (chromeVersion < 50) {\n supportsModernJS2 = false;\n }\n }\n if (webkitVersion > 0 && webkitVersion < 600) {\n supportsModernJS2 = false;\n }\n }\n if (typeof Promise === \"undefined\" || typeof Map === \"undefined\" || typeof Set === \"undefined\") {\n supportsModernJS2 = false;\n }\n if (typeof URLSearchParams === \"undefined\") {\n supportsModernJS2 = false;\n }\n return {\n name,\n version,\n majorVersion,\n isSmartTV,\n isLegacyTV,\n platform,\n supportsModernJS: supportsModernJS2,\n webOSVersion,\n tizenVersion,\n chromeVersion: chromeVersionNum\n };\n}\nfunction requiresMediaPipelineResetAfterAds() {\n const browser = detectBrowser();\n return browser.name === \"Samsung Tizen\" && (browser.tizenVersion ?? 0) >= 5;\n}\nfunction getBrowserConfigOverrides() {\n const browser = detectBrowser();\n const overrides = {};\n if (browser.isSmartTV) {\n overrides.allowNativeHls = true;\n overrides.pauseContentDuringAds = true;\n }\n return overrides;\n}\nfunction supportsModernJS() {\n try {\n return typeof Promise !== \"undefined\" && typeof Map !== \"undefined\" && typeof Set !== \"undefined\" && typeof Array.from !== \"undefined\" && typeof Object.assign !== \"undefined\" && typeof Array.prototype.forEach !== \"undefined\" && typeof String.prototype.includes !== \"undefined\";\n } catch (e) {\n return false;\n }\n}\nfunction logBrowserInfo(debug = false) {\n if (!debug) return;\n const browser = detectBrowser();\n console.log(\"[StormcloudVideoPlayer] Browser Compatibility Info:\", {\n browser: `${browser.name} ${browser.version}`,\n platform: browser.platform,\n isSmartTV: browser.isSmartTV,\n isLegacyTV: browser.isLegacyTV,\n supportsModernJS: browser.supportsModernJS,\n ...browser.webOSVersion !== void 0 ? { webOSVersion: browser.webOSVersion } : {},\n ...browser.tizenVersion !== void 0 ? { tizenVersion: browser.tizenVersion } : {},\n ...browser.chromeVersion !== void 0 ? { chromeVersion: browser.chromeVersion } : {},\n userAgent: navigator.userAgent\n });\n}\nfunction supportsFeature(feature) {\n switch (feature) {\n case \"urlsearchparams\":\n return typeof URLSearchParams !== \"undefined\";\n case \"textencoder\":\n return typeof TextEncoder !== \"undefined\";\n case \"promises\":\n return typeof Promise !== \"undefined\";\n case \"fetch\":\n return typeof fetch !== \"undefined\";\n case \"crypto\":\n return typeof crypto !== \"undefined\" && typeof crypto.subtle !== \"undefined\";\n default:\n return false;\n }\n}\n\n// src/utils/vastTrackingMacros.ts\nvar VAST_MACRO_PATTERN = /\\[([A-Z][A-Z0-9_]*)\\]/g;\nvar CACHEBUSTING_ALIASES = /\\[CACHEBUSTER\\]|\\[cachebuster\\]|\\[timestamp\\]|\\[random\\]|\\[INSERT_RANDOM_NUMBER\\]|%%CACHEBUSTER%%|%%CACHEBUST%%|\\$\\{CACHEBUSTER\\}|\\$\\{CACHEBUSTING\\}|\\{cachebuster\\}|\\{random\\}/g;\nvar KNOWN_VAST_MACROS = /* @__PURE__ */ new Set([\n \"ADCATEGORIES\",\n \"ADCOUNT\",\n \"ADPLAYHEAD\",\n \"ADSERVINGID\",\n \"ADTYPE\",\n \"APIFRAMEWORKS\",\n \"APPBUNDLE\",\n \"ASSETURI\",\n \"BLOCKEDADCATEGORIES\",\n \"BREAKMAXADLENGTH\",\n \"BREAKMAXADS\",\n \"BREAKMAXDURATION\",\n \"BREAKMINADLENGTH\",\n \"BREAKPOSITION\",\n \"CACHEBUSTING\",\n \"CLICKPOS\",\n \"CLICKTYPE\",\n \"CLIENTUA\",\n \"CONTENTID\",\n \"CONTENTPLAYHEAD\",\n \"CONTENTURI\",\n \"DEVICEIP\",\n \"DEVICEUA\",\n \"DOMAIN\",\n \"ERRORCODE\",\n \"EXTENSIONS\",\n \"GDPRCONSENT\",\n \"IFA\",\n \"IFATYPE\",\n \"INVENTORYSTATE\",\n \"LATLONG\",\n \"LIMITADTRACKING\",\n \"MEDIAMIME\",\n \"MEDIAPLAYHEAD\",\n \"OMIDPARTNER\",\n \"PAGEURL\",\n \"PLACEMENTTYPE\",\n \"PLAYERCAPABILITIES\",\n \"PLAYERSIZE\",\n \"PLAYERSTATE\",\n \"PODSEQUENCE\",\n \"REASON\",\n \"REGULATIONS\",\n \"SERVERSIDE\",\n \"SERVERUA\",\n \"TIMESTAMP\",\n \"TRANSACTIONID\",\n \"UNIVERSALADID\",\n \"VASTVERSIONS\",\n \"VERIFICATIONVENDORS\"\n]);\nfunction generateCachebuster() {\n return String(Math.floor(Math.random() * 9e7) + 1e7);\n}\nfunction formatPlayhead(seconds) {\n if (seconds == null || !Number.isFinite(seconds) || seconds < 0) {\n return void 0;\n }\n const total = Math.floor(seconds);\n const hh = String(Math.floor(total / 3600)).padStart(2, \"0\");\n const mm = String(Math.floor(total % 3600 / 60)).padStart(2, \"0\");\n const ss = String(total % 60).padStart(2, \"0\");\n const ms = String(Math.floor((seconds - total) * 1e3)).padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\nfunction resolveMacroValues(ctx) {\n const values = /* @__PURE__ */ new Map();\n const set = (key, value) => {\n if (value != null && value !== \"\") values.set(key, value);\n };\n const adPlayhead = formatPlayhead(ctx.adPlayheadSeconds);\n set(\"ADPLAYHEAD\", adPlayhead);\n set(\"MEDIAPLAYHEAD\", adPlayhead);\n set(\"CONTENTPLAYHEAD\", formatPlayhead(ctx.contentPlayheadSeconds));\n set(\"ASSETURI\", ctx.assetUri);\n set(\"MEDIAMIME\", ctx.mediaMime);\n set(\"TIMESTAMP\", (/* @__PURE__ */ new Date()).toISOString());\n set(\"SERVERSIDE\", \"0\");\n if (ctx.errorCode != null && ctx.errorCode !== \"\") {\n set(\"ERRORCODE\", String(ctx.errorCode));\n }\n if (ctx.playerWidth != null && ctx.playerHeight != null) {\n set(\"PLAYERSIZE\", `${Math.round(ctx.playerWidth)},${Math.round(ctx.playerHeight)}`);\n }\n set(\"IFA\", ctx.deviceId);\n set(\"IFATYPE\", ctx.deviceIdType);\n if (ctx.limitAdTracking != null) {\n set(\"LIMITADTRACKING\", ctx.limitAdTracking ? \"1\" : \"0\");\n }\n set(\"PAGEURL\", ctx.pageUrl);\n if (ctx.pageUrl) {\n try {\n set(\"DOMAIN\", new URL(ctx.pageUrl).hostname);\n } catch {\n }\n }\n set(\"CLIENTUA\", ctx.clientUa);\n set(\"DEVICEUA\", ctx.clientUa);\n if (ctx.podSequence != null) {\n set(\"PODSEQUENCE\", String(ctx.podSequence));\n }\n set(\"ADSERVINGID\", ctx.adServingId);\n if (ctx.reason != null && ctx.reason !== \"\") {\n set(\"REASON\", String(ctx.reason));\n }\n return values;\n}\nfunction substituteVastTrackingMacros(url, ctx = {}) {\n if (!url) return url;\n const values = resolveMacroValues(ctx);\n return url.replace(CACHEBUSTING_ALIASES, () => generateCachebuster()).replace(VAST_MACRO_PATTERN, (match, name) => {\n if (name === \"CACHEBUSTING\") return generateCachebuster();\n const value = values.get(name);\n if (value != null) return encodeURIComponent(value);\n return KNOWN_VAST_MACROS.has(name) ? \"\" : match;\n });\n}\n\n// src/player/OptimizedPodRequest.ts\nvar DEFAULT_REQUEST_SAFETY_MS = 1500;\nvar GAM_AD_OPPORTUNITY_DURATION_MS = 3e4;\nvar POD_PARAM_KEYS = [\"pmnd\", \"pmxd\", \"pmad\"];\nvar POSITIVE_INT = /^[1-9]\\d*$/;\nvar NON_NEGATIVE_INT = /^(0|[1-9]\\d*)$/;\nfunction nonNegativeInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : void 0;\n}\nfunction positiveInt(value) {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : void 0;\n}\nfunction resolveAdPodConfig(config) {\n const pod = config.adPodConfig ?? {};\n return {\n requestSafetyMs: nonNegativeInt(pod.requestSafetyMs) ?? DEFAULT_REQUEST_SAFETY_MS,\n minPodDurationMs: nonNegativeInt(pod.minPodDurationMs) ?? 0,\n maxAdsPerBreak: pod.maxAdsPerBreak === void 0 ? positiveInt(config.podMaxAds) : positiveInt(pod.maxAdsPerBreak),\n maxPodDurationMs: positiveInt(pod.maxPodDurationMs) ?? positiveInt(config.podMaxDurationMs),\n exactDuration: config.podExactDuration === true\n };\n}\nfunction measureBreakCapacity(timing, nowMonoMs) {\n const scheduled = timing.scheduledBreakDurationMs;\n if (scheduled == null || !(scheduled > 0) || timing.breakStartMonoMs == null) {\n return void 0;\n }\n const endMonoMs = timing.breakEndMonoMs ?? timing.breakStartMonoMs + scheduled;\n const untilEnd = Math.min(scheduled, endMonoMs - nowMonoMs);\n const unplayed = scheduled - Math.max(0, timing.playedDurationMs);\n return {\n scheduledBreakDurationMs: scheduled,\n elapsedBeforeGamRequestMs: Math.max(0, nowMonoMs - timing.breakStartMonoMs),\n remainingAtGamDispatchMs: Math.max(0, Math.min(untilEnd, unplayed))\n };\n}\nfunction resolvePodParams(input) {\n const { capacity, config } = input;\n let pmxd;\n let source;\n if (capacity) {\n pmxd = Math.floor(capacity.remainingAtGamDispatchMs - config.requestSafetyMs);\n source = \"break_remaining\";\n } else if (config.maxPodDurationMs != null) {\n pmxd = config.maxPodDurationMs;\n source = \"configured_cap\";\n } else if (input.tagMaxDurationMs != null) {\n pmxd = input.tagMaxDurationMs;\n source = \"tag_cap\";\n } else {\n return { kind: \"omit\" };\n }\n const minUsable = Math.max(1, Math.floor(input.minUsablePmxdMs));\n if (!Number.isFinite(pmxd) || pmxd < minUsable) {\n return {\n kind: \"abort\",\n reason: capacity ? \"insufficient_break_capacity\" : \"invalid_pod_cap\",\n pmxdCandidateMs: Number.isFinite(pmxd) ? pmxd : 0\n };\n }\n const pmnd = config.exactDuration ? pmxd : Math.min(config.minPodDurationMs, pmxd);\n return { kind: \"send\", params: { pmnd, pmxd, pmad: config.maxAdsPerBreak }, source };\n}\nfunction podRequestAborted(reason, message, diagnostics) {\n const error = new Error(`Optimized pod request not sent (${reason}): ${message}`);\n error.podRequestAborted = true;\n error.reason = reason;\n error.diagnostics = diagnostics;\n return error;\n}\nfunction isPodRequestAbortedError(error) {\n return !!error && error.podRequestAborted === true;\n}\nfunction firstPositiveIntParam(params, key) {\n for (const value of params.getAll(key)) {\n if (POSITIVE_INT.test(value.trim())) return Number(value.trim());\n }\n return void 0;\n}\nfunction isOptimizedPodUrl(url) {\n if (findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name))) return true;\n try {\n const params = new URL(url).searchParams;\n return POD_PARAM_KEYS.some((key) => params.has(key));\n } catch {\n return false;\n }\n}\nfunction finalizeGamRequestUrl(rawUrl, ctx, nowEpochMs = Date.now()) {\n const optimizedPod = isOptimizedPodUrl(rawUrl);\n const capacity = ctx.capacity;\n const base = {\n breakId: ctx.breakId,\n optimizedPod,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs\n };\n let decision = { kind: \"omit\" };\n if (optimizedPod) {\n let tagMaxDurationMs;\n try {\n tagMaxDurationMs = firstPositiveIntParam(new URL(rawUrl).searchParams, \"pmxd\");\n } catch {\n }\n decision = resolvePodParams({\n capacity,\n config: ctx.config,\n minUsablePmxdMs: ctx.minUsablePmxdMs,\n tagMaxDurationMs\n });\n if (decision.kind === \"abort\") {\n throw podRequestAborted(\n decision.reason,\n `pmxd would be ${decision.pmxdCandidateMs}ms (minimum ${ctx.minUsablePmxdMs}ms)`,\n base\n );\n }\n }\n const pod = decision.kind === \"send\" ? decision.params : void 0;\n const values = /* @__PURE__ */ new Map();\n if (pod) {\n values.set(\"PMND\", String(pod.pmnd));\n values.set(\"PMXD\", String(pod.pmxd));\n if (pod.pmad != null) values.set(\"PMAD\", String(pod.pmad));\n }\n const substituted = substituteScvpMacros(rawUrl, values);\n let finalUrl;\n try {\n const url = new URL(normalizeVastTagUrl(substituted.url));\n if (pod) {\n url.searchParams.set(\"pmnd\", String(pod.pmnd));\n url.searchParams.set(\"pmxd\", String(pod.pmxd));\n if (pod.pmad != null) url.searchParams.set(\"pmad\", String(pod.pmad));\n else url.searchParams.delete(\"pmad\");\n } else {\n for (const key of POD_PARAM_KEYS) url.searchParams.delete(key);\n }\n finalUrl = url.toString();\n } catch {\n throw podRequestAborted(\"invalid_url\", \"GAM request URL could not be parsed\", base);\n }\n const problems = validateGamRequestUrl(finalUrl, {\n optimizedPod: !!pod,\n remainingMs: decision.kind === \"send\" && decision.source === \"break_remaining\" ? capacity?.remainingAtGamDispatchMs : void 0\n });\n if (problems.length > 0) {\n throw podRequestAborted(\"invalid_url\", problems.join(\"; \"), base);\n }\n let givn = null;\n try {\n givn = new URL(finalUrl).searchParams.get(\"givn\");\n } catch {\n }\n return {\n url: finalUrl,\n diagnostics: {\n breakId: ctx.breakId,\n optimizedPod: !!pod,\n pmxdSource: decision.kind === \"send\" ? decision.source : void 0,\n scteBreakDurationMs: capacity?.scheduledBreakDurationMs,\n elapsedBeforeGamRequestMs: capacity?.elapsedBeforeGamRequestMs,\n remainingAtGamDispatchMs: capacity?.remainingAtGamDispatchMs,\n safetyReserveMs: ctx.config.requestSafetyMs,\n pmndSent: pod?.pmnd,\n pmxdSent: pod?.pmxd,\n pmadSent: pod?.pmad,\n palNoncePresent: !!givn,\n gamRequestDispatchTimestamp: new Date(nowEpochMs).toISOString(),\n strippedMacros: substituted.unresolved.filter((name) => !SCVP_POD_MACROS.has(name))\n }\n };\n}\nfunction validateGamRequestUrl(url, expect) {\n const problems = [];\n const leftover = findScvpMacroNames(url);\n if (leftover.length > 0) problems.push(`unresolved SCVP macros: ${leftover.join(\", \")}`);\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n return problems.concat(\"URL could not be parsed\");\n }\n for (const key of POD_PARAM_KEYS) {\n if (params.getAll(key).length > 1) problems.push(`duplicate ${key}`);\n }\n if (!expect.optimizedPod) {\n for (const key of POD_PARAM_KEYS) {\n if (params.has(key)) problems.push(`${key} present on a non-pod request`);\n }\n return problems;\n }\n const pmxd = params.get(\"pmxd\");\n const pmnd = params.get(\"pmnd\");\n const pmad = params.get(\"pmad\");\n if (pmxd == null || !POSITIVE_INT.test(pmxd)) problems.push(`pmxd must be a positive integer (got ${pmxd})`);\n if (pmnd == null || !NON_NEGATIVE_INT.test(pmnd)) problems.push(`pmnd must be a non-negative integer (got ${pmnd})`);\n if (pmxd != null && pmnd != null && Number(pmnd) > Number(pmxd)) problems.push(\"pmnd exceeds pmxd\");\n if (pmad != null && !POSITIVE_INT.test(pmad)) problems.push(`pmad must be a positive integer or absent (got ${pmad})`);\n if (expect.remainingMs != null && pmxd != null && Number(pmxd) > expect.remainingMs) {\n problems.push(`pmxd ${pmxd} exceeds remaining break ${expect.remainingMs}ms`);\n }\n return problems;\n}\nfunction computePodResponseDiagnostics(pmxdSent, vastAdCount, totalVastCreativeDurationMs) {\n const estimatedUnusedPodMs = Math.max(0, pmxdSent - totalVastCreativeDurationMs);\n return {\n vastAdCount,\n totalVastCreativeDurationMs,\n estimatedUnusedPodMs,\n estimatedUnmatchedCount: Math.floor(estimatedUnusedPodMs / GAM_AD_OPPORTUNITY_DURATION_MS)\n };\n}\n\n// src/sdk/hlsAdPlayer.ts\nvar LINEAR_TRACKING_EVENTS = [\n \"creativeView\",\n \"loaded\",\n \"start\",\n \"firstQuartile\",\n \"midpoint\",\n \"thirdQuartile\",\n \"complete\",\n \"mute\",\n \"unmute\",\n \"pause\",\n \"resume\",\n \"fullscreen\",\n \"exitFullscreen\",\n \"playerExpand\",\n \"playerCollapse\",\n \"notUsed\"\n];\nfunction textOf(el) {\n const value = el?.textContent?.trim();\n return value ? value : void 0;\n}\nfunction parseVastTime(value) {\n if (!value) return void 0;\n const parts = value.trim().split(\":\");\n if (parts.length !== 3) return void 0;\n const [h, m, s] = parts.map((p) => parseFloat(p));\n if (![h, m, s].every((n) => n !== void 0 && Number.isFinite(n))) {\n return void 0;\n }\n return h * 3600 + m * 60 + s;\n}\nfunction parseProgressOffset(offset) {\n if (!offset) return void 0;\n const trimmed = offset.trim();\n if (trimmed.endsWith(\"%\")) {\n const percent = parseFloat(trimmed);\n return Number.isFinite(percent) ? { offsetPercent: percent } : void 0;\n }\n const seconds = parseVastTime(trimmed);\n return seconds !== void 0 ? { offsetSeconds: seconds } : void 0;\n}\nvar MAX_VAST_WRAPPER_DEPTH = 5;\nvar VAST_REQUEST_TIMEOUT_MS = 5e3;\nvar BEACON_TIMEOUT_MS = 3e4;\nvar inFlightBeacons = /* @__PURE__ */ new Set();\nvar VAST_ERROR_MEDIA_DISPLAY = 405;\nvar VAST_ERROR_WRAPPER_TIMEOUT = 301;\nvar VAST_ERROR_WRAPPER_LIMIT = 302;\nvar VAST_ERROR_WRAPPER_NO_ADS = 303;\nvar VAST_ERROR_NO_SUPPORTED_MEDIA = 403;\nvar VERIFICATION_NOT_SUPPORTED_REASON = 2;\nvar VIEWABLE_MIN_VISIBLE_RATIO = 0.5;\nvar VIEWABLE_MIN_CONTINUOUS_S = 2;\nfunction toVastMediaErrorCode(error) {\n switch (error?.code) {\n case 1:\n return 400;\n case 2:\n return 401;\n case 4:\n return 403;\n default:\n return VAST_ERROR_MEDIA_DISPLAY;\n }\n}\nvar gamCredentialsMode = \"include\";\nfunction createHlsAdPlayer(contentVideo, options) {\n let adPlaying = false;\n let originalMutedState = false;\n let originalVolume = Math.max(0, Math.min(1, contentVideo.volume || 1));\n const listeners = /* @__PURE__ */ new Map();\n const mainHlsInstance = options?.mainHlsInstance;\n const AD_CONTAINER_PROP = \"__stormcloudAdContainer\";\n const AD_VIDEO_PROP = \"__stormcloudAdVideo\";\n const FRAME_COUNTER_RELIABLE_PROP = \"__stormcloudFrameCounterReliable\";\n const RVFC_RELIABLE_PROP = \"__stormcloudRvfcReliable\";\n let adVideoElement = contentVideo[AD_VIDEO_PROP] ?? void 0;\n let adHls;\n let adContainerEl = contentVideo[AD_CONTAINER_PROP] ?? void 0;\n let adEventHandlers = [];\n let containerHandlers = [];\n let currentAd;\n let currentAdMediaFile;\n let podAds = [];\n let podIndex = 0;\n const preloadedAds = /* @__PURE__ */ new Map();\n const preloadingAds = /* @__PURE__ */ new Map();\n let destroyed = false;\n let pendingTimeouts = [];\n const STALL_TIMEOUT_MS = 4e3;\n const STALL_CHECK_INTERVAL_MS = 1e3;\n const BLACKFRAME_MIN_PLAYBACK_S = 1.5;\n let stallWatchdogId;\n let lastAdProgressTime = 0;\n let lastAdProgressPosition = 0;\n let sawDecodedVideoFrame = false;\n let videoFrameCallbackHandle;\n let pendingPlayPromise;\n let currentVastTagUrl;\n let funnelContext = {};\n let mediaProbe;\n let lastPodAdElementCount = 0;\n let mediaCandidates = [];\n let mediaCandidateIndex = 0;\n let mediaStartTimerId;\n const MEDIA_START_TIMEOUT_MS = options?.mediaStartTimeoutMs ?? 8e3;\n const VAST_ERROR_MEDIA_TIMEOUT = 402;\n const pendingVastRequests = /* @__PURE__ */ new Set();\n let pendingRequestAbortReason;\n let forcedMuteByAutoplay = false;\n function createTrackingState() {\n return {\n impression: false,\n loaded: false,\n start: false,\n firstQuartile: false,\n midpoint: false,\n thirdQuartile: false,\n complete: false,\n viewabilitySettled: false,\n lastMuted: void 0,\n progressFired: /* @__PURE__ */ new Set()\n };\n }\n let trackingFired = createTrackingState();\n const resolvedAds = /* @__PURE__ */ new Set();\n let viewObserver;\n let visibleRatio = 0;\n let continuousVisibleS = 0;\n let lastViewSampleTime;\n let lastPlayerExpanded = false;\n let documentHandlers = [];\n function emit(event, payload) {\n const set = listeners.get(event);\n if (!set) return;\n for (const fn of Array.from(set)) {\n try {\n fn(payload);\n } catch (error) {\n console.warn(\n `[HlsAdPlayer] Error in event listener for ${event}:`,\n error\n );\n }\n }\n }\n const SENSITIVE_URL_PARAMS = /* @__PURE__ */ new Set([\n \"ppid\",\n \"rdid\",\n \"idtype\",\n \"is_lat\",\n \"ifa\",\n \"idfa\",\n \"aaid\",\n \"uid\",\n \"user_id\",\n \"userid\",\n \"device_id\",\n \"deviceid\",\n \"ip\",\n \"ua\",\n \"gdpr_consent\",\n \"us_privacy\",\n \"gpp\",\n \"addtl_consent\",\n \"cust_params\",\n \"email\"\n ]);\n function redactUrl(url) {\n if (!url) return url;\n try {\n const parsed = new URL(url);\n for (const key of Array.from(parsed.searchParams.keys())) {\n if (SENSITIVE_URL_PARAMS.has(key.toLowerCase())) {\n parsed.searchParams.set(key, \"REDACTED\");\n }\n }\n return parsed.toString();\n } catch {\n return url.split(\"?\")[0];\n }\n }\n function logFunnel(stage, extra = {}) {\n const payload = {\n stage,\n breakId: funnelContext.breakId,\n requestId: funnelContext.requestId,\n controllerId: funnelContext.controllerId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n adId: currentAd?.id,\n podIndex,\n podSize: podAds.length,\n vastUrl: redactUrl(currentVastTagUrl),\n mediaUrl: currentAdMediaFile?.url,\n mediaType: currentAdMediaFile?.type,\n muted: adVideoElement ? adVideoElement.muted : void 0,\n ...extra\n };\n console.log(`[HlsAdPlayer][FUNNEL] ${stage}`, payload);\n emit(\"ad_funnel\", payload);\n }\n function buildTrackingMacroContext(options2 = {}) {\n const { errorCode, reason } = options2;\n const ad = options2.ad ?? currentAd;\n const context = {\n adPlayheadSeconds: adVideoElement?.currentTime,\n contentPlayheadSeconds: contentVideo.currentTime,\n assetUri: currentAdMediaFile?.url,\n mediaMime: currentAdMediaFile?.type,\n playerWidth: adVideoElement?.clientWidth || adContainerEl?.clientWidth,\n playerHeight: adVideoElement?.clientHeight || adContainerEl?.clientHeight\n };\n if (errorCode != null) {\n context.errorCode = errorCode;\n }\n if (typeof navigator !== \"undefined\" && navigator.userAgent) {\n context.clientUa = navigator.userAgent;\n }\n if (typeof location !== \"undefined\" && location.href) {\n context.pageUrl = location.href;\n }\n if (podAds.length > 0) {\n context.podSequence = podIndex + 1;\n }\n if (ad?.adServingId) {\n context.adServingId = ad.adServingId;\n }\n if (reason != null) {\n context.reason = reason;\n }\n return context;\n }\n function fireTrackingPixels(urls, options2) {\n if (!urls || urls.length === 0) return;\n const macroContext = buildTrackingMacroContext(options2);\n urls.forEach((url) => {\n try {\n const trackingUrl = substituteVastTrackingMacros(url, macroContext);\n let trackingHost;\n try {\n trackingHost = new URL(trackingUrl).host;\n } catch {\n logFunnel(\"tracking_url_invalid\", { trackingUrl: redactUrl(trackingUrl) });\n return;\n }\n const unexpanded = trackingUrl.match(/\\[[A-Z_]+\\]/g);\n if (unexpanded) {\n logFunnel(\"tracking_url_unexpanded_macro\", {\n trackingHost,\n macros: Array.from(new Set(unexpanded))\n });\n }\n const img = new Image(1, 1);\n inFlightBeacons.add(img);\n let timeoutId;\n const release = (outcome) => {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n img.onload = null;\n img.onerror = null;\n inFlightBeacons.delete(img);\n console.log(\n `[HlsAdPlayer] Tracking pixel settled (${outcome}): ${trackingHost}`\n );\n if (outcome !== \"load\") {\n logFunnel(\"tracking_request_settled\", { reason: outcome, trackingHost });\n }\n };\n img.onload = () => release(\"load\");\n img.onerror = () => release(\"error\");\n timeoutId = setTimeout(\n () => release(\"timeout\"),\n BEACON_TIMEOUT_MS\n );\n img.src = trackingUrl;\n console.log(`[HlsAdPlayer] Fired tracking pixel: ${trackingHost}`);\n logFunnel(\"tracking_request_created\", {\n trackingHost,\n errorCode: options2?.errorCode\n });\n } catch (error) {\n console.warn(`[HlsAdPlayer] Error firing tracking pixel:`, error);\n }\n });\n }\n function getMainStreamQuality() {\n if (!mainHlsInstance || !mainHlsInstance.levels) {\n return null;\n }\n const currentLevel = mainHlsInstance.currentLevel;\n if (currentLevel === -1 || !mainHlsInstance.levels[currentLevel]) {\n const autoLevel = mainHlsInstance.loadLevel;\n if (autoLevel !== -1 && mainHlsInstance.levels[autoLevel]) {\n const level2 = mainHlsInstance.levels[autoLevel];\n return {\n width: level2.width || 1920,\n height: level2.height || 1080,\n bitrate: level2.bitrate || 5e6\n };\n }\n return null;\n }\n const level = mainHlsInstance.levels[currentLevel];\n return {\n width: level.width || 1920,\n height: level.height || 1080,\n bitrate: level.bitrate || 5e6\n };\n }\n function getMediaTargetQuality() {\n const mainQuality = getMainStreamQuality();\n const dpr = typeof window !== \"undefined\" && window.devicePixelRatio > 0 ? window.devicePixelRatio : 1;\n const containerWidth = (adContainerEl?.clientWidth || contentVideo.clientWidth) * dpr;\n const containerHeight = (adContainerEl?.clientHeight || contentVideo.clientHeight) * dpr;\n if (!mainQuality && !(containerWidth > 0 && containerHeight > 0)) {\n return null;\n }\n const base = mainQuality ?? {\n width: containerWidth,\n height: containerHeight,\n bitrate: 5e6\n };\n const width = containerWidth > 0 ? Math.min(base.width, containerWidth) : base.width;\n const height = containerHeight > 0 ? Math.min(base.height, containerHeight) : base.height;\n return { width, height, bitrate: base.bitrate };\n }\n function rankMediaCandidates(mediaFiles) {\n const probe = adVideoElement ?? document.createElement(\"video\");\n const pageIsHttps = typeof location !== \"undefined\" && location.protocol === \"https:\";\n const target = getMediaTargetQuality();\n const accepted = [];\n mediaFiles.forEach((file, index) => {\n const isHls = isHlsMediaFile(file);\n const mimeForProbe = isHls ? \"application/vnd.apple.mpegurl\" : file.type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(mimeForProbe);\n const playable = isHls ? import_hls.default.isSupported() || canPlay2 !== \"\" : canPlay2 !== \"\";\n const insecure = pageIsHttps && /^http:/i.test(file.url);\n const details = {\n index,\n candidateUrl: file.url,\n candidateType: file.type,\n width: file.width,\n height: file.height,\n bitrate: file.bitrate,\n canPlayType: canPlay2,\n hlsJs: isHls ? import_hls.default.isSupported() : void 0\n };\n if (!playable) {\n logFunnel(\"media_candidate\", { ...details, reason: \"rejected\", why: \"cannot_play_type\" });\n return;\n }\n let score = 0;\n if (target) {\n const resolutionDiff = Math.abs(file.width - target.width) + Math.abs(file.height - target.height);\n const bitrateDiff = Math.abs((file.bitrate || 5e3) * 1e3 - target.bitrate);\n score = resolutionDiff * 2 + bitrateDiff / 1e3;\n }\n accepted.push({ file, score, insecure });\n logFunnel(\"media_candidate\", {\n ...details,\n reason: \"accepted\",\n why: insecure ? \"insecure_http_deprioritized\" : \"playable\",\n score\n });\n });\n accepted.sort((a, b) => {\n if (a.insecure !== b.insecure) return a.insecure ? 1 : -1;\n return a.score - b.score;\n });\n return accepted.map((entry) => entry.file);\n }\n function isHlsMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type === \"application/x-mpegurl\" || type === \"application/vnd.apple.mpegurl\" || type.includes(\"mpegurl\") || url.includes(\".m3u8\");\n }\n function isProgressiveMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = mediaFile.url.toLowerCase();\n return type.startsWith(\"video/\") || url.endsWith(\".mp4\") || url.includes(\".mp4?\");\n }\n function isAudioMediaFile(mediaFile) {\n const type = mediaFile.type.toLowerCase();\n const url = (mediaFile.url.toLowerCase().split(\"?\")[0] || \"\").trim();\n return type.startsWith(\"audio/\") || url.endsWith(\".mp3\") || url.endsWith(\".aac\") || url.endsWith(\".m4a\") || url.endsWith(\".ogg\") || url.endsWith(\".oga\") || url.endsWith(\".opus\") || url.endsWith(\".wav\") || url.endsWith(\".weba\");\n }\n function getMediaProbe() {\n if (adVideoElement) return adVideoElement;\n if (!mediaProbe && typeof document !== \"undefined\") {\n mediaProbe = document.createElement(\"video\");\n }\n return mediaProbe;\n }\n function evaluateMediaFile(mf) {\n const type = mf.getAttribute(\"type\") || \"\";\n const url = mf.textContent?.trim() || \"\";\n const delivery = mf.getAttribute(\"delivery\") || void 0;\n const codec = mf.getAttribute(\"codec\") || void 0;\n if (!url) {\n return { category: \"missing_media\", whyRejected: \"empty_url\", canPlayType: \"\" };\n }\n const apiFramework = (mf.getAttribute(\"apiFramework\") || \"\").toUpperCase();\n if (apiFramework === \"VPAID\") {\n return { category: \"vpaid\", whyRejected: \"vpaid_not_supported\", canPlayType: \"\" };\n }\n try {\n const protocol = new URL(url).protocol;\n if (protocol !== \"https:\" && protocol !== \"http:\") {\n return { category: \"invalid_url\", whyRejected: `protocol_${protocol}`, canPlayType: \"\" };\n }\n } catch {\n return { category: \"invalid_url\", whyRejected: \"unparseable_url\", canPlayType: \"\" };\n }\n const bitrateAttr = mf.getAttribute(\"bitrate\");\n const bitrateValue = bitrateAttr ? parseInt(bitrateAttr, 10) : void 0;\n const file = {\n url,\n type,\n width: parseInt(mf.getAttribute(\"width\") || \"1920\", 10),\n height: parseInt(mf.getAttribute(\"height\") || \"1080\", 10),\n bitrate: bitrateValue && bitrateValue > 0 ? bitrateValue : void 0,\n delivery,\n codec\n };\n if (isAudioMediaFile(file)) {\n return {\n category: \"audio_only\",\n whyRejected: type.toLowerCase().startsWith(\"audio/\") ? \"audio_mime\" : \"audio_extension\",\n canPlayType: \"\"\n };\n }\n const isHls = isHlsMediaFile(file);\n const hasExplicitDimensions = mf.getAttribute(\"width\") != null && mf.getAttribute(\"height\") != null;\n if (!isHls && hasExplicitDimensions && (file.width <= 1 || file.height <= 1)) {\n return { category: \"audio_only\", whyRejected: \"zero_dimensions\", canPlayType: \"\" };\n }\n const probe = getMediaProbe();\n if (isHls) {\n const nativeHls = probe?.canPlayType(\"application/vnd.apple.mpegurl\") ?? \"\";\n if (import_hls.default.isSupported()) {\n return { file, whyAccepted: \"hls_js\", canPlayType: nativeHls };\n }\n if (nativeHls !== \"\") {\n return { file, whyAccepted: \"native_hls\", canPlayType: nativeHls };\n }\n return { category: \"unsupported_hls\", whyRejected: \"no_hls_support\", canPlayType: nativeHls };\n }\n if (!isProgressiveMediaFile(file)) {\n return { category: \"unsupported_mime\", whyRejected: \"not_a_video_mime\", canPlayType: \"\" };\n }\n if (!probe) {\n return { file, whyAccepted: \"no_probe_available\", canPlayType: \"\" };\n }\n const baseType = type || \"video/mp4\";\n const canPlay2 = probe.canPlayType(baseType);\n if (canPlay2 === \"\") {\n return { category: \"unsupported_mime\", whyRejected: \"canPlayType_empty\", canPlayType: canPlay2 };\n }\n if (codec) {\n const withCodec = probe.canPlayType(`${baseType}; codecs=\"${codec}\"`);\n if (withCodec === \"\") {\n return { category: \"unsupported_codec\", whyRejected: \"codec_canPlayType_empty\", canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${withCodec}`, canPlayType: withCodec };\n }\n return { file, whyAccepted: `canPlayType_${canPlay2}`, canPlayType: canPlay2 };\n }\n function collectVideoMediaFiles(linear, verbose, stats) {\n const mediaFileElements = linear.querySelectorAll(\n \":scope > MediaFiles > MediaFile\"\n );\n const mediaFiles = [];\n if (stats) stats.total += mediaFileElements.length;\n if (verbose) {\n console.log(\n `[HlsAdPlayer] Found ${mediaFileElements.length} MediaFile element(s) in VAST XML`\n );\n }\n mediaFileElements.forEach((mf, index) => {\n const result = evaluateMediaFile(mf);\n const url = mf.textContent?.trim() || \"\";\n const accepted = \"file\" in result;\n logFunnel(\"mediafile_evaluated\", {\n reason: accepted ? \"accepted\" : result.category,\n index,\n type: mf.getAttribute(\"type\") || \"\",\n delivery: mf.getAttribute(\"delivery\") || void 0,\n codec: mf.getAttribute(\"codec\") || void 0,\n apiFramework: mf.getAttribute(\"apiFramework\") || void 0,\n width: mf.getAttribute(\"width\"),\n height: mf.getAttribute(\"height\"),\n fileUrl: redactUrl(url),\n canPlayType: result.canPlayType,\n whyAccepted: accepted ? result.whyAccepted : void 0,\n whyRejected: accepted ? void 0 : result.whyRejected\n });\n if (\"file\" in result) {\n mediaFiles.push(result.file);\n return;\n }\n if (stats) {\n stats.categories[result.category] = (stats.categories[result.category] ?? 0) + 1;\n }\n if (result.category === \"audio_only\") {\n console.warn(\n `[HlsAdPlayer] MediaFile ${index} skipped (audio-only: ${result.whyRejected}, type=\"${mf.getAttribute(\"type\") || \"\"}\") \\u2014 audio-only ads are not played on video inventory`\n );\n }\n });\n return mediaFiles;\n }\n function createEmptyTrackingUrls() {\n const urls = {\n impression: [],\n clickTracking: [],\n error: [],\n viewable: [],\n notViewable: [],\n viewUndetermined: [],\n verificationNotExecuted: [],\n progress: []\n };\n for (const event of LINEAR_TRACKING_EVENTS) {\n urls[event] = [];\n }\n return urls;\n }\n function pushUrls(target, elements) {\n elements.forEach((el) => {\n const url = textOf(el);\n if (url) target.push(url);\n });\n }\n function collectLinearTracking(linear, into) {\n linear.querySelectorAll(\":scope > TrackingEvents > Tracking\").forEach((el) => {\n const event = el.getAttribute(\"event\");\n const url = textOf(el);\n if (!event || !url) return;\n if (event === \"progress\") {\n const offset = parseProgressOffset(el.getAttribute(\"offset\"));\n if (offset) into.progress.push({ url, ...offset });\n return;\n }\n if (LINEAR_TRACKING_EVENTS.indexOf(event) !== -1) {\n into[event].push(url);\n }\n });\n pushUrls(\n into.clickTracking,\n linear.querySelectorAll(\":scope > VideoClicks > ClickTracking\")\n );\n }\n function collectAdLevelTracking(adBody, into) {\n pushUrls(into.impression, adBody.querySelectorAll(\":scope > Impression\"));\n pushUrls(into.error, adBody.querySelectorAll(\":scope > Error\"));\n pushUrls(\n into.viewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > Viewable\")\n );\n pushUrls(\n into.notViewable,\n adBody.querySelectorAll(\":scope > ViewableImpression > NotViewable\")\n );\n pushUrls(\n into.viewUndetermined,\n adBody.querySelectorAll(\":scope > ViewableImpression > ViewUndetermined\")\n );\n adBody.querySelectorAll(\n ':scope > AdVerifications > Verification, :scope > Extensions > Extension[type=\"AdVerifications\"] > AdVerifications > Verification'\n ).forEach((verification) => {\n pushUrls(\n into.verificationNotExecuted,\n verification.querySelectorAll(\n ':scope > TrackingEvents > Tracking[event=\"verificationNotExecuted\"]'\n )\n );\n });\n }\n function mergeTrackingUrls(target, source) {\n const targetLists = target;\n const sourceLists = source;\n for (const key of Object.keys(targetLists)) {\n const incoming = sourceLists[key];\n if (incoming && incoming.length > 0) {\n targetLists[key] = targetLists[key].concat(incoming);\n }\n }\n return target;\n }\n function parseXml(xmlString) {\n const xmlDoc = new DOMParser().parseFromString(xmlString, \"text/xml\");\n const parserError = xmlDoc.querySelector(\"parsererror\");\n if (parserError) {\n console.error(\n \"[HlsAdPlayer] XML parsing error (malformed VAST XML):\",\n parserError.textContent\n );\n return null;\n }\n return xmlDoc;\n }\n function getAdSequence(adElement) {\n const sequence = parseInt(adElement.getAttribute(\"sequence\") || \"\", 10);\n return Number.isFinite(sequence) ? sequence : void 0;\n }\n function emptyVastResult(root) {\n const errorUrls = [];\n pushUrls(errorUrls, root.querySelectorAll(\":scope > Error\"));\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_WRAPPER_NO_ADS };\n }\n function parseVastXml(xmlString) {\n try {\n const xmlDoc = parseXml(xmlString);\n if (!xmlDoc) return { type: \"empty\" };\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No Ad element found in VAST ${root.getAttribute(\"version\") ?? \"\"} response`\n );\n return emptyVastResult(root);\n }\n const ordered = [\n ...adElements.filter((el) => getAdSequence(el) === void 0),\n ...adElements.filter((el) => getAdSequence(el) !== void 0)\n ];\n let firstEmpty;\n for (const [index, adElement] of ordered.entries()) {\n const parsed = parseAdElement(adElement, true);\n if (parsed.type === \"empty\") {\n firstEmpty ?? (firstEmpty = parsed);\n continue;\n }\n if (index > 0) {\n logFunnel(\"vast_ad_fallback\", {\n usedAdIndex: index,\n adCount: ordered.length\n });\n }\n if (parsed.type === \"wrapper\") {\n console.log(\n `[HlsAdPlayer] VAST wrapper detected, following VASTAdTagURI: ${redactUrl(parsed.vastAdTagUri)}`\n );\n }\n return parsed;\n }\n return firstEmpty ?? emptyVastResult(root);\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing VAST XML:\", error);\n return { type: \"empty\" };\n }\n }\n function parseAdElement(adElement, verbose = false) {\n try {\n const wrapper = adElement.querySelector(\":scope > Wrapper\");\n if (wrapper) {\n const vastAdTagUri = textOf(\n wrapper.querySelector(\":scope > VASTAdTagURI\")\n );\n if (!vastAdTagUri) {\n console.warn(\"[HlsAdPlayer] <Wrapper> has no VASTAdTagURI\");\n return { type: \"empty\" };\n }\n const trackingUrls2 = createEmptyTrackingUrls();\n collectAdLevelTracking(wrapper, trackingUrls2);\n wrapper.querySelectorAll(\":scope > Creatives > Creative > Linear\").forEach((linear2) => collectLinearTracking(linear2, trackingUrls2));\n return {\n type: \"wrapper\",\n vastAdTagUri,\n trackingUrls: trackingUrls2,\n rules: {\n followAdditionalWrappers: wrapper.getAttribute(\"followAdditionalWrappers\") !== \"false\"\n }\n };\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) {\n console.warn(\"[HlsAdPlayer] <Ad> has neither <InLine> nor <Wrapper>\");\n return { type: \"empty\" };\n }\n const errorUrls = [];\n pushUrls(errorUrls, inLine.querySelectorAll(\":scope > Error\"));\n if (adElement.getAttribute(\"conditionalAd\") === \"true\") {\n console.warn(\"[HlsAdPlayer] Skipping conditional <Ad> (VPAID-only)\");\n logFunnel(\"vast_no_supported_media\", { reason: \"vpaid\", conditionalAd: true });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n let linear;\n let mediaFiles = [];\n const rejectStats = { total: 0, categories: {} };\n for (const candidate of Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear\")\n )) {\n const files = collectVideoMediaFiles(candidate, verbose, rejectStats);\n if (files.length > 0) {\n linear = candidate;\n mediaFiles = files;\n break;\n }\n }\n if (!linear) {\n console.warn(\"[HlsAdPlayer] No supported linear media files in <Ad>\");\n let reason = \"missing_media\";\n let top = 0;\n for (const category of Object.keys(rejectStats.categories)) {\n const count = rejectStats.categories[category] ?? 0;\n if (count > top) {\n top = count;\n reason = category;\n }\n }\n if (rejectStats.total > 0 && top === 0) reason = \"other\";\n logFunnel(\"vast_no_supported_media\", {\n reason,\n mediaFileCount: rejectStats.total,\n rejectedByCategory: rejectStats.categories\n });\n return { type: \"empty\", errorUrls, errorCode: VAST_ERROR_NO_SUPPORTED_MEDIA };\n }\n const trackingUrls = createEmptyTrackingUrls();\n collectAdLevelTracking(inLine, trackingUrls);\n collectLinearTracking(linear, trackingUrls);\n return {\n type: \"inline\",\n ad: {\n id: adElement.getAttribute(\"id\") || \"unknown\",\n title: textOf(inLine.querySelector(\":scope > AdTitle\")) || \"Ad\",\n duration: parseVastTime(textOf(linear.querySelector(\":scope > Duration\"))) ?? 30,\n mediaFiles,\n trackingUrls,\n clickThrough: textOf(\n linear.querySelector(\":scope > VideoClicks > ClickThrough\")\n ),\n adServingId: textOf(inLine.querySelector(\":scope > AdServingId\"))\n }\n };\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error parsing <Ad> element:\", error);\n return { type: \"empty\" };\n }\n }\n async function fetchVastXml(vastTagUrl, credentials = \"include\", kind = \"gam\", finalizeRequestUrl) {\n if (destroyed) {\n throw new Error(\"VAST request skipped: ad player destroyed\");\n }\n const controller = typeof AbortController !== \"undefined\" ? new AbortController() : void 0;\n if (controller) pendingVastRequests.add(controller);\n const timeoutId = controller ? setTimeout(() => controller.abort(), VAST_REQUEST_TIMEOUT_MS) : void 0;\n const startedAt = Date.now();\n let attempt = 0;\n const resolveDispatchUrl = () => {\n if (kind === \"wrapper\") return vastTagUrl;\n if (finalizeRequestUrl) return finalizeRequestUrl(vastTagUrl, attempt);\n const { url, unresolved } = stripScvpMacros(vastTagUrl);\n if (unresolved.length > 0) {\n console.warn(\"[HlsAdPlayer] Removed unresolved SCVP macros before dispatch:\", unresolved.join(\", \"));\n }\n return url;\n };\n const requestVast = async (creds) => {\n attempt++;\n const pending = fetch(resolveDispatchUrl(), {\n mode: \"cors\",\n credentials: creds,\n headers: {\n \"Accept\": \"application/xml, text/xml, */*\"\n },\n referrerPolicy: \"no-referrer-when-downgrade\",\n ...controller ? { signal: controller.signal } : {}\n });\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_http_request_sent`, { attempt, credentials: creds });\n }\n const response = await pending;\n if (kind !== \"wrapper\") {\n logFunnel(`${kind}_response_received`, {\n attempt,\n httpStatus: response.status,\n ok: response.ok,\n elapsedMs: Date.now() - startedAt\n });\n }\n return response;\n };\n try {\n let response;\n try {\n response = await requestVast(credentials);\n } catch (error) {\n if (kind === \"gam\" && !controller?.signal.aborted && !isPodRequestAbortedError(error)) {\n gamCredentialsMode = credentials === \"include\" ? \"omit\" : \"include\";\n console.warn(\n `[HlsAdPlayer] GAM fetch failed with credentials=\"${credentials}\"; next GAM request will use credentials=\"${gamCredentialsMode}\":`,\n error\n );\n logFunnel(\"gam_credentials_mode_changed\", {\n from: credentials,\n to: gamCredentialsMode,\n errorMessage: error?.message\n });\n }\n throw error;\n }\n if (!response.ok) {\n throw new Error(\n `Failed to fetch VAST: HTTP ${response.status} ${response.statusText}`\n );\n }\n return await response.text();\n } catch (error) {\n if (controller?.signal.aborted) {\n if (pendingRequestAbortReason) {\n throw new Error(`${pendingRequestAbortReason}: ${vastTagUrl}`);\n }\n throw new Error(\n `VAST request timeout after ${VAST_REQUEST_TIMEOUT_MS}ms: ${vastTagUrl}`\n );\n }\n throw error;\n } finally {\n if (timeoutId !== void 0) clearTimeout(timeoutId);\n if (controller) pendingVastRequests.delete(controller);\n }\n }\n async function fetchAndParseVastAd(vastTagUrl, depth = 0, accumulatedTracking = createEmptyTrackingUrls(), rules = { followAdditionalWrappers: true }) {\n if (destroyed) return null;\n let vastXml;\n const fetchStartedAt = Date.now();\n try {\n vastXml = await fetchVastXml(\n vastTagUrl,\n depth === 0 ? \"include\" : \"omit\",\n depth === 0 ? \"gam\" : \"wrapper\"\n );\n } catch (error) {\n if (depth === 0) throw error;\n console.warn(\"[HlsAdPlayer] Wrapped VAST request failed:\", error);\n logFunnel(\"wrapper_fetch\", {\n reason: \"failure\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt,\n errorMessage: error?.message\n });\n if (!destroyed) {\n fireTrackingPixels(accumulatedTracking.error, {\n errorCode: VAST_ERROR_WRAPPER_TIMEOUT\n });\n }\n return null;\n }\n if (destroyed) return null;\n if (depth > 0) {\n logFunnel(\"wrapper_fetch\", {\n reason: \"success\",\n depth,\n wrapperUrl: redactUrl(vastTagUrl),\n elapsedMs: Date.now() - fetchStartedAt\n });\n }\n console.log(`[HlsAdPlayer] VAST XML received (length=${vastXml.length})`);\n const parsed = parseVastXml(vastXml);\n if (parsed.type === \"empty\") {\n fireTrackingPixels(\n (parsed.errorUrls ?? []).concat(accumulatedTracking.error),\n { errorCode: parsed.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS }\n );\n return null;\n }\n if (parsed.type === \"wrapper\") {\n if (depth >= MAX_VAST_WRAPPER_DEPTH || !rules.followAdditionalWrappers) {\n console.warn(\n rules.followAdditionalWrappers ? `[HlsAdPlayer] VAST wrapper depth limit (${MAX_VAST_WRAPPER_DEPTH}) reached, aborting redirect chain` : '[HlsAdPlayer] Parent wrapper set followAdditionalWrappers=\"false\"; rejecting nested wrapper'\n );\n fireTrackingPixels(\n accumulatedTracking.error.concat(parsed.trackingUrls.error),\n { errorCode: VAST_ERROR_WRAPPER_LIMIT }\n );\n return null;\n }\n mergeTrackingUrls(accumulatedTracking, parsed.trackingUrls);\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n depth + 1,\n accumulatedTracking,\n parsed.rules\n );\n }\n mergeTrackingUrls(parsed.ad.trackingUrls, accumulatedTracking);\n logFunnel(\"inline_resolved\", { depth });\n return parsed.ad;\n }\n function isEdgeEmptySentinelAd(adElement) {\n if ((adElement.getAttribute(\"id\") || \"\").trim().toLowerCase() === \"empty\") {\n return true;\n }\n const inLine = adElement.querySelector(\":scope > InLine\");\n if (!inLine) return false;\n if (/^no ad available$/i.test(textOf(inLine.querySelector(\":scope > AdTitle\")) ?? \"\")) {\n return true;\n }\n const durations = Array.from(\n inLine.querySelectorAll(\":scope > Creatives > Creative > Linear > Duration\")\n ).map((el) => parseVastTime(textOf(el)));\n return durations.length > 0 && durations.every((seconds) => seconds === 0);\n }\n async function fetchAndParsePod(vastTagUrl, source = \"gam\", finalizeRequestUrl) {\n lastPodAdElementCount = 0;\n const isEdge = source === \"edge\";\n const vastXml = await fetchVastXml(\n vastTagUrl,\n isEdge ? \"omit\" : gamCredentialsMode,\n source,\n finalizeRequestUrl\n );\n if (destroyed) return [];\n console.log(\n `[HlsAdPlayer] Pod VAST XML received (length=${vastXml.length})`\n );\n const trimmedXml = vastXml.trim();\n if (trimmedXml.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Pod VAST response body is empty (no fill)\"\n );\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"empty_body\" });\n return [];\n }\n const xmlDoc = parseXml(vastXml);\n if (!xmlDoc) {\n logFunnel(\"vast_parsed\", { adElementCount: 0, reason: \"xml_parse_error\" });\n return [];\n }\n const root = xmlDoc.documentElement;\n const adElements = Array.from(root.querySelectorAll(\":scope > Ad\"));\n logFunnel(\"vast_parsed\", {\n reason: adElements.length > 0 ? \"has_ads\" : \"no_ads\",\n vastVersion: root.getAttribute(\"version\") ?? void 0,\n adElementCount: adElements.length,\n inlineCount: adElements.filter((el) => el.querySelector(\":scope > InLine\")).length,\n wrapperCount: adElements.filter((el) => el.querySelector(\":scope > Wrapper\")).length\n });\n if (adElements.length === 0) {\n console.warn(\n `[HlsAdPlayer] No <Ad> elements in VAST ${root.getAttribute(\"version\") ?? \"\"} pod response (no fill)`\n );\n const empty = emptyVastResult(root);\n if (empty.type === \"empty\" && empty.errorUrls?.length) {\n fireTrackingPixels(empty.errorUrls, {\n errorCode: empty.errorCode ?? VAST_ERROR_WRAPPER_NO_ADS\n });\n }\n return [];\n }\n const resolveAd = async (adElement) => {\n const parsed = parseAdElement(adElement);\n if (parsed.type === \"inline\") {\n logFunnel(\"inline_resolved\", { depth: 0 });\n return parsed.ad;\n }\n if (parsed.type === \"wrapper\") {\n return fetchAndParseVastAd(\n parsed.vastAdTagUri,\n 1,\n parsed.trackingUrls,\n parsed.rules\n );\n }\n if (parsed.errorUrls?.length) {\n fireTrackingPixels(parsed.errorUrls, {\n errorCode: parsed.errorCode ?? VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n }\n return null;\n };\n let candidates = adElements;\n if (isEdge) {\n candidates = adElements.filter((el) => !isEdgeEmptySentinelAd(el));\n if (candidates.length < adElements.length) {\n logFunnel(\"edge_empty_sentinel\", {\n sentinelCount: adElements.length - candidates.length,\n adElementCount: adElements.length\n });\n }\n }\n const podElements = candidates.filter((el) => getAdSequence(el) !== void 0).sort((a, b) => getAdSequence(a) - getAdSequence(b));\n const buffet = candidates.filter((el) => getAdSequence(el) === void 0);\n const resolveAll = (elements) => Promise.all(elements.map((el) => resolveAd(el).catch(() => null)));\n const ads = [];\n if (podElements.length === 0) {\n for (const ad of await resolveAll(buffet)) {\n if (ad) ads.push(ad);\n }\n } else {\n for (let ad of await resolveAll(podElements)) {\n while (!ad && buffet.length > 0) {\n ad = await resolveAd(buffet.shift()).catch(() => null);\n }\n if (ad) ads.push(ad);\n }\n }\n console.log(\n `[HlsAdPlayer] Parsed ${ads.length} ad(s) from VAST ${root.getAttribute(\"version\") ?? \"\"} pod response`\n );\n lastPodAdElementCount = adElements.length;\n return isEdge ? ads.filter((ad) => ad.duration > 0) : ads;\n }\n function createAdVideoElement() {\n const video = document.createElement(\"video\");\n video.style.position = \"absolute\";\n video.style.left = \"0\";\n video.style.top = \"0\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.objectFit = \"contain\";\n video.style.backgroundColor = \"#000\";\n video.playsInline = true;\n video.muted = false;\n video.volume = 1;\n console.log(\n `[HlsAdPlayer] Created ad video element with volume ${video.volume}`\n );\n return video;\n }\n function setupAdEventListeners() {\n if (!adVideoElement || !currentAd) return;\n if (adEventHandlers.length > 0) return;\n const onTimeUpdate = () => {\n if (!currentAd || !adVideoElement) return;\n noteAdProgress();\n sampleViewability();\n const currentTime = adVideoElement.currentTime;\n if (trackingFired.start) {\n for (const event of currentAd.trackingUrls.progress) {\n if (trackingFired.progressFired.has(event)) continue;\n const threshold = event.offsetSeconds ?? (event.offsetPercent ?? 0) / 100 * currentAd.duration;\n if (currentTime >= threshold) {\n trackingFired.progressFired.add(event);\n fireTrackingPixels([event.url]);\n }\n }\n }\n if (!(currentAd.duration > 0)) return;\n const progress = currentTime / currentAd.duration;\n if (progress >= 0.25 && !trackingFired.firstQuartile) {\n trackingFired.firstQuartile = true;\n logFunnel(\"first_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.firstQuartile);\n }\n if (progress >= 0.5 && !trackingFired.midpoint) {\n trackingFired.midpoint = true;\n logFunnel(\"midpoint\");\n fireTrackingPixels(currentAd.trackingUrls.midpoint);\n }\n if (progress >= 0.75 && !trackingFired.thirdQuartile) {\n trackingFired.thirdQuartile = true;\n logFunnel(\"third_quartile\");\n fireTrackingPixels(currentAd.trackingUrls.thirdQuartile);\n }\n };\n const onLoadedMetadata = () => {\n if (!adPlaying || !adVideoElement) return;\n const { videoWidth, videoHeight } = adVideoElement;\n if (videoWidth <= 1 || videoHeight <= 1) {\n console.warn(\n `[HlsAdPlayer] Ad creative has no usable video dimensions (${videoWidth}x${videoHeight}) - skipping this creative`\n );\n handleVideoDecodeFailure();\n }\n };\n const onCanPlay = () => {\n if (!currentAd || trackingFired.loaded) return;\n trackingFired.loaded = true;\n fireTrackingPixels(currentAd.trackingUrls.loaded);\n };\n const onPlaying = () => {\n startStallWatchdog();\n if (!currentAd || !adVideoElement) return;\n if (!trackingFired.impression) {\n trackingFired.impression = true;\n resolvedAds.add(currentAd);\n logFunnel(\"playing\", {\n mutedByAutoplay: forcedMuteByAutoplay,\n candidateIndex: mediaCandidateIndex\n });\n logFunnel(\"impression_fired\", {\n pixelCount: currentAd.trackingUrls.impression.length\n });\n if (currentAd.trackingUrls.impression.length === 0) {\n console.warn(\n \"[HlsAdPlayer] Ad started but VAST contained no <Impression> URLs - GAM will not count it\"\n );\n }\n fireTrackingPixels(currentAd.trackingUrls.impression);\n fireTrackingPixels(currentAd.trackingUrls.creativeView);\n fireTrackingPixels(currentAd.trackingUrls.verificationNotExecuted, {\n reason: VERIFICATION_NOT_SUPPORTED_REASON\n });\n emit(\"ad_impression\", {\n adId: currentAd.id,\n index: podIndex,\n total: podAds.length || 1\n });\n }\n if (trackingFired.start) return;\n trackingFired.start = true;\n trackingFired.lastMuted = adVideoElement.muted || adVideoElement.volume === 0;\n fireTrackingPixels(currentAd.trackingUrls.start);\n console.log(\"[HlsAdPlayer] Ad started playing\");\n };\n const onEnded = () => {\n if (!currentAd || trackingFired.complete) return;\n sampleViewability();\n settleViewability();\n trackingFired.complete = true;\n logFunnel(\"complete\");\n fireTrackingPixels(currentAd.trackingUrls.complete);\n console.log(\"[HlsAdPlayer] Ad completed\");\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) {\n return;\n }\n handleAdComplete();\n };\n const onError = (e) => {\n if (!adPlaying) return;\n console.error(\"[HlsAdPlayer] Ad video error:\", e);\n const vastErrorCode = toVastMediaErrorCode(adVideoElement?.error);\n logFunnel(\"media_error\", {\n mediaErrorCode: adVideoElement?.error?.code,\n errorMessage: adVideoElement?.error?.message,\n networkState: adVideoElement?.networkState,\n readyState: adVideoElement?.readyState,\n currentSrc: adVideoElement?.currentSrc,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n };\n const onMediaDiagnostic = (event) => {\n if (!adPlaying || !adVideoElement || trackingFired.impression) return;\n if (!adVideoElement.currentSrc) return;\n logFunnel(\"media_event\", {\n reason: event.type,\n readyState: adVideoElement.readyState,\n networkState: adVideoElement.networkState,\n currentSrc: adVideoElement.currentSrc\n });\n };\n const onVolumeChange = () => {\n if (!currentAd || !adVideoElement) return;\n if (forcedMuteByAutoplay && !adVideoElement.muted) {\n const userActivation = navigator.userActivation;\n if (userActivation && !userActivation.isActive) {\n logFunnel(\"unexpected_unmute\", { paused: adVideoElement.paused });\n }\n forcedMuteByAutoplay = false;\n }\n const muted = adVideoElement.muted || adVideoElement.volume === 0;\n if (!trackingFired.start) {\n trackingFired.lastMuted = muted;\n return;\n }\n if (muted === trackingFired.lastMuted) return;\n trackingFired.lastMuted = muted;\n fireTrackingPixels(\n muted ? currentAd.trackingUrls.mute : currentAd.trackingUrls.unmute\n );\n };\n const isTrackablePlayback = () => adPlaying && !!currentAd && !!adVideoElement && trackingFired.start && !trackingFired.complete && !adVideoElement.ended;\n const onPause = () => {\n continuousVisibleS = 0;\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.pause);\n }\n };\n const onPlay = () => {\n if (isTrackablePlayback()) {\n fireTrackingPixels(currentAd.trackingUrls.resume);\n }\n };\n adEventHandlers = [\n { type: \"timeupdate\", handler: onTimeUpdate },\n { type: \"loadedmetadata\", handler: onLoadedMetadata },\n { type: \"canplay\", handler: onCanPlay },\n { type: \"playing\", handler: onPlaying },\n { type: \"ended\", handler: onEnded },\n { type: \"error\", handler: onError },\n { type: \"volumechange\", handler: onVolumeChange },\n { type: \"pause\", handler: onPause },\n { type: \"play\", handler: onPlay },\n { type: \"stalled\", handler: onMediaDiagnostic },\n { type: \"suspend\", handler: onMediaDiagnostic },\n { type: \"abort\", handler: onMediaDiagnostic },\n { type: \"emptied\", handler: onMediaDiagnostic }\n ];\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.addEventListener(type, handler);\n }\n }\n function teardownAdEventListeners() {\n if (adVideoElement) {\n for (const { type, handler } of adEventHandlers) {\n adVideoElement.removeEventListener(type, handler);\n }\n }\n adEventHandlers = [];\n }\n function handleAdClick() {\n if (!adPlaying || !currentAd) return;\n fireTrackingPixels(currentAd.trackingUrls.clickTracking);\n emit(\"ad_click\", { adId: currentAd.id, clickThrough: currentAd.clickThrough });\n if (currentAd.clickThrough) {\n try {\n window.open(currentAd.clickThrough, \"_blank\", \"noopener\");\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Failed to open ClickThrough URL:\", error);\n }\n }\n }\n function reportCurrentAdError(errorCode) {\n if (!currentAd) return;\n resolvedAds.add(currentAd);\n fireTrackingPixels(currentAd.trackingUrls.error, { errorCode });\n }\n function fireNotUsedForUnplayedAds() {\n for (const ad of podAds) {\n if (resolvedAds.has(ad)) continue;\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n function sampleViewability() {\n if (!currentAd || !adVideoElement || !viewObserver || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n const now = adVideoElement.currentTime;\n const inView = visibleRatio >= VIEWABLE_MIN_VISIBLE_RATIO && document.visibilityState === \"visible\" && !adVideoElement.paused;\n if (!inView) {\n continuousVisibleS = 0;\n } else if (lastViewSampleTime !== void 0 && now >= lastViewSampleTime) {\n continuousVisibleS += now - lastViewSampleTime;\n }\n lastViewSampleTime = now;\n if (continuousVisibleS >= VIEWABLE_MIN_CONTINUOUS_S) {\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(currentAd.trackingUrls.viewable);\n }\n }\n function settleViewability() {\n if (!currentAd || !trackingFired.impression || trackingFired.viewabilitySettled) {\n return;\n }\n trackingFired.viewabilitySettled = true;\n fireTrackingPixels(\n viewObserver ? currentAd.trackingUrls.notViewable : currentAd.trackingUrls.viewUndetermined\n );\n }\n function handleFullscreenChange() {\n if (!adPlaying || !currentAd || !adContainerEl || !trackingFired.start) return;\n const fullscreenEl = document.fullscreenElement ?? document.webkitFullscreenElement;\n const expanded = !!fullscreenEl && fullscreenEl.contains(adContainerEl);\n if (expanded === lastPlayerExpanded) return;\n lastPlayerExpanded = expanded;\n const urls = currentAd.trackingUrls;\n fireTrackingPixels(\n expanded ? urls.fullscreen.concat(urls.playerExpand) : urls.exitFullscreen.concat(urls.playerCollapse)\n );\n }\n function attachContainerHandlers() {\n if (!adContainerEl || containerHandlers.length > 0) return;\n const onClick = () => handleAdClick();\n const onInteraction = (event) => {\n if (adPlaying) emit(\"ad_interaction\", event);\n };\n containerHandlers = [\n { type: \"click\", handler: onClick },\n { type: \"mousedown\", handler: onInteraction },\n { type: \"touchstart\", handler: onInteraction }\n ];\n for (const { type, handler } of containerHandlers) {\n adContainerEl.addEventListener(type, handler);\n }\n const onFullscreenChange = () => handleFullscreenChange();\n documentHandlers = [\n { type: \"fullscreenchange\", handler: onFullscreenChange },\n { type: \"webkitfullscreenchange\", handler: onFullscreenChange }\n ];\n for (const { type, handler } of documentHandlers) {\n document.addEventListener(type, handler);\n }\n if (typeof IntersectionObserver !== \"undefined\") {\n viewObserver = new IntersectionObserver(\n (entries) => {\n const entry = entries[entries.length - 1];\n if (entry) {\n visibleRatio = entry.isIntersecting ? entry.intersectionRatio : 0;\n }\n },\n { threshold: [0, 0.25, 0.5, 0.75, 1] }\n );\n viewObserver.observe(adContainerEl);\n }\n }\n function detachContainerHandlers() {\n if (adContainerEl) {\n for (const { type, handler } of containerHandlers) {\n adContainerEl.removeEventListener(type, handler);\n }\n }\n containerHandlers = [];\n for (const { type, handler } of documentHandlers) {\n document.removeEventListener(type, handler);\n }\n documentHandlers = [];\n viewObserver?.disconnect();\n viewObserver = void 0;\n }\n function setAdPlayingFlag(isPlaying) {\n if (isPlaying) {\n contentVideo.dataset.stormcloudAdPlaying = \"true\";\n } else {\n delete contentVideo.dataset.stormcloudAdPlaying;\n }\n }\n function resetAdTracking() {\n trackingFired = createTrackingState();\n continuousVisibleS = 0;\n lastViewSampleTime = void 0;\n }\n function isRvfcSupported(video) {\n return typeof video.requestVideoFrameCallback === \"function\";\n }\n function settlePendingPlay() {\n pendingPlayPromise = void 0;\n }\n function toVastPlayErrorCode(error) {\n return error?.name === \"NotSupportedError\" ? VAST_ERROR_NO_SUPPORTED_MEDIA : VAST_ERROR_MEDIA_DISPLAY;\n }\n function failAdPlayback(context, error) {\n const vastErrorCode = toVastPlayErrorCode(error);\n console.error(`[HlsAdPlayer] Error starting ${context}:`, error);\n logFunnel(\"play_failed\", {\n errorName: error?.name,\n errorMessage: error?.message,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n function startAdPlayback(context, isMutedRetry = false) {\n if (!adVideoElement) return;\n const computed = typeof getComputedStyle === \"function\" && adContainerEl ? getComputedStyle(adContainerEl) : void 0;\n logFunnel(isMutedRetry ? \"muted_retry\" : \"play_called\", {\n context,\n isConnected: adVideoElement.isConnected,\n clientWidth: adVideoElement.clientWidth,\n clientHeight: adVideoElement.clientHeight,\n containerDisplay: computed?.display,\n containerVisibility: computed?.visibility\n });\n const playPromise = adVideoElement.play();\n pendingPlayPromise = playPromise;\n playPromise.catch((error) => {\n if (pendingPlayPromise !== playPromise) {\n return;\n }\n logFunnel(\"play_rejected\", {\n context,\n errorName: error?.name,\n errorMessage: error?.message\n });\n if (!isMutedRetry && error?.name === \"NotAllowedError\" && adVideoElement && !adVideoElement.muted) {\n console.warn(\n `[HlsAdPlayer] Unmuted ${context} blocked by autoplay policy - retrying muted`\n );\n originalMutedState = true;\n forcedMuteByAutoplay = true;\n adVideoElement.muted = true;\n startAdPlayback(context, true);\n return;\n }\n failAdPlayback(context, error);\n }).finally(() => {\n if (pendingPlayPromise === playPromise) {\n pendingPlayPromise = void 0;\n }\n });\n }\n function prepareVideoElementForNewSource() {\n settlePendingPlay();\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n if (!adVideoElement) return;\n try {\n adVideoElement.pause();\n adVideoElement.removeAttribute(\"src\");\n adVideoElement.load();\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error preparing ad video for new source:\",\n error\n );\n }\n }\n function recreateAdVideoElement() {\n console.log(\n \"[HlsAdPlayer] Recreating ad video element (single-decoder platform)\"\n );\n teardownAdEventListeners();\n prepareVideoElementForNewSource();\n if (adVideoElement) {\n try {\n adVideoElement.remove();\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error removing ad video element:\", error);\n }\n }\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n }\n function clearMediaStartTimer() {\n if (mediaStartTimerId !== void 0) {\n clearTimeout(mediaStartTimerId);\n mediaStartTimerId = void 0;\n }\n }\n function startMediaStartTimer() {\n clearMediaStartTimer();\n if (!(MEDIA_START_TIMEOUT_MS > 0)) return;\n const startedAt = Date.now();\n mediaStartTimerId = setTimeout(() => {\n mediaStartTimerId = void 0;\n if (!adPlaying || trackingFired.impression) return;\n console.warn(\n `[HlsAdPlayer] Ad media did not start playing within ${MEDIA_START_TIMEOUT_MS}ms`\n );\n logFunnel(\"play_resolved_but_never_started\", {\n timeoutMs: MEDIA_START_TIMEOUT_MS,\n elapsedMs: Date.now() - startedAt,\n readyState: adVideoElement?.readyState,\n networkState: adVideoElement?.networkState,\n currentSrc: adVideoElement?.currentSrc,\n paused: adVideoElement?.paused,\n vastErrorCode: VAST_ERROR_MEDIA_TIMEOUT\n });\n recoverFromAdFailure(VAST_ERROR_MEDIA_TIMEOUT);\n }, MEDIA_START_TIMEOUT_MS);\n }\n function resetVideoElementForNextSource() {\n clearStallWatchdog();\n if (requiresMediaPipelineResetAfterAds()) {\n recreateAdVideoElement();\n setupAdEventListeners();\n } else {\n prepareVideoElementForNewSource();\n }\n }\n function tryNextMediaCandidate() {\n if (!currentAd || trackingFired.impression) return false;\n if (mediaCandidateIndex >= mediaCandidates.length - 1) return false;\n const failedUrl = currentAdMediaFile?.url;\n mediaCandidateIndex++;\n const next = mediaCandidates[mediaCandidateIndex];\n if (!next) return false;\n logFunnel(\"media_fallback\", {\n failedUrl,\n nextUrl: next.url,\n nextType: next.type,\n candidateIndex: mediaCandidateIndex,\n candidateCount: mediaCandidates.length\n });\n resetVideoElementForNextSource();\n try {\n loadMediaCandidate(next);\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load fallback media file:\", error);\n return tryNextMediaCandidate();\n }\n }\n function recoverFromAdFailure(vastErrorCode) {\n clearMediaStartTimer();\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(vastErrorCode);\n if (podIndex < podAds.length - 1 && advanceToNextPodAd()) return;\n handleAdError();\n }\n function loadCurrentAdMedia() {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n mediaCandidates = rankMediaCandidates(currentAd.mediaFiles);\n mediaCandidateIndex = 0;\n const mediaFile = mediaCandidates[0];\n if (!mediaFile) {\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA,\n candidates: currentAd.mediaFiles.length\n });\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw new Error(\"No media file this browser can play\");\n }\n try {\n loadMediaCandidate(mediaFile);\n } catch (error) {\n if (tryNextMediaCandidate()) return;\n reportCurrentAdError(VAST_ERROR_NO_SUPPORTED_MEDIA);\n throw error;\n }\n }\n function loadMediaCandidate(mediaFile) {\n if (!adVideoElement || !currentAd) {\n throw new Error(\"No ad video element or ad to load\");\n }\n currentAdMediaFile = mediaFile;\n const isHlsAd = isHlsMediaFile(mediaFile);\n logFunnel(\"media_selected\", {\n width: mediaFile.width,\n height: mediaFile.height,\n bitrate: mediaFile.bitrate,\n candidateIndex: mediaCandidateIndex,\n candidates: mediaCandidates.length\n });\n console.log(\n `[HlsAdPlayer] Loading ${isHlsAd ? \"HLS\" : \"progressive\"} ad (pod ${podIndex + 1}/${podAds.length || 1}) from: ${mediaFile.url}`\n );\n startMediaStartTimer();\n if (isHlsAd && import_hls.default.isSupported()) {\n if (adHls) {\n adHls.destroy();\n }\n adHls = new import_hls.default({\n enableWorker: true,\n lowLatencyMode: false\n });\n logFunnel(\"media_load\", { pipeline: \"hls.js\" });\n adHls.loadSource(mediaFile.url);\n adHls.attachMedia(adVideoElement);\n adHls.on(import_hls.default.Events.MANIFEST_PARSED, () => {\n console.log(\"[HlsAdPlayer] HLS manifest parsed, starting playback\");\n startAdPlayback(\"HLS ad playback\");\n });\n adHls.on(import_hls.default.Events.ERROR, (_event, data) => {\n console.error(\"[HlsAdPlayer] HLS error:\", data);\n if (data.fatal) {\n const vastErrorCode = data.type === import_hls.default.ErrorTypes.NETWORK_ERROR ? 401 : VAST_ERROR_MEDIA_DISPLAY;\n logFunnel(\"hls_fatal\", {\n reason: data.details,\n errorName: data.type,\n errorMessage: data.details,\n responseCode: data.response?.code,\n responseText: data.response?.text,\n fragUrl: data.frag?.url,\n vastErrorCode\n });\n recoverFromAdFailure(vastErrorCode);\n }\n });\n } else if (isHlsAd && adVideoElement.canPlayType(\"application/vnd.apple.mpegurl\")) {\n logFunnel(\"media_load\", { pipeline: \"native-hls\" });\n adVideoElement.src = mediaFile.url;\n startAdPlayback(\"native HLS ad playback\");\n } else if (!isHlsAd && isProgressiveMediaFile(mediaFile)) {\n if (adHls) {\n adHls.destroy();\n adHls = void 0;\n }\n logFunnel(\"media_load\", { pipeline: \"progressive\" });\n adVideoElement.src = mediaFile.url;\n adVideoElement.load();\n startAdPlayback(\"progressive ad playback\");\n } else {\n clearMediaStartTimer();\n logFunnel(\"media_unsupported\", {\n vastErrorCode: VAST_ERROR_NO_SUPPORTED_MEDIA\n });\n throw new Error(`Unsupported ad media file type: ${mediaFile.type}`);\n }\n }\n function advanceToNextPodAd() {\n clearMediaStartTimer();\n while (podIndex < podAds.length - 1) {\n settleViewability();\n podIndex++;\n currentAd = podAds[podIndex];\n currentAdMediaFile = void 0;\n resetAdTracking();\n if (currentAd) {\n console.log(\n `[HlsAdPlayer] Advancing to next pod ad (${podIndex + 1}/${podAds.length}): ${currentAd.title}, duration: ${currentAd.duration}s`\n );\n }\n resetVideoElementForNextSource();\n try {\n loadCurrentAdMedia();\n emit(\"pod_ad_started\", { index: podIndex, total: podAds.length });\n return true;\n } catch (error) {\n console.error(\"[HlsAdPlayer] Failed to load next pod ad:\", error);\n }\n }\n return false;\n }\n function clearStallWatchdog() {\n clearMediaStartTimer();\n if (stallWatchdogId != null) {\n clearInterval(stallWatchdogId);\n stallWatchdogId = void 0;\n }\n cancelVideoFrameProbe();\n }\n function noteAdProgress() {\n lastAdProgressTime = Date.now();\n if (adVideoElement) {\n lastAdProgressPosition = adVideoElement.currentTime;\n }\n }\n function handleAdStall() {\n console.warn(\n \"[HlsAdPlayer] Ad playback stalled (no progress) - recovering to avoid a blank frame\"\n );\n clearStallWatchdog();\n logFunnel(\"stall\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function getDecodedVideoFrameCount(video) {\n try {\n if (typeof video.getVideoPlaybackQuality === \"function\") {\n const quality = video.getVideoPlaybackQuality();\n if (quality && typeof quality.totalVideoFrames === \"number\") {\n return quality.totalVideoFrames;\n }\n }\n const legacyCount = video.webkitDecodedFrameCount;\n if (typeof legacyCount === \"number\") {\n return legacyCount;\n }\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Unable to read decoded video frame count:\",\n error\n );\n }\n return void 0;\n }\n function isFrameCounterReliable() {\n return contentVideo[FRAME_COUNTER_RELIABLE_PROP] === true;\n }\n function markFrameCounterReliable() {\n contentVideo[FRAME_COUNTER_RELIABLE_PROP] = true;\n }\n function isRvfcReliable() {\n return contentVideo[RVFC_RELIABLE_PROP] === true;\n }\n function markRvfcReliable() {\n contentVideo[RVFC_RELIABLE_PROP] = true;\n }\n function cancelVideoFrameProbe() {\n if (videoFrameCallbackHandle != null && adVideoElement && typeof adVideoElement.cancelVideoFrameCallback === \"function\") {\n try {\n adVideoElement.cancelVideoFrameCallback(\n videoFrameCallbackHandle\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error cancelling video frame callback:\",\n error\n );\n }\n }\n videoFrameCallbackHandle = void 0;\n }\n function startVideoFrameProbe() {\n cancelVideoFrameProbe();\n if (!adVideoElement) return;\n const rvfc = adVideoElement.requestVideoFrameCallback;\n if (typeof rvfc !== \"function\") return;\n const onPresentedFrame = () => {\n videoFrameCallbackHandle = void 0;\n if (!adPlaying) return;\n sawDecodedVideoFrame = true;\n markRvfcReliable();\n };\n try {\n videoFrameCallbackHandle = rvfc.call(\n adVideoElement,\n onPresentedFrame\n );\n } catch (error) {\n console.warn(\n \"[HlsAdPlayer] Error requesting video frame callback:\",\n error\n );\n videoFrameCallbackHandle = void 0;\n }\n }\n function handleVideoDecodeFailure() {\n console.warn(\n \"[HlsAdPlayer] Ad audio is advancing but no video frames decoded (black screen) - skipping this creative\"\n );\n clearStallWatchdog();\n logFunnel(\"decode_failure\", { vastErrorCode: VAST_ERROR_MEDIA_DISPLAY });\n recoverFromAdFailure(VAST_ERROR_MEDIA_DISPLAY);\n }\n function startStallWatchdog() {\n clearStallWatchdog();\n noteAdProgress();\n sawDecodedVideoFrame = false;\n startVideoFrameProbe();\n const blackFrameDetectionEnabled = !requiresMediaPipelineResetAfterAds();\n stallWatchdogId = window.setInterval(() => {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n if (blackFrameDetectionEnabled && !sawDecodedVideoFrame && !adVideoElement.paused) {\n const decodedFrames = getDecodedVideoFrameCount(adVideoElement);\n if (decodedFrames !== void 0 && decodedFrames > 0) {\n sawDecodedVideoFrame = true;\n markFrameCounterReliable();\n } else if (adVideoElement.currentTime >= BLACKFRAME_MIN_PLAYBACK_S) {\n const timeAdvancing = adVideoElement.currentTime > lastAdProgressPosition + 0.05;\n if (isRvfcSupported(adVideoElement) && timeAdvancing && isRvfcReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n if (decodedFrames === 0 && timeAdvancing && isFrameCounterReliable()) {\n handleVideoDecodeFailure();\n return;\n }\n }\n }\n if (adVideoElement.currentTime > lastAdProgressPosition + 0.05) {\n noteAdProgress();\n return;\n }\n if (adVideoElement.paused) {\n noteAdProgress();\n return;\n }\n if (Date.now() - lastAdProgressTime >= STALL_TIMEOUT_MS) {\n handleAdStall();\n }\n }, STALL_CHECK_INTERVAL_MS);\n }\n function releaseAdDecoder() {\n prepareVideoElementForNewSource();\n if (adContainerEl) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n }\n function handleAdComplete() {\n console.log(\"[HlsAdPlayer] Handling ad completion\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode:\", error);\n });\n } else {\n console.log(\"[HlsAdPlayer] Content video already playing in live mode\");\n }\n }\n emit(\"content_resume\");\n }\n function handleAdError() {\n console.log(\"[HlsAdPlayer] Handling ad error\");\n settleViewability();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = true;\n releaseAdDecoder();\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n emit(\"ad_error\");\n }\n return {\n initialize() {\n console.log(\"[HlsAdPlayer] Initializing\");\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"30\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n contentVideo[AD_CONTAINER_PROP] = adContainerEl;\n attachContainerHandlers();\n },\n async requestAds(vastTagUrl, requestOptions) {\n const source = requestOptions?.source ?? \"gam\";\n console.log(`[HlsAdPlayer] Requesting ads (${source}):`, redactUrl(vastTagUrl));\n if (adPlaying) {\n console.warn(\n \"[HlsAdPlayer] Cannot request new ads while an ad is playing\"\n );\n return Promise.reject(new Error(\"Ad already playing\"));\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n currentVastTagUrl = vastTagUrl;\n pendingRequestAbortReason = void 0;\n logFunnel(\"request_sent\");\n try {\n let ads = [];\n if (preloadedAds.has(vastTagUrl)) {\n const preloaded = preloadedAds.get(vastTagUrl);\n preloadedAds.delete(vastTagUrl);\n if (preloaded) {\n ads = [preloaded];\n }\n console.log(\n \"[HlsAdPlayer] Using preloaded VAST response:\",\n vastTagUrl\n );\n } else {\n ads = await fetchAndParsePod(vastTagUrl, source, requestOptions?.finalizeRequestUrl);\n }\n if (destroyed) {\n return Promise.reject(new Error(\"Ad player destroyed\"));\n }\n if (!ads.length && pendingRequestAbortReason) {\n throw new Error(pendingRequestAbortReason);\n }\n if (!ads.length && lastPodAdElementCount > 0) {\n console.warn(\"[HlsAdPlayer] VAST response had ads but none were playable\");\n logFunnel(\"vast_fill_rejected\", { adElementCount: lastPodAdElementCount });\n emit(\"ad_error\");\n return Promise.reject(\n new Error(\"VAST fill rejected: no playable ad in response\")\n );\n }\n if (!ads.length) {\n console.warn(\"[HlsAdPlayer] No ads available from VAST response\");\n logFunnel(\"no_fill\");\n emit(\"ad_error\");\n return Promise.reject(new Error(\"No ads available from VAST response\"));\n }\n podAds = ads;\n podIndex = 0;\n currentAd = ads[0];\n currentAdMediaFile = void 0;\n logFunnel(\"vast_received\", {\n adCount: ads.length,\n durations: ads.map((ad) => ad.duration),\n impressionUrls: ads.map((ad) => ad.trackingUrls.impression.length)\n });\n ads.forEach((ad, index) => {\n if (ad.trackingUrls.impression.length === 0) {\n logFunnel(\"vast_missing_impression\", { adIndex: index, missingAdId: ad.id });\n }\n });\n console.log(\n `[HlsAdPlayer] Pod parsed: ${ads.length} ad(s), first=\"${currentAd?.title}\", duration=${currentAd?.duration}s`\n );\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error requesting ads:\", error);\n logFunnel(\"request_failed\", {\n errorMessage: error?.message\n });\n emit(\"ad_error\");\n return Promise.reject(error);\n }\n },\n async play() {\n if (!currentAd) {\n console.warn(\n \"[HlsAdPlayer] Cannot play: No ad loaded (no ads available)\"\n );\n return Promise.reject(new Error(\"No ad loaded\"));\n }\n console.log(\"[HlsAdPlayer] Starting ad playback\");\n try {\n if (!adVideoElement) {\n adVideoElement = createAdVideoElement();\n adContainerEl?.appendChild(adVideoElement);\n contentVideo[AD_VIDEO_PROP] = adVideoElement;\n }\n setupAdEventListeners();\n resetAdTracking();\n const contentVolume = contentVideo.volume;\n originalVolume = Math.max(\n 0,\n Math.min(1, contentVolume || originalVolume)\n );\n if (!options?.continueLiveStreamDuringAds) {\n contentVideo.pause();\n console.log(\"[HlsAdPlayer] Content paused (VOD mode)\");\n } else {\n console.log(\"[HlsAdPlayer] Content continues (Live mode)\");\n }\n console.log(\"[HlsAdPlayer] FORCE MUTING main video\");\n contentVideo.muted = true;\n adPlaying = true;\n setAdPlayingFlag(true);\n if (adVideoElement) {\n adVideoElement.volume = Math.max(0, Math.min(1, originalVolume));\n adVideoElement.muted = originalMutedState;\n console.log(\n `[HlsAdPlayer] Set ad video volume to ${adVideoElement.volume}, muted: ${adVideoElement.muted}, originalMutedState: ${originalMutedState}, contentVolume: ${contentVolume}`\n );\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n emit(\"content_pause\");\n try {\n loadCurrentAdMedia();\n } catch (loadError) {\n if (!(podIndex < podAds.length - 1 && advanceToNextPodAd())) {\n throw loadError;\n }\n }\n return Promise.resolve();\n } catch (error) {\n console.error(\"[HlsAdPlayer] Error playing ad:\", error);\n logFunnel(\"play_failed\", { errorMessage: error?.message });\n handleAdError();\n return Promise.reject(error);\n }\n },\n pause() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && !adVideoElement.paused) {\n adVideoElement.pause();\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error pausing ad:\", error);\n }\n },\n resume() {\n if (!adPlaying || !adVideoElement) {\n return;\n }\n try {\n if (adVideoElement && adVideoElement.paused) {\n adVideoElement.play().catch(() => {\n });\n }\n } catch (error) {\n console.warn(\"[HlsAdPlayer] Error resuming ad:\", error);\n }\n },\n async stop() {\n console.log(\"[HlsAdPlayer] Stopping ad\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n clearStallWatchdog();\n adPlaying = false;\n setAdPlayingFlag(false);\n const previousMutedState = contentVideo.muted;\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n console.log(\n `[HlsAdPlayer] Restored mute state on stop: ${previousMutedState} -> ${originalMutedState}, volume: ${contentVideo.volume}`\n );\n releaseAdDecoder();\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n if (options?.continueLiveStreamDuringAds) {\n if (contentVideo.paused) {\n console.log(\"[HlsAdPlayer] Content video paused in live mode, resuming playback on stop\");\n contentVideo.play().catch((error) => {\n console.error(\"[HlsAdPlayer] Error resuming content playback in live mode on stop:\", error);\n });\n }\n }\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n },\n destroy() {\n console.log(\"[HlsAdPlayer] Destroying\");\n if (adPlaying && currentAd && !trackingFired.impression) {\n logFunnel(\"stopped_before_start\");\n }\n settleViewability();\n fireNotUsedForUnplayedAds();\n destroyed = true;\n pendingRequestAbortReason = \"Ad player destroyed\";\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n clearStallWatchdog();\n for (const timeoutId of pendingTimeouts) {\n clearTimeout(timeoutId);\n }\n pendingTimeouts = [];\n adPlaying = false;\n setAdPlayingFlag(false);\n contentVideo.muted = originalMutedState;\n contentVideo.volume = Math.max(0, Math.min(1, originalVolume));\n teardownAdEventListeners();\n detachContainerHandlers();\n releaseAdDecoder();\n currentAd = void 0;\n currentAdMediaFile = void 0;\n podAds = [];\n podIndex = 0;\n listeners.clear();\n preloadedAds.clear();\n preloadingAds.clear();\n },\n isAdPlaying() {\n return adPlaying;\n },\n setFunnelContext(context) {\n funnelContext = { ...context };\n },\n abortPendingRequest(reason = \"VAST request aborted (timeout)\") {\n if (pendingVastRequests.size === 0) return;\n pendingRequestAbortReason = reason;\n for (const controller of Array.from(pendingVastRequests)) {\n controller.abort();\n }\n pendingVastRequests.clear();\n },\n resize(width, height) {\n console.log(`[HlsAdPlayer] Resizing to ${width}x${height}`);\n if (adContainerEl) {\n adContainerEl.style.width = `${width}px`;\n adContainerEl.style.height = `${height}px`;\n }\n if (adVideoElement) {\n adVideoElement.style.width = `${width}px`;\n adVideoElement.style.height = `${height}px`;\n }\n },\n on(event, listener) {\n if (!listeners.has(event)) listeners.set(event, /* @__PURE__ */ new Set());\n listeners.get(event).add(listener);\n },\n off(event, listener) {\n listeners.get(event)?.delete(listener);\n },\n updateOriginalMutedState(muted, volume) {\n const nextVolume = typeof volume === \"number\" && !Number.isNaN(volume) ? Math.max(0, Math.min(1, volume)) : originalVolume;\n console.log(\n `[HlsAdPlayer] updateOriginalMutedState called: { muted: ${originalMutedState} -> ${muted}, volume: ${originalVolume} -> ${nextVolume} }`\n );\n originalMutedState = muted;\n originalVolume = nextVolume;\n },\n getOriginalMutedState() {\n return originalMutedState;\n },\n getOriginalVolume() {\n return originalVolume;\n },\n setAdVolume(volume) {\n if (adVideoElement && adPlaying) {\n const clamped = Math.max(0, Math.min(1, volume));\n adVideoElement.volume = clamped;\n const userActivation = navigator.userActivation;\n if (clamped > 0 && forcedMuteByAutoplay && userActivation && !userActivation.isActive) {\n logFunnel(\"unmute_blocked_without_gesture\", { requestedVolume: clamped });\n return;\n }\n adVideoElement.muted = clamped === 0;\n }\n },\n getAdVolume() {\n if (adVideoElement && adPlaying) {\n return adVideoElement.volume;\n }\n return 1;\n },\n showPlaceholder() {\n contentVideo.style.opacity = \"0\";\n contentVideo.style.visibility = \"hidden\";\n if (!adContainerEl) {\n const container = document.createElement(\"div\");\n container.style.position = \"absolute\";\n container.style.left = \"0\";\n container.style.top = \"0\";\n container.style.right = \"0\";\n container.style.bottom = \"0\";\n container.style.display = \"none\";\n container.style.alignItems = \"center\";\n container.style.justifyContent = \"center\";\n container.style.pointerEvents = \"none\";\n container.style.zIndex = \"10\";\n container.style.backgroundColor = \"#000\";\n contentVideo.parentElement?.appendChild(container);\n adContainerEl = container;\n }\n if (adContainerEl) {\n adContainerEl.style.display = \"flex\";\n adContainerEl.style.pointerEvents = \"auto\";\n }\n },\n hidePlaceholder() {\n if (adContainerEl && !adPlaying) {\n adContainerEl.style.display = \"none\";\n adContainerEl.style.pointerEvents = \"none\";\n }\n if (!adPlaying) {\n contentVideo.style.visibility = \"visible\";\n contentVideo.style.opacity = \"1\";\n }\n },\n getLoadedAdDuration() {\n return currentAd?.duration;\n },\n getLoadedAdId() {\n return currentAd?.id;\n },\n getPodAdCount() {\n return podAds.length;\n },\n getPodTotalDurationMs() {\n return podAds.reduce(\n (total, ad) => total + (ad.duration > 0 ? ad.duration * 1e3 : 0),\n 0\n );\n },\n limitPodToBudget(maxDurationMs, maxAds) {\n if (adPlaying) return podAds.length;\n const kept = [];\n const dropped = [];\n let totalMs = 0;\n for (const ad of podAds) {\n const durationMs = Math.round(ad.duration * 1e3);\n if (kept.length < maxAds && totalMs + durationMs <= maxDurationMs) {\n kept.push(ad);\n totalMs += durationMs;\n } else {\n dropped.push(ad);\n }\n }\n if (dropped.length > 0) {\n logFunnel(\"pod_trimmed_to_budget\", {\n keptCount: kept.length,\n droppedCount: dropped.length,\n keptDurationMs: totalMs,\n maxDurationMs,\n maxAds\n });\n for (const ad of dropped) {\n resolvedAds.add(ad);\n fireTrackingPixels(ad.trackingUrls.notUsed, { ad });\n }\n }\n podAds = kept;\n podIndex = 0;\n currentAd = kept[0];\n currentAdMediaFile = void 0;\n return kept.length;\n }\n };\n}\n\n// src/utils/devUrl.ts\nvar PRIVATE_HOST_PATTERNS = [\n /^localhost$/i,\n /^127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^0\\.0\\.0\\.0$/,\n /^::1$/,\n /^10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/,\n /^192\\.168\\.\\d{1,3}\\.\\d{1,3}$/,\n /^172\\.(1[6-9]|2\\d|3[0-1])\\.\\d{1,3}\\.\\d{1,3}$/\n];\nfunction isLocalDevHost(hostname) {\n const host = hostname.replace(/^\\[/, \"\").replace(/\\]$/, \"\").toLowerCase();\n if (!host) return false;\n if (host.endsWith(\".local\") || host.endsWith(\".localhost\")) return true;\n return PRIVATE_HOST_PATTERNS.some((pattern) => pattern.test(host));\n}\nfunction toDevSafeUrl(rawUrl) {\n if (!rawUrl) return rawUrl ?? \"\";\n let url;\n try {\n url = new URL(rawUrl);\n } catch {\n return rawUrl;\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n return rawUrl;\n }\n if (!isLocalDevHost(url.hostname)) {\n return rawUrl;\n }\n const cleanPath = url.pathname.replace(/\\/{2,}/g, \"/\") || \"/index.html\";\n return `file://${cleanPath}`;\n}\n\n// src/sdk/pal.ts\nvar PAL_SDK_URL = \"https://imasdk.googleapis.com/pal/sdkloader/pal.js\";\nvar _nonceLoader;\nvar _nonceLoaderAllowStorage;\nvar _palLoadPromise;\nfunction loadPalSdk() {\n if (typeof window !== \"undefined\" && window.goog?.pal) {\n return Promise.resolve();\n }\n if (_palLoadPromise) return _palLoadPromise;\n _palLoadPromise = new Promise((resolve, reject) => {\n const existing = document.querySelector(\n 'script[data-pal=\"true\"]'\n );\n if (existing) {\n if (window.goog?.pal) {\n resolve();\n return;\n }\n const timeout = setTimeout(\n () => reject(new Error(\"PAL SDK load timeout\")),\n 1e4\n );\n existing.addEventListener(\"load\", () => {\n clearTimeout(timeout);\n resolve();\n });\n existing.addEventListener(\"error\", () => {\n clearTimeout(timeout);\n reject(new Error(\"PAL SDK load failed\"));\n });\n return;\n }\n const script = document.createElement(\"script\");\n script.src = PAL_SDK_URL;\n script.async = true;\n script.setAttribute(\"data-pal\", \"true\");\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(\"PAL SDK load failed\"));\n document.head.appendChild(script);\n });\n return _palLoadPromise;\n}\nfunction getOrCreateNonceLoader(allowStorage) {\n if (_nonceLoader && _nonceLoaderAllowStorage === allowStorage) {\n return _nonceLoader;\n }\n const goog = window.goog;\n const consentSettings = new goog.pal.ConsentSettings();\n consentSettings.allowStorage = allowStorage;\n _nonceLoader = new goog.pal.NonceLoader(consentSettings);\n _nonceLoaderAllowStorage = allowStorage;\n return _nonceLoader;\n}\nfunction createPalNonceManager() {\n let currentNonce = \"\";\n let currentNonceManager;\n let pendingNonce;\n return {\n generateNonce(options = {}) {\n const run = generate(options);\n pendingNonce = run;\n const settle = () => {\n if (pendingNonce === run) pendingNonce = void 0;\n };\n run.then(settle, settle);\n return run;\n },\n getCurrentNonce() {\n return currentNonce;\n },\n waitForNonce(maxWaitMs) {\n if (currentNonce) return Promise.resolve(currentNonce);\n const pending = pendingNonce;\n if (!pending || !(maxWaitMs > 0)) return Promise.resolve(\"\");\n return new Promise((resolve) => {\n const timer = setTimeout(() => resolve(currentNonce), maxWaitMs);\n pending.then(\n (nonce) => {\n clearTimeout(timer);\n resolve(nonce);\n },\n () => {\n clearTimeout(timer);\n resolve(\"\");\n }\n );\n });\n },\n injectNonce(vastTagUrl) {\n if (!currentNonce || !vastTagUrl) return vastTagUrl;\n try {\n const url = new URL(vastTagUrl);\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", currentNonce);\n return url.toString();\n } catch {\n let base = vastTagUrl.replace(/([?&])paln=[^&]*/g, \"\").replace(/[?&]$/, \"\");\n const sep = base.includes(\"?\") ? \"&\" : \"?\";\n return `${base}${sep}givn=${encodeURIComponent(currentNonce)}`;\n }\n },\n sendPlaybackStart() {\n try {\n currentNonceManager?.sendPlaybackStart();\n } catch {\n }\n },\n sendPlaybackEnd() {\n try {\n currentNonceManager?.sendPlaybackEnd();\n } catch {\n }\n },\n sendAdClick() {\n try {\n currentNonceManager?.sendAdClick();\n } catch {\n }\n },\n sendAdTouch(event) {\n try {\n currentNonceManager?.sendAdTouch(event);\n } catch {\n }\n },\n reset() {\n currentNonce = \"\";\n currentNonceManager = void 0;\n pendingNonce = void 0;\n }\n };\n async function generate(options) {\n try {\n await loadPalSdk();\n const loader = getOrCreateNonceLoader(options.allowStorage ?? true);\n const goog = window.goog;\n const request = new goog.pal.NonceRequest();\n request.adWillAutoPlay = options.adWillAutoPlay ?? true;\n request.adWillPlayMuted = options.adWillPlayMuted ?? false;\n request.playerVolume = options.playerVolume ?? (request.adWillPlayMuted ? 0 : 1);\n request.continuousPlayback = options.continuousPlayback ?? true;\n request.descriptionUrl = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.iconsSupported = true;\n request.playerType = \"StormcloudVideoPlayer\";\n request.playerVersion = \"1.0\";\n request.supportedApiFrameworks = \"2,7,9\";\n request.url = toDevSafeUrl(\n options.descriptionUrl || (typeof window !== \"undefined\" ? window.location.href : \"\")\n );\n request.videoWidth = options.videoWidth || 640;\n request.videoHeight = options.videoHeight || 480;\n if (options.ppid) request.ppid = options.ppid;\n if (options.sessionId) request.sessionId = options.sessionId;\n console.log(\n \"[PAL] NonceRequest before generateNonce:\",\n JSON.stringify({\n adWillAutoPlay: request.adWillAutoPlay,\n adWillPlayMuted: request.adWillPlayMuted,\n playerVolume: request.playerVolume,\n continuousPlayback: request.continuousPlayback,\n descriptionUrl: request.descriptionUrl,\n iconsSupported: request.iconsSupported,\n playerType: request.playerType,\n playerVersion: request.playerVersion,\n supportedApiFrameworks: request.supportedApiFrameworks,\n url: request.url,\n videoWidth: request.videoWidth,\n videoHeight: request.videoHeight,\n ppid: request.ppid,\n sessionId: request.sessionId\n }, null, 2)\n );\n const manager = await loader.loadNonceManager(request);\n currentNonceManager = manager;\n currentNonce = manager.getNonce();\n console.log(\"[PAL] Nonce generated successfully\");\n return currentNonce;\n } catch (error) {\n console.warn(\"[PAL] Failed to generate nonce:\", error);\n currentNonce = \"\";\n currentNonceManager = void 0;\n return \"\";\n }\n }\n}\n\n// src/utils/trackingIngest.ts\nvar DEFAULT_TRACKING_INGEST_CONFIG = {\n enabled: true,\n baseUrl: \"https://player-analytics-ingest-api-760490581852.us-central1.run.app/api/adstorm/player-tracking\"\n};\nvar trackingIngestConfig = {\n ...DEFAULT_TRACKING_INGEST_CONFIG\n};\nfunction applyTrackingIngestConfig(overrides) {\n Object.assign(trackingIngestConfig, overrides);\n}\nfunction configureTrackingIngest(overrides) {\n applyTrackingIngestConfig(overrides);\n}\nfunction isTrackingIngestEnabled() {\n return trackingIngestConfig.enabled === true;\n}\nfunction normalizeIngestBaseUrl(baseUrl) {\n return baseUrl.replace(/\\/+$/, \"\");\n}\nfunction buildTrackingIngestUrl(channel) {\n const base = normalizeIngestBaseUrl(trackingIngestConfig.baseUrl);\n if (channel === \"impressions\") {\n return `${base}/impressions/ingest`;\n }\n return `${base}/metrics/ingest`;\n}\nasync function ingestPlayerTracking(licenseKey, channel, body) {\n if (!isTrackingIngestEnabled() || !licenseKey) {\n return false;\n }\n try {\n const response = await fetch(buildTrackingIngestUrl(channel), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `License-Key ${licenseKey}`\n },\n body: JSON.stringify(body)\n });\n if (!response.ok) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest failed (${response.status}) for ${channel}`\n );\n return false;\n }\n return true;\n } catch (error) {\n console.warn(\n `[StormcloudVideoPlayer] Tracking ingest error for ${channel}:`,\n error\n );\n return false;\n }\n}\n\n// src/utils/tracking.ts\nvar cachedBrowserId = null;\nfunction buildAnalyticsContext(config) {\n const context = {};\n const contentNetwork = config.contentNetwork?.trim();\n const contentChannel = config.channelName?.trim();\n const contentTitle = config.programTitle?.trim();\n if (contentNetwork) context.contentNetwork = contentNetwork;\n if (contentChannel) context.contentChannel = contentChannel;\n if (contentTitle) context.contentTitle = contentTitle;\n if (config.debugAdTiming) {\n context.debugAdTiming = true;\n }\n if (config.isLiveStream !== void 0) {\n context.inputStreamType = config.isLiveStream ? \"live\" : \"vod\";\n }\n return context;\n}\nfunction getClientInfo() {\n const ua = navigator.userAgent;\n const platform = navigator.platform;\n const vendor = navigator.vendor || \"\";\n const maxTouchPoints = navigator.maxTouchPoints || 0;\n const memory = navigator.deviceMemory || null;\n const hardwareConcurrency = navigator.hardwareConcurrency || 1;\n const screenInfo = {\n width: screen?.width,\n height: screen?.height,\n availWidth: screen?.availWidth,\n availHeight: screen?.availHeight,\n orientation: screen?.orientation?.type || \"\",\n pixelDepth: screen?.pixelDepth\n };\n let deviceType = \"desktop\";\n let brand = \"Unknown\";\n let os = \"Unknown\";\n let model = \"\";\n let isSmartTV = false;\n let isAndroid = false;\n let isWebView = false;\n let isWebApp = false;\n if (ua.includes(\"Web0S\")) {\n brand = \"LG\";\n os = \"webOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n const webosMatch = ua.match(/Web0S\\/([^\\s]+)/);\n model = webosMatch ? `webOS ${webosMatch[1]}` : \"webOS TV\";\n } else if (ua.includes(\"Tizen\")) {\n brand = \"Samsung\";\n os = \"Tizen\";\n isSmartTV = true;\n deviceType = \"tv\";\n const tizenMatch = ua.match(/Tizen\\/([^\\s]+)/);\n const tvMatch = ua.match(/(?:Smart-TV|SMART-TV|TV)/i) ? \"Smart TV\" : \"\";\n model = tizenMatch ? `Tizen ${tizenMatch[1]} ${tvMatch}`.trim() : \"Tizen TV\";\n } else if (ua.includes(\"Philips\")) {\n brand = \"Philips\";\n os = \"Saphi\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Sharp\") || ua.includes(\"AQUOS\")) {\n brand = \"Sharp\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"Sony\") || vendor.includes(\"Sony\"))) {\n brand = \"Sony\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"Android\") && (ua.includes(\"NetCast\") || ua.includes(\"LG\"))) {\n brand = \"LG\";\n os = \"Android TV\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\" Roku\") || ua.includes(\"Roku/\")) {\n brand = \"Roku\";\n os = \"Roku OS\";\n isSmartTV = true;\n deviceType = \"tv\";\n } else if (ua.includes(\"AppleTV\")) {\n brand = \"Apple\";\n os = \"tvOS\";\n isSmartTV = true;\n deviceType = \"tv\";\n }\n if (ua.includes(\"Android\")) {\n isAndroid = true;\n os = \"Android\";\n deviceType = /Mobile/.test(ua) ? \"mobile\" : \"tablet\";\n if (ua.includes(\"Android\") && (maxTouchPoints === 0 || ua.includes(\"Google TV\") || ua.includes(\"XiaoMi\"))) {\n deviceType = \"tv\";\n isSmartTV = true;\n brand = brand === \"Unknown\" ? \"Android TV\" : brand;\n }\n const androidModelMatch = ua.match(/\\(([^)]*Android[^)]*)\\)/);\n if (androidModelMatch && androidModelMatch[1]) {\n model = androidModelMatch[1];\n }\n }\n if (/iPad|iPhone|iPod/.test(ua)) {\n os = \"iOS\";\n deviceType = \"mobile\";\n brand = \"Apple\";\n if (navigator.maxTouchPoints > 1 && /iPad/.test(ua)) {\n deviceType = \"tablet\";\n }\n }\n if (!isAndroid && !isSmartTV && !/Mobile/.test(ua)) {\n if (ua.includes(\"Windows\")) {\n os = \"Windows\";\n deviceType = \"desktop\";\n } else if (ua.includes(\"Mac\") && !/iPhone/.test(ua)) {\n os = \"macOS\";\n deviceType = \"desktop\";\n if (maxTouchPoints > 1) deviceType = \"tablet\";\n } else if (ua.includes(\"Linux\")) {\n os = \"Linux\";\n deviceType = \"desktop\";\n }\n }\n if (brand === \"Unknown\") {\n if (vendor.includes(\"Google\") || ua.includes(\"Chrome\")) brand = \"Google\";\n if (vendor.includes(\"Apple\")) brand = \"Apple\";\n if (vendor.includes(\"Samsung\") || ua.includes(\"SM-\")) brand = \"Samsung\";\n }\n isWebView = /wv|WebView|Linux; U;/.test(ua);\n if (window?.outerHeight === 0 && window?.outerWidth === 0) {\n isWebView = true;\n }\n isWebApp = window.matchMedia(\"(display-mode: standalone)\").matches || window.navigator.standalone === true || window.screen?.orientation?.angle !== void 0;\n return {\n brand,\n os,\n model: model || ua.substring(0, 50) + \"...\",\n deviceType,\n isSmartTV,\n isAndroid,\n isWebView,\n isWebApp,\n domain: window.location.hostname,\n origin: window.location.origin,\n path: window.location.pathname,\n userAgent: ua,\n vendor,\n platform,\n screen: screenInfo,\n hardwareConcurrency,\n deviceMemory: memory,\n maxTouchPoints,\n language: navigator.language,\n languages: navigator.languages?.join(\",\") || \"\",\n cookieEnabled: navigator.cookieEnabled,\n doNotTrack: navigator.doNotTrack || \"\",\n referrer: document.referrer,\n visibilityState: document.visibilityState\n };\n}\nasync function sha256Hex(input) {\n if (typeof crypto !== \"undefined\" && crypto.subtle?.digest) {\n try {\n await crypto.subtle.digest(\"SHA-256\", new Uint8Array([1, 2, 3]));\n let encodedData;\n if (typeof TextEncoder !== \"undefined\") {\n encodedData = new TextEncoder().encode(input);\n } else {\n const utf8 = unescape(encodeURIComponent(input));\n const buffer = new Uint8Array(utf8.length);\n for (let i = 0; i < utf8.length; i++) {\n buffer[i] = utf8.charCodeAt(i);\n }\n encodedData = buffer;\n }\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", encodedData);\n return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, \"0\")).join(\"\");\n } catch {\n console.warn(\n \"[StormcloudVideoPlayer] crypto.subtle not supported, using fallback hash\"\n );\n }\n }\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n const fallbackHash = Math.abs(hash).toString(16).padStart(8, \"0\");\n const timestamp = Date.now().toString(16).padStart(12, \"0\");\n const random = Math.random().toString(16).substring(2, 14).padStart(12, \"0\");\n return (fallbackHash + timestamp + random).padEnd(64, \"0\");\n}\nfunction resolvePlayerIdentitySeed(clientInfo) {\n const nativeDeviceId = resolveNativeDeviceId(clientInfo.isSmartTV);\n if (nativeDeviceId) {\n return `device:${nativeDeviceId}`;\n }\n const persistedId = getOrCreateStoredUuid(PLAYER_ID_STORAGE_KEY);\n if (persistedId) {\n return `persisted:${persistedId}`;\n }\n return `fingerprint:${JSON.stringify(clientInfo)}`;\n}\nfunction getCachedBrowserId() {\n return cachedBrowserId ?? void 0;\n}\nasync function getBrowserID(clientInfo) {\n if (cachedBrowserId) {\n return cachedBrowserId;\n }\n cachedBrowserId = await sha256Hex(resolvePlayerIdentitySeed(clientInfo));\n return cachedBrowserId;\n}\nfunction canPublish(licenseKey) {\n return Boolean(isTrackingIngestEnabled() && licenseKey);\n}\nasync function buildPlayerMetricEvent(context = {}, flags = {}) {\n const clientInfo = getClientInfo();\n const debugAdTiming = !!context.debugAdTiming;\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] clientInfo: \", JSON.stringify(clientInfo, null, 2));\n }\n const playerId = await getBrowserID(clientInfo);\n if (debugAdTiming) {\n console.log(\"[StormcloudVideoPlayer] playerId: \", playerId);\n }\n const captureAt = flags.captureAt ?? (/* @__PURE__ */ new Date()).toISOString();\n return {\n player_id: playerId,\n device_type: clientInfo.deviceType,\n os: clientInfo.os.toLowerCase(),\n ad_loaded: flags.adLoaded ?? false,\n ad_detect: flags.adDetect ?? false,\n capture_at: captureAt,\n ...context.inputStreamType ? { input_stream_type: context.inputStreamType } : {}\n };\n}\nasync function sendInitialTracking(licenseKey, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n adLoaded: false,\n adDetect: false\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending initial tracking data:\",\n error\n );\n }\n}\nasync function sendAdDetectTracking(licenseKey, adDetectInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adDetect: true,\n captureAt: adDetectInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad detect tracking:\",\n error\n );\n }\n}\nasync function sendAdLoadedTracking(licenseKey, adLoadedInfo, context = {}) {\n try {\n await sendHeartbeat(licenseKey, context, {\n adLoaded: true,\n captureAt: adLoadedInfo.timestamp\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad loaded tracking:\",\n error\n );\n }\n}\nasync function sendAdImpressionTracking(licenseKey, adImpressionInfo, context = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const metricEvent = await buildPlayerMetricEvent(context, {\n captureAt: adImpressionInfo.timestamp\n });\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [metricEvent]\n });\n await ingestPlayerTracking(licenseKey, \"impressions\", {\n events: [\n {\n player_id: metricEvent.player_id,\n ad_played_count: 1,\n ad_url: adImpressionInfo.adUrl,\n capture_at: adImpressionInfo.timestamp,\n source: \"gam\",\n ...context.contentNetwork ? { content_network: context.contentNetwork } : {},\n ...context.contentChannel ? { content_channel: context.contentChannel } : {},\n ...context.contentTitle ? { content_title: context.contentTitle } : {}\n }\n ]\n });\n } catch (error) {\n console.error(\n \"[StormcloudVideoPlayer] Error sending ad impression tracking:\",\n error\n );\n }\n}\nasync function sendHeartbeat(licenseKey, context = {}, flags = {}) {\n if (!canPublish(licenseKey)) return;\n try {\n const heartbeatData = await buildPlayerMetricEvent(context, flags);\n await ingestPlayerTracking(licenseKey, \"metrics\", {\n events: [heartbeatData]\n });\n } catch (error) {\n console.error(\"[StormcloudVideoPlayer] Error sending heartbeat:\", error);\n }\n}\n\n// src/utils/polyfills.ts\nfunction polyfillURLSearchParams() {\n if (typeof URLSearchParams !== \"undefined\") {\n return;\n }\n class URLSearchParamsPolyfill {\n constructor(init) {\n this.params = /* @__PURE__ */ new Map();\n if (typeof init === \"string\") {\n this.parseQueryString(init);\n } else if (init instanceof URLSearchParamsPolyfill) {\n init.forEach((value, key) => {\n this.append(key, value);\n });\n }\n }\n parseQueryString(query) {\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return;\n cleanQuery.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n const decodedKey = this.safeDecodeURIComponent(key);\n const decodedValue = value ? this.safeDecodeURIComponent(value) : \"\";\n this.append(decodedKey, decodedValue);\n }\n });\n }\n safeDecodeURIComponent(str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, \" \"));\n } catch (e) {\n return str;\n }\n }\n append(name, value) {\n const values = this.params.get(name) || [];\n values.push(String(value));\n this.params.set(name, values);\n }\n delete(name) {\n this.params.delete(name);\n }\n get(name) {\n const values = this.params.get(name);\n return values && values.length > 0 && values[0] !== void 0 ? values[0] : null;\n }\n getAll(name) {\n return this.params.get(name) || [];\n }\n has(name) {\n return this.params.has(name);\n }\n set(name, value) {\n this.params.set(name, [String(value)]);\n }\n forEach(callback) {\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n callback(value, key, this);\n });\n });\n }\n toString() {\n const parts = [];\n this.params.forEach((values, key) => {\n values.forEach((value) => {\n parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);\n });\n });\n return parts.join(\"&\");\n }\n }\n window.URLSearchParams = URLSearchParamsPolyfill;\n}\nfunction polyfillTextEncoder() {\n if (typeof TextEncoder !== \"undefined\") {\n return;\n }\n class TextEncoderPolyfill {\n constructor() {\n this.encoding = \"utf-8\";\n }\n encode(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 128) {\n utf8.push(charcode);\n } else if (charcode < 2048) {\n utf8.push(192 | charcode >> 6, 128 | charcode & 63);\n } else if (charcode < 55296 || charcode >= 57344) {\n utf8.push(\n 224 | charcode >> 12,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n } else {\n i++;\n charcode = 65536 + ((charcode & 1023) << 10 | str.charCodeAt(i) & 1023);\n utf8.push(\n 240 | charcode >> 18,\n 128 | charcode >> 12 & 63,\n 128 | charcode >> 6 & 63,\n 128 | charcode & 63\n );\n }\n }\n return new Uint8Array(utf8);\n }\n }\n window.TextEncoder = TextEncoderPolyfill;\n}\nfunction polyfillPromiseFinally() {\n if (typeof Promise !== \"undefined\" && !Promise.prototype.finally) {\n Promise.prototype.finally = function(callback) {\n const constructor = this.constructor;\n return this.then(\n (value) => constructor.resolve(callback()).then(() => value),\n (reason) => constructor.resolve(callback()).then(() => {\n throw reason;\n })\n );\n };\n }\n}\nfunction polyfillObjectAssign() {\n if (typeof Object.assign !== \"function\") {\n Object.assign = function(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const to = Object(target);\n for (let i = 0; i < sources.length; i++) {\n const nextSource = sources[i];\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n };\n }\n}\nfunction polyfillArrayFrom() {\n if (!Array.from) {\n Array.from = function(arrayLike, mapFn, thisArg) {\n const items = Object(arrayLike);\n if (arrayLike == null) {\n throw new TypeError(\"Array.from requires an array-like object\");\n }\n const len = items.length >>> 0;\n const result = new Array(len);\n for (let i = 0; i < len; i++) {\n if (mapFn) {\n result[i] = mapFn.call(thisArg, items[i], i);\n } else {\n result[i] = items[i];\n }\n }\n return result;\n };\n }\n}\nfunction polyfillStringStartsWith() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(search, pos) {\n pos = !pos || pos < 0 ? 0 : +pos;\n return this.substring(pos, pos + search.length) === search;\n };\n }\n}\nfunction polyfillStringEndsWith() {\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function(search, length) {\n if (length === void 0 || length > this.length) {\n length = this.length;\n }\n return this.substring(length - search.length, length) === search;\n };\n }\n}\nfunction polyfillStringIncludes() {\n if (!String.prototype.includes) {\n String.prototype.includes = function(search, start) {\n if (typeof start !== \"number\") {\n start = 0;\n }\n if (start + search.length > this.length) {\n return false;\n }\n return this.indexOf(search, start) !== -1;\n };\n }\n}\nfunction initializePolyfills() {\n polyfillObjectAssign();\n polyfillArrayFrom();\n polyfillStringStartsWith();\n polyfillStringEndsWith();\n polyfillStringIncludes();\n polyfillURLSearchParams();\n polyfillTextEncoder();\n polyfillPromiseFinally();\n}\n\n// src/player/Scte35Parser.ts\nfunction parseCueOutDuration(value) {\n const num = parseFloat(value.trim());\n if (!Number.isNaN(num)) return num;\n const match = value.match(/(?:^|[,\\s])DURATION\\s*=\\s*([0-9.]+)/i) || value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (match && match[1] != null) {\n const dStr = match[1];\n const d = parseFloat(dStr);\n return Number.isNaN(d) ? void 0 : d;\n }\n return void 0;\n}\nfunction parseCueOutCont(value) {\n const res = {};\n const elapsedMatch = value.match(/Elapsed\\s*=\\s*([0-9.]+)/i);\n const durationMatch = value.match(/Duration\\s*=\\s*([0-9.]+)/i);\n if (elapsedMatch && elapsedMatch[1] != null) {\n const e = parseFloat(elapsedMatch[1]);\n if (!Number.isNaN(e)) res.elapsed = e;\n }\n if (durationMatch && durationMatch[1] != null) {\n const d = parseFloat(durationMatch[1]);\n if (!Number.isNaN(d)) res.duration = d;\n }\n if (!(\"elapsed\" in res) || !(\"duration\" in res)) {\n const slashMatch = value.match(/([0-9.]+)\\s*\\/\\s*([0-9.]+)/);\n if (slashMatch && slashMatch[1] && slashMatch[2]) {\n const elapsed = parseFloat(slashMatch[1]);\n const duration = parseFloat(slashMatch[2]);\n if (!Number.isNaN(elapsed) && !(\"elapsed\" in res)) res.elapsed = elapsed;\n if (!Number.isNaN(duration) && !(\"duration\" in res)) res.duration = duration;\n }\n }\n if (\"elapsed\" in res || \"duration\" in res) return res;\n return void 0;\n}\nfunction parseAttributeList(value) {\n const attrs = {};\n const regex = /([A-Z0-9-]+)=((\"[^\"]*\")|([^\",]*))(?:,|$)/gi;\n let match;\n while ((match = regex.exec(value)) !== null) {\n const key = match[1] ?? \"\";\n let rawVal = match[3] ?? match[4] ?? \"\";\n if (rawVal.startsWith('\"') && rawVal.endsWith('\"')) {\n rawVal = rawVal.slice(1, -1);\n }\n if (key) {\n attrs[key] = rawVal;\n }\n }\n return attrs;\n}\nfunction toNumber(val) {\n if (val == null) return void 0;\n const n = typeof val === \"string\" ? parseFloat(val) : Number(val);\n return Number.isNaN(n) ? void 0 : n;\n}\nfunction getDateRangeDurationSeconds(attrs) {\n return toNumber(attrs[\"DURATION\"]) ?? toNumber(attrs[\"PLANNED-DURATION\"]);\n}\nfunction isManifestBasedMarker(marker) {\n const raw = marker.raw;\n if (!raw) return false;\n if (raw.tag) {\n const tag = String(raw.tag);\n return tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-CUE-IN\") || tag.includes(\"EXT-X-DATERANGE\");\n }\n if (raw.id3) return false;\n if (raw.splice_command_type) return false;\n return false;\n}\nfunction decodeId3ValueToText(value) {\n try {\n if (typeof value === \"string\") return value;\n const decoder = new TextDecoder(\"utf-8\", { fatal: false });\n const text = decoder.decode(value);\n if (text && /[\\x20-\\x7E]/.test(text)) return text;\n let out = \"\";\n for (let i = 0; i < value.length; i++)\n out += String.fromCharCode(value[i]);\n return out;\n } catch {\n return void 0;\n }\n}\nfunction getFragmentStartSeconds(frag) {\n const candidates = [frag?.start, frag?.startPTS];\n for (const candidate of candidates) {\n if (typeof candidate === \"number\" && Number.isFinite(candidate)) {\n return candidate;\n }\n }\n return void 0;\n}\nfunction parseScte35FromId3(tag) {\n const text = decodeId3ValueToText(tag.value);\n if (!text) return void 0;\n const cueOutMatch = text.match(/EXT-X-CUE-OUT(?::([^\\r\\n]*))?/i) || text.match(/CUE-OUT(?::([^\\r\\n]*))?/i);\n if (cueOutMatch) {\n const arg = (cueOutMatch[1] ?? \"\").trim();\n const dur = parseCueOutDuration(arg);\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...dur !== void 0 ? { durationSeconds: dur } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueOutContMatch = text.match(/EXT-X-CUE-OUT-CONT:([^\\r\\n]*)/i);\n if (cueOutContMatch) {\n const arg = (cueOutContMatch[1] ?? \"\").trim();\n const cont = parseCueOutCont(arg);\n const marker = {\n type: \"progress\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...cont?.duration !== void 0 ? { durationSeconds: cont.duration } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const cueInMatch = text.match(/EXT-X-CUE-IN\\b/i) || text.match(/CUE-IN\\b/i);\n if (cueInMatch) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n const daterangeMatch = text.match(/EXT-X-DATERANGE:([^\\r\\n]*)/i);\n if (daterangeMatch) {\n const attrs = parseAttributeList(daterangeMatch[1] ?? \"\");\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = toNumber(attrs[\"DURATION\"]);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n if (hasScteIn) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text, attrs }\n };\n return marker;\n }\n }\n if (/SCTE35-OUT/i.test(text)) {\n const marker = {\n type: \"start\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (/SCTE35-IN/i.test(text)) {\n const marker = {\n type: \"end\",\n ...tag.ptsSeconds !== void 0 ? { ptsSeconds: tag.ptsSeconds } : {},\n raw: { id3: text }\n };\n return marker;\n }\n if (tag.value instanceof Uint8Array) {\n const bin = parseScte35Binary(tag.value);\n if (bin) return bin;\n }\n return void 0;\n}\nfunction normalizeFragmentPayload(payload) {\n if (payload instanceof Uint8Array) {\n return payload;\n }\n if (payload instanceof ArrayBuffer) {\n return new Uint8Array(payload);\n }\n if (ArrayBuffer.isView(payload)) {\n const view = payload;\n return new Uint8Array(view.buffer, view.byteOffset, view.byteLength);\n }\n return void 0;\n}\nfunction detectTsPacketFormat(data) {\n const packetSizes = [188, 192, 204];\n for (const packetSize of packetSizes) {\n const tsPayloadOffset = packetSize === 192 ? 4 : 0;\n for (let offset = 0; offset < packetSize; offset++) {\n let matchedPackets = 0;\n for (let packetStart = offset; packetStart + tsPayloadOffset < data.length && matchedPackets < 5; packetStart += packetSize) {\n if (data[packetStart + tsPayloadOffset] !== 71) {\n break;\n }\n matchedPackets++;\n }\n if (matchedPackets >= 2) {\n return { offset, packetSize, tsPayloadOffset };\n }\n }\n }\n return void 0;\n}\nfunction getPsiSectionStart(payload, payloadUnitStart) {\n if (!payloadUnitStart) {\n return void 0;\n }\n const pointerField = payload[0];\n if (pointerField == null) {\n return void 0;\n }\n const sectionStart = 1 + pointerField;\n return sectionStart < payload.length ? sectionStart : void 0;\n}\nfunction getPsiSectionLength(data, offset) {\n return ((data[offset + 1] ?? 0) & 15) << 8 | (data[offset + 2] ?? 0);\n}\nfunction parsePatSection(payload, payloadUnitStart, pmtPids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 8 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 0) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n for (let offset = sectionStart + 8; offset + 4 <= sectionEnd - 4; offset += 4) {\n const programNumber = (payload[offset] ?? 0) << 8 | (payload[offset + 1] ?? 0);\n const pid = ((payload[offset + 2] ?? 0) & 31) << 8 | (payload[offset + 3] ?? 0);\n if (programNumber !== 0) {\n pmtPids.add(pid);\n }\n }\n}\nfunction descriptorsIdentifyScte35(data, start, end) {\n let offset = start;\n while (offset + 2 <= end) {\n const tag = data[offset] ?? 0;\n const length = data[offset + 1] ?? 0;\n const descriptorStart = offset + 2;\n const descriptorEnd = descriptorStart + length;\n if (descriptorEnd > end) {\n return false;\n }\n const registration = length >= 4 ? String.fromCharCode(\n data[descriptorStart] ?? 0,\n data[descriptorStart + 1] ?? 0,\n data[descriptorStart + 2] ?? 0,\n data[descriptorStart + 3] ?? 0\n ) : \"\";\n if (tag === 138 || registration === \"CUEI\" || registration === \"SCTE\") {\n return true;\n }\n offset = descriptorEnd;\n }\n return false;\n}\nfunction parsePmtSection(payload, payloadUnitStart, tsScte35Pids) {\n const sectionStart = getPsiSectionStart(payload, payloadUnitStart);\n if (sectionStart == null || sectionStart + 12 >= payload.length) {\n return;\n }\n if (payload[sectionStart] !== 2) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, sectionStart);\n const sectionEnd = Math.min(\n payload.length,\n sectionStart + 3 + sectionLength\n );\n const programInfoLength = ((payload[sectionStart + 10] ?? 0) & 15) << 8 | (payload[sectionStart + 11] ?? 0);\n let offset = sectionStart + 12 + programInfoLength;\n while (offset + 5 <= sectionEnd - 4) {\n const streamType = payload[offset] ?? 0;\n const elementaryPid = ((payload[offset + 1] ?? 0) & 31) << 8 | (payload[offset + 2] ?? 0);\n const esInfoLength = ((payload[offset + 3] ?? 0) & 15) << 8 | (payload[offset + 4] ?? 0);\n const descriptorStart = offset + 5;\n const descriptorEnd = Math.min(descriptorStart + esInfoLength, sectionEnd - 4);\n if (streamType === 134 || streamType === 6 && descriptorsIdentifyScte35(payload, descriptorStart, descriptorEnd)) {\n tsScte35Pids.add(elementaryPid);\n }\n offset = descriptorStart + esInfoLength;\n }\n}\nfunction hasProcessedTsScte35Section(section, processedSections) {\n let checksum = 0;\n for (let i = 0; i < section.length; i++) {\n checksum = checksum * 31 + (section[i] ?? 0) >>> 0;\n }\n const key = `${section.length}:${checksum}`;\n if (processedSections.has(key)) {\n return true;\n }\n processedSections.add(key);\n if (processedSections.size > 200) {\n const firstKey = processedSections.values().next().value;\n if (firstKey) {\n processedSections.delete(firstKey);\n }\n }\n return false;\n}\nfunction addScte35SectionMarker(section, markers, processedSections) {\n if (section[0] !== 252 || hasProcessedTsScte35Section(section, processedSections)) {\n return;\n }\n const marker = parseScte35Binary(section);\n if (!marker) {\n return;\n }\n marker.raw = {\n ...typeof marker.raw === \"object\" && marker.raw ? marker.raw : {},\n source: \"ts-packet\"\n };\n markers.push(marker);\n}\nfunction appendScte35Bytes(pid, bytes, assemblers, markers, processedSections) {\n const assembler = assemblers.get(pid);\n if (!assembler) {\n return;\n }\n for (let i = 0; i < bytes.length && assembler.bytes.length < assembler.expectedLength; i++) {\n assembler.bytes.push(bytes[i] ?? 0);\n }\n if (assembler.bytes.length >= assembler.expectedLength) {\n assemblers.delete(pid);\n addScte35SectionMarker(new Uint8Array(assembler.bytes), markers, processedSections);\n }\n}\nfunction collectScte35SectionsFromPayload(pid, payload, payloadUnitStart, assemblers, markers, processedSections) {\n if (payload.length === 0) {\n return;\n }\n let offset = 0;\n if (payloadUnitStart) {\n const pointerField = payload[0] ?? 0;\n const previousAssembler = assemblers.get(pid);\n if (previousAssembler && pointerField > 0) {\n appendScte35Bytes(\n pid,\n payload.subarray(1, Math.min(1 + pointerField, payload.length)),\n assemblers,\n markers,\n processedSections\n );\n }\n assemblers.delete(pid);\n offset = 1 + pointerField;\n } else {\n appendScte35Bytes(pid, payload, assemblers, markers, processedSections);\n return;\n }\n while (offset + 3 <= payload.length) {\n const tableId = payload[offset];\n if (tableId == null || tableId === 255) {\n return;\n }\n const sectionLength = getPsiSectionLength(payload, offset);\n const totalLength = 3 + sectionLength;\n if (sectionLength <= 0 || totalLength <= 3) {\n return;\n }\n if (offset + totalLength <= payload.length) {\n addScte35SectionMarker(\n payload.subarray(offset, offset + totalLength),\n markers,\n processedSections\n );\n offset += totalLength;\n } else {\n assemblers.set(pid, {\n bytes: Array.from(payload.subarray(offset)),\n expectedLength: totalLength\n });\n return;\n }\n }\n}\nfunction parseScte35FromTsPackets(data, tsScte35Pids, pmtPids, processedSections) {\n const packetInfo = detectTsPacketFormat(data);\n if (!packetInfo) {\n return [];\n }\n const markers = [];\n const sectionAssemblers = /* @__PURE__ */ new Map();\n for (let packetStart = packetInfo.offset; packetStart + packetInfo.packetSize <= data.length; packetStart += packetInfo.packetSize) {\n const tsStart = packetStart + packetInfo.tsPayloadOffset;\n if (data[tsStart] !== 71) {\n continue;\n }\n const secondByte = data[tsStart + 1];\n const thirdByte = data[tsStart + 2];\n const fourthByte = data[tsStart + 3];\n if (secondByte == null || thirdByte == null || fourthByte == null || (secondByte & 128) !== 0) {\n continue;\n }\n const payloadUnitStart = (secondByte & 64) !== 0;\n const pid = (secondByte & 31) << 8 | thirdByte;\n const adaptationFieldControl = fourthByte >> 4 & 3;\n const hasPayload = adaptationFieldControl === 1 || adaptationFieldControl === 3;\n if (!hasPayload) {\n continue;\n }\n let payloadStart = tsStart + 4;\n if (adaptationFieldControl === 3) {\n const adaptationLength = data[payloadStart];\n if (adaptationLength == null) {\n continue;\n }\n payloadStart += 1 + adaptationLength;\n }\n const payloadEnd = Math.min(tsStart + 188, data.length);\n if (payloadStart >= payloadEnd || payloadStart >= data.length) {\n continue;\n }\n const payload = data.subarray(payloadStart, payloadEnd);\n if (pid === 0) {\n parsePatSection(payload, payloadUnitStart, pmtPids);\n } else if (pmtPids.has(pid)) {\n parsePmtSection(payload, payloadUnitStart, tsScte35Pids);\n } else if (tsScte35Pids.has(pid)) {\n collectScte35SectionsFromPayload(\n pid,\n payload,\n payloadUnitStart,\n sectionAssemblers,\n markers,\n processedSections\n );\n }\n }\n return markers;\n}\nvar BitReader = class {\n constructor(buf) {\n this.buf = buf;\n this.bytePos = 0;\n this.bitPos = 0;\n }\n readBits(numBits) {\n let result = 0;\n while (numBits > 0) {\n if (this.bytePos >= this.buf.length) return result;\n const remainingInByte = 8 - this.bitPos;\n const toRead = Math.min(numBits, remainingInByte);\n const currentByte = this.buf[this.bytePos];\n const shift = remainingInByte - toRead;\n const mask = (1 << toRead) - 1 & 255;\n const bits = currentByte >> shift & mask;\n result = result << toRead | bits;\n this.bitPos += toRead;\n if (this.bitPos >= 8) {\n this.bitPos = 0;\n this.bytePos += 1;\n }\n numBits -= toRead;\n }\n return result >>> 0;\n }\n skipBits(n) {\n this.readBits(n);\n }\n get bytePosition() {\n return this.bitPos === 0 ? this.bytePos : this.bytePos + 1;\n }\n};\nfunction readSpliceTime(r, ptsAdjustmentTicks) {\n const timeSpecifiedFlag = r.readBits(1) === 1;\n if (!timeSpecifiedFlag) {\n r.readBits(7);\n return void 0;\n }\n r.readBits(6);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const ptsTicks = (high * 4294967296 + low + ptsAdjustmentTicks) % 8589934592;\n return ptsTicks / 9e4;\n}\nfunction markerTypeFromSegmentationTypeId(segmentationTypeId) {\n switch (segmentationTypeId) {\n case 16:\n case 34:\n case 48:\n case 50:\n case 52:\n case 54:\n return \"start\";\n case 17:\n case 35:\n case 49:\n case 51:\n case 53:\n case 55:\n return \"end\";\n default:\n return void 0;\n }\n}\nfunction parseScte35SegmentationDescriptor(descriptor) {\n if (descriptor.length < 11) {\n return void 0;\n }\n const identifier = String.fromCharCode(\n descriptor[0] ?? 0,\n descriptor[1] ?? 0,\n descriptor[2] ?? 0,\n descriptor[3] ?? 0\n );\n if (identifier !== \"CUEI\") {\n return void 0;\n }\n const segmentationEventId = (descriptor[4] ?? 0) * 16777216 + ((descriptor[5] ?? 0) << 16) + ((descriptor[6] ?? 0) << 8) + (descriptor[7] ?? 0);\n const cancelIndicator = ((descriptor[8] ?? 0) & 128) !== 0;\n if (cancelIndicator) {\n return void 0;\n }\n const flags = descriptor[9] ?? 0;\n const programSegmentationFlag = (flags & 128) !== 0;\n const segmentationDurationFlag = (flags & 64) !== 0;\n let offset = 10;\n if (!programSegmentationFlag) {\n const componentCount = descriptor[offset] ?? 0;\n offset += 1 + componentCount * 6;\n if (offset > descriptor.length) {\n return void 0;\n }\n }\n let durationSeconds = void 0;\n if (segmentationDurationFlag) {\n if (offset + 5 > descriptor.length) {\n return void 0;\n }\n const durationTicks = (descriptor[offset] ?? 0) * 4294967296 + (descriptor[offset + 1] ?? 0) * 16777216 + ((descriptor[offset + 2] ?? 0) << 16) + ((descriptor[offset + 3] ?? 0) << 8) + (descriptor[offset + 4] ?? 0);\n durationSeconds = durationTicks / 9e4;\n offset += 5;\n }\n if (offset + 2 > descriptor.length) {\n return void 0;\n }\n offset += 1;\n const segmentationUpidLength = descriptor[offset] ?? 0;\n offset += 1 + segmentationUpidLength;\n if (offset >= descriptor.length) {\n return void 0;\n }\n const segmentationTypeId = descriptor[offset] ?? 0;\n const markerType = markerTypeFromSegmentationTypeId(segmentationTypeId);\n if (!markerType) {\n return void 0;\n }\n return {\n type: markerType,\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n segmentationEventId\n };\n}\nfunction parseScte35SegmentationDescriptors(data, offset) {\n if (offset + 2 > data.length) {\n return void 0;\n }\n const descriptorLoopLength = (data[offset] ?? 0) << 8 | (data[offset + 1] ?? 0);\n let descriptorOffset = offset + 2;\n const descriptorEnd = Math.min(\n data.length,\n descriptorOffset + descriptorLoopLength\n );\n while (descriptorOffset + 2 <= descriptorEnd) {\n const descriptorTag = data[descriptorOffset] ?? 0;\n const descriptorLength = data[descriptorOffset + 1] ?? 0;\n const descriptorDataStart = descriptorOffset + 2;\n const descriptorDataEnd = descriptorDataStart + descriptorLength;\n if (descriptorDataEnd > descriptorEnd) {\n return void 0;\n }\n if (descriptorTag === 2) {\n const descriptorMarker = parseScte35SegmentationDescriptor(\n data.subarray(descriptorDataStart, descriptorDataEnd)\n );\n if (descriptorMarker) {\n return descriptorMarker;\n }\n }\n descriptorOffset = descriptorDataEnd;\n }\n return void 0;\n}\nfunction parseScte35Binary(data) {\n const r = new BitReader(data);\n const tableId = r.readBits(8);\n if (tableId !== 252) return void 0;\n r.readBits(1);\n r.readBits(1);\n r.readBits(2);\n const sectionLength = r.readBits(12);\n if (sectionLength <= 0 || data.length < 3 + sectionLength) {\n return void 0;\n }\n r.readBits(8);\n r.readBits(1);\n r.readBits(6);\n const ptsAdjHigh = r.readBits(1);\n const ptsAdjLow = r.readBits(32);\n const ptsAdjustmentTicks = ptsAdjHigh * 4294967296 + ptsAdjLow;\n r.readBits(8);\n r.readBits(12);\n const spliceCommandLength = r.readBits(12);\n const spliceCommandType = r.readBits(8);\n let markerType;\n let durationSeconds = void 0;\n let ptsSeconds = void 0;\n let spliceEventId = void 0;\n const commandBodyStart = r.bytePosition;\n if (spliceCommandType === 5) {\n spliceEventId = r.readBits(32);\n const cancel = r.readBits(1) === 1;\n r.readBits(7);\n if (cancel) return void 0;\n const outOfNetwork = r.readBits(1) === 1;\n const programSpliceFlag = r.readBits(1) === 1;\n const durationFlag = r.readBits(1) === 1;\n const spliceImmediateFlag = r.readBits(1) === 1;\n r.readBits(4);\n markerType = outOfNetwork ? \"start\" : \"end\";\n if (programSpliceFlag && !spliceImmediateFlag) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else if (!programSpliceFlag) {\n const componentCount = r.readBits(8);\n for (let i = 0; i < componentCount; i++) {\n r.readBits(8);\n if (!spliceImmediateFlag) {\n const componentPtsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n if (ptsSeconds === void 0) {\n ptsSeconds = componentPtsSeconds;\n }\n }\n }\n }\n if (durationFlag) {\n r.readBits(6);\n r.readBits(1);\n const high = r.readBits(1);\n const low = r.readBits(32);\n const durationTicks = high * 4294967296 + low;\n durationSeconds = durationTicks / 9e4;\n }\n r.readBits(16);\n r.readBits(8);\n r.readBits(8);\n } else if (spliceCommandType === 6) {\n ptsSeconds = readSpliceTime(r, ptsAdjustmentTicks);\n } else {\n return void 0;\n }\n const expectedDescriptorOffset = spliceCommandLength === 4095 ? r.bytePosition : commandBodyStart + spliceCommandLength;\n const descriptorMarker = parseScte35SegmentationDescriptors(\n data,\n expectedDescriptorOffset\n );\n if (descriptorMarker) {\n markerType = descriptorMarker.type;\n if (durationSeconds === void 0) {\n durationSeconds = descriptorMarker.durationSeconds;\n }\n }\n if (!markerType) {\n return void 0;\n }\n const marker = {\n type: markerType,\n ...ptsSeconds !== void 0 ? { ptsSeconds } : {},\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: {\n splice_command_type: spliceCommandType,\n ...spliceEventId !== void 0 ? { splice_event_id: spliceEventId } : {},\n ...descriptorMarker?.segmentationEventId !== void 0 ? { segmentation_event_id: descriptorMarker.segmentationEventId } : {}\n }\n };\n return marker;\n}\n\n// src/player/Scte35CueManager.ts\nvar Scte35CueManager = class {\n constructor(debug, callbacks) {\n this.pendingScte35Cues = /* @__PURE__ */ new Map();\n this.recentScte35CueKeys = /* @__PURE__ */ new Map();\n this.recentScte35CueLimit = 200;\n this.tsScte35Pids = /* @__PURE__ */ new Set();\n this.pmtPids = /* @__PURE__ */ new Set();\n this.processedTsScte35Sections = /* @__PURE__ */ new Set();\n this.debug = debug;\n this.callbacks = callbacks;\n }\n get pendingScte35CueKey() {\n return this.pendingScte35CueKeyValue;\n }\n set pendingScte35CueKey(value) {\n this.pendingScte35CueKeyValue = value;\n }\n get activeScte35BreakKey() {\n return this.activeScte35BreakKeyValue;\n }\n set activeScte35BreakKey(value) {\n this.activeScte35BreakKeyValue = value;\n }\n get scheduledScte35BreakKey() {\n return this.scheduledScte35BreakKeyValue;\n }\n set scheduledScte35BreakKey(value) {\n this.scheduledScte35BreakKeyValue = value;\n }\n createScte35CueContext(source, readiness, frag) {\n const context = { source, readiness };\n if (typeof frag?.sn === \"number\") {\n context.fragmentSn = frag.sn;\n }\n const fragmentStartSec = getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n return context;\n }\n onScte35Cue(marker, context) {\n const cue = this.createScte35Cue(marker, context);\n const pendingKey = this.getPendingScte35CueKey(cue);\n if (context.readiness === \"early\") {\n this.pendingScte35Cues.set(pendingKey, cue);\n this.trimRecentScte35CueMaps();\n if (marker.type === \"start\") {\n this.callbacks.onEarlyStartCue(marker, context.fragmentSn, cue.key);\n }\n return;\n }\n if (marker.type === \"end\" && !this.shouldAcceptScte35EndCue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 end cue\", {\n key: cue.key,\n activeScte35BreakKey: this.activeScte35BreakKeyValue,\n inAdBreak: this.callbacks.isInAdBreak(),\n source: cue.source\n });\n }\n return;\n }\n if (marker.type === \"start\" && this.hasRecentlyHandledScte35Cue(cue)) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring duplicate SCTE-35 start cue\", {\n key: cue.key,\n source: cue.source\n });\n }\n return;\n }\n this.pendingScte35Cues.delete(pendingKey);\n this.markScte35CueHandled(cue);\n this.callbacks.onPlaybackCue(marker, cue.key);\n }\n activatePendingScte35CuesForFragment(frag) {\n const fragmentSn = typeof frag?.sn === \"number\" ? frag.sn : void 0;\n if (fragmentSn === void 0) {\n return;\n }\n const matchingCues = Array.from(this.pendingScte35Cues.entries()).filter(\n ([, cue]) => cue.fragmentSn === fragmentSn\n );\n matchingCues.forEach(([pendingKey, cue]) => {\n this.pendingScte35Cues.delete(pendingKey);\n const context = {\n source: cue.source,\n readiness: \"playback\"\n };\n context.fragmentSn = fragmentSn;\n const fragmentStartSec = cue.fragmentStartSeconds ?? getFragmentStartSeconds(frag);\n if (fragmentStartSec !== void 0) {\n context.fragmentStartSeconds = fragmentStartSec;\n }\n this.onScte35Cue(cue.marker, context);\n });\n }\n createScte35Cue(marker, context) {\n const cue = {\n marker,\n source: context.source,\n readiness: context.readiness,\n key: this.getScte35CueKey(marker, context)\n };\n if (context.fragmentSn !== void 0) {\n cue.fragmentSn = context.fragmentSn;\n }\n if (context.fragmentStartSeconds !== void 0) {\n cue.fragmentStartSeconds = context.fragmentStartSeconds;\n }\n return cue;\n }\n getScte35CueKey(marker, context) {\n const raw = this.getScte35MarkerRaw(marker);\n const spliceEventId = this.toIdentityString(raw?.splice_event_id);\n if (spliceEventId) {\n return `splice:${spliceEventId}`;\n }\n const segmentationEventId = this.toIdentityString(raw?.segmentation_event_id);\n if (segmentationEventId) {\n return `segmentation:${segmentationEventId}`;\n }\n const daterangeId = this.toIdentityString(raw?.attrs?.ID);\n if (daterangeId) {\n return `daterange:${daterangeId}`;\n }\n const scteValue = this.toIdentityString(raw?.attrs?.[\"SCTE35-OUT\"]) || this.toIdentityString(raw?.attrs?.[\"SCTE35-IN\"]);\n if (scteValue) {\n return `daterange-scte:${scteValue}`;\n }\n if (typeof marker.ptsSeconds === \"number\" && Number.isFinite(marker.ptsSeconds)) {\n return `pts:${Math.round(marker.ptsSeconds * 2) / 2}`;\n }\n if (context.fragmentSn !== void 0) {\n return `fragment:${context.fragmentSn}`;\n }\n return `${context.source}:wallclock:${Math.floor(Date.now() / 1e3)}`;\n }\n getPendingScte35CueKey(cue) {\n return `${cue.marker.type}:${cue.key}:${cue.fragmentSn !== void 0 ? cue.fragmentSn : \"unknown\"}`;\n }\n getScte35MarkerRaw(marker) {\n return typeof marker.raw === \"object\" && marker.raw !== null ? marker.raw : {};\n }\n toIdentityString(value) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return String(value);\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n return void 0;\n }\n isStrongScte35CueKey(key) {\n return !!(key && (key.startsWith(\"splice:\") || key.startsWith(\"segmentation:\") || key.startsWith(\"daterange:\") || key.startsWith(\"daterange-scte:\")));\n }\n hasRecentlyHandledScte35Cue(cue) {\n if (this.activeScte35BreakKeyValue === cue.key || this.scheduledScte35BreakKeyValue === cue.key) {\n return true;\n }\n const recentKey = `${cue.marker.type}:${cue.key}`;\n return this.recentScte35CueKeys.has(recentKey);\n }\n markScte35CueHandled(cue) {\n this.recentScte35CueKeys.set(`${cue.marker.type}:${cue.key}`, Date.now());\n this.trimRecentScte35CueMaps();\n }\n trimRecentScte35CueMaps() {\n while (this.recentScte35CueKeys.size > this.recentScte35CueLimit) {\n const firstKey = this.recentScte35CueKeys.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.recentScte35CueKeys.delete(firstKey);\n }\n while (this.pendingScte35Cues.size > this.recentScte35CueLimit) {\n const firstKey = this.pendingScte35Cues.keys().next().value;\n if (!firstKey) {\n break;\n }\n this.pendingScte35Cues.delete(firstKey);\n }\n }\n shouldAcceptScte35EndCue(cue) {\n if (!this.callbacks.isInAdBreak()) {\n return false;\n }\n if (this.isStrongScte35CueKey(this.activeScte35BreakKeyValue) && this.isStrongScte35CueKey(cue.key) && this.activeScte35BreakKeyValue !== cue.key) {\n return false;\n }\n return true;\n }\n};\n\n// src/player/AdConfigManager.ts\nfunction withDeferredPodParams(rawUrl, deferNonce) {\n try {\n const url = new URL(rawUrl);\n url.searchParams.set(\"pmnd\", \"[SCVP-PMND]\");\n url.searchParams.set(\"pmxd\", \"[SCVP-PMXD]\");\n url.searchParams.set(\"pmad\", \"[SCVP-PMAD]\");\n if (deferNonce && !url.searchParams.get(\"givn\")) {\n url.searchParams.delete(\"paln\");\n url.searchParams.set(\"givn\", \"[SCVP-GIVN]\");\n }\n return url.toString();\n } catch {\n return rawUrl;\n }\n}\nvar AdConfigManager = class {\n constructor(config, video) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds = /* @__PURE__ */ new Set();\n this.streamCorrelator = generateCorrelator();\n this.consentSignals = {};\n this.podCounter = 0;\n this.podAssignedByPrefetch = false;\n this.lastHeartbeatTime = 0;\n this.defaultEdgePodMaxAds = 6;\n this.palNonceDispatchWaitMs = 1500;\n this.config = config;\n this.video = video;\n }\n get viewCorrelator() {\n return getPageViewCorrelator();\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n isVmapEnabled() {\n return !!(this.config.isVmap && this.config.vmapUrl?.trim());\n }\n async fetchAdConfiguration() {\n if (this.isVmapEnabled()) {\n await this.fetchAndParseVmap(this.config.vmapUrl);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] VMAP mode enabled\");\n }\n return;\n }\n if (this.config.vastTagUrl) {\n this.apiVastTagUrl = normalizeVastTagUrl(this.config.vastTagUrl);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Using custom VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n return;\n }\n const apiUrl = \"https://edge.stormcloudhub.com/api/v1/adstorm/ads/web\";\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Fetching ad configuration from:\",\n apiUrl\n );\n }\n const headers = {};\n if (this.config.licenseKey) {\n headers[\"Authorization\"] = `Bearer ${this.config.licenseKey}`;\n }\n const response = await fetch(apiUrl, { headers });\n if (!response.ok) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Failed to fetch ad configuration: ${response.status}`\n );\n }\n return;\n }\n const data = await response.json();\n const apiEnableEdge = data.response?.enableEdgePodRequest;\n const apiEdgeUrl = data.response?.edgePodUrl;\n this.apiEnableEdgePodRequest = typeof apiEnableEdge === \"boolean\" ? apiEnableEdge : void 0;\n this.apiEdgePodUrl = typeof apiEdgeUrl === \"string\" ? apiEdgeUrl : void 0;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Edge pod settings from API:\", {\n enableEdgePodRequest: this.apiEnableEdgePodRequest,\n edgePodUrl: this.apiEdgePodUrl\n });\n }\n this.apiFloorLadder = data.response?.floorLadder;\n if (this.debug) {\n console.log(\n this.apiFloorLadder ? \"[StormcloudVideoPlayer] Floor ladder from API:\" : \"[StormcloudVideoPlayer] No floorLadder block in /ads/web response\",\n this.apiFloorLadder\n );\n }\n const imaPayload = data.response?.ima?.[\"publisherdesk.ima\"]?.payload;\n if (imaPayload) {\n let decodedPayload = imaPayload;\n try {\n decodedPayload = decodeURIComponent(imaPayload);\n } catch {\n console.warn(\"[StormcloudVideoPlayer] imaPayload was not URI-encoded; using as-is:\", imaPayload);\n }\n console.log(\"[StormcloudVideoPlayer] Raw VAST tag URL (from API):\", decodedPayload);\n this.apiVastTagUrl = normalizeVastTagUrl(decodedPayload);\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Normalized VAST tag URL:\",\n this.apiVastTagUrl\n );\n }\n } else {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] No VAST tag URL found in /ads/web response\"\n );\n }\n }\n const numberAds = data.response?.options?.vast?.cue_tones?.number_ads;\n if (numberAds != null && numberAds > 0) {\n this.apiNumberAds = numberAds;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Number of ads per break from API:\",\n this.apiNumberAds\n );\n }\n }\n }\n async fetchAndParseVmap(vmapUrl) {\n if (!vmapUrl.trim()) {\n return;\n }\n try {\n const response = await fetch(vmapUrl);\n if (!response.ok) {\n throw new Error(`Failed to fetch VMAP (${response.status})`);\n }\n const vmapXml = await response.text();\n this.vmapBreaks = this.parseVmapToBreaks(vmapXml);\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Loaded ${this.vmapBreaks.length} VMAP ad break(s) from:`,\n vmapUrl\n );\n }\n } catch (error) {\n this.vmapBreaks = [];\n this.consumedVmapBreakIds.clear();\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to load VMAP:\", error);\n }\n }\n }\n parseVmapToBreaks(vmapXml) {\n if (typeof DOMParser === \"undefined\") {\n return [];\n }\n const doc = new DOMParser().parseFromString(vmapXml, \"application/xml\");\n if (doc.querySelector(\"parsererror\")) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Invalid VMAP XML received\");\n }\n return [];\n }\n const VMAP_NS = \"http://www.iab.net/videosuite/vmap\";\n let adBreakNodes = Array.from(doc.getElementsByTagNameNS(VMAP_NS, \"AdBreak\"));\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(\n doc.querySelectorAll(\"AdBreak, vmap\\\\:AdBreak\")\n );\n }\n if (adBreakNodes.length === 0) {\n adBreakNodes = Array.from(doc.getElementsByTagName(\"*\")).filter(\n (el) => el.localName === \"AdBreak\"\n );\n }\n const parsed = [];\n adBreakNodes.forEach((node, index) => {\n const timeOffsetRaw = (node.getAttribute(\"timeOffset\") || \"\").trim();\n const startTimeMs = this.parseVmapTimeOffsetToMs(timeOffsetRaw);\n if (startTimeMs == null) {\n return;\n }\n let adTagNode = node.getElementsByTagNameNS(VMAP_NS, \"AdTagURI\")[0];\n if (!adTagNode) {\n adTagNode = node.querySelector(\"AdTagURI, vmap\\\\:AdTagURI\") ?? void 0;\n }\n const adTagUrl = (adTagNode?.textContent || \"\").trim();\n if (!adTagUrl) {\n return;\n }\n const breakId = node.getAttribute(\"breakId\") || `vmap-break-${index}-${timeOffsetRaw || \"unknown\"}`;\n parsed.push({\n id: breakId,\n startTimeMs,\n vastTagUrl: adTagUrl\n });\n });\n parsed.sort((a, b) => {\n const aStart = a.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : a.startTimeMs;\n const bStart = b.startTimeMs < 0 ? Number.MAX_SAFE_INTEGER : b.startTimeMs;\n return aStart - bStart;\n });\n return parsed;\n }\n parseVmapTimeOffsetToMs(timeOffset) {\n if (!timeOffset) {\n return void 0;\n }\n const normalized = timeOffset.trim().toLowerCase();\n if (normalized === \"start\") {\n return 0;\n }\n if (normalized === \"end\") {\n return -1;\n }\n const hms = timeOffset.match(\n /^(\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?$/\n );\n if (hms) {\n const [, hh, mm, ss, ms = \"0\"] = hms;\n const hours = Number(hh);\n const minutes = Number(mm);\n const seconds = Number(ss);\n const millis = Number(ms.padEnd(3, \"0\").slice(0, 3));\n return (hours * 3600 + minutes * 60 + seconds) * 1e3 + millis;\n }\n const percent = timeOffset.match(/^(\\d+(?:\\.\\d+)?)%$/);\n if (percent) {\n const ratio = Number(percent[1]) / 100;\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3 * ratio);\n }\n return void 0;\n }\n return void 0;\n }\n getAdBreakKey(adBreak) {\n if (adBreak.id) {\n return adBreak.id;\n }\n return `${adBreak.startTimeMs}-${adBreak.vastTagUrl || \"\"}`;\n }\n resolveBreakStartMs(adBreak) {\n if (adBreak.startTimeMs >= 0) {\n return adBreak.startTimeMs;\n }\n if (adBreak.startTimeMs === -1) {\n const durationSec = this.video.duration;\n if (Number.isFinite(durationSec) && durationSec > 0) {\n return Math.floor(durationSec * 1e3);\n }\n }\n return void 0;\n }\n findCurrentOrNextBreak(nowMs) {\n const schedule = this.vmapBreaks;\n let candidate;\n const tol = this.config.driftToleranceMs ?? 1e3;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (breakStartMs <= nowMs + tol && (candidate == null || breakStartMs > (this.resolveBreakStartMs(candidate) ?? 0))) {\n candidate = b;\n }\n }\n return candidate;\n }\n findBreakForTime(nowMs) {\n const schedule = this.vmapBreaks;\n for (const b of schedule) {\n if (this.consumedVmapBreakIds.has(this.getAdBreakKey(b))) {\n continue;\n }\n const breakStartMs = this.resolveBreakStartMs(b);\n if (breakStartMs == null) {\n continue;\n }\n if (b.durationMs) {\n const end = breakStartMs + b.durationMs;\n if (nowMs >= breakStartMs && nowMs < end) {\n return b;\n }\n continue;\n }\n if (nowMs >= breakStartMs) {\n return b;\n }\n }\n return void 0;\n }\n selectVastTagsForBreak(b) {\n if (!b || !b.vastTagUrl) return void 0;\n if (b.vastTagUrl.includes(\",\")) {\n return b.vastTagUrl.split(\",\").map((s) => s.trim()).filter((s) => s.length > 0);\n }\n return [b.vastTagUrl];\n }\n beginNewAdPod() {\n this.podCounter++;\n }\n resolveAdPodConfig() {\n return resolveAdPodConfig(this.config);\n }\n resolveEdgeMaxAds() {\n return this.resolveAdPodConfig().maxAdsPerBreak ?? (this.apiNumberAds && this.apiNumberAds > 0 ? this.apiNumberAds : this.defaultEdgePodMaxAds);\n }\n getPalDescriptionUrl() {\n if (!this.apiVastTagUrl) return void 0;\n try {\n const params = new URL(this.apiVastTagUrl).searchParams;\n return params.get(\"description_url\") || params.get(\"url\") || void 0;\n } catch {\n return void 0;\n }\n }\n generatePodVastUrl(baseUrl, adPlayer, palNonce, inAdBreak) {\n const adWillPlayMuted = inAdBreak ? adPlayer.getOriginalMutedState() : this.video.muted;\n const envSignals = resolveVastEnvironmentSignals(!!this.config.ctvAdRequest);\n const macroContext = {\n correlator: this.viewCorrelator,\n streamCorrelator: this.streamCorrelator,\n pod: this.podCounter > 0 ? this.podCounter : void 0,\n isCtv: envSignals.isCtv,\n pageUrl: !envSignals.isCtv && typeof window !== \"undefined\" ? toDevSafeUrl(window.location.href) : void 0,\n adWillPlayMuted,\n adWillAutoPlay: !!this.config.autoplay,\n sessionId: envSignals.sessionId,\n deviceId: envSignals.deviceId,\n deviceIdType: envSignals.deviceIdType,\n limitAdTracking: envSignals.limitAdTracking,\n deviceTypeHint: envSignals.deviceTypeHint,\n adTest: this.config.adTest,\n ...this.config.programTitle ? { programTitle: this.config.programTitle } : {},\n ...this.config.channelName ? { channelName: this.config.channelName } : {},\n consent: this.consentSignals,\n palNonce: palNonce.getCurrentNonce() || void 0\n };\n const nonceReady = !!macroContext.palNonce;\n let finalUrl;\n if (hasScvpMacros(baseUrl)) {\n const deferred = new Set(SCVP_POD_MACROS);\n if (!nonceReady) deferred.add(\"GIVN\");\n const { url, unresolved } = applyScvpMacros(baseUrl, macroContext, deferred);\n if (unresolved.length > 0) {\n console.warn(\n \"[StormcloudVideoPlayer] Unresolved SCVP macros (removed from request):\",\n unresolved.join(\", \")\n );\n }\n finalUrl = ensureVideoAdType(url);\n } else {\n finalUrl = withDeferredPodParams(\n palNonce.injectNonce(ensureVideoAdType(applyVastMacros(baseUrl, macroContext))),\n !nonceReady\n );\n }\n console.log(\n `[StormcloudVideoPlayer] Prepared optimized-pod request URL (pod=${this.podCounter}; pmnd/pmxd/pmad resolved at dispatch):`,\n finalUrl\n );\n return finalUrl;\n }\n async completeDeferredRequestSignals(url, palNonce) {\n if (findScvpMacroNames(url).indexOf(\"GIVN\") === -1) return url;\n const nonce = palNonce.getCurrentNonce() || await palNonce.waitForNonce(this.palNonceDispatchWaitMs);\n if (!nonce) return url;\n return substituteScvpMacros(url, /* @__PURE__ */ new Map([[\"GIVN\", nonce]]), (name) => name !== \"GIVN\").url;\n }\n // --- Tracking ---\n initializeTracking() {\n sendInitialTracking(this.config.licenseKey, buildAnalyticsContext(this.config)).then(() => {\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n }).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send initial tracking:\",\n error\n );\n }\n this.heartbeatInterval = window.setInterval(() => {\n this.sendHeartbeatIfNeeded();\n }, 5e3);\n });\n }\n sendHeartbeatIfNeeded() {\n const now = Date.now();\n if (!this.lastHeartbeatTime || now - this.lastHeartbeatTime > 3e4) {\n this.lastHeartbeatTime = now;\n sendHeartbeat(this.config.licenseKey, buildAnalyticsContext(this.config)).catch((error) => {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to send heartbeat:\",\n error\n );\n }\n });\n }\n }\n destroyTracking() {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = void 0;\n }\n }\n};\n\n// src/player/AdTimingService.ts\nfunction monotonicNow() {\n return typeof performance !== \"undefined\" && typeof performance.now === \"function\" ? performance.now() : Date.now();\n}\nvar AdTimingService = class {\n constructor(config, video, callbacks) {\n this.adRequestWatchdogToken = null;\n this.adFailsafeToken = null;\n this.ptsDriftEmaMs = 0;\n this.adBreakPlayedDurationMs = 0;\n this.adBreakEpoch = 0;\n this.adRequestTokenCounter = 0;\n this.activeAdRequestToken = null;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.totalAdRequestsInBreak = 0;\n this.maxTotalAdRequestsPerBreak = 10;\n this.lastAdRequestTime = 0;\n this.consecutiveFailures = 0;\n this.maxConsecutiveFailures = 5;\n this.minAdRequestIntervalMs = 3e3;\n this.backoffBaseMs = 1e3;\n this.maxBackoffMs = 15e3;\n this.defaultMinRemainingMsToStartAd = 4e3;\n this.failedVastUrls = /* @__PURE__ */ new Set();\n this.temporaryFailureUrls = /* @__PURE__ */ new Map();\n this.temporaryFailureCooldownMs = 3e4;\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillThreshold = 3;\n this.globalNoFillCooldownUntil = 0;\n this.globalNoFillBackoffBaseMs = 5e3;\n this.globalNoFillBackoffMaxMs = 6e4;\n this.globalLastGamRequestTime = 0;\n this.globalMinGamIntervalMs = 3e3;\n this.config = config;\n this.video = video;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n // --- Ad stop timer ---\n scheduleAdStopCountdown(remainingMs) {\n this.clearAdStopTimer();\n const ms = Math.max(0, Math.floor(remainingMs));\n if (ms === 0) {\n this.ensureAdStoppedByTimer();\n return;\n }\n this.adStopTimerId = window.setTimeout(() => {\n this.ensureAdStoppedByTimer();\n }, ms);\n }\n clearAdStopTimer() {\n if (this.adStopTimerId != null) {\n clearTimeout(this.adStopTimerId);\n this.adStopTimerId = void 0;\n }\n }\n ensureAdStoppedByTimer() {\n this.adStopTimerId = void 0;\n this.callbacks.onAdStopTimerFired();\n }\n // --- Ad start timer ---\n scheduleAdStartIn(delayMs, marker = { type: \"start\" }, cueKey) {\n this.clearAdStartTimer();\n const ms = Math.max(0, Math.floor(delayMs));\n if (ms === 0) {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n return;\n }\n this.adStartTimerId = window.setTimeout(() => {\n this.callbacks.onAdStartTimerFired(marker, cueKey);\n }, ms);\n }\n clearAdStartTimer() {\n if (this.adStartTimerId != null) {\n clearTimeout(this.adStartTimerId);\n this.adStartTimerId = void 0;\n }\n }\n // --- PTS drift ---\n updatePtsDrift(ptsSecondsSample) {\n const sampleMs = (this.video.currentTime - ptsSecondsSample) * 1e3;\n if (!Number.isFinite(sampleMs) || Math.abs(sampleMs) > 6e4) return;\n const alpha = 0.1;\n this.ptsDriftEmaMs = this.ptsDriftEmaMs * (1 - alpha) + sampleMs * alpha;\n }\n resolveScteBreakStartWallClockMs(marker) {\n const nowWallClockMs = Date.now();\n if (typeof marker.ptsSeconds !== \"number\") {\n return nowWallClockMs;\n }\n const nowMs = this.video.currentTime * 1e3;\n const estimatedCurrentPtsMs = nowMs - this.ptsDriftEmaMs;\n const deltaMs = marker.ptsSeconds * 1e3 - estimatedCurrentPtsMs;\n if (!Number.isFinite(deltaMs)) {\n return nowWallClockMs;\n }\n return nowWallClockMs + Math.floor(deltaMs);\n }\n // --- Duration boundary ---\n beginBreakTiming(startWallClockMs) {\n this.currentAdBreakStartWallClockMs = startWallClockMs;\n this.breakStartMonoMs = monotonicNow() + (startWallClockMs - Date.now());\n this.breakEndMonoMs = void 0;\n }\n markBreakEndedNow() {\n this.scteAdBreakEndWallClockMs = Date.now();\n this.breakEndMonoMs = monotonicNow();\n }\n setAdBreakDurationBoundary(durationMs) {\n this.expectedAdBreakDurationMs = durationMs;\n if (durationMs != null && this.currentAdBreakStartWallClockMs != null) {\n this.scteAdBreakEndWallClockMs = this.currentAdBreakStartWallClockMs + durationMs;\n } else {\n this.scteAdBreakEndWallClockMs = void 0;\n }\n this.breakEndMonoMs = durationMs != null && this.breakStartMonoMs != null ? this.breakStartMonoMs + durationMs : void 0;\n }\n getBreakTimingSnapshot() {\n return {\n scheduledBreakDurationMs: this.expectedAdBreakDurationMs,\n breakStartMonoMs: this.breakStartMonoMs,\n breakEndMonoMs: this.breakEndMonoMs,\n playedDurationMs: this.adBreakPlayedDurationMs\n };\n }\n scheduleAdStopAtBreakBoundary() {\n if (this.expectedAdBreakDurationMs == null) {\n return;\n }\n this.scheduleAdStopCountdown(this.getWallClockRemainingAdMs());\n }\n // --- Duration budget ---\n getWallClockRemainingAdMs() {\n const endWallClockMs = this.getAdBreakEndWallClockMs();\n if (endWallClockMs != null) {\n return Math.max(0, endWallClockMs - Date.now());\n }\n return 0;\n }\n getAdBreakEndWallClockMs() {\n if (this.scteAdBreakEndWallClockMs != null) {\n return this.scteAdBreakEndWallClockMs;\n }\n if (this.expectedAdBreakDurationMs == null || this.currentAdBreakStartWallClockMs == null) {\n return void 0;\n }\n return this.currentAdBreakStartWallClockMs + this.expectedAdBreakDurationMs;\n }\n getDurationBudgetRemainingMs() {\n if (this.expectedAdBreakDurationMs == null) {\n return 0;\n }\n return Math.max(0, this.expectedAdBreakDurationMs - this.adBreakPlayedDurationMs);\n }\n getLoadedAdDurationMs(adController) {\n const durationSec = adController.getLoadedAdDuration?.();\n if (durationSec == null || durationSec <= 0) {\n return 0;\n }\n return Math.round(durationSec * 1e3);\n }\n adFitsRemainingBudget(durationMs) {\n if (durationMs <= 0 || this.expectedAdBreakDurationMs == null) {\n return true;\n }\n return durationMs <= this.getDurationBudgetRemainingMs();\n }\n logAdDurationDecision(accepted, durationMs, adController) {\n if (!this.debug) {\n return;\n }\n const remainingBudget = this.getDurationBudgetRemainingMs();\n const adId = adController.getLoadedAdId?.() ?? \"unknown\";\n if (accepted) {\n console.log(\n `[AD-DURATION] Accepted ad id=${adId}, duration=${durationMs}ms, budget remaining after play=${Math.max(0, remainingBudget - durationMs)}ms`\n );\n } else {\n console.log(\n `[AD-DURATION] Rejected ad id=${adId}, duration=${durationMs}ms exceeds remaining budget=${remainingBudget}ms \\u2014 requesting another ad`\n );\n }\n }\n recordPlayedAdDuration(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n if (durationMs <= 0) {\n return;\n }\n this.adBreakPlayedDurationMs += durationMs;\n if (this.debug) {\n console.log(\n `[AD-DURATION] Played ${durationMs}ms \\u2014 total played=${this.adBreakPlayedDurationMs}ms / ${this.expectedAdBreakDurationMs ?? \"?\"}ms`\n );\n }\n }\n ensureLoadedAdFitsBudget(adController) {\n const durationMs = this.getLoadedAdDurationMs(adController);\n const fits = this.adFitsRemainingBudget(durationMs);\n this.logAdDurationDecision(fits, durationMs, adController);\n return fits;\n }\n rejectLoadedAdForDuration(adController) {\n try {\n adController.destroy();\n } catch {\n }\n }\n markAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n noteAdRequestSent() {\n this.totalAdRequestsInBreak++;\n this.lastAdRequestTime = Date.now();\n }\n notePodAdStarted() {\n this.currentAdIndex++;\n this.totalAdsInBreak = this.currentAdIndex;\n }\n getRemainingAdMs() {\n const wallClockRemaining = this.getWallClockRemainingAdMs();\n const budgetRemaining = this.getDurationBudgetRemainingMs();\n if (this.expectedAdBreakDurationMs == null) {\n return wallClockRemaining;\n }\n return Math.min(wallClockRemaining, budgetRemaining);\n }\n getMinRemainingMsToStartAd() {\n const configured = this.config.minRemainingMsToStartAd;\n if (typeof configured === \"number\" && configured >= 0) {\n return configured;\n }\n return this.defaultMinRemainingMsToStartAd;\n }\n hasTimeToStartAnotherAd() {\n const minRemaining = this.getMinRemainingMsToStartAd();\n return this.getWallClockRemainingAdMs() > minRemaining && this.getDurationBudgetRemainingMs() > minRemaining;\n }\n // --- Circuit breaker ---\n isTemporaryAdError(error) {\n const message = error?.message?.toLowerCase() || \"\";\n if (message.includes(\"no ads available\") || message.includes(\"no fill\") || message.includes(\"nofill\")) {\n return true;\n }\n if (message.includes(\"timeout\")) {\n return true;\n }\n if (message.includes(\"ad player destroyed\") || message.includes(\"aborted\")) {\n return true;\n }\n if (message.includes(\"rate limit\") || message.includes(\"too many requests\")) {\n return true;\n }\n if (message.includes(\"ad playback error\")) {\n return true;\n }\n return false;\n }\n isUrlInCooldown(vastTagUrl) {\n const failureTime = this.temporaryFailureUrls.get(vastTagUrl);\n if (failureTime == null) {\n return false;\n }\n const elapsed = Date.now() - failureTime;\n if (elapsed >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(vastTagUrl);\n return false;\n }\n return true;\n }\n cleanupTemporaryFailures() {\n const now = Date.now();\n for (const [url, timestamp] of this.temporaryFailureUrls) {\n if (now - timestamp >= this.temporaryFailureCooldownMs) {\n this.temporaryFailureUrls.delete(url);\n }\n }\n }\n isGamInCooldown() {\n return Date.now() < this.globalNoFillCooldownUntil;\n }\n recordGamNoFill() {\n this.globalConsecutiveNoFills++;\n if (this.globalConsecutiveNoFills >= this.globalNoFillThreshold) {\n const exponent = this.globalConsecutiveNoFills - this.globalNoFillThreshold;\n const backoff = Math.min(\n this.globalNoFillBackoffBaseMs * Math.pow(2, exponent),\n this.globalNoFillBackoffMaxMs\n );\n this.globalNoFillCooldownUntil = Date.now() + backoff;\n if (this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] GAM cooldown activated: ${backoff}ms (${this.globalConsecutiveNoFills} consecutive no-fills)`\n );\n }\n }\n }\n resetGamNoFillCounter() {\n if (this.globalConsecutiveNoFills > 0 && this.debug) {\n console.log(\n `[CIRCUIT-BREAKER] Resetting no-fill counter (was ${this.globalConsecutiveNoFills})`\n );\n }\n this.globalConsecutiveNoFills = 0;\n this.globalNoFillCooldownUntil = 0;\n }\n async enforceGlobalRateLimit() {\n const now = Date.now();\n const elapsed = now - this.globalLastGamRequestTime;\n if (elapsed < this.globalMinGamIntervalMs) {\n const waitMs = this.globalMinGamIntervalMs - elapsed;\n if (this.debug) {\n console.log(`[RATE-LIMIT] Waiting ${waitMs}ms before next GAM request`);\n }\n await new Promise((resolve) => setTimeout(resolve, waitMs));\n }\n this.globalLastGamRequestTime = Date.now();\n }\n // --- Watchdog ---\n startAdRequestWatchdog(token) {\n this.clearAdRequestWatchdog();\n const timeoutMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adRequestWatchdogToken = token;\n this.adRequestWatchdogId = window.setTimeout(() => {\n if (this.adRequestWatchdogToken !== token) {\n return;\n }\n this.adRequestWatchdogId = void 0;\n this.adRequestWatchdogToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_request_timeout\", { token, timeoutMs });\n this.callbacks.onWatchdogTimeout();\n }, timeoutMs);\n this.logAdState(\"ad_request_watchdog_started\", { token, timeoutMs });\n }\n clearAdRequestWatchdog() {\n if (this.adRequestWatchdogId != null) {\n clearTimeout(this.adRequestWatchdogId);\n this.adRequestWatchdogId = void 0;\n }\n if (this.adRequestWatchdogToken != null) {\n this.logAdState(\"ad_request_watchdog_cleared\", {\n token: this.adRequestWatchdogToken\n });\n this.adRequestWatchdogToken = null;\n }\n }\n // --- Failsafe ---\n startAdFailsafeTimer(token) {\n this.clearAdFailsafeTimer();\n const failsafeMs = this.config.adFailsafeTimeoutMs ?? 1e4;\n this.adFailsafeToken = token;\n this.adFailsafeTimerId = window.setTimeout(() => {\n if (this.adFailsafeToken !== token) {\n return;\n }\n this.adFailsafeTimerId = void 0;\n this.adFailsafeToken = null;\n if (this.activeAdRequestToken === token) {\n this.activeAdRequestToken = null;\n }\n this.logAdState(\"ad_failsafe_triggered\", {\n token,\n failsafeMs,\n videoPaused: this.video.paused\n });\n this.callbacks.onFailsafeTimeout();\n }, failsafeMs);\n this.logAdState(\"ad_failsafe_started\", { token, failsafeMs });\n }\n clearAdFailsafeTimer() {\n if (this.adFailsafeTimerId != null) {\n clearTimeout(this.adFailsafeTimerId);\n this.logAdState(\"ad_failsafe_cleared\", { token: this.adFailsafeToken });\n this.adFailsafeTimerId = void 0;\n }\n this.adFailsafeToken = null;\n }\n logAdState(event, extra = {}) {\n if (!this.debug) {\n return;\n }\n const { inAdBreak, showAds, adPlaying } = this.callbacks.getAdState();\n console.log(\"[StormcloudVideoPlayer][AdState]\", {\n event,\n timestamp: (/* @__PURE__ */ new Date()).toISOString(),\n showAds,\n adPlaying,\n inAdBreak,\n activeAdRequestToken: this.activeAdRequestToken,\n ...extra\n });\n }\n // --- Reset for ad break end ---\n resetForBreakEnd() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdRequestWatchdog();\n this.clearAdFailsafeTimer();\n this.activeAdRequestToken = null;\n this.expectedAdBreakDurationMs = void 0;\n this.currentAdBreakStartWallClockMs = void 0;\n this.scteAdBreakEndWallClockMs = void 0;\n this.breakStartMonoMs = void 0;\n this.breakEndMonoMs = void 0;\n this.adBreakPlayedDurationMs = 0;\n this.currentAdIndex = 0;\n this.totalAdsInBreak = 0;\n this.consecutiveFailures = 0;\n this.globalConsecutiveNoFills = 0;\n this.adBreakEpoch++;\n }\n destroy() {\n this.clearAdStopTimer();\n this.clearAdStartTimer();\n this.clearAdFailsafeTimer();\n this.clearAdRequestWatchdog();\n }\n};\n\n// src/player/PlaceholderLayer.ts\nvar PlaceholderLayer = class {\n constructor(video, debug) {\n this.video = video;\n this.debug = debug;\n }\n ensureContainer() {\n if (this.container) {\n return;\n }\n const el = document.createElement(\"div\");\n el.style.position = \"absolute\";\n el.style.left = \"0\";\n el.style.top = \"0\";\n el.style.right = \"0\";\n el.style.bottom = \"0\";\n el.style.display = \"none\";\n el.style.alignItems = \"center\";\n el.style.justifyContent = \"center\";\n el.style.pointerEvents = \"none\";\n el.style.zIndex = \"5\";\n el.style.backgroundColor = \"#000\";\n el.style.transition = \"opacity 0.3s ease-in-out\";\n el.style.opacity = \"0\";\n if (!this.video.parentElement) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Video element has no parent for placeholder container\");\n }\n return;\n }\n this.video.parentElement.appendChild(el);\n this.container = el;\n }\n show() {\n this.ensureContainer();\n if (!this.container) {\n return;\n }\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video when showing placeholder\");\n }\n }\n const wasHidden = this.container.style.display === \"none\" || this.container.style.opacity === \"0\";\n if (wasHidden) {\n this.container.style.transition = \"none\";\n } else {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n this.container.style.backgroundColor = \"#000\";\n this.container.style.display = \"flex\";\n this.container.offsetHeight;\n this.container.style.opacity = \"1\";\n this.container.style.pointerEvents = \"auto\";\n if (wasHidden) {\n requestAnimationFrame(() => {\n if (this.container) {\n this.container.style.transition = \"opacity 0.3s ease-in-out\";\n }\n });\n }\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder layer (between content and ad layer)\");\n }\n }\n hide() {\n if (!this.container) {\n return;\n }\n this.container.style.opacity = \"0\";\n setTimeout(() => {\n if (this.container) {\n this.container.style.display = \"none\";\n this.container.style.pointerEvents = \"none\";\n this.container.style.backgroundColor = \"#000\";\n }\n }, 300);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder layer\");\n }\n }\n destroy() {\n if (this.container) {\n if (this.container.parentElement) {\n this.container.parentElement.removeChild(this.container);\n }\n this.container = void 0;\n }\n }\n};\n\n// src/player/HlsEngine.ts\nvar import_hls2 = __toESM(require(\"hls.js\"), 1);\nvar HlsEngine = class {\n constructor(config, video, cueManager, timing, callbacks) {\n this.isLiveStream = false;\n this.nativeHlsMode = false;\n this.videoSrcProtection = null;\n this.reloadingLiveStream = false;\n this.bufferedSegmentsCount = 0;\n this.shouldAutoplayAfterBuffering = false;\n this.hasInitialBufferCompleted = false;\n this.latencyProfileApplied = false;\n this.config = config;\n this.video = video;\n this.cueManager = cueManager;\n this.timing = timing;\n this.callbacks = callbacks;\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n shouldUseNativeHls(getStreamType) {\n const streamType = getStreamType();\n if (streamType === \"other\") {\n return true;\n }\n const canNative = this.video.canPlayType(\"application/vnd.apple.mpegurl\");\n return !!(this.config.allowNativeHls && canNative);\n }\n async setupNativeHls() {\n this.nativeHlsMode = true;\n this.videoSrcProtection = this.config.src;\n this.video.src = this.config.src;\n this.isLiveStream = this.config.isLiveStream ?? (this.config.lowLatencyMode ?? false);\n if (this.debug) {\n const adBehavior = this.isLiveStream ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\n \"[StormcloudVideoPlayer] Using native HLS playback:\",\n {\n isLive: this.isLiveStream,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n }\n );\n }\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n setupHls() {\n this.hls = new import_hls2.default({\n enableWorker: true,\n backBufferLength: 30,\n liveDurationInfinity: true,\n lowLatencyMode: !!this.config.lowLatencyMode,\n maxLiveSyncPlaybackRate: 1.1,\n maxBufferLength: 30,\n maxMaxBufferLength: 600,\n maxBufferSize: 60 * 1e3 * 1e3,\n maxBufferHole: 1,\n highBufferWatchdogPeriod: 2,\n nudgeOffset: 0.2,\n nudgeMaxRetry: 5,\n startPosition: -1\n });\n this.hls.on(import_hls2.default.Events.MEDIA_ATTACHED, () => {\n this.hls?.loadSource(this.config.src);\n });\n this.hls.on(import_hls2.default.Events.MANIFEST_PARSED, async (_, _data) => {\n this.isLiveStream = this.config.isLiveStream ?? (this.hls?.levels?.some(\n (level) => level?.details?.live === true || level?.details?.type === \"LIVE\"\n ) ?? false);\n await this.callbacks.onManifestParsed(this.isLiveStream);\n this.bufferedSegmentsCount = 0;\n this.hasInitialBufferCompleted = false;\n this.shouldAutoplayAfterBuffering = !!this.config.autoplay;\n this.latencyProfileApplied = false;\n this.detectedLowLatencyStream = void 0;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Waiting for\",\n minSegments,\n \"segments to buffer before playback\"\n );\n }\n if (minSegments === 0 || !this.config.autoplay) {\n this.hasInitialBufferCompleted = true;\n if (this.config.autoplay) {\n await this.video.play()?.catch(() => {\n });\n }\n }\n this.reloadingLiveStream = false;\n });\n this.hls.on(import_hls2.default.Events.LEVEL_LOADED, (_evt, data) => {\n this.applyStreamLatencyProfile(data?.details);\n if (this.callbacks.isInAdBreak() || this.callbacks.hasPendingAdBreak()) {\n return;\n }\n const details = data?.details;\n if (!details || !details.fragments || details.fragments.length === 0) {\n return;\n }\n const fragmentsToScan = Math.min(5, details.fragments.length);\n for (let i = 0; i < fragmentsToScan; i++) {\n const frag = details.fragments[i];\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) continue;\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) continue;\n if (tag.includes(\"EXT-X-CUE-OUT\") || tag.includes(\"EXT-X-DATERANGE\")) {\n const isDateRange = tag.includes(\"EXT-X-DATERANGE\");\n const attrs = isDateRange ? parseAttributeList(value) : {};\n const hasScteOut = tag.includes(\"EXT-X-CUE-OUT\") || \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n if (hasScteOut) {\n const durationSeconds = isDateRange ? getDateRangeDurationSeconds(attrs) : parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value, earlyDetection: true }\n };\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] EARLY SCTE-35 DETECTION: Ad break marker found in fragment\", i, \"- starting pre-fetch (NOT playing yet)\");\n }\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"early\", frag)\n });\n return;\n }\n }\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_BUFFERED, async (_evt, _data) => {\n if (this.hasInitialBufferCompleted) {\n return;\n }\n this.bufferedSegmentsCount++;\n const minSegments = this.config.minSegmentsBeforePlay ?? 2;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Buffered segment ${this.bufferedSegmentsCount}/${minSegments}`\n );\n }\n if (this.bufferedSegmentsCount >= minSegments) {\n this.hasInitialBufferCompleted = true;\n if (this.shouldAutoplayAfterBuffering) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Initial buffer complete (${this.bufferedSegmentsCount} segments). Starting playback.`\n );\n }\n await this.video.play()?.catch((err) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Autoplay failed:\", err);\n }\n });\n }\n }\n });\n this.hls.on(import_hls2.default.Events.FRAG_PARSING_METADATA, (_evt, data) => {\n const id3Tags = (data?.samples || []).map((s) => ({\n key: \"ID3\",\n value: s?.data,\n ptsSeconds: s?.pts\n }));\n id3Tags.forEach((tag) => this.onId3Tag(tag));\n });\n this.hls.on(import_hls2.default.Events.FRAG_LOADED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_DECRYPTED, (_evt, data) => {\n this.processFragmentScte35Payload(\n data?.payload,\n typeof data?.frag?.sn === \"number\" ? data.frag.sn : void 0,\n getFragmentStartSeconds(data?.frag)\n );\n });\n this.hls.on(import_hls2.default.Events.FRAG_CHANGED, (_evt, data) => {\n const frag = data?.frag;\n const tagList = frag?.tagList;\n if (!Array.isArray(tagList)) {\n this.callbacks.activatePendingCuesForFragment(frag);\n return;\n }\n for (const entry of tagList) {\n let tag = \"\";\n let value = \"\";\n if (Array.isArray(entry)) {\n tag = String(entry[0] ?? \"\");\n value = String(entry[1] ?? \"\");\n } else if (typeof entry === \"string\") {\n const idx = entry.indexOf(\":\");\n if (idx >= 0) {\n tag = entry.substring(0, idx);\n value = entry.substring(idx + 1);\n } else {\n tag = entry;\n value = \"\";\n }\n }\n if (!tag) continue;\n if (tag.includes(\"EXT-X-CUE-OUT-CONT\")) {\n const prog = parseCueOutCont(value);\n const marker = {\n type: \"progress\",\n ...prog?.duration !== void 0 ? { durationSeconds: prog.duration } : {},\n ...prog?.elapsed !== void 0 ? { ptsSeconds: prog.elapsed } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-OUT\")) {\n const durationSeconds = parseCueOutDuration(value);\n const marker = {\n type: \"start\",\n ...durationSeconds !== void 0 ? { durationSeconds } : {},\n raw: { tag, value }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n } else if (tag.includes(\"EXT-X-CUE-IN\")) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n } else if (tag.includes(\"EXT-X-DATERANGE\")) {\n const attrs = parseAttributeList(value);\n const hasScteOut = \"SCTE35-OUT\" in attrs || attrs[\"SCTE35-OUT\"] !== void 0;\n const hasScteIn = \"SCTE35-IN\" in attrs || attrs[\"SCTE35-IN\"] !== void 0;\n const klass = String(attrs[\"CLASS\"] ?? \"\");\n const duration = getDateRangeDurationSeconds(attrs);\n if (hasScteOut || /com\\.apple\\.hls\\.cue/i.test(klass)) {\n const marker = {\n type: \"start\",\n ...duration !== void 0 ? { durationSeconds: duration } : {},\n raw: { tag, value, attrs }\n };\n this.callbacks.onScte35Cue(marker, {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n });\n }\n if (hasScteIn) {\n this.callbacks.onScte35Cue(\n { type: \"end\", raw: { tag, value, attrs } },\n {\n ...this.cueManager.createScte35CueContext(\"manifest\", \"playback\", frag)\n }\n );\n }\n }\n }\n this.callbacks.activatePendingCuesForFragment(frag);\n });\n this.hls.on(import_hls2.default.Events.ERROR, (_evt, data) => {\n if (data?.fatal) {\n switch (data.type) {\n case import_hls2.default.ErrorTypes.NETWORK_ERROR:\n this.hls?.startLoad();\n break;\n case import_hls2.default.ErrorTypes.MEDIA_ERROR:\n this.hls?.recoverMediaError();\n break;\n default:\n this.callbacks.onFatalDestroy();\n break;\n }\n }\n });\n this.hls.attachMedia(this.video);\n }\n isLowLatencyStream() {\n return this.detectedLowLatencyStream;\n }\n applyStreamLatencyProfile(details) {\n if (this.latencyProfileApplied || !this.hls) {\n return;\n }\n if (!details) {\n return;\n }\n if (details.live !== true) {\n this.latencyProfileApplied = true;\n this.detectedLowLatencyStream = false;\n return;\n }\n const isLowLatencyManifest = this.isLowLatencyManifest(details);\n const useLowLatency = isLowLatencyManifest && !!this.config.lowLatencyMode;\n this.detectedLowLatencyStream = useLowLatency;\n this.latencyProfileApplied = true;\n const cfg = this.hls.config;\n if (useLowLatency) {\n cfg.maxLiveSyncPlaybackRate = 1.5;\n cfg.maxBufferHole = 0.5;\n delete cfg.liveSyncDuration;\n } else {\n cfg.maxLiveSyncPlaybackRate = 1.1;\n cfg.maxBufferHole = 1;\n delete cfg.liveSyncDuration;\n cfg.liveSyncDurationCount = 3;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live latency profile: ${useLowLatency ? \"LL-HLS (low latency)\" : \"standard live (stability)\"}`,\n {\n isLowLatencyManifest,\n lowLatencyModeRequested: !!this.config.lowLatencyMode,\n canBlockReload: details.canBlockReload,\n partTarget: details.partTarget,\n partHoldBack: details.partHoldBack,\n partListLength: Array.isArray(details.partList) ? details.partList.length : 0,\n targetDuration: details.targetduration ?? details.targetDuration,\n maxLiveSyncPlaybackRate: cfg.maxLiveSyncPlaybackRate,\n maxBufferHole: cfg.maxBufferHole\n }\n );\n }\n }\n isLowLatencyManifest(details) {\n if (!details) {\n return false;\n }\n const hasParts = Array.isArray(details.partList) && details.partList.length > 0;\n const hasPartTarget = typeof details.partTarget === \"number\" && details.partTarget > 0;\n const hasPartHoldBack = typeof details.partHoldBack === \"number\" && details.partHoldBack > 0;\n const canBlockReload = details.canBlockReload === true;\n return hasParts || hasPartTarget || hasPartHoldBack || canBlockReload;\n }\n onId3Tag(tag) {\n if (typeof tag.ptsSeconds === \"number\") {\n this.timing.updatePtsDrift(tag.ptsSeconds);\n }\n const marker = parseScte35FromId3(tag);\n if (marker) {\n this.callbacks.onScte35Cue(marker, {\n source: \"id3\",\n readiness: \"playback\"\n });\n }\n }\n processFragmentScte35Payload(payloadData, fragmentSn, fragmentStartSeconds) {\n const payload = normalizeFragmentPayload(payloadData);\n if (!payload) {\n return;\n }\n const markers = parseScte35FromTsPackets(\n payload,\n this.cueManager.tsScte35Pids,\n this.cueManager.pmtPids,\n this.cueManager.processedTsScte35Sections\n );\n markers.forEach((marker) => {\n const context = {\n source: \"ts\",\n readiness: \"early\"\n };\n if (fragmentSn !== void 0) {\n context.fragmentSn = fragmentSn;\n }\n if (fragmentStartSeconds !== void 0) {\n context.fragmentStartSeconds = fragmentStartSeconds;\n }\n this.callbacks.onScte35Cue(marker, context);\n });\n }\n getLiveSyncPosition() {\n const pos = this.hls?.liveSyncPosition;\n return typeof pos === \"number\" && Number.isFinite(pos) ? pos : void 0;\n }\n restartLoadAt(position) {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.stopLoad();\n this.hls.startLoad(position);\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to restart HLS load at live edge:\", error);\n }\n }\n }\n recoverMediaError() {\n if (!this.hls) {\n return;\n }\n try {\n this.hls.recoverMediaError();\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] recoverMediaError() failed:\", error);\n }\n }\n }\n reloadLiveStream() {\n const hls = this.hls;\n if (!hls) {\n return;\n }\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Hard-reloading live stream (destroy hls \\u2192 reset video \\u2192 fresh setupHls)\"\n );\n }\n try {\n this.reloadingLiveStream = true;\n hls.stopLoad();\n hls.detachMedia();\n hls.destroy();\n this.hls = void 0;\n try {\n this.video.removeAttribute(\"src\");\n this.video.load();\n } catch (error) {\n console.warn(\"[StormcloudVideoPlayer] video.load() threw after src removal:\", error);\n }\n } catch (error) {\n this.reloadingLiveStream = false;\n this.hls = void 0;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to tear down during hard-reload:\", error);\n }\n return;\n }\n const recreateDelayMs = 600;\n window.setTimeout(() => {\n if (this.hls) {\n this.reloadingLiveStream = false;\n return;\n }\n try {\n this.setupHls();\n } catch (error) {\n this.reloadingLiveStream = false;\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Failed to rebuild pipeline during hard-reload:\", error);\n }\n }\n }, recreateDelayMs);\n }\n destroy() {\n this.hls?.destroy();\n this.hls = void 0;\n }\n};\n\n// src/player/EdgePodRequest.ts\nvar EDGE_POD_MAX_ADS = 10;\nvar EDGE_POD_EXCEEDS_BUDGET = \"edge_pod_exceeds_budget\";\nvar LICENSE_KEY_PLACEHOLDER = /\\{licenseKey\\}|%7BlicenseKey%7D/gi;\nfunction resolveEdgePodBaseUrl(config) {\n if (config.enableEdgePodRequest !== true) return void 0;\n const raw = config.edgePodUrl?.trim();\n if (!raw) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but edgePodUrl is missing; using GAM only\"\n );\n return void 0;\n }\n const licenseKey = config.licenseKey?.trim();\n if (!licenseKey) {\n console.warn(\n \"[AdBreak][EDGE] enableEdgePodRequest is true but licenseKey is missing; using GAM only\"\n );\n return void 0;\n }\n const encodedKey = encodeURIComponent(licenseKey);\n try {\n const hasPlaceholder = raw.search(LICENSE_KEY_PLACEHOLDER) !== -1;\n const url = new URL(hasPlaceholder ? raw.replace(LICENSE_KEY_PLACEHOLDER, encodedKey) : raw);\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new Error(`unsupported protocol ${url.protocol}`);\n }\n if (!hasPlaceholder) {\n const path = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = /\\/[^/]+\\/pod$/.test(path) ? path.replace(/\\/[^/]+\\/pod$/, `/${encodedKey}/pod`) : `${path}/${encodedKey}/pod`;\n }\n return url.toString();\n } catch {\n console.warn(\"[AdBreak][EDGE] edgePodUrl is not a valid http(s) URL; using GAM only\");\n return void 0;\n }\n}\nfunction resolveEdgePodRequestContext(config, extra = {}) {\n return {\n width: extra.width,\n height: extra.height,\n playerId: extra.playerId,\n contentNetwork: config.contentNetwork,\n contentChannel: config.channelName,\n contentTitle: config.programTitle\n };\n}\nfunction setOptionalParam(url, key, value) {\n const trimmed = value?.trim();\n if (trimmed) url.searchParams.set(key, trimmed);\n}\nfunction buildEdgePodUrl(baseUrl, remainingMs, remainingAdLimit, context = {}) {\n const url = new URL(baseUrl);\n const maxMs = Math.max(0, Math.floor(remainingMs));\n const maxAds = Math.max(1, Math.min(EDGE_POD_MAX_ADS, Math.floor(remainingAdLimit)));\n url.searchParams.set(\"pmxd\", String(maxMs));\n url.searchParams.set(\"pmad\", String(maxAds));\n url.searchParams.set(\"duration\", String(Math.floor(maxMs / 1e3)));\n url.searchParams.set(\"count\", String(maxAds));\n if (context.width != null && Number.isFinite(context.width) && context.width > 0) {\n url.searchParams.set(\"width\", String(Math.round(context.width)));\n }\n if (context.height != null && Number.isFinite(context.height) && context.height > 0) {\n url.searchParams.set(\"height\", String(Math.round(context.height)));\n }\n setOptionalParam(url, \"pid\", context.playerId);\n setOptionalParam(url, \"cn\", context.contentNetwork);\n setOptionalParam(url, \"cc\", context.contentChannel);\n setOptionalParam(url, \"ct\", context.contentTitle);\n return url.toString();\n}\nfunction classifyEdgeVastResponse(result) {\n if (result.error == null) {\n return result.podAdCount > 0 ? \"fill\" : \"no_fill\";\n }\n const message = result.error?.message ?? String(result.error);\n if (/no ads available|fill rejected|no media file|no ad loaded/i.test(message) || message.includes(EDGE_POD_EXCEEDS_BUDGET)) {\n return \"no_fill\";\n }\n return \"invalid\";\n}\nfunction describeEdgeUrl(url) {\n try {\n const parsed = new URL(url);\n return `${parsed.origin}${parsed.pathname}`;\n } catch {\n return url.split(\"?\")[0] ?? \"\";\n }\n}\n\n// src/player/PlayerControls.ts\nfunction getAdAudioVolume(adPlayer) {\n return adPlayer.getOriginalMutedState() ? 0 : adPlayer.getOriginalVolume();\n}\nfunction toggleMute(video, adPlayer, debug) {\n if (adPlayer.isAdPlaying()) {\n const newMutedState = !adPlayer.getOriginalMutedState();\n const restoreVolume = adPlayer.getOriginalVolume() || 1;\n adPlayer.updateOriginalMutedState(newMutedState, video.volume);\n adPlayer.setAdVolume(newMutedState ? 0 : restoreVolume);\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] Mute toggle during ad - immediately applied:\",\n newMutedState\n );\n }\n } else {\n video.muted = !video.muted;\n adPlayer.updateOriginalMutedState(video.muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Muted:\", video.muted);\n }\n }\n}\nfunction toggleFullscreen(video, debug) {\n return new Promise((resolve, reject) => {\n if (!document.fullscreenElement) {\n const container = video.parentElement;\n if (!container) {\n reject(new Error(\"No parent container found for fullscreen\"));\n return;\n }\n container.requestFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Entered fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\"[StormcloudVideoPlayer] Fullscreen error:\", err);\n }\n reject(err);\n });\n } else {\n document.exitFullscreen().then(() => {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Exited fullscreen\");\n }\n resolve();\n }).catch((err) => {\n if (debug) {\n console.error(\n \"[StormcloudVideoPlayer] Exit fullscreen error:\",\n err\n );\n }\n reject(err);\n });\n }\n });\n}\nfunction isMuted(video, adPlayer) {\n if (adPlayer.isAdPlaying()) {\n return adPlayer.getOriginalMutedState();\n }\n return video.muted;\n}\nfunction setMuted(video, adPlayer, muted, debug) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying && muted === video.muted) {\n if (debug) {\n console.log(\n \"[StormcloudVideoPlayer] setMuted reflective update during ad ignored\",\n { muted }\n );\n }\n return;\n }\n video.muted = muted;\n if (adPlaying) {\n adPlayer.updateOriginalMutedState(muted, video.volume);\n adPlayer.setAdVolume(muted ? 0 : 1);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted applied during ad\", {\n muted\n });\n }\n return;\n }\n adPlayer.updateOriginalMutedState(muted, video.volume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setMuted called:\", muted);\n }\n}\nfunction setVolume(video, adPlayer, volume, debug) {\n const clampedVolume = Math.max(0, Math.min(1, volume));\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n adPlayer.setAdVolume(clampedVolume);\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume applied during ad\", {\n volume: clampedVolume\n });\n }\n } else {\n video.volume = clampedVolume;\n video.muted = clampedVolume === 0;\n adPlayer.updateOriginalMutedState(clampedVolume === 0, clampedVolume);\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] setVolume called:\", clampedVolume);\n }\n }\n}\nfunction getVolume(video, adPlayer) {\n const adPlaying = adPlayer.isAdPlaying();\n if (adPlaying) {\n return adPlayer.getAdVolume();\n }\n return video.volume;\n}\nfunction isFullscreen() {\n return !!document.fullscreenElement;\n}\nfunction resizePlayer(video, adPlayer, debug) {\n if (debug) {\n console.log(\"[StormcloudVideoPlayer] Resizing player\");\n }\n if (adPlayer && adPlayer.isAdPlaying()) {\n const width = video.clientWidth || 640;\n const height = video.clientHeight || 480;\n if (debug) {\n console.log(\n `[StormcloudVideoPlayer] Resizing ads manager to ${width}x${height}`\n );\n }\n adPlayer.resize(width, height);\n }\n}\n\n// src/player/AdBreakOrchestrator.ts\nvar REQUEST_FAILURE_STAGES = /* @__PURE__ */ new Set([\n \"no_fill\",\n \"vast_fill_rejected\",\n \"request_failed\",\n \"media_unsupported\",\n \"play_failed\",\n \"play_resolved_but_never_started\",\n \"hls_fatal\",\n \"media_error\",\n \"stall\",\n \"decode_failure\"\n]);\nvar AdBreakOrchestrator = class {\n constructor(host, timing, adConfig, cueManager, placeholder) {\n this.inAdBreak = false;\n this.showAds = false;\n this.isShowingPlaceholder = false;\n this.adDetectSentForCurrentBreak = false;\n this.slotState = \"IDLE\";\n this.unusableResponsesInBreak = 0;\n this.controllerGeneration = 0;\n this.requestDiagnostics = /* @__PURE__ */ new Map();\n this.breakFunnel = {};\n this.controllerCallInFlight = false;\n this.playbackStartedForCurrentRequest = false;\n this.opportunityEpoch = -1;\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.adPodQueue = [];\n this.defaultMinRemainingMsToRequestAd = 1e4;\n this.defaultMaxNoFillsPerBreak = 2;\n this.defaultLiveMaxNoFillsPerBreak = 1;\n this.breakDurationWaitMs = 300;\n this.pendingAdBreak = null;\n this.host = host;\n this.timing = timing;\n this.adConfig = adConfig;\n this.cueManager = cueManager;\n this.placeholder = placeholder;\n }\n get debug() {\n return !!this.host.config.debugAdTiming;\n }\n get analyticsContext() {\n return buildAnalyticsContext(this.host.config);\n }\n // ───────────────────────────────────────────────────────────────\n // IMA event listeners\n // ───────────────────────────────────────────────────────────────\n nextAdRequestUrl(baseVastUrl) {\n return this.host.generatePodVastUrl(baseVastUrl);\n }\n attachImaEventListeners() {\n const controller = this.host.getAdPlayer();\n const generation = this.controllerGeneration;\n const adPlayer = {\n on: (event, handler) => {\n controller.on(event, (payload) => {\n if (generation !== this.controllerGeneration) {\n this.logOrchestratorFunnel(\"stale_callback_ignored\", {\n event,\n staleControllerId: generation,\n currentControllerId: this.controllerGeneration\n });\n return;\n }\n handler(payload);\n });\n }\n };\n adPlayer.on(\"pod_ad_started\", (payload) => {\n this.timing.notePodAdStarted();\n if (this.debug) {\n console.log(\n `[POD] Playing pod ad ${payload?.index != null ? payload.index + 1 : \"?\"}/${payload?.total ?? \"?\"}`\n );\n }\n });\n adPlayer.on(\"ad_click\", () => {\n this.host.onAdClick();\n });\n adPlayer.on(\"ad_interaction\", (event) => {\n if (event) this.host.onAdInteraction(event);\n });\n adPlayer.on(\"ad_funnel\", (payload) => {\n if (!payload?.stage) return;\n const stage = payload.stage;\n this.countFunnelStage(stage);\n if (payload.reason) {\n this.countFunnelStage(`${stage}:${payload.reason}`);\n }\n if (stage === \"impression_fired\" && payload.pixelCount != null) {\n this.countFunnelStage(\"impression_urls\", payload.pixelCount);\n }\n if (payload.visibilityState === \"hidden\") {\n this.countFunnelStage(\"while_hidden\");\n }\n if (stage === \"gam_http_request_sent\") {\n if (payload.attempt === 1) {\n this.timing.noteAdRequestSent();\n } else {\n this.countFunnelStage(\"gam_http_request_retry\");\n }\n }\n this.recordRequestDiagnostic(payload);\n });\n adPlayer.on(\"ad_impression\", () => {\n this.timing.consecutiveFailures = 0;\n this.setSlotState(\"PLAYING\", \"impression\");\n if (!this.playbackStartedForCurrentRequest) {\n this.playbackStartedForCurrentRequest = true;\n this.timing.markAdStarted();\n }\n sendAdImpressionTracking(\n this.host.config.licenseKey,\n {\n source: \"hls\",\n adIndex: this.timing.currentAdIndex,\n ...this.currentVastUrl ? { adUrl: this.currentVastUrl } : {},\n timestamp: (/* @__PURE__ */ new Date()).toISOString()\n },\n this.analyticsContext\n ).catch(() => {\n });\n });\n adPlayer.on(\"all_ads_completed\", () => {\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n const remaining = this.timing.getRemainingAdMs();\n this.timing.consecutiveFailures = 0;\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] all_ads_completed event received - remaining=${remaining}ms`\n );\n }\n if (this.inAdBreak) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"all_ads_completed\");\n this.requestNextAd(\"all_ads_completed\");\n }\n });\n adPlayer.on(\"ad_error\", (errorPayload) => {\n if (this.controllerCallInFlight) {\n if (this.debug) {\n console.log(\"[AdBreak] ad_error during request/play; outcome reported by the caller\", errorPayload || \"\");\n }\n return;\n }\n let errorMessage = \"Ad error (no details)\";\n if (errorPayload) {\n const errorCode = errorPayload.code || errorPayload.errorCode || \"unknown\";\n const vastErrorCode = errorPayload.vastErrorCode;\n const message = errorPayload.message || errorPayload.errorMessage || \"Unknown error\";\n const cause = errorPayload.cause || errorPayload.innerError || errorPayload.error;\n errorMessage = `Ad error: AdError ${errorCode}: ${message}`;\n if (vastErrorCode && vastErrorCode !== \"N/A\" && vastErrorCode !== errorCode) {\n errorMessage += ` (VAST Error Code: ${vastErrorCode})`;\n }\n if (cause) {\n const causeMessage = typeof cause === \"string\" ? cause : cause.message || String(cause);\n errorMessage += `. Caused by: ${causeMessage}`;\n }\n }\n console.error(\"[AD-ERROR]\", errorMessage, errorPayload || \"\");\n this.handleAdFailure(\"ad_error\");\n });\n adPlayer.on(\"content_pause\", () => {\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = true;\n if (this.currentPodSource !== \"edge\") {\n this.timing.resetGamNoFillCounter();\n }\n if (this.inAdBreak && this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad break timer on content_pause (first ad starting)\");\n }\n }\n this.host.getAdPlayer().setAdVolume(getAdAudioVolume(this.host.getAdPlayer()));\n if (this.isShowingPlaceholder) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Hiding placeholder - new ads starting\");\n }\n this.host.getAdPlayer().hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n });\n adPlayer.on(\"content_resume\", () => {\n if (!this.host.video.muted) {\n this.host.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on content_resume (ad ended, gap between ads)\");\n }\n }\n this.timing.clearAdFailsafeTimer();\n this.timing.clearAdRequestWatchdog();\n this.timing.activeAdRequestToken = null;\n this.showAds = false;\n if (!this.inAdBreak) {\n return;\n }\n this.timing.consecutiveFailures = 0;\n this.timing.recordPlayedAdDuration(this.host.getAdPlayer());\n if (this.debug) {\n console.log(\n `[AdBreak] content_resume: remaining=${this.timing.getRemainingAdMs()}ms`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"ad_complete\");\n this.requestNextAd(\"ad_complete\");\n });\n }\n recreateAdController(reason) {\n if (reason === \"new_request\" && (this.slotState === \"REQUESTING\" || this.slotState === \"READY\")) {\n console.warn(\"[AD-CONTROLLER] destroy during active request\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n }\n console.log(\"[AD-CONTROLLER] destroy\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: this.slotState,\n reason\n });\n this.countFunnelStage(`controller_destroy:${reason}`);\n const shouldShowPlaceholder = this.inAdBreak && this.showAds;\n const adPlayer = this.host.getAdPlayer();\n if (shouldShowPlaceholder && adPlayer) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Showing placeholder before destroying old AdController\");\n }\n this.placeholder.show();\n adPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n const preservedMutedState = adPlayer.getOriginalMutedState();\n const preservedVolumeState = adPlayer.getOriginalVolume();\n this.playbackStartedForCurrentRequest = false;\n if (adPlayer) {\n try {\n adPlayer.destroy();\n this.host.video.muted = true;\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] Error destroying old AdController:\", error);\n }\n }\n }\n const continueLiveStreamDuringAds = this.host.shouldContinueLiveStreamDuringAds();\n const newAdPlayer = this.host.createAdPlayer(continueLiveStreamDuringAds);\n this.host.setAdPlayer(newAdPlayer);\n this.controllerGeneration++;\n newAdPlayer.initialize();\n newAdPlayer.updateOriginalMutedState(preservedMutedState, preservedVolumeState);\n this.attachImaEventListeners();\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] create\", {\n controllerId: this.controllerGeneration,\n reason\n });\n }\n if (shouldShowPlaceholder) {\n this.placeholder.show();\n newAdPlayer.showPlaceholder();\n this.isShowingPlaceholder = true;\n }\n }\n clearPendingAdBreak() {\n if (this.prefetchTimerId != null) {\n clearTimeout(this.prefetchTimerId);\n this.prefetchTimerId = void 0;\n }\n this.pendingAdBreak = null;\n this.cueManager.pendingScte35CueKey = void 0;\n this.adConfig.podAssignedByPrefetch = false;\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break start\n // ───────────────────────────────────────────────────────────────\n isBreakActive() {\n return this.slotState !== \"IDLE\";\n }\n getSlotState() {\n return this.slotState;\n }\n beginVmapBreak(breakKey, position) {\n this.breakSource = \"vmap\";\n this.resetEdgeStateForBreak();\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.timing.totalAdRequestsInBreak = 0;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"vmap_break_start\");\n this.noteOpportunity(\"vmap\", breakKey, position);\n }\n async handleAdStart(marker) {\n if (this.slotState !== \"IDLE\") {\n this.logOrchestratorFunnel(\"duplicate_break_start\", {\n source: \"scte35\",\n state: this.slotState\n });\n return;\n }\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n const edgeConfigured = !!this.host.getEdgePodBaseUrl();\n if (!baseVastUrl && !edgeConfigured) {\n console.warn(\"[AdBreak] SCTE-35 break started but no direct VAST tag is configured\");\n this.clearPendingAdBreak();\n return;\n }\n let adBreakDurationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs;\n this.timing.failedVastUrls.clear();\n this.timing.temporaryFailureUrls.clear();\n this.timing.consecutiveFailures = 0;\n this.isShowingPlaceholder = false;\n this.timing.totalAdRequestsInBreak = 0;\n this.breakSource = \"scte35\";\n this.followUpBaseVastUrl = baseVastUrl;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n this.setSlotState(\"NEEDS_NEXT_AD\", \"scte35_break_start\");\n if (this.adConfig.podAssignedByPrefetch) {\n this.adConfig.podAssignedByPrefetch = false;\n } else {\n this.adConfig.beginNewAdPod();\n }\n const currentMuted = this.host.video.muted;\n const currentVolume = this.host.video.volume;\n this.host.getAdPlayer().updateOriginalMutedState(currentMuted, currentVolume);\n this.inAdBreak = true;\n this.timing.adBreakPlayedDurationMs = 0;\n this.timing.currentAdIndex = 0;\n this.timing.totalAdsInBreak = 0;\n this.adPodQueue = [];\n this.showAds = false;\n if (this.timing.expectedAdBreakDurationMs == null && adBreakDurationMs != null) {\n this.timing.expectedAdBreakDurationMs = adBreakDurationMs;\n }\n this.noteOpportunity(\"scte35\", this.cueManager.activeScte35BreakKey, \"midroll\");\n const epoch = this.timing.adBreakEpoch;\n if (adBreakDurationMs == null) {\n adBreakDurationMs = await this.waitForBreakDuration(this.breakDurationWaitMs);\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n }\n if (this.debug) {\n const mode = this.host.config.isLiveStream ? \"LIVE\" : \"VOD\";\n console.log(\n `[AdBreak] ${mode} break start: target duration=${adBreakDurationMs != null ? `${adBreakDurationMs}ms` : \"unknown\"}`\n );\n }\n if (edgeConfigured) {\n const edgeUrl = this.canRequestEdge() ? this.prepareEdgePodRequest() : void 0;\n if (edgeUrl) {\n this.clearPendingAdBreak();\n const outcome = await this.runEdgePod(edgeUrl, \"edge_break_start\");\n this.continueAfterEdgeOutcome(outcome, epoch);\n return;\n }\n if (!this.edgeExhaustedForBreak) {\n this.markEdgeExhausted(\"not_eligible_at_break_start\", {\n isLive: this.isLiveBreak(),\n durationMs: this.timing.expectedAdBreakDurationMs\n });\n }\n }\n if (!baseVastUrl) {\n this.requestNextAd(\"no_gam_source\");\n return;\n }\n const podPlayed = await this.startOptimizedPod(baseVastUrl);\n if (!podPlayed && this.inAdBreak && epoch === this.timing.adBreakEpoch) {\n this.setSlotState(\"NEEDS_NEXT_AD\", \"initial_request_failed\");\n this.requestNextAd(\"initial_request_failed\");\n }\n }\n async waitForBreakDuration(maxWaitMs) {\n const deadline = Date.now() + maxWaitMs;\n while (this.timing.expectedAdBreakDurationMs == null && Date.now() < deadline) {\n await new Promise((resolve) => setTimeout(resolve, 50));\n if (!this.inAdBreak) break;\n }\n const durationMs = this.timing.expectedAdBreakDurationMs;\n this.logOrchestratorFunnel(\"break_duration_wait\", {\n waitedForMs: maxWaitMs - Math.max(0, deadline - Date.now()),\n durationMs,\n resolved: durationMs != null\n });\n return durationMs;\n }\n // ───────────────────────────────────────────────────────────────\n // Optimized pod (single multi-ad request)\n // ───────────────────────────────────────────────────────────────\n async startOptimizedPod(baseVastUrl) {\n let podUrl;\n const prefetched = !!(this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0);\n if (this.pendingAdBreak && this.pendingAdBreak.vastUrls.length > 0) {\n podUrl = this.pendingAdBreak.vastUrls[0];\n this.clearPendingAdBreak();\n } else {\n podUrl = this.host.generatePodVastUrl(baseVastUrl);\n }\n if (!podUrl) {\n return false;\n }\n this.noteVastUrlGenerated(podUrl, prefetched ? \"prefetch\" : \"break_start\");\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", \"initial_pod\");\n this.beginFunnelRequest(adPlayer, requestToken, \"initial_pod\");\n let requestUrl = this.applyOpportunityFloor(podUrl);\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return true;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return true;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => adPlayer.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, adPlayer);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return true;\n }\n const podCount = adPlayer.getPodAdCount?.() ?? 1;\n if (podCount < 1) {\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n this.recordRequestFailure(new Error(\"No ads available\"), podUrl);\n return false;\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n if (this.debug) {\n console.log(\n podCount === 1 ? \"[POD] Response contained a single ad; playing it and enabling pod top-up\" : `[POD] Optimized pod returned ${podCount} ads; playing pod in one controller`\n );\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return true;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return true;\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return true;\n }\n if (this.debug) {\n console.warn(\"[POD] Optimized pod request/play failed:\", error);\n }\n if (this.handlePodRequestNotSent(error)) return false;\n this.recordRequestFailure(error, podUrl);\n return false;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Edge-first pods (live SCTE-35 only, GAM fallback)\n // ───────────────────────────────────────────────────────────────\n resetEdgeStateForBreak() {\n this.edgeExhaustedForBreak = false;\n this.edgeRequestsInBreak = 0;\n this.currentPodSource = void 0;\n }\n isLiveBreak() {\n return this.host.isLiveStream() || this.host.config.isLiveStream === true;\n }\n canRequestEdge() {\n return this.breakSource === \"scte35\" && !this.edgeExhaustedForBreak && !!this.host.getEdgePodBaseUrl() && this.isLiveBreak() && this.timing.expectedAdBreakDurationMs != null && this.edgeRequestsInBreak < this.timing.maxTotalAdRequestsPerBreak;\n }\n markEdgeExhausted(reason, extra = {}) {\n this.edgeExhaustedForBreak = true;\n this.countFunnelStage(`edge_fallback:${reason}`);\n this.logOrchestratorFunnel(\"edge_exhausted\", {\n reason,\n edgeRequests: this.edgeRequestsInBreak,\n remainingMs: this.timing.getRemainingAdMs(),\n ...extra\n });\n }\n prepareEdgePodRequest() {\n const baseUrl = this.host.getEdgePodBaseUrl();\n if (!baseUrl) return void 0;\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n );\n if (remainingAds < 1) {\n this.markEdgeExhausted(\"ad_capacity_reached\", { adsInBreak: this.timing.totalAdsInBreak });\n return void 0;\n }\n if (remainingMs < this.getMinRemainingMsToRequestAd()) {\n this.markEdgeExhausted(\"insufficient_break_time\", { remainingMs });\n return void 0;\n }\n try {\n const playerId = getCachedBrowserId();\n return buildEdgePodUrl(\n baseUrl,\n remainingMs,\n remainingAds,\n resolveEdgePodRequestContext(this.host.config, {\n width: this.host.video.offsetWidth || this.host.video.clientWidth,\n height: this.host.video.offsetHeight || this.host.video.clientHeight,\n playerId\n })\n );\n } catch {\n this.markEdgeExhausted(\"invalid_edge_url\");\n return void 0;\n }\n }\n async runEdgePod(requestUrl, trigger) {\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const adPlayer = this.host.getAdPlayer();\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n this.currentPodSource = \"edge\";\n this.edgeRequestsInBreak++;\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(adPlayer, requestToken, trigger, \"edge\");\n this.currentVastUrl = requestUrl;\n const params = new URL(requestUrl).searchParams;\n this.logOrchestratorFunnel(\"edge_request_sent\", {\n trigger,\n attempt: this.edgeRequestsInBreak,\n endpoint: describeEdgeUrl(requestUrl),\n pmxd: params.get(\"pmxd\") ?? void 0,\n pmad: params.get(\"pmad\") ?? void 0\n });\n try {\n this.timing.startAdRequestWatchdog(requestToken);\n await this.callController(() => adPlayer.requestAds(requestUrl, { source: \"edge\" }));\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken, source: \"edge\" });\n return \"stale\";\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const remainingAds = Math.max(\n 1,\n Math.min(\n EDGE_POD_MAX_ADS,\n this.adConfig.resolveEdgeMaxAds() - this.timing.totalAdsInBreak\n )\n );\n const overrunAllowanceMs = Math.max(0, this.host.config.maxAdBreakExtensionMs ?? 0);\n const podCount = adPlayer.limitPodToBudget ? adPlayer.limitPodToBudget(remainingMs + overrunAllowanceMs, remainingAds) : adPlayer.getPodAdCount?.() ?? 0;\n if (classifyEdgeVastResponse({ podAdCount: podCount }) !== \"fill\") {\n throw new Error(`${EDGE_POD_EXCEEDS_BUDGET}: no Edge ad fits ${remainingMs}ms`);\n }\n this.setSlotState(\"READY\", \"edge_vast_ready\");\n this.logOrchestratorFunnel(\"edge_fill\", {\n podAdCount: podCount,\n podDurationMs: adPlayer.getPodTotalDurationMs?.(),\n remainingMs,\n overrunAllowanceMs\n });\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => adPlayer.play());\n if (this.isStale(epoch, generation)) return \"stale\";\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n adPlayer.setAdVolume(getAdAudioVolume(adPlayer));\n return \"fill\";\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n const errorMessage = error?.message;\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n source: \"edge\",\n errorMessage\n });\n return \"stale\";\n }\n const classification = classifyEdgeVastResponse({ podAdCount: 0, error });\n const diag = this.requestDiagnostics.get(requestToken);\n if (diag && !diag.failureReason) diag.failureReason = `edge_${classification}: ${errorMessage}`;\n this.markEdgeExhausted(`edge_${classification}`, { errorMessage });\n return \"fallback\";\n }\n }\n continueAfterEdgeOutcome(outcome, epoch) {\n if (outcome !== \"fallback\") return;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] No usable Edge pod; checking with GAM for the remaining break\");\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", \"edge_fallback\");\n this.requestNextAd(\"edge_fallback\");\n }\n // ───────────────────────────────────────────────────────────────\n // Next-ad scheduling (single flight)\n // ───────────────────────────────────────────────────────────────\n setSlotState(next, reason) {\n if (this.slotState === next) return;\n const previous = this.slotState;\n this.slotState = next;\n if (this.debug) {\n console.log(`[AdBreak][STATE] ${previous} -> ${next}`, {\n reason,\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n controllerId: this.controllerGeneration\n });\n }\n }\n isStale(epoch, generation) {\n return !this.inAdBreak || epoch !== this.timing.adBreakEpoch || generation !== this.controllerGeneration;\n }\n getMinRemainingMsToRequestAd() {\n const configured = this.host.config.minRemainingMsToRequestAd;\n const floor = this.timing.getMinRemainingMsToStartAd();\n if (typeof configured === \"number\" && configured >= 0) {\n return Math.max(configured, floor);\n }\n return Math.max(this.defaultMinRemainingMsToRequestAd, floor);\n }\n getMaxNoFillsPerBreak() {\n const configured = this.host.config.maxNoFillsPerBreak;\n if (typeof configured === \"number\" && configured > 0) return configured;\n return this.breakSource === \"scte35\" ? this.defaultLiveMaxNoFillsPerBreak : this.defaultMaxNoFillsPerBreak;\n }\n isBreakTimeBounded() {\n return this.breakSource === \"scte35\" || this.timing.expectedAdBreakDurationMs != null;\n }\n getStopRequestingReason(remainingMs) {\n if (this.breakSource === \"vmap\") {\n if (this.adPodQueue.length === 0) return \"vmap_queue_empty\";\n } else if (this.breakSource !== \"scte35\" || !this.followUpBaseVastUrl && !this.canRequestEdge()) {\n return \"no_follow_up_source\";\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n return \"max_consecutive_failures\";\n }\n if (this.unusableResponsesInBreak >= this.getMaxNoFillsPerBreak()) {\n return \"unusable_response_limit\";\n }\n if (this.timing.totalAdRequestsInBreak >= this.timing.maxTotalAdRequestsPerBreak) {\n return \"request_cap\";\n }\n if (!this.canRequestEdge() && this.timing.isGamInCooldown()) {\n return \"gam_cooldown\";\n }\n if (this.isBreakTimeBounded() && remainingMs < this.getMinRemainingMsToRequestAd()) {\n return \"insufficient_break_time\";\n }\n return void 0;\n }\n getNextRequestDelayMs() {\n const failures = this.timing.consecutiveFailures;\n const backoff = failures > 0 ? Math.min(this.timing.backoffBaseMs * Math.pow(2, failures), this.timing.maxBackoffMs) : 0;\n const minInterval = this.timing.minAdRequestIntervalMs + backoff;\n const sinceLast = Date.now() - this.timing.lastAdRequestTime;\n return Math.max(0, minInterval - sinceLast);\n }\n requestNextAd(trigger) {\n if (!this.inAdBreak) return;\n if (this.slotState !== \"NEEDS_NEXT_AD\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"slot_busy\"\n });\n return;\n }\n if (this.nextAdTimerId != null) {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_already_scheduled\"\n });\n return;\n }\n const remainingMs = this.timing.getRemainingAdMs();\n const stopReason = this.getStopRequestingReason(remainingMs);\n if (stopReason) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: stopReason,\n remainingMs,\n requestsSent: this.timing.totalAdRequestsInBreak,\n unusableResponses: this.unusableResponsesInBreak,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n this.handleAdPodComplete(stopReason);\n return;\n }\n const waitMs = this.getNextRequestDelayMs();\n if (waitMs > 0 && this.isBreakTimeBounded() && remainingMs - waitMs < this.getMinRemainingMsToRequestAd()) {\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: \"end_break\",\n reason: \"insufficient_break_time_after_backoff\",\n remainingMs,\n waitMs\n });\n this.handleAdPodComplete(\"insufficient_break_time_after_backoff\");\n return;\n }\n this.logOrchestratorFunnel(\"next_ad_decision\", {\n trigger,\n decision: waitMs > 0 ? \"request_after_delay\" : \"request_now\",\n waitMs,\n remainingMs,\n consecutiveFailures: this.timing.consecutiveFailures\n });\n if (waitMs > 0) {\n if (!this.isShowingPlaceholder) {\n this.isShowingPlaceholder = true;\n this.host.getAdPlayer().showPlaceholder();\n }\n const epoch = this.timing.adBreakEpoch;\n this.nextAdTimerId = window.setTimeout(() => {\n this.nextAdTimerId = void 0;\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.requestNextAd(`${trigger}:after_delay`);\n }, waitMs);\n return;\n }\n void this.requestFollowUpAd(trigger);\n }\n async requestFollowUpAd(trigger) {\n if (this.canRequestEdge()) {\n const edgeUrl = this.prepareEdgePodRequest();\n if (!edgeUrl) {\n this.requestNextAd(`${trigger}:edge_unavailable`);\n return;\n }\n const epoch2 = this.timing.adBreakEpoch;\n const outcome = await this.runEdgePod(edgeUrl, `edge_${trigger}`);\n this.continueAfterEdgeOutcome(outcome, epoch2);\n return;\n }\n let url;\n if (this.breakSource === \"vmap\") {\n url = this.adPodQueue.shift();\n } else if (this.followUpBaseVastUrl) {\n url = this.nextAdRequestUrl(this.followUpBaseVastUrl);\n }\n if (!url) return;\n this.noteVastUrlGenerated(ensureVideoAdType(url), trigger);\n const epoch = this.timing.adBreakEpoch;\n try {\n await this.playSingleAd(url, trigger);\n } catch {\n this.continueAfterRequestFailure(epoch);\n }\n }\n continueAfterRequestFailure(epoch = this.timing.adBreakEpoch) {\n if (!this.inAdBreak || epoch !== this.timing.adBreakEpoch) return;\n this.setSlotState(\"NEEDS_NEXT_AD\", \"request_failed\");\n this.requestNextAd(\"after_failure\");\n }\n cancelScheduledRequest() {\n if (this.nextAdTimerId != null) {\n clearTimeout(this.nextAdTimerId);\n this.nextAdTimerId = void 0;\n }\n }\n noteVastUrlGenerated(url, source) {\n let params;\n try {\n params = new URL(url).searchParams;\n } catch {\n }\n const adType = params?.get(\"ad_type\") ?? void 0;\n this.logOrchestratorFunnel(\"vast_url_generated\", {\n requestId: void 0,\n source,\n pod: params?.get(\"pod\") ?? void 0,\n podParamsDeferredToDispatch: findScvpMacroNames(url).some((name) => SCVP_POD_MACROS.has(name)),\n adType\n });\n if (adType === \"audio\" || adType === \"audio_video\") {\n console.warn(\n `[AdBreak] VAST tag requests ad_type=${adType}; GAM may return audio-only creatives, which this video player rejects`\n );\n this.countFunnelStage(\"tag_allows_audio\");\n }\n }\n recordRequestFailure(error, vastTagUrl) {\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n const message = error?.message || \"\";\n let outcome;\n if (message.includes(\"ad_duration_exceeds_budget\")) {\n outcome = \"discarded_budget\";\n } else if (message.includes(\"VAST fill rejected\")) {\n outcome = \"fill_rejected\";\n } else if (/no ads available|no fill|nofill/i.test(message)) {\n outcome = \"no_fill\";\n } else if (/timeout/i.test(message)) {\n outcome = \"request_timeout\";\n } else if (/destroyed|aborted/i.test(message)) {\n outcome = \"request_aborted\";\n } else if (diag && (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired) {\n outcome = \"playback_failed\";\n } else {\n outcome = \"request_failed\";\n }\n this.timing.consecutiveFailures++;\n if (outcome === \"no_fill\" || outcome === \"fill_rejected\" || outcome === \"discarded_budget\") {\n this.unusableResponsesInBreak++;\n }\n if (outcome === \"no_fill\") {\n this.timing.recordGamNoFill();\n }\n if (diag && !diag.failureReason) {\n diag.failureReason = `${outcome}: ${message}`;\n }\n const failureKey = diag?.dispatchedUrl && findScvpMacroNames(vastTagUrl).some((name) => SCVP_POD_MACROS.has(name)) ? diag.dispatchedUrl : vastTagUrl;\n if (this.timing.isTemporaryAdError(error)) {\n this.timing.temporaryFailureUrls.set(failureKey, Date.now());\n } else if (outcome !== \"discarded_budget\") {\n this.timing.failedVastUrls.add(failureKey);\n }\n this.countFunnelStage(`request_outcome:${outcome}`);\n this.logOrchestratorFunnel(\"request_outcome\", {\n outcome,\n errorMessage: message,\n consecutiveFailures: this.timing.consecutiveFailures,\n unusableResponsesInBreak: this.unusableResponsesInBreak,\n vastAdCount: diag?.vastAdCount,\n impressionCount: diag?.impressionCount,\n ...this.requestFloorFields(diag)\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Per-request diagnostics\n // ───────────────────────────────────────────────────────────────\n recordRequestDiagnostic(payload) {\n const requestId = payload.requestId;\n if (typeof requestId !== \"number\") return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n switch (payload.stage) {\n case \"gam_http_request_sent\":\n diag.gamRequestSent++;\n this.logPodDispatch(diag);\n break;\n case \"edge_http_request_sent\":\n diag.edgeRequestSent++;\n break;\n case \"gam_response_received\":\n case \"edge_response_received\":\n diag.vastHttpStatus = payload.httpStatus;\n break;\n case \"vast_parsed\":\n diag.vastAdCount = payload.adElementCount;\n break;\n case \"wrapper_fetch\":\n case \"inline_resolved\":\n if (typeof payload.depth === \"number\") {\n diag.wrapperDepth = Math.max(diag.wrapperDepth, payload.depth);\n }\n if (payload.stage === \"inline_resolved\") diag.inlineResolved = true;\n break;\n case \"mediafile_evaluated\":\n diag.mediaCandidateCount++;\n if (payload.whyAccepted) diag.supportedMediaCount++;\n break;\n case \"playing\":\n diag.playStarted = true;\n break;\n case \"impression_fired\":\n diag.impressionFired = true;\n diag.impressionCount++;\n break;\n default:\n if (REQUEST_FAILURE_STAGES.has(payload.stage) && !diag.failureReason) {\n diag.failureReason = payload.reason ? `${payload.stage}:${payload.reason}` : payload.stage;\n }\n }\n }\n finalizeRequestDiagnostics(requestId, endReason) {\n if (requestId == null) return;\n const diag = this.requestDiagnostics.get(requestId);\n if (!diag) return;\n this.requestDiagnostics.delete(requestId);\n if (!diag.impressionFired && !diag.failureReason && endReason) {\n diag.failureReason = endReason;\n }\n const gamReturnedAdWithoutImpression = (diag.vastAdCount ?? 0) > 0 && !diag.impressionFired;\n if (gamReturnedAdWithoutImpression) {\n this.countFunnelStage(\"gam_ad_without_impression\");\n }\n const { startedAt, dispatchedUrl: _dispatchedUrl, podDispatchLogged: _logged, ...fields } = diag;\n console.log(\"[AdBreak][REQUEST] summary\", {\n ...fields,\n durationMs: Date.now() - startedAt,\n gamReturnedAdWithoutImpression\n });\n }\n // ───────────────────────────────────────────────────────────────\n // Single ad playback\n // ───────────────────────────────────────────────────────────────\n createGamDispatchFinalizer(requestToken) {\n const breakId = this.timing.adBreakEpoch;\n const config = this.adConfig.resolveAdPodConfig();\n const minUsablePmxdMs = this.timing.getMinRemainingMsToStartAd();\n return (url) => {\n const capacity = measureBreakCapacity(this.timing.getBreakTimingSnapshot(), monotonicNow());\n const diag = this.requestDiagnostics.get(requestToken);\n try {\n const result = finalizeGamRequestUrl(url, { breakId, capacity, config, minUsablePmxdMs });\n if (diag) {\n diag.pod = result.diagnostics;\n diag.dispatchedUrl = result.url;\n diag.podDispatchLogged = false;\n }\n this.currentVastUrl = result.url;\n return result.url;\n } catch (error) {\n if (diag && isPodRequestAbortedError(error)) {\n diag.failureReason = `pod_request_not_sent:${error.reason}`;\n }\n throw error;\n }\n };\n }\n logPodDispatch(diag) {\n if (!diag.pod || diag.podDispatchLogged) return;\n diag.podDispatchLogged = true;\n this.logOrchestratorFunnel(\n diag.pod.optimizedPod ? \"optimized_pod_request_dispatched\" : \"gam_request_dispatched\",\n { ...diag.pod }\n );\n }\n recordPodResponseDiagnostics(requestToken, adPlayer) {\n const diag = this.requestDiagnostics.get(requestToken);\n if (!diag?.pod || diag.pod.pmxdSent == null || diag.podResponse) return;\n if (diag.gamRequestSent === 0 && diag.vastHttpStatus == null) return;\n diag.podResponse = computePodResponseDiagnostics(\n diag.pod.pmxdSent,\n diag.vastAdCount ?? 0,\n adPlayer.getPodTotalDurationMs?.() ?? 0\n );\n this.logOrchestratorFunnel(\"optimized_pod_response\", {\n pmxdSent: diag.pod.pmxdSent,\n ...diag.podResponse\n });\n }\n handlePodRequestNotSent(error) {\n if (!isPodRequestAbortedError(error) || error.reason === \"invalid_url\") return false;\n const aborted = error;\n this.countFunnelStage(`request_outcome:pod_request_not_sent`);\n this.logOrchestratorFunnel(\"pod_request_not_sent\", {\n reason: aborted.reason,\n errorMessage: aborted.message,\n ...aborted.diagnostics\n });\n return true;\n }\n opportunityFloorFields(floor = this.opportunityFloor) {\n if (!floor) return {};\n return {\n floorStatus: floor.status,\n floorCents: floor.floorCents,\n floorSource: floor.source,\n floorReason: floor.reason,\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n };\n }\n requestFloorFields(diag) {\n if (!diag || diag.floorApplied === void 0) return {};\n return {\n floorApplied: diag.floorApplied,\n floorCents: diag.floorCents,\n floorSource: diag.floorSource,\n floorReason: diag.floorReason,\n floorConfigVersion: diag.floorConfigVersion\n };\n }\n applyOpportunityFloor(url) {\n const floor = this.opportunityFloor;\n if (!floor) return url;\n const result = applyFloorToVastUrl(url, floor);\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag) {\n diag.floorApplied = result.applied;\n if (result.applied && floor.floorCents != null) diag.floorCents = floor.floorCents;\n diag.floorSource = result.applied ? floor.source : \"none\";\n if (result.reason) diag.floorReason = result.reason;\n diag.floorConfigVersion = floor.configurationVersion;\n }\n if (floor.status === \"skipped\" && floor.reason === \"disabled\") {\n this.countFunnelStage(\"floor_skipped:disabled\");\n return result.url;\n }\n this.logOrchestratorFunnel(result.applied ? \"floor_applied\" : \"floor_skipped\", {\n reason: result.reason,\n floorCents: result.applied ? floor.floorCents : void 0,\n floorSource: result.applied ? floor.source : \"none\",\n floorSelector: floor.selector,\n floorConfigVersion: floor.configurationVersion,\n adPosition: floor.position\n });\n if (!result.applied && result.reason) {\n this.countFunnelStage(`floor_skipped:${result.reason}`);\n }\n return result.url;\n }\n countFunnelStage(stage, amount = 1) {\n this.breakFunnel[stage] = (this.breakFunnel[stage] ?? 0) + amount;\n }\n logOrchestratorFunnel(stage, extra = {}) {\n this.countFunnelStage(stage);\n console.log(`[AdBreak][FUNNEL] ${stage}`, {\n breakId: this.timing.adBreakEpoch,\n requestId: this.currentRequestId,\n visibilityState: typeof document !== \"undefined\" ? document.visibilityState : void 0,\n ...extra\n });\n }\n noteOpportunity(source, breakKey, position) {\n if (breakKey && breakKey === this.opportunityBreakKey && this.opportunityEpoch === this.timing.adBreakEpoch) {\n this.logOrchestratorFunnel(\"duplicate_break_start\", { source, breakKey });\n return;\n }\n this.opportunityBreakKey = breakKey;\n this.opportunityEpoch = this.timing.adBreakEpoch;\n try {\n this.opportunityFloor = this.host.getFloorSnapshot(position);\n } catch {\n this.opportunityFloor = void 0;\n }\n this.logOrchestratorFunnel(\"opportunity_created\", {\n source,\n breakKey,\n expectedDurationMs: this.timing.expectedAdBreakDurationMs,\n ...this.opportunityFloorFields()\n });\n }\n beginFunnelRequest(adPlayer, requestToken, trigger, source = \"gam\") {\n if (this.controllerCallInFlight) {\n this.logOrchestratorFunnel(\"duplicate_request_detected\", {\n newRequestId: requestToken\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId);\n this.currentRequestId = requestToken;\n this.requestStartedAt = Date.now();\n this.requestDiagnostics.set(requestToken, {\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration,\n trigger,\n source,\n gamRequestSent: 0,\n edgeRequestSent: 0,\n wrapperDepth: 0,\n inlineResolved: false,\n mediaCandidateCount: 0,\n supportedMediaCount: 0,\n playStarted: false,\n impressionFired: false,\n impressionCount: 0,\n startedAt: Date.now()\n });\n adPlayer.setFunnelContext?.({\n breakId: this.timing.adBreakEpoch,\n requestId: requestToken,\n controllerId: this.controllerGeneration\n });\n }\n isAdLoadingWithoutPlayback() {\n return this.host.getAdPlayer().isAdPlaying() && !this.playbackStartedForCurrentRequest;\n }\n noteStopBeforeStart(reason) {\n if (!this.isAdLoadingWithoutPlayback()) return;\n this.logOrchestratorFunnel(\"ad_stopped_before_start\", {\n reason,\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n }\n handleRequestWatchdogTimeout() {\n const adPlayer = this.host.getAdPlayer();\n if (this.controllerCallInFlight && adPlayer.abortPendingRequest) {\n this.logOrchestratorFunnel(\"request_aborted_timeout\", {\n elapsedSinceRequestMs: this.requestStartedAt != null ? Date.now() - this.requestStartedAt : void 0\n });\n adPlayer.abortPendingRequest(\n \"VAST request aborted after request watchdog timeout\"\n );\n return;\n }\n this.handleAdFailure(\"request_watchdog_timeout\");\n }\n async callController(call) {\n this.controllerCallInFlight = true;\n try {\n await call();\n } finally {\n this.controllerCallInFlight = false;\n }\n }\n async playSingleAd(vastTagUrl, trigger = \"vmap\") {\n if (this.slotState === \"REQUESTING\" || this.slotState === \"READY\" || this.slotState === \"PLAYING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"request_suppressed\", {\n trigger,\n state: this.slotState,\n why: \"request_in_flight\"\n });\n return;\n }\n if (this.timing.failedVastUrls.has(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping permanently-failed VAST URL:\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL permanently failed\");\n }\n if (this.timing.isUrlInCooldown(vastTagUrl)) {\n if (this.debug) console.warn(\"[AD-ERROR] Skipping URL in cooldown (recent no-fill):\", vastTagUrl);\n this.timing.consecutiveFailures++;\n throw new Error(\"VAST URL in cooldown after no-fill\");\n }\n if (this.timing.consecutiveFailures >= this.timing.maxConsecutiveFailures) {\n if (this.debug) console.warn(\"[AD-ERROR] Too many consecutive failures, not requesting more ads\");\n throw new Error(\"Too many consecutive failures\");\n }\n if (this.timing.isGamInCooldown()) {\n if (this.debug) console.warn(\"[CIRCUIT-BREAKER] GAM in cooldown, skipping ad request\");\n throw new Error(\"GAM in cooldown\");\n }\n const epoch = this.timing.adBreakEpoch;\n this.recreateAdController(\"new_request\");\n const generation = this.controllerGeneration;\n const requestToken = ++this.timing.adRequestTokenCounter;\n this.timing.activeAdRequestToken = requestToken;\n const ap = this.host.getAdPlayer();\n this.currentPodSource = \"gam\";\n this.setSlotState(\"REQUESTING\", trigger);\n this.beginFunnelRequest(ap, requestToken, trigger);\n let requestUrl = this.applyOpportunityFloor(ensureVideoAdType(vastTagUrl));\n this.currentVastUrl = requestUrl;\n try {\n await this.timing.enforceGlobalRateLimit();\n if (this.isStale(epoch, generation)) return;\n requestUrl = await this.host.completeGamRequestSignals(requestUrl);\n if (this.isStale(epoch, generation)) return;\n this.timing.startAdRequestWatchdog(requestToken);\n const finalizeRequestUrl = this.createGamDispatchFinalizer(requestToken);\n try {\n await this.callController(() => ap.requestAds(requestUrl, { finalizeRequestUrl }));\n } finally {\n this.recordPodResponseDiagnostics(requestToken, ap);\n }\n this.timing.clearAdRequestWatchdog();\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", { requestId: requestToken });\n return;\n }\n sendAdLoadedTracking(\n this.host.config.licenseKey,\n { source: \"hls\", vastUrl: this.currentVastUrl ?? requestUrl, timestamp: (/* @__PURE__ */ new Date()).toISOString() },\n this.analyticsContext\n ).catch(() => {\n });\n if (!this.timing.ensureLoadedAdFitsBudget(ap)) {\n const adDurationS = ap.getLoadedAdDuration?.();\n const remainingMs = Math.min(\n this.timing.getWallClockRemainingAdMs(),\n this.timing.getDurationBudgetRemainingMs()\n );\n this.logOrchestratorFunnel(\"discarded_budget\", {\n adDurationMs: adDurationS != null ? adDurationS * 1e3 : void 0,\n remainingMs\n });\n throw new Error(\"ad_duration_exceeds_budget\");\n }\n this.setSlotState(\"READY\", \"vast_ready\");\n this.timing.startAdFailsafeTimer(requestToken);\n await this.callController(() => ap.play());\n if (this.isStale(epoch, generation)) return;\n if (this.timing.expectedAdBreakDurationMs != null && this.timing.getAdBreakEndWallClockMs() == null) {\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n ap.setAdVolume(getAdAudioVolume(ap));\n this.timing.temporaryFailureUrls.delete(vastTagUrl);\n } catch (error) {\n this.timing.clearAdRequestWatchdog();\n this.timing.clearAdFailsafeTimer();\n if (this.timing.activeAdRequestToken === requestToken) {\n this.timing.activeAdRequestToken = null;\n }\n if (this.isStale(epoch, generation)) {\n this.logOrchestratorFunnel(\"stale_request_result_ignored\", {\n requestId: requestToken,\n errorMessage: error?.message\n });\n return;\n }\n if (this.debug) console.error(\"[AD-ERROR] Ad request failed:\", error?.message);\n if (this.handlePodRequestNotSent(error)) throw error;\n this.recordRequestFailure(error, vastTagUrl);\n if (error?.message === \"ad_duration_exceeds_budget\") {\n this.recreateAdController(\"discarded_budget\");\n }\n throw error;\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Ad break completion\n // ───────────────────────────────────────────────────────────────\n logBreakFunnel(endReason) {\n const funnel = this.breakFunnel;\n this.breakFunnel = {};\n if (Object.keys(funnel).length === 0) return;\n const count = (stage) => funnel[stage] ?? 0;\n const countPrefix = (prefix) => Object.keys(funnel).reduce(\n (total, stage) => stage.indexOf(prefix) === 0 ? total + (funnel[stage] ?? 0) : total,\n 0\n );\n const breakId = this.opportunityEpoch;\n const requestRetries = count(\"gam_http_request_retry\");\n const requests = count(\"gam_http_request_sent\") - requestRetries;\n if (requests > 0 && count(\"impression_fired\") === 0) {\n console.log(\"[AdBreak][FUNNEL] break_abandoned_before_start\", {\n breakId,\n requests,\n endReason\n });\n }\n console.log(\"[AdBreak][FUNNEL] Break summary\", {\n breakId,\n endReason,\n opportunities: count(\"opportunity_created\"),\n ...this.opportunityFloorFields(),\n floorAppliedRequests: count(\"floor_applied\"),\n floorSkippedRequests: count(\"floor_skipped\") + count(\"floor_skipped:disabled\"),\n vastUrlsGenerated: count(\"vast_url_generated\"),\n requests,\n requestRetries,\n gamResponses: count(\"gam_response_received\"),\n edgeRequests: count(\"edge_request_sent\"),\n edgeFills: count(\"edge_fill\"),\n edgeEmptySentinels: count(\"edge_empty_sentinel\"),\n edgeFallbacks: countPrefix(\"edge_fallback:\"),\n requestsSuppressed: count(\"request_suppressed\"),\n duplicates: count(\"duplicate_request_detected\") + count(\"duplicate_break_start\"),\n filled: count(\"vast_received\"),\n noFill: count(\"no_fill\"),\n fillRejected: count(\"vast_fill_rejected\"),\n gamAdWithoutImpression: count(\"gam_ad_without_impression\"),\n playbackFailedAfterFill: count(\"request_outcome:playback_failed\"),\n requestFailed: count(\"request_failed\"),\n requestAbortedTimeout: count(\"request_aborted_timeout\"),\n credentialsModeChanges: count(\"gam_credentials_mode_changed\"),\n wrapperFailures: count(\"wrapper_fetch:failure\"),\n noSupportedMedia: count(\"vast_no_supported_media\"),\n vpaidOnly: count(\"vast_no_supported_media:vpaid\"),\n audioOnly: count(\"vast_no_supported_media:audio_only\"),\n mediaFilesEvaluated: count(\"mediafile_evaluated\"),\n mediaFilesAccepted: count(\"mediafile_evaluated:accepted\"),\n controllerDestroys: countPrefix(\"controller_destroy:\"),\n staleCallbacks: count(\"stale_callback_ignored\") + count(\"stale_request_result_ignored\"),\n tagAllowsAudio: count(\"tag_allows_audio\"),\n missingImpression: count(\"vast_missing_impression\"),\n discardedBudget: count(\"discarded_budget\"),\n mediaCandidates: count(\"media_candidate:accepted\") + count(\"media_candidate:rejected\"),\n mediaRejected: count(\"media_candidate:rejected\"),\n mediaFallbacks: count(\"media_fallback\"),\n playCalled: count(\"play_called\"),\n playRejected: count(\"play_rejected\"),\n mutedRetry: count(\"muted_retry\"),\n startTimeouts: count(\"play_resolved_but_never_started\"),\n impressions: count(\"impression_fired\"),\n impressionUrls: count(\"impression_urls\"),\n trackingRequests: count(\"tracking_request_created\"),\n trackingNotLoaded: count(\"tracking_request_settled:error\") + count(\"tracking_request_settled:timeout\"),\n trackingUnexpandedMacros: count(\"tracking_url_unexpanded_macro\"),\n trackingInvalidUrls: count(\"tracking_url_invalid\"),\n vastAdFallbacks: count(\"vast_ad_fallback\"),\n mediaEvents: count(\"media_event\"),\n quartile25: count(\"first_quartile\"),\n quartile50: count(\"midpoint\"),\n quartile75: count(\"third_quartile\"),\n complete: count(\"complete\"),\n stoppedBeforeStart: count(\"stopped_before_start\"),\n stoppedBeforeStartByBreakEnd: count(\"ad_stopped_before_start\"),\n unexpectedUnmutes: count(\"unexpected_unmute\"),\n unmuteBlocked: count(\"unmute_blocked_without_gesture\"),\n visibilityHidden: count(\"while_hidden\"),\n playbackFailures: count(\"play_failed\") + count(\"media_error\") + count(\"hls_fatal\") + count(\"stall\") + count(\"decode_failure\") + count(\"media_unsupported\"),\n stages: funnel\n });\n }\n handleAdPodComplete(reason = \"unspecified\") {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad pod complete - cleaning up\", { reason });\n }\n const previousState = this.slotState;\n const alreadyEnded = previousState === \"IDLE\" && !this.inAdBreak;\n this.setSlotState(\"ENDING\", reason);\n this.cancelScheduledRequest();\n const adPlayer = this.host.getAdPlayer();\n if (previousState === \"REQUESTING\") {\n adPlayer.abortPendingRequest?.(`VAST request aborted: ad break ended (${reason})`);\n }\n if (!alreadyEnded) {\n console.log(\"[AD-CONTROLLER] stop\", {\n controllerId: this.controllerGeneration,\n requestId: this.currentRequestId,\n state: previousState,\n reason\n });\n }\n this.finalizeRequestDiagnostics(this.currentRequestId, `break_ended:${reason}`);\n this.currentRequestId = void 0;\n const contentWasInterrupted = this.showAds || this.isShowingPlaceholder || (this.breakFunnel[\"play_called\"] ?? 0) > 0 || (this.breakFunnel[\"impression_fired\"] ?? 0) > 0;\n this.timing.resetForBreakEnd();\n this.placeholder.hide();\n this.clearPendingAdBreak();\n if (this.isShowingPlaceholder) {\n adPlayer.hidePlaceholder();\n this.isShowingPlaceholder = false;\n }\n this.inAdBreak = false;\n this.adDetectSentForCurrentBreak = false;\n this.cueManager.activeScte35BreakKey = void 0;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.adPodQueue = [];\n this.showAds = false;\n this.breakSource = void 0;\n this.followUpBaseVastUrl = void 0;\n this.unusableResponsesInBreak = 0;\n this.resetEdgeStateForBreak();\n adPlayer.stop().catch(() => {\n });\n if (!alreadyEnded) this.logBreakFunnel(reason);\n this.opportunityFloor = void 0;\n this.setSlotState(\"IDLE\", \"break_complete\");\n const restoredMuted = this.host.getAdPlayer().getOriginalMutedState();\n const restoredVolume = this.host.getAdPlayer().getOriginalVolume();\n if (this.host.video.muted !== restoredMuted) {\n this.host.video.muted = restoredMuted;\n }\n if (Math.abs(this.host.video.volume - restoredVolume) > 0.01) {\n this.host.video.volume = restoredVolume;\n }\n this.host.video.style.visibility = \"visible\";\n this.host.video.style.opacity = \"1\";\n if (this.host.isLiveStream()) {\n if (this.host.requiresMediaPipelineResetAfterAds()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Live break end \\u2014 hard-reloading stream to reacquire decoder (single-decoder platform)\"\n );\n }\n this.host.reloadLiveStream();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n if (!contentWasInterrupted) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Live break end \\u2014 no ad was shown, leaving playback position unchanged\");\n }\n this.resumeContentPlayback();\n return;\n }\n const liveSyncPos = this.host.getLiveSyncPosition();\n if (liveSyncPos != null && liveSyncPos > this.host.video.currentTime) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live break end \\u2014 snapping to live edge: ${this.host.video.currentTime.toFixed(2)}s \\u2192 ${liveSyncPos.toFixed(2)}s`\n );\n }\n this.host.video.currentTime = liveSyncPos;\n this.host.restartHlsLoad(liveSyncPos);\n }\n this.resumeContentPlayback();\n this.monitorLiveResumeStall(this.host.video.currentTime);\n return;\n }\n this.resumeContentPlayback();\n }\n getBufferedAhead() {\n const video = this.host.video;\n const t = video.currentTime;\n const ranges = video.buffered;\n for (let i = 0; i < ranges.length; i++) {\n if (t >= ranges.start(i) - 0.5 && t <= ranges.end(i)) {\n return ranges.end(i) - t;\n }\n }\n return 0;\n }\n describeVideoState() {\n const v = this.host.video;\n const networkStates = [\"EMPTY\", \"IDLE\", \"LOADING\", \"NO_SOURCE\"];\n const readyStates = [\n \"HAVE_NOTHING\",\n \"HAVE_METADATA\",\n \"HAVE_CURRENT_DATA\",\n \"HAVE_FUTURE_DATA\",\n \"HAVE_ENOUGH_DATA\"\n ];\n const net = networkStates[v.networkState] ?? String(v.networkState);\n const ready = readyStates[v.readyState] ?? String(v.readyState);\n const err = v.error ? `code=${v.error.code}${v.error.message ? ` (${v.error.message})` : \"\"}` : \"none\";\n const ranges = [];\n for (let i = 0; i < v.buffered.length; i++) {\n ranges.push(`[${v.buffered.start(i).toFixed(2)}\\u2013${v.buffered.end(i).toFixed(2)}]`);\n }\n return `t=${v.currentTime.toFixed(2)}s paused=${v.paused} ended=${v.ended} seeking=${v.seeking} readyState=${ready} networkState=${net} error=${err} buffered=${ranges.length ? ranges.join(\",\") : \"none\"}`;\n }\n monitorLiveResumeStall(resumeBaseline) {\n const needsReset = this.host.requiresMediaPipelineResetAfterAds();\n const pollIntervalMs = 1e3;\n const graceMs = needsReset ? 8e3 : 5e3;\n const recoveryCooldownMs = needsReset ? 7e3 : 5e3;\n const maxRecoveries = 3;\n const maxMonitorMs = 45e3;\n const startTime = Date.now();\n let baseline = resumeBaseline;\n let recoveries = 0;\n let lastRecoveryAt = 0;\n const video = this.host.video;\n let listenersAttached = false;\n let onMediaEvent;\n const diagEvents = [\n \"loadstart\",\n \"loadedmetadata\",\n \"loadeddata\",\n \"canplay\",\n \"canplaythrough\",\n \"play\",\n \"playing\",\n \"pause\",\n \"waiting\",\n \"stalled\",\n \"suspend\",\n \"seeking\",\n \"seeked\",\n \"emptied\",\n \"error\",\n \"ended\"\n ];\n if (this.debug) {\n onMediaEvent = (e) => {\n const dt = ((Date.now() - startTime) / 1e3).toFixed(1);\n console.log(\n `[ResumeDiag] +${dt}s event=${e.type} \\u2014 ${this.describeVideoState()}`\n );\n };\n for (const name of diagEvents) {\n video.addEventListener(name, onMediaEvent);\n }\n listenersAttached = true;\n console.log(\n `[ResumeDiag] +0.0s monitor start \\u2014 ${this.describeVideoState()}`\n );\n }\n const cleanup = () => {\n if (listenersAttached && onMediaEvent) {\n for (const name of diagEvents) {\n video.removeEventListener(name, onMediaEvent);\n }\n listenersAttached = false;\n }\n };\n const poll = () => {\n if (this.inAdBreak) {\n cleanup();\n return;\n }\n const currentTime = video.currentTime;\n const advanced = currentTime > baseline + 0.5;\n const playing = !video.paused && video.readyState >= 3;\n if (advanced && playing) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Live stream resumed successfully after ad break \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n const elapsed = Date.now() - startTime;\n const bufferedAhead = this.getBufferedAhead();\n const wedged = bufferedAhead < 0.5 && !advanced;\n if (elapsed >= maxMonitorMs) {\n if (this.debug && !advanced) {\n console.warn(\n `[StormcloudVideoPlayer] Live stream failed to resume after ${(maxMonitorMs / 1e3).toFixed(0)}s \\u2014 ${this.describeVideoState()}`\n );\n }\n cleanup();\n return;\n }\n const canRecover = wedged && elapsed >= graceMs && Date.now() - lastRecoveryAt >= recoveryCooldownMs && recoveries < maxRecoveries;\n if (canRecover) {\n recoveries++;\n lastRecoveryAt = Date.now();\n if (needsReset) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n } else if (recoveries === 1) {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 calling recoverMediaError() (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.recoverMediaError();\n } else if (recoveries === 2) {\n const liveSyncPos = this.host.getLiveSyncPosition();\n const reloadPos = liveSyncPos != null && liveSyncPos > currentTime ? liveSyncPos : currentTime;\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content wedged after ad break \\u2014 restarting HLS load at ${reloadPos.toFixed(2)}s (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n if (liveSyncPos != null && liveSyncPos > currentTime) {\n video.currentTime = liveSyncPos;\n }\n this.host.restartHlsLoad(reloadPos);\n } else {\n if (this.debug) {\n console.warn(\n `[StormcloudVideoPlayer] Content still wedged after ad break \\u2014 hard-reloading live stream (recovery ${recoveries}/${maxRecoveries}) \\u2014 ${this.describeVideoState()}`\n );\n }\n this.host.reloadLiveStream();\n }\n baseline = video.currentTime;\n if (video.paused) {\n video.play()?.catch(() => {\n });\n }\n }\n window.setTimeout(poll, pollIntervalMs);\n };\n window.setTimeout(poll, pollIntervalMs);\n }\n resumeContentPlayback(attempt = 0) {\n const maxAttempts = 5;\n const video = this.host.video;\n if (!video.paused) {\n if (this.debug && attempt === 0) {\n console.log(\"[StormcloudVideoPlayer] Content video already playing after ads\");\n }\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Resuming content playback after ads (attempt ${attempt + 1}/${maxAttempts}, readyState=${video.readyState})`\n );\n }\n if (video.readyState < 3) {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] readyState never reached HAVE_FUTURE_DATA, forcing play()\"\n );\n }\n video.play()?.catch(() => {\n });\n return;\n }\n const onReady = () => {\n video.removeEventListener(\"canplay\", onReady);\n this.resumeContentPlayback(attempt + 1);\n };\n video.addEventListener(\"canplay\", onReady);\n const backoffMs = 500 * (attempt + 1);\n window.setTimeout(() => {\n video.removeEventListener(\"canplay\", onReady);\n if (video.paused) {\n this.resumeContentPlayback(attempt + 1);\n }\n }, backoffMs);\n return;\n }\n const playResult = video.play();\n if (playResult && typeof playResult.catch === \"function\") {\n playResult.catch((error) => {\n if (attempt + 1 >= maxAttempts) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to resume content playback after ads:\",\n error\n );\n }\n return;\n }\n const backoffMs = 250 * (attempt + 1);\n window.setTimeout(() => {\n this.resumeContentPlayback(attempt + 1);\n }, backoffMs);\n });\n }\n }\n handleAdFailure(reason = \"ad_failure\") {\n if (!this.inAdBreak) return;\n if (this.slotState === \"REQUESTING\" || this.slotState === \"ENDING\") {\n this.logOrchestratorFunnel(\"failure_deferred_to_request\", {\n reason,\n state: this.slotState\n });\n return;\n }\n if (this.currentPodSource === \"edge\") {\n this.markEdgeExhausted(\"edge_playback_failed\", { reason });\n } else {\n this.timing.consecutiveFailures++;\n }\n const diag = this.currentRequestId != null ? this.requestDiagnostics.get(this.currentRequestId) : void 0;\n if (diag && !diag.failureReason) diag.failureReason = reason;\n if (this.debug) {\n console.log(\n `[AdBreak] Ad failure (${reason}): remaining=${this.timing.getRemainingAdMs()}ms, consecutiveFailures=${this.timing.consecutiveFailures}`\n );\n }\n this.setSlotState(\"NEEDS_NEXT_AD\", reason);\n this.requestNextAd(reason);\n }\n};\n\n// src/player/StormcloudVideoPlayer.ts\nvar StormcloudVideoPlayer = class {\n constructor(config) {\n this.attached = false;\n this.palPlaybackStarted = false;\n initializePolyfills();\n const browserOverrides = getBrowserConfigOverrides();\n this.config = { ...browserOverrides, ...config };\n this.video = config.videoElement;\n logBrowserInfo(config.debugAdTiming);\n this.floorLadder = new FloorLadderController();\n this.adPlayer = this.createAdPlayer(false);\n this.palNonce = createPalNonceManager();\n this.cueManager = new Scte35CueManager(!!this.config.debugAdTiming, {\n onEarlyStartCue: (marker, fragmentSn, cueKey) => {\n this.startAdPrefetch(marker, fragmentSn, cueKey);\n },\n onPlaybackCue: (marker, cueKey) => {\n this.onScte35Marker(marker, cueKey);\n },\n isInAdBreak: () => this.adBreak.inAdBreak\n });\n this.adConfig = new AdConfigManager(this.config, this.video);\n this.timing = new AdTimingService(this.config, this.video, {\n onAdStopTimerFired: () => this.onAdStopTimerFired(),\n onAdStartTimerFired: (marker, cueKey) => {\n this.startScte35AdBreak(\n marker,\n cueKey,\n marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.timing.expectedAdBreakDurationMs\n );\n },\n onWatchdogTimeout: () => this.adBreak.handleRequestWatchdogTimeout(),\n onFailsafeTimeout: () => this.adBreak.handleAdFailure(\"failsafe_timeout\"),\n getAdState: () => ({\n inAdBreak: this.adBreak.inAdBreak,\n showAds: this.adBreak.showAds,\n adPlaying: this.adPlayer.isAdPlaying()\n })\n });\n this.placeholder = new PlaceholderLayer(this.video, !!this.config.debugAdTiming);\n this.hlsEngine = new HlsEngine(this.config, this.video, this.cueManager, this.timing, {\n onManifestParsed: async (isLive) => this.onManifestParsed(isLive),\n onScte35Cue: (marker, context) => this.cueManager.onScte35Cue(marker, context),\n activatePendingCuesForFragment: (frag) => this.cueManager.activatePendingScte35CuesForFragment(frag),\n onFatalDestroy: () => this.destroy(),\n isInAdBreak: () => this.adBreak.inAdBreak,\n hasPendingAdBreak: () => this.adBreak.pendingAdBreak !== null\n });\n this.adBreak = new AdBreakOrchestrator(\n {\n config: this.config,\n video: this.video,\n getAdPlayer: () => this.adPlayer,\n setAdPlayer: (p) => {\n this.adPlayer = p;\n },\n createAdPlayer: (c) => this.createAdPlayer(c),\n shouldContinueLiveStreamDuringAds: () => this.shouldContinueLiveStreamDuringAds(),\n isLiveStream: () => this.hlsEngine.isLiveStream,\n getLiveSyncPosition: () => this.hlsEngine.getLiveSyncPosition(),\n restartHlsLoad: (position) => this.hlsEngine.restartLoadAt(position),\n reloadLiveStream: () => this.hlsEngine.reloadLiveStream(),\n recoverMediaError: () => this.hlsEngine.recoverMediaError(),\n requiresMediaPipelineResetAfterAds: () => requiresMediaPipelineResetAfterAds(),\n generatePodVastUrl: (base) => this.generatePodVastUrl(base),\n completeGamRequestSignals: (url) => this.adConfig.completeDeferredRequestSignals(url, this.palNonce),\n getEdgePodBaseUrl: () => this.edgePodBaseUrl,\n getFloorSnapshot: (position) => this.floorLadder.isEnabled() ? this.floorLadder.snapshotFor({ position }) : void 0,\n onAdClick: () => this.palNonce.sendAdClick(),\n onAdInteraction: (event) => this.palNonce.sendAdTouch(event)\n },\n this.timing,\n this.adConfig,\n this.cueManager,\n this.placeholder\n );\n }\n get debug() {\n return !!this.config.debugAdTiming;\n }\n createAdPlayer(continueLiveStreamDuringAds) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Creating HLS ad player\");\n }\n return createHlsAdPlayer(this.video, {\n continueLiveStreamDuringAds,\n ...this.config.licenseKey ? { licenseKey: this.config.licenseKey } : {},\n ...this.hlsEngine?.hls ? { mainHlsInstance: this.hlsEngine.hls } : {},\n ...this.config.adMediaStartTimeoutMs != null ? { mediaStartTimeoutMs: this.config.adMediaStartTimeoutMs } : {}\n });\n }\n applyFloorLadderFromApi() {\n const raw = this.adConfig.apiFloorLadder;\n if (raw == null) {\n this.floorLadder.reset();\n return;\n }\n const report = this.floorLadder.applyApiConfig(raw);\n this.warnOnInvalidFloorLadder(report);\n if (this.debug) {\n console.log(\"[AdBreak][FLOOR] configuration applied from API\", {\n config: this.floorLadder.get(),\n bounds: this.floorLadder.getBounds(),\n validation: report\n });\n }\n }\n isAdFloorLadderEnabled() {\n return this.floorLadder.isEnabled();\n }\n applyEdgePodFromApi() {\n this.edgePodBaseUrl = resolveEdgePodBaseUrl({\n enableEdgePodRequest: this.adConfig.apiEnableEdgePodRequest,\n edgePodUrl: this.adConfig.apiEdgePodUrl,\n licenseKey: this.config.licenseKey\n });\n if (this.debug) {\n console.log(\"[AdBreak][EDGE] edge pod base URL from API:\", this.edgePodBaseUrl ?? \"(disabled; GAM only)\");\n }\n }\n getEdgePodUrl() {\n return this.edgePodBaseUrl;\n }\n warnOnInvalidFloorLadder(report) {\n const config = this.floorLadder.get();\n if (report.ok || !config.enabled) return;\n console.warn(\"[AdBreak][FLOOR] configuration has issues; invalid floors will not be sent\", {\n errors: report.errors,\n configurationVersion: config.configurationVersion,\n bounds: this.floorLadder.getBounds()\n });\n }\n getAdFloorLadder() {\n return this.floorLadder.get();\n }\n getAdFloorBounds() {\n return this.floorLadder.getBounds();\n }\n setAdFloorSelector(selector) {\n this.floorLadder.setSelector(selector);\n }\n generatePodVastUrl(baseUrl) {\n return this.adConfig.generatePodVastUrl(\n baseUrl,\n this.adPlayer,\n this.palNonce,\n this.adBreak.inAdBreak\n );\n }\n // ───────────────────────────────────────────────────────────────\n // Lifecycle\n // ───────────────────────────────────────────────────────────────\n async load() {\n if (!this.attached) {\n this.attach();\n }\n try {\n await this.adConfig.fetchAdConfiguration();\n } catch (error) {\n if (this.debug) {\n console.warn(\n \"[StormcloudVideoPlayer] Failed to fetch ad configuration:\",\n error\n );\n }\n }\n this.applyFloorLadderFromApi();\n this.applyEdgePodFromApi();\n const palDescriptionUrl = this.config.ctvAdRequest ? this.adConfig.getPalDescriptionUrl() : void 0;\n fetchConsentSignals().catch(() => ({})).then((signals) => {\n this.adConfig.consentSignals = signals;\n const muted = this.video.muted;\n return this.palNonce.generateNonce({\n videoWidth: this.video.offsetWidth || this.video.clientWidth || 640,\n videoHeight: this.video.offsetHeight || this.video.clientHeight || 480,\n adWillAutoPlay: !!this.config.autoplay,\n adWillPlayMuted: muted,\n playerVolume: muted ? 0 : this.video.volume,\n continuousPlayback: this.config.lowLatencyMode ?? false,\n ...palDescriptionUrl ? { descriptionUrl: palDescriptionUrl } : {},\n ...signals.storageAllowed != null ? { allowStorage: signals.storageAllowed } : {}\n });\n }).catch(() => {\n });\n this.adConfig.initializeTracking();\n if (this.hlsEngine.shouldUseNativeHls(() => this.getStreamType())) {\n await this.hlsEngine.setupNativeHls();\n const continueLiveStreamDuringAds = this.shouldContinueLiveStreamDuringAds();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Native HLS ad behavior:\", {\n isLive: this.hlsEngine.isLiveStream,\n continueLiveStreamDuringAds\n });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(continueLiveStreamDuringAds);\n this.adPlayer.initialize();\n return;\n }\n this.hlsEngine.setupHls();\n }\n async onManifestParsed(isLive) {\n if (this.hlsEngine.reloadingLiveStream) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Manifest re-parsed after hard reload \\u2014 skipping ad-player setup\");\n }\n return;\n }\n if (!this.adConfig.isVmapEnabled() && !isLive && this.adConfig.vmapBreaks.length === 0 && this.adConfig.apiVastTagUrl) {\n const prerollKey = \"synthetic-vod-preroll\";\n if (!this.adConfig.consumedVmapBreakIds.has(prerollKey)) {\n this.adConfig.vmapBreaks = [\n { id: prerollKey, startTimeMs: 0, vastTagUrl: this.adConfig.apiVastTagUrl }\n ];\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Injected synthetic VOD preroll from apiVastTagUrl\"\n );\n }\n }\n }\n if (this.debug) {\n const adBehavior = this.shouldContinueLiveStreamDuringAds() ? \"live (main video continues muted during ads)\" : \"vod (main video pauses during ads)\";\n console.log(\"[StormcloudVideoPlayer] Stream type detected:\", {\n isLive,\n allowNativeHls: this.config.allowNativeHls,\n adBehavior\n });\n }\n if (this.adBreak.isBreakActive()) {\n console.log(\"[AD-CONTROLLER] destroy skipped\", {\n reason: \"manifest_parsed_during_break\",\n state: this.adBreak.getSlotState()\n });\n return;\n }\n if (this.debug) {\n console.log(\"[AD-CONTROLLER] destroy\", { reason: \"manifest_parsed\", state: \"IDLE\" });\n }\n this.adPlayer.destroy();\n this.adPlayer = this.createAdPlayer(this.shouldContinueLiveStreamDuringAds());\n this.adPlayer.initialize();\n }\n attach() {\n if (this.attached) return;\n this.attached = true;\n this.video.autoplay = !!this.config.autoplay;\n this.video.muted = !!this.config.muted;\n this.adPlayer.initialize();\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.attachImaEventListeners();\n this.video.addEventListener(\"play\", () => {\n if (!this.palPlaybackStarted && !this.adPlayer.isAdPlaying()) {\n this.palPlaybackStarted = true;\n this.palNonce.sendPlaybackStart();\n }\n });\n this.endedHandler = () => {\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.onVideoEnded();\n };\n this.video.addEventListener(\"ended\", this.endedHandler);\n this.video.addEventListener(\"mousedown\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.video.addEventListener(\"touchstart\", (e) => {\n this.palNonce.sendAdTouch(e);\n });\n this.timeUpdateHandler = () => {\n this.onTimeUpdate(this.video.currentTime);\n };\n this.video.addEventListener(\"timeupdate\", this.timeUpdateHandler);\n this.emptiedHandler = () => {\n if (this.hlsEngine.nativeHlsMode && this.hlsEngine.videoSrcProtection && !this.adPlayer.isAdPlaying()) {\n if (this.debug) {\n console.log(\n \"[StormcloudVideoPlayer] Video src was cleared, restoring:\",\n this.hlsEngine.videoSrcProtection\n );\n }\n const currentTime = this.video.currentTime;\n const wasPaused = this.video.paused;\n this.video.src = this.hlsEngine.videoSrcProtection;\n this.video.currentTime = currentTime;\n if (!wasPaused) {\n this.video.play().catch(() => {\n });\n }\n }\n };\n this.video.addEventListener(\"emptied\", this.emptiedHandler);\n }\n shouldContinueLiveStreamDuringAds() {\n if (this.config.pauseContentDuringAds) {\n return false;\n }\n if (this.hlsEngine.isLiveStream) {\n return true;\n }\n const duration = this.video.duration;\n if (!Number.isFinite(duration) || duration === Infinity) {\n return true;\n }\n return false;\n }\n // ───────────────────────────────────────────────────────────────\n // SCTE-35 marker orchestration\n // ───────────────────────────────────────────────────────────────\n onScte35Marker(marker, cueKey) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 marker detected:\", {\n type: marker.type,\n ptsSeconds: marker.ptsSeconds,\n durationSeconds: marker.durationSeconds,\n currentTime: this.video.currentTime,\n raw: marker.raw,\n hasPendingAdBreak: !!this.adBreak.pendingAdBreak\n });\n }\n if (marker.type === \"start\") {\n if (this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n const newDurationMs = marker.durationSeconds * 1e3;\n if (this.timing.expectedAdBreakDurationMs == null || newDurationMs > this.timing.expectedAdBreakDurationMs) {\n this.timing.setAdBreakDurationBoundary(newDurationMs);\n this.timing.scheduleAdStopAtBreakBoundary();\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Updated ad break duration from subsequent marker: ${newDurationMs}ms, remaining: ${this.timing.getWallClockRemainingAdMs()}ms`\n );\n }\n }\n }\n return;\n }\n if (!this.adBreak.adDetectSentForCurrentBreak) {\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n }\n const hasPrefetchedAds = this.adBreak.pendingAdBreak && this.adBreak.pendingAdBreak.vastUrls.length > 0;\n const durationMs = marker.durationSeconds != null ? marker.durationSeconds * 1e3 : this.adBreak.pendingAdBreak?.marker.durationSeconds != null ? this.adBreak.pendingAdBreak.marker.durationSeconds * 1e3 : void 0;\n const isManifest = isManifestBasedMarker(marker);\n const forceImmediate = this.config.immediateManifestAds ?? true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ad start decision:\", {\n isManifestMarker: isManifest,\n forceImmediate,\n hasPts: typeof marker.ptsSeconds === \"number\",\n hasPrefetchedAds\n });\n }\n if (isManifest && forceImmediate) {\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Starting ad immediately (manifest-based)${hasPrefetchedAds ? \" with prefetched ads\" : \"\"}`\n );\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n } else if (typeof marker.ptsSeconds === \"number\") {\n const tol = this.config.driftToleranceMs ?? 1e3;\n const nowMs = this.video.currentTime * 1e3;\n const estCurrentPtsMs = nowMs - this.timing.ptsDriftEmaMs;\n const deltaMs = Math.floor(marker.ptsSeconds * 1e3 - estCurrentPtsMs);\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] PTS-based timing calculation:\", {\n nowMs,\n estCurrentPtsMs,\n markerPtsMs: marker.ptsSeconds * 1e3,\n deltaMs,\n tolerance: tol\n });\n }\n if (deltaMs > tol) {\n if (this.debug) {\n console.log(`[StormcloudVideoPlayer] Scheduling ad start in ${deltaMs}ms`);\n }\n this.timing.expectedAdBreakDurationMs = durationMs;\n this.cueManager.scheduledScte35BreakKey = cueKey;\n this.timing.scheduleAdStartIn(deltaMs, marker, cueKey);\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (within tolerance)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n } else {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Starting ad immediately (fallback)\");\n }\n this.timing.clearAdStartTimer();\n this.startScte35AdBreak(marker, cueKey, durationMs);\n }\n return;\n }\n if (marker.type === \"progress\" && this.adBreak.inAdBreak) {\n if (marker.durationSeconds != null) {\n this.timing.setAdBreakDurationBoundary(marker.durationSeconds * 1e3);\n }\n this.timing.scheduleAdStopAtBreakBoundary();\n return;\n }\n if (marker.type === \"end\") {\n if (!this.video.muted) {\n this.video.muted = true;\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Muted video on SCTE end marker\");\n }\n }\n const remaining = this.timing.getRemainingAdMs();\n const adPlaying = this.adPlayer.isAdPlaying();\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] SCTE-35 end marker received:\", {\n remaining,\n adPlaying,\n adSlotState: this.adBreak.getSlotState(),\n activeAdRequest: this.timing.activeAdRequestToken !== null\n });\n }\n this.timing.markBreakEndedNow();\n this.timing.clearAdStartTimer();\n this.timing.clearAdStopTimer();\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"scte_end\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"scte_end\");\n return;\n }\n }\n startScte35AdBreak(marker, cueKey, durationMs) {\n if (this.adBreak.isBreakActive()) {\n if (this.debug) {\n console.log(\"[StormcloudVideoPlayer] Ignoring SCTE-35 break start: a break is already active\", {\n state: this.adBreak.getSlotState(),\n cueKey\n });\n }\n return;\n }\n this.adBreak.inAdBreak = true;\n this.cueManager.activeScte35BreakKey = cueKey ?? this.cueManager.pendingScte35CueKey;\n this.cueManager.scheduledScte35BreakKey = void 0;\n this.timing.beginBreakTiming(this.timing.resolveScteBreakStartWallClockMs(marker));\n this.timing.setAdBreakDurationBoundary(durationMs);\n this.adBreak.handleAdStart(marker);\n this.timing.scheduleAdStopAtBreakBoundary();\n }\n onAdStopTimerFired() {\n if (!this.adBreak.inAdBreak) return;\n const adPlaying = this.adPlayer.isAdPlaying();\n const checkIntervalMs = Math.max(\n 250,\n Math.floor(this.config.adBreakCheckIntervalMs ?? 1e3)\n );\n const maxExtensionMsConfig = this.config.maxAdBreakExtensionMs;\n const maxExtensionMs = typeof maxExtensionMsConfig === \"number\" && maxExtensionMsConfig > 0 ? maxExtensionMsConfig : 0;\n const endWallClockMs = this.timing.getAdBreakEndWallClockMs() ?? Date.now();\n const overrunMs = Math.max(0, Date.now() - endWallClockMs);\n const shouldExtendAdBreak = adPlaying && overrunMs < maxExtensionMs;\n if (shouldExtendAdBreak) {\n this.timing.scheduleAdStopCountdown(checkIntervalMs);\n return;\n }\n if (this.debug) {\n console.log(\n `[StormcloudVideoPlayer] Ad break boundary reached (overrun=${overrunMs}ms) - hard-stopping ads and resuming stream`\n );\n }\n if (adPlaying) {\n this.adBreak.noteStopBeforeStart(\"break_boundary\");\n this.adPlayer.stop().catch(() => {\n });\n }\n this.adBreak.handleAdPodComplete(\"break_boundary\");\n }\n // ───────────────────────────────────────────────────────────────\n // Ad prefetch\n // ───────────────────────────────────────────────────────────────\n startAdPrefetch(marker, fragmentSn, cueKey) {\n if (this.adBreak.pendingAdBreak || this.adBreak.inAdBreak) return;\n const baseVastUrl = this.adConfig.apiVastTagUrl;\n if (!baseVastUrl) {\n if (this.debug) console.warn(\"[StormcloudVideoPlayer] No VAST URL available for prefetch\");\n return;\n }\n this.adConfig.beginNewAdPod();\n this.adConfig.podAssignedByPrefetch = true;\n const generatedUrls = [this.generatePodVastUrl(baseVastUrl)];\n this.adBreak.pendingAdBreak = {\n marker,\n ...fragmentSn !== void 0 ? { detectedAtFragmentSn: fragmentSn } : {},\n vastUrls: generatedUrls,\n isFetching: false,\n fetchStartTime: Date.now()\n };\n this.cueManager.pendingScte35CueKey = cueKey;\n this.adBreak.adDetectSentForCurrentBreak = true;\n const detectPayload = {};\n if (marker.durationSeconds != null) detectPayload.durationSeconds = marker.durationSeconds;\n if (marker.ptsSeconds != null) detectPayload.ptsSeconds = marker.ptsSeconds;\n if (fragmentSn !== void 0) detectPayload.detectedAtFragmentSn = fragmentSn;\n sendAdDetectTracking(this.config.licenseKey, { source: \"scte35\", timestamp: (/* @__PURE__ */ new Date()).toISOString(), ...detectPayload }, buildAnalyticsContext(this.config)).catch(() => {\n });\n if (this.debug) {\n console.log(\"[PREFETCH] Pre-generated pod request URL for upcoming ad break\");\n }\n }\n // ───────────────────────────────────────────────────────────────\n // VMAP time-based ad breaks\n // ───────────────────────────────────────────────────────────────\n onTimeUpdate(currentTimeSec) {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const nowMs = currentTimeSec * 1e3;\n const breakToPlay = this.adConfig.findBreakForTime(nowMs);\n if (breakToPlay) {\n void this.handleVmapAdBreak(breakToPlay, nowMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad break failed gracefully:\", error);\n }\n });\n }\n }\n onVideoEnded() {\n if (this.adConfig.vmapBreaks.length === 0) return;\n if (this.adPlayer.isAdPlaying() || this.adBreak.inAdBreak) return;\n const durationMs = Number.isFinite(this.video.duration) ? Math.floor(this.video.duration * 1e3) : 0;\n const postroll = this.adConfig.vmapBreaks.find(\n (b) => b.startTimeMs === -1 && !this.adConfig.consumedVmapBreakIds.has(this.adConfig.getAdBreakKey(b))\n );\n if (postroll) {\n void this.handleVmapAdBreak(postroll, durationMs).catch((error) => {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP post-roll failed gracefully:\", error);\n }\n });\n }\n }\n async handleVmapAdBreak(adBreak, nowMs) {\n const key = this.adConfig.getAdBreakKey(adBreak);\n if (this.adConfig.consumedVmapBreakIds.has(key)) return;\n const breakStartMs = this.adConfig.resolveBreakStartMs(adBreak);\n if (breakStartMs == null) return;\n const durationMs = adBreak.durationMs ?? 0;\n const endMs = breakStartMs + durationMs;\n const inWindow = durationMs > 0 ? nowMs >= breakStartMs && nowMs < endMs : nowMs >= breakStartMs;\n if (inWindow) {\n this.adConfig.consumedVmapBreakIds.add(key);\n const tags = this.adConfig.selectVastTagsForBreak(adBreak);\n if (!tags || tags.length === 0) return;\n const first = tags[0];\n const rest = tags.slice(1);\n this.adBreak.adPodQueue = rest;\n this.adPlayer.updateOriginalMutedState(this.video.muted, this.video.volume);\n this.adBreak.showAds = true;\n this.adBreak.inAdBreak = true;\n this.timing.beginBreakTiming(Date.now());\n if (durationMs > 0) {\n this.timing.setAdBreakDurationBoundary(durationMs);\n }\n const position = adBreak.startTimeMs === 0 ? \"preroll\" : adBreak.startTimeMs < 0 ? \"postroll\" : \"midroll\";\n this.adBreak.beginVmapBreak(key, position);\n try {\n await this.adBreak.playSingleAd(first, \"vmap\");\n } catch (error) {\n if (this.debug) {\n console.warn(\"[StormcloudVideoPlayer] VMAP ad request failed:\", error);\n }\n this.adBreak.continueAfterRequestFailure();\n }\n }\n }\n // ───────────────────────────────────────────────────────────────\n // Public API\n // ───────────────────────────────────────────────────────────────\n getCurrentAdIndex() {\n return this.timing.currentAdIndex;\n }\n getTotalAdsInBreak() {\n return this.timing.totalAdsInBreak;\n }\n getAdRemainingMs() {\n return this.timing.getRemainingAdMs();\n }\n isAdPlaying() {\n return this.adBreak.inAdBreak && this.adPlayer.isAdPlaying();\n }\n isShowingAds() {\n return this.adBreak.showAds;\n }\n getStreamType() {\n const url = this.config.src.toLowerCase();\n if (url.includes(\".m3u8\") || url.includes(\"/hls/\") || url.includes(\"application/vnd.apple.mpegurl\")) {\n return \"hls\";\n }\n return \"other\";\n }\n shouldShowNativeControls() {\n const streamType = this.getStreamType();\n if (streamType === \"other\") {\n return !(this.config.showCustomControls ?? false);\n }\n return !!(this.config.allowNativeHls && !(this.config.showCustomControls ?? false));\n }\n isLive() {\n return this.hlsEngine.isLiveStream;\n }\n isLowLatencyStream() {\n return this.hlsEngine.isLowLatencyStream();\n }\n get videoElement() {\n return this.video;\n }\n toggleMute() {\n toggleMute(this.video, this.adPlayer, this.debug);\n }\n toggleFullscreen() {\n return toggleFullscreen(this.video, this.debug);\n }\n isMuted() {\n return isMuted(this.video, this.adPlayer);\n }\n setMuted(muted) {\n setMuted(this.video, this.adPlayer, muted, this.debug);\n }\n setVolume(volume) {\n setVolume(this.video, this.adPlayer, volume, this.debug);\n }\n getVolume() {\n return getVolume(this.video, this.adPlayer);\n }\n isFullscreen() {\n return isFullscreen();\n }\n resize() {\n resizePlayer(this.video, this.adPlayer, this.debug);\n }\n // ───────────────────────────────────────────────────────────────\n // Destroy\n // ───────────────────────────────────────────────────────────────\n destroy() {\n this.adBreak.cancelScheduledRequest();\n this.timing.destroy();\n this.adBreak.clearPendingAdBreak();\n this.placeholder.destroy();\n 0;\n if (this.timeUpdateHandler) {\n this.video.removeEventListener(\"timeupdate\", this.timeUpdateHandler);\n delete this.timeUpdateHandler;\n }\n if (this.endedHandler) {\n this.video.removeEventListener(\"ended\", this.endedHandler);\n delete this.endedHandler;\n }\n if (this.emptiedHandler) {\n this.video.removeEventListener(\"emptied\", this.emptiedHandler);\n delete this.emptiedHandler;\n }\n this.adConfig.destroyTracking();\n this.hlsEngine.destroy();\n this.adPlayer?.destroy();\n if (this.palPlaybackStarted) {\n this.palPlaybackStarted = false;\n this.palNonce.sendPlaybackEnd();\n }\n this.palNonce.reset();\n this.timing.consecutiveFailures = 0;\n }\n};\n\n// src/ui/StormcloudVideoPlayer.tsx\nvar import_fa = require(\"react-icons/fa\");\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar ExpandIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 4H4v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 9V4h-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 20h5v-5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 15v5h5\" })\n ]\n }\n);\nvar CompressIcon = ({ size = 18 }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"svg\",\n {\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M4 9h5V4\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M15 4v5h5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M20 15h-5v5\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"path\", { d: \"M9 20v-5H4\" })\n ]\n }\n);\nvar CRITICAL_PROPS = [\n \"src\",\n \"allowNativeHls\",\n \"isLiveStream\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"lowLatencyMode\",\n \"driftToleranceMs\",\n \"ctvAdRequest\"\n];\nvar CONTROLS_HIDE_DELAY = 3e3;\nvar DEFAULT_PLAYER_ASPECT_RATIO = 16 / 9;\nvar StormcloudVideoPlayerComponent = import_react.default.memo(\n (props) => {\n const {\n src,\n autoplay,\n muted,\n lowLatencyMode,\n allowNativeHls,\n isLiveStream,\n driftToleranceMs,\n immediateManifestAds,\n debugAdTiming,\n showCustomControls,\n hideLoadingIndicator,\n onVolumeToggle,\n onFullscreenToggle,\n onControlClick,\n onReady,\n wrapperClassName,\n wrapperStyle,\n className,\n style,\n controls,\n playsInline,\n preload,\n poster,\n children,\n licenseKey,\n vastTagUrl,\n isVmap,\n vmapUrl,\n minSegmentsBeforePlay,\n ctvAdRequest,\n programTitle,\n channelName,\n contentNetwork,\n minRemainingMsToStartAd,\n minRemainingMsToRequestAd,\n maxNoFillsPerBreak,\n maxAdBreakExtensionMs,\n ...restVideoAttrs\n } = props;\n const videoRef = (0, import_react.useRef)(null);\n const playerRef = (0, import_react.useRef)(null);\n const bufferingTimeoutRef = (0, import_react.useRef)(null);\n const controlsTimerRef = (0, import_react.useRef)(null);\n const wrapperRef = (0, import_react.useRef)(null);\n const [adStatus, setAdStatus] = import_react.default.useState({ showAds: false, currentIndex: 0, totalAds: 0, remainingSeconds: 0 });\n const [shouldShowNativeControls, setShouldShowNativeControls] = import_react.default.useState(true);\n const [isMuted2, setIsMuted] = import_react.default.useState(false);\n const [isFullscreen2, setIsFullscreen] = import_react.default.useState(false);\n const [isPlaying, setIsPlaying] = import_react.default.useState(false);\n const [currentTime, setCurrentTime] = import_react.default.useState(0);\n const [duration, setDuration] = import_react.default.useState(0);\n const [volume, setVolume2] = import_react.default.useState(1);\n const [playbackRate, setPlaybackRate] = import_react.default.useState(1);\n const [showVolumeSlider, setShowVolumeSlider] = import_react.default.useState(false);\n const [showSpeedMenu, setShowSpeedMenu] = import_react.default.useState(false);\n const [isLoading, setIsLoading] = import_react.default.useState(true);\n const [isBuffering, setIsBuffering] = import_react.default.useState(false);\n const [showCenterPlay, setShowCenterPlay] = import_react.default.useState(false);\n const [showLicenseWarning, setShowLicenseWarning] = import_react.default.useState(false);\n const [controlsVisible, setControlsVisible] = import_react.default.useState(true);\n const [viewportWidth, setViewportWidth] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerWidth : 1920\n );\n const [isPortrait, setIsPortrait] = import_react.default.useState(\n typeof window !== \"undefined\" ? window.innerHeight > window.innerWidth : false\n );\n const [playerAspectRatio, setPlayerAspectRatio] = import_react.default.useState(\n DEFAULT_PLAYER_ASPECT_RATIO\n );\n const getResponsiveScale = () => {\n if (viewportWidth < 480) return 0.7;\n if (viewportWidth < 768) return 0.8;\n if (viewportWidth < 1024) return 0.9;\n return 1;\n };\n const responsiveScale = getResponsiveScale();\n const resetControlsTimer = (0, import_react.useCallback)(() => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n setControlsVisible(true);\n controlsTimerRef.current = window.setTimeout(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, CONTROLS_HIDE_DELAY);\n }, [showVolumeSlider, showSpeedMenu]);\n const handleWrapperMouseMove = (0, import_react.useCallback)(() => {\n resetControlsTimer();\n }, [resetControlsTimer]);\n const handleWrapperMouseLeave = (0, import_react.useCallback)(() => {\n if (!showVolumeSlider && !showSpeedMenu) {\n setControlsVisible(false);\n }\n }, [showVolumeSlider, showSpeedMenu]);\n const formatTime = (seconds) => {\n if (!isFinite(seconds)) return \"0:00:00\";\n const hours = Math.floor(seconds / 3600);\n const minutes = Math.floor(seconds % 3600 / 60);\n const remainingSeconds = Math.floor(seconds % 60);\n return `${hours}:${minutes.toString().padStart(2, \"0\")}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n };\n const handlePlayPause = () => {\n if (videoRef.current) {\n if (videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n } else {\n videoRef.current.pause();\n setShowCenterPlay(true);\n }\n }\n resetControlsTimer();\n };\n const handleCenterPlayClick = () => {\n if (videoRef.current && videoRef.current.paused) {\n const hasValidSource = videoRef.current.src || videoRef.current.currentSrc && videoRef.current.currentSrc !== \"\" || videoRef.current.readyState >= 1;\n if (hasValidSource) {\n videoRef.current.play()?.catch((error) => {\n console.error(\"[StormcloudVideoPlayer] Failed to play:\", error);\n });\n setShowCenterPlay(false);\n } else {\n console.warn(\n \"[StormcloudVideoPlayer] Cannot play: video has no valid source\"\n );\n }\n }\n };\n const handleTimelineSeek = (e) => {\n if (videoRef.current && duration > 0 && isFinite(duration)) {\n const rect = e.currentTarget.getBoundingClientRect();\n const clickX = e.clientX - rect.left;\n const progress = Math.max(0, Math.min(1, clickX / rect.width));\n const newTime = progress * duration;\n if (isFinite(newTime) && newTime >= 0 && newTime <= duration) {\n videoRef.current.currentTime = newTime;\n }\n }\n resetControlsTimer();\n };\n const handleVolumeChange = (newVolume) => {\n if (playerRef.current && isFinite(newVolume)) {\n const clampedVolume = Math.max(0, Math.min(1, newVolume));\n playerRef.current.setVolume(clampedVolume);\n }\n };\n const handlePlaybackRateChange = (rate) => {\n if (videoRef.current && isFinite(rate) && rate > 0) {\n videoRef.current.playbackRate = rate;\n }\n setShowSpeedMenu(false);\n };\n const isHlsStream = src?.toLowerCase().includes(\".m3u8\") || src?.toLowerCase().includes(\"/hls/\");\n const isLiveUiMode = isLiveStream === true;\n const shouldShowEnhancedControls = showCustomControls && (isHlsStream ? !isLiveUiMode : true);\n const criticalPropsKey = (0, import_react.useMemo)(() => {\n return CRITICAL_PROPS.map((prop) => `${prop}:${props[prop]}`).join(\"|\");\n }, [\n src,\n allowNativeHls,\n isLiveStream,\n licenseKey,\n isVmap,\n vmapUrl,\n lowLatencyMode,\n driftToleranceMs\n ]);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\") return;\n const el = videoRef.current;\n if (!el || !src) return;\n if (!licenseKey) {\n setShowLicenseWarning(true);\n setIsLoading(false);\n console.warn(\n \"StormcloudVideoPlayer: License key is required but not provided. Please set the licenseKey prop to use the player.\"\n );\n return;\n }\n setShowLicenseWarning(false);\n if (debugAdTiming) {\n console.log(\"[StormcloudUI] Initializing player, isLoading=true\");\n }\n if (playerRef.current) {\n try {\n playerRef.current.destroy();\n } catch {\n }\n playerRef.current = null;\n }\n const cfg = {\n src,\n videoElement: el\n };\n if (autoplay !== void 0) cfg.autoplay = autoplay;\n if (muted !== void 0) cfg.muted = muted;\n if (lowLatencyMode !== void 0) cfg.lowLatencyMode = lowLatencyMode;\n if (allowNativeHls !== void 0) cfg.allowNativeHls = allowNativeHls;\n if (isLiveStream !== void 0) cfg.isLiveStream = isLiveStream;\n if (driftToleranceMs !== void 0)\n cfg.driftToleranceMs = driftToleranceMs;\n if (immediateManifestAds !== void 0)\n cfg.immediateManifestAds = immediateManifestAds;\n if (debugAdTiming !== void 0) cfg.debugAdTiming = debugAdTiming;\n if (showCustomControls !== void 0)\n cfg.showCustomControls = showCustomControls;\n if (onVolumeToggle !== void 0) cfg.onVolumeToggle = onVolumeToggle;\n if (onFullscreenToggle !== void 0)\n cfg.onFullscreenToggle = onFullscreenToggle;\n if (onControlClick !== void 0) cfg.onControlClick = onControlClick;\n if (licenseKey !== void 0) cfg.licenseKey = licenseKey;\n if (vastTagUrl !== void 0) cfg.vastTagUrl = vastTagUrl;\n if (isVmap !== void 0) cfg.isVmap = isVmap;\n if (vmapUrl !== void 0) cfg.vmapUrl = vmapUrl;\n if (minSegmentsBeforePlay !== void 0)\n cfg.minSegmentsBeforePlay = minSegmentsBeforePlay;\n if (ctvAdRequest !== void 0) cfg.ctvAdRequest = ctvAdRequest;\n if (programTitle !== void 0) cfg.programTitle = programTitle;\n if (channelName !== void 0) cfg.channelName = channelName;\n if (contentNetwork !== void 0) cfg.contentNetwork = contentNetwork;\n if (minRemainingMsToStartAd !== void 0)\n cfg.minRemainingMsToStartAd = minRemainingMsToStartAd;\n if (minRemainingMsToRequestAd !== void 0)\n cfg.minRemainingMsToRequestAd = minRemainingMsToRequestAd;\n if (maxNoFillsPerBreak !== void 0)\n cfg.maxNoFillsPerBreak = maxNoFillsPerBreak;\n if (maxAdBreakExtensionMs !== void 0)\n cfg.maxAdBreakExtensionMs = maxAdBreakExtensionMs;\n const player = new StormcloudVideoPlayer(cfg);\n playerRef.current = player;\n player.load().then(() => {\n const showNative = player.shouldShowNativeControls();\n setShouldShowNativeControls(showNative);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Player loaded successfully, waiting for video ready\"\n );\n }\n onReady?.(player);\n }).catch((error) => {\n console.error(\n \"StormcloudVideoPlayer: Failed to load player:\",\n error\n );\n setIsLoading(false);\n onReady?.(player);\n });\n return () => {\n try {\n player.destroy();\n } catch {\n }\n playerRef.current = null;\n };\n }, [criticalPropsKey]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n try {\n if (autoplay !== void 0 && playerRef.current.videoElement) {\n playerRef.current.videoElement.autoplay = autoplay;\n }\n if (muted !== void 0 && !playerRef.current.isShowingAds()) {\n playerRef.current.setMuted(muted);\n }\n } catch (error) {\n console.warn(\"Failed to update player properties:\", error);\n }\n }, [autoplay, muted]);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current) return;\n const checkAdStatus = () => {\n if (playerRef.current) {\n const showAdsFromMethod = playerRef.current.isShowingAds();\n const showAdsFromAttribute = videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n const showAds = showAdsFromMethod || showAdsFromAttribute;\n const currentIndex = playerRef.current.getCurrentAdIndex();\n const totalAds = playerRef.current.getTotalAdsInBreak();\n const remainingMs = playerRef.current.getAdRemainingMs();\n const remainingSeconds = showAds ? Math.max(0, Math.ceil(remainingMs / 1e3)) : 0;\n setAdStatus((prev) => {\n if (prev.showAds !== showAds || prev.currentIndex !== currentIndex || prev.totalAds !== totalAds || prev.remainingSeconds !== remainingSeconds) {\n if (showAds && !prev.showAds) {\n setShowCenterPlay(false);\n }\n return { showAds, currentIndex, totalAds, remainingSeconds };\n }\n return prev;\n });\n }\n };\n const interval = setInterval(checkAdStatus, 50);\n return () => clearInterval(interval);\n }, []);\n (0, import_react.useEffect)(() => {\n if (typeof window === \"undefined\" || !playerRef.current) return;\n const handleResize = () => {\n if (playerRef.current && videoRef.current) {\n if (typeof playerRef.current.resize === \"function\") {\n playerRef.current.resize();\n }\n }\n setViewportWidth(window.innerWidth);\n setIsPortrait(window.innerHeight > window.innerWidth);\n };\n window.addEventListener(\"resize\", handleResize);\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n (0, import_react.useEffect)(() => {\n if (!playerRef.current || !videoRef.current) return;\n const updateStates = () => {\n if (playerRef.current && videoRef.current) {\n setIsMuted(playerRef.current.isMuted());\n setIsPlaying(!videoRef.current.paused);\n const currentTimeValue = videoRef.current.currentTime;\n setCurrentTime(isFinite(currentTimeValue) ? currentTimeValue : 0);\n const durationValue = videoRef.current.duration;\n setDuration(isFinite(durationValue) ? durationValue : 0);\n const volumeValue = playerRef.current.getVolume();\n setVolume2(\n isFinite(volumeValue) ? Math.max(0, Math.min(1, volumeValue)) : 1\n );\n const rateValue = videoRef.current.playbackRate;\n setPlaybackRate(\n isFinite(rateValue) && rateValue > 0 ? rateValue : 1\n );\n }\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n const interval = setInterval(updateStates, 200);\n const handleFullscreenChange = () => {\n setIsFullscreen(\n document.fullscreenElement === wrapperRef.current\n );\n };\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n return () => {\n clearInterval(interval);\n document.removeEventListener(\n \"fullscreenchange\",\n handleFullscreenChange\n );\n };\n }, []);\n (0, import_react.useEffect)(() => {\n if (!videoRef.current) return;\n const handleLoadedMetadata = () => {\n const video2 = videoRef.current;\n if (video2) {\n if (video2.videoWidth > 0 && video2.videoHeight > 0) {\n setPlayerAspectRatio(video2.videoWidth / video2.videoHeight);\n }\n void video2.offsetHeight;\n }\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadedmetadata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadedData = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadeddata, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleLoadStart = () => {\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: loadstart, readyState:\",\n videoRef.current?.readyState\n );\n }\n };\n const handleCanPlay = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplay, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleCanPlayThrough = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: canplaythrough, readyState:\",\n videoRef.current?.readyState,\n \"- clearing loading state, isLoading=false\"\n );\n }\n };\n const handleWaiting = () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n }\n bufferingTimeoutRef.current = window.setTimeout(() => {\n setIsBuffering(true);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video buffering detected (after 300ms delay), readyState:\",\n videoRef.current?.readyState,\n \"- showing spinner, isBuffering=true\"\n );\n }\n }, 300);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: waiting, readyState:\",\n videoRef.current?.readyState,\n \"- buffering delay started (300ms)\"\n );\n }\n };\n const handlePlaying = () => {\n setIsLoading(false);\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n setIsBuffering(false);\n setShowCenterPlay(false);\n if (debugAdTiming) {\n console.log(\n \"[StormcloudUI] Video event: playing, readyState:\",\n videoRef.current?.readyState,\n \"- playback started, isLoading=false, isBuffering=false\"\n );\n }\n };\n const handlePause = () => {\n const isAdActive = playerRef.current?.isShowingAds() || videoRef.current?.dataset?.stormcloudAdPlaying === \"true\";\n if (playerRef.current && !isAdActive) {\n setShowCenterPlay(true);\n } else {\n setShowCenterPlay(false);\n }\n };\n const handleEnded = () => {\n setShowCenterPlay(true);\n };\n const video = videoRef.current;\n video.addEventListener(\"loadstart\", handleLoadStart);\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.addEventListener(\"canplay\", handleCanPlay);\n video.addEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.addEventListener(\"waiting\", handleWaiting);\n video.addEventListener(\"playing\", handlePlaying);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n if (video.paused) {\n setShowCenterPlay(true);\n }\n return () => {\n if (bufferingTimeoutRef.current) {\n clearTimeout(bufferingTimeoutRef.current);\n bufferingTimeoutRef.current = null;\n }\n video.removeEventListener(\"loadstart\", handleLoadStart);\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n video.removeEventListener(\"canplay\", handleCanPlay);\n video.removeEventListener(\"canplaythrough\", handleCanPlayThrough);\n video.removeEventListener(\"waiting\", handleWaiting);\n video.removeEventListener(\"playing\", handlePlaying);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n };\n }, [debugAdTiming]);\n (0, import_react.useEffect)(() => {\n setPlayerAspectRatio(DEFAULT_PLAYER_ASPECT_RATIO);\n }, [src]);\n (0, import_react.useEffect)(() => {\n return () => {\n if (controlsTimerRef.current) {\n clearTimeout(controlsTimerRef.current);\n }\n };\n }, []);\n const progressPercent = duration > 0 ? currentTime / duration * 100 : 0;\n const VolumeIcon = isMuted2 || volume === 0 ? import_fa.FaVolumeMute : volume < 0.5 ? import_fa.FaVolumeDown : import_fa.FaVolumeUp;\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"style\", { children: `\n @keyframes sc-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n @keyframes sc-loading-glow {\n 0%, 100% { opacity: 0.85; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n @keyframes sc-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.6; }\n }\n @keyframes sc-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n }\n .sc-wrapper:fullscreen,\n .sc-wrapper:has(*:fullscreen) {\n border-radius: 0 !important;\n box-shadow: none !important;\n width: 100vw !important;\n height: 100vh !important;\n max-width: 100vw !important;\n max-height: 100vh !important;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n z-index: 999999 !important;\n background: #000 !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n .sc-ctrl-btn {\n background: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n padding: 8px;\n transition: background 0.15s ease, opacity 0.15s ease;\n opacity: 0.9;\n }\n .sc-ctrl-btn:hover {\n opacity: 1;\n background: rgba(255, 255, 255, 0.1);\n }\n .sc-ctrl-btn:active {\n opacity: 0.7;\n }\n .sc-controls-bar {\n transition: opacity 0.35s ease, transform 0.35s ease;\n }\n .sc-progress-track:hover .sc-progress-thumb {\n transform: translate(-50%, -50%) scale(1) !important;\n }\n .sc-loading-hidden .sc-loading-indicator {\n display: none !important;\n }\n ` }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n ref: wrapperRef,\n className: `sc-wrapper ${wrapperClassName || \"\"}`,\n onMouseMove: handleWrapperMouseMove,\n onMouseLeave: handleWrapperMouseLeave,\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: isFullscreen2 ? \"fixed\" : \"relative\",\n top: isFullscreen2 ? 0 : void 0,\n left: isFullscreen2 ? 0 : void 0,\n overflow: \"hidden\",\n width: isFullscreen2 ? \"100vw\" : \"100%\",\n height: isFullscreen2 ? \"100vh\" : \"auto\",\n minHeight: isFullscreen2 ? \"100vh\" : \"auto\",\n aspectRatio: isFullscreen2 ? void 0 : playerAspectRatio,\n maxWidth: isFullscreen2 ? \"100vw\" : \"100%\",\n maxHeight: isFullscreen2 ? \"100vh\" : \"none\",\n zIndex: isFullscreen2 ? 999999 : void 0,\n backgroundColor: \"#000\",\n borderRadius: isFullscreen2 ? 0 : void 0,\n boxShadow: isFullscreen2 ? \"none\" : void 0,\n ...wrapperStyle\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"video\",\n {\n ref: videoRef,\n className,\n style: {\n display: \"block\",\n width: \"100%\",\n height: \"100%\",\n maxWidth: \"100%\",\n maxHeight: isFullscreen2 ? \"100%\" : \"none\",\n objectFit: isFullscreen2 ? \"cover\" : \"contain\",\n backgroundColor: \"#000\",\n aspectRatio: isFullscreen2 ? \"unset\" : void 0,\n ...style\n },\n controls: shouldShowNativeControls && controls && !showCustomControls,\n playsInline,\n preload,\n poster,\n ...restVideoAttrs,\n children\n }\n ),\n (isLoading || isBuffering) && !hideLoadingIndicator && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-loading-indicator\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 20,\n width: `${Math.max(34, 38 * responsiveScale)}px`,\n height: `${Math.max(34, 38 * responsiveScale)}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n animation: \"sc-loading-glow 1.4s ease-in-out infinite\",\n filter: \"drop-shadow(0 6px 14px rgba(0, 0, 0, 0.55))\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n inset: 0,\n borderRadius: \"50%\",\n border: \"3px solid rgba(255, 255, 255, 0.25)\",\n borderTopColor: \"#ff0000\",\n borderRightColor: \"rgba(255, 255, 255, 0.85)\",\n animation: \"sc-spin 0.8s linear infinite\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"7px\",\n height: \"7px\",\n borderRadius: \"50%\",\n background: \"#ff0000\",\n boxShadow: \"0 0 10px rgba(255, 0, 0, 0.65)\"\n }\n }\n )\n ]\n }\n ),\n showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 25,\n background: \"rgba(220, 38, 38, 0.92)\",\n backdropFilter: \"blur(24px)\",\n color: \"white\",\n padding: \"28px 36px\",\n borderRadius: \"14px\",\n border: \"1px solid rgba(255, 255, 255, 0.15)\",\n boxShadow: \"0 24px 64px rgba(0, 0, 0, 0.5)\",\n textAlign: \"center\",\n maxWidth: \"400px\",\n margin: \"0 16px\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { fontSize: \"18px\", fontWeight: \"700\", marginBottom: \"10px\", letterSpacing: \"-0.02em\" }, children: \"License Key Required\" }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { fontSize: \"13px\", lineHeight: \"1.6\", color: \"rgba(255, 255, 255, 0.85)\" }, children: [\n \"Please provide a valid license key to use the Stormcloud Video Player.\",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"br\", {}),\n \"Contact your administrator for licensing information.\"\n ] })\n ]\n }\n ),\n adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${12 * responsiveScale}px`,\n left: `${12 * responsiveScale}px`,\n zIndex: 50,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n pointerEvents: \"none\",\n animation: \"sc-fade-in 0.3s ease\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n background: \"rgba(234, 179, 8, 0.95)\",\n color: \"#111\",\n padding: `${4 * responsiveScale}px ${12 * responsiveScale}px`,\n borderRadius: \"6px\",\n fontSize: `${11 * responsiveScale}px`,\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n boxShadow: \"0 2px 12px rgba(234, 179, 8, 0.35)\"\n },\n children: `Ad ${Math.max(1, adStatus.currentIndex)}`\n }\n )\n }\n ),\n showCenterPlay && !isLoading && !isBuffering && !showLicenseWarning && !adStatus.showAds && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: handleCenterPlayClick,\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 15,\n cursor: \"pointer\",\n background: \"rgba(0, 0, 0, 0.55)\",\n backdropFilter: \"blur(8px)\",\n borderRadius: \"50%\",\n width: `${92 * responsiveScale}px`,\n height: `${92 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"background 0.2s ease, transform 0.2s ease\",\n animation: \"sc-fade-in 0.2s ease\"\n },\n onMouseEnter: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.72)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1.06)\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.background = \"rgba(0, 0, 0, 0.55)\";\n e.currentTarget.style.transform = \"translate(-50%, -50%) scale(1)\";\n },\n title: \"Play\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n import_fa.FaPlay,\n {\n size: Math.max(24, 32 * responsiveScale),\n color: \"white\",\n style: { marginLeft: \"4px\" }\n }\n )\n }\n ),\n shouldShowEnhancedControls && !showLicenseWarning ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: 0,\n left: 0,\n right: 0,\n background: \"linear-gradient(0deg, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0.35) 60%, transparent 100%)\",\n padding: `${20 * responsiveScale}px ${12 * responsiveScale}px ${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible || adStatus.showAds ? 1 : 0,\n transform: controlsVisible || adStatus.showAds ? \"translateY(0)\" : \"translateY(6px)\",\n pointerEvents: controlsVisible || adStatus.showAds ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-progress-track\",\n style: {\n width: \"100%\",\n height: \"3px\",\n background: \"rgba(255, 255, 255, 0.2)\",\n borderRadius: \"1.5px\",\n marginBottom: `${8 * responsiveScale}px`,\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"height 0.1s ease\"\n },\n onClick: handleTimelineSeek,\n onMouseEnter: (e) => {\n e.currentTarget.style.height = \"5px\";\n },\n onMouseLeave: (e) => {\n e.currentTarget.style.height = \"3px\";\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"1.5px\",\n width: `${progressPercent}%`,\n transition: \"width 0.15s linear\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n className: \"sc-progress-thumb\",\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${progressPercent}%`,\n transform: \"translate(-50%, -50%) scale(0)\",\n width: \"13px\",\n height: \"13px\",\n background: adStatus.showAds ? \"#f5c518\" : \"#ff0000\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 4px rgba(0, 0, 0, 0.3)\",\n transition: \"transform 0.1s ease, left 0.15s linear\"\n }\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n color: \"white\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: handlePlayPause,\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isPlaying ? \"Pause\" : \"Play\",\n children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPause, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_fa.FaPlay, { size: Math.max(14, 18 * responsiveScale), style: { marginLeft: \"2px\" } })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n paddingRight: `${6 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${8 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"Roboto, 'Segoe UI', Arial, sans-serif\",\n color: \"rgba(255, 255, 255, 0.9)\",\n display: viewportWidth < 480 ? \"none\" : \"block\",\n fontVariantNumeric: \"tabular-nums\",\n userSelect: \"none\",\n marginLeft: `${4 * responsiveScale}px`\n },\n children: [\n formatTime(currentTime),\n \" \",\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"span\", { style: { color: \"rgba(255,255,255,0.5)\" }, children: \"/\" }),\n \" \",\n formatTime(duration)\n ]\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n gap: `${8 * responsiveScale}px`\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\"div\", { style: { position: \"relative\", display: viewportWidth < 600 ? \"none\" : \"block\" }, children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n setShowSpeedMenu(!showSpeedMenu);\n resetControlsTimer();\n },\n style: {\n padding: `${6 * responsiveScale}px ${10 * responsiveScale}px`,\n borderRadius: `${6 * responsiveScale}px`,\n fontSize: `${13 * responsiveScale}px`,\n fontFamily: \"'SF Mono', 'Cascadia Code', monospace\",\n fontWeight: \"600\",\n minHeight: `${32 * responsiveScale}px`\n },\n title: \"Playback Speed\",\n children: [\n playbackRate,\n \"x\"\n ]\n }\n ),\n showSpeedMenu && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n bottom: \"100%\",\n right: 0,\n marginBottom: \"8px\",\n background: \"rgba(0, 0, 0, 0.8)\",\n backdropFilter: \"blur(24px)\",\n WebkitBackdropFilter: \"blur(24px)\",\n borderRadius: \"10px\",\n border: \"1px solid rgba(255, 255, 255, 0.1)\",\n overflow: \"hidden\",\n minWidth: \"80px\",\n boxShadow: \"0 12px 40px rgba(0, 0, 0, 0.5)\",\n animation: \"sc-fade-in 0.15s ease\"\n },\n children: [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2].map((speed) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"button\",\n {\n onClick: () => handlePlaybackRateChange(speed),\n style: {\n display: \"block\",\n width: \"100%\",\n padding: `${8 * responsiveScale}px ${14 * responsiveScale}px`,\n background: playbackRate === speed ? \"rgba(255, 255, 255, 0.12)\" : \"transparent\",\n border: \"none\",\n color: playbackRate === speed ? \"#fff\" : \"rgba(255, 255, 255, 0.7)\",\n cursor: \"pointer\",\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Mono', monospace\",\n fontWeight: playbackRate === speed ? \"700\" : \"500\",\n textAlign: \"center\",\n transition: \"background 0.15s ease, color 0.15s ease\"\n },\n onMouseEnter: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"rgba(255, 255, 255, 0.08)\";\n e.target.style.color = \"#fff\";\n }\n },\n onMouseLeave: (e) => {\n if (playbackRate !== speed) {\n e.target.style.background = \"transparent\";\n e.target.style.color = \"rgba(255, 255, 255, 0.7)\";\n }\n },\n children: [\n speed,\n \"x\"\n ]\n },\n speed\n ))\n }\n )\n ] }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ]\n }\n )\n ]\n }\n ) : showCustomControls && !showLicenseWarning && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: `${10 * responsiveScale}px`,\n left: `${10 * responsiveScale}px`,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transition: \"opacity 0.35s ease\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: \"8px\",\n height: \"8px\",\n borderRadius: \"50%\",\n background: \"#ff3b30\",\n animation: \"sc-pulse 1.5s ease-in-out infinite\",\n flexShrink: 0\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"span\",\n {\n style: {\n fontSize: `${12 * responsiveScale}px`,\n fontFamily: \"'SF Pro Display', 'Segoe UI', Arial, sans-serif\",\n fontWeight: 700,\n letterSpacing: \"0.08em\",\n color: \"#fff\",\n textShadow: \"0 1px 3px rgba(0,0,0,0.6)\",\n userSelect: \"none\"\n },\n children: \"LIVE\"\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n className: \"sc-controls-bar\",\n style: {\n position: \"absolute\",\n bottom: `${10 * responsiveScale}px`,\n right: `${10 * responsiveScale}px`,\n display: \"flex\",\n flexDirection: isPortrait ? \"column\" : \"row\",\n alignItems: isPortrait ? \"flex-end\" : \"center\",\n gap: `${8 * responsiveScale}px`,\n zIndex: 10,\n opacity: controlsVisible ? 1 : 0,\n transform: controlsVisible ? \"translateY(0)\" : \"translateY(4px)\",\n pointerEvents: controlsVisible ? \"auto\" : \"none\"\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n display: \"flex\",\n alignItems: \"center\",\n background: \"rgba(0, 0, 0, 0.6)\",\n borderRadius: `${18 * responsiveScale}px`,\n padding: \"2px\",\n paddingRight: `${8 * responsiveScale}px`\n },\n onMouseEnter: () => setShowVolumeSlider(true),\n onMouseLeave: () => setShowVolumeSlider(false),\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (playerRef.current) playerRef.current.toggleMute();\n onVolumeToggle?.();\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`\n },\n title: isMuted2 ? \"Unmute\" : \"Mute\",\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(VolumeIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n width: showVolumeSlider ? `${68 * responsiveScale}px` : \"0px\",\n overflow: \"hidden\",\n transition: \"width 0.2s cubic-bezier(0.4, 0, 0.2, 1)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: showVolumeSlider ? `${3 * responsiveScale}px` : \"0\",\n paddingRight: showVolumeSlider ? `${10 * responsiveScale}px` : \"0\"\n },\n children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(\n \"div\",\n {\n style: {\n position: \"relative\",\n width: `${56 * responsiveScale}px`,\n height: \"3px\",\n cursor: \"pointer\",\n borderRadius: \"1.5px\"\n },\n onMouseDown: (e) => {\n e.preventDefault();\n const el = e.currentTarget;\n const move = (ev) => {\n const r2 = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (ev.clientX - r2.left) / r2.width)));\n };\n const up = () => {\n document.removeEventListener(\"mousemove\", move);\n document.removeEventListener(\"mouseup\", up);\n };\n document.addEventListener(\"mousemove\", move);\n document.addEventListener(\"mouseup\", up);\n const r = el.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n onClick: (e) => {\n e.stopPropagation();\n const r = e.currentTarget.getBoundingClientRect();\n handleVolumeChange(Math.max(0, Math.min(1, (e.clientX - r.left) / r.width)));\n },\n children: [\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\"div\", { style: { position: \"absolute\", inset: 0, background: \"rgba(255, 255, 255, 0.2)\", borderRadius: \"1.5px\" } }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n bottom: 0,\n width: `${(isMuted2 ? 0 : volume) * 100}%`,\n background: \"#fff\",\n borderRadius: \"1.5px\",\n transition: \"width 0.1s ease-out\"\n }\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n style: {\n position: \"absolute\",\n top: \"50%\",\n left: `${(isMuted2 ? 0 : volume) * 100}%`,\n transform: \"translate(-50%, -50%)\",\n width: \"12px\",\n height: \"12px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n boxShadow: \"0 0 3px rgba(0, 0, 0, 0.3)\",\n transition: \"left 0.1s ease-out\"\n }\n }\n )\n ]\n }\n )\n }\n )\n ]\n }\n ),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"button\",\n {\n className: \"sc-ctrl-btn\",\n onClick: () => {\n if (onFullscreenToggle) {\n onFullscreenToggle();\n } else if (wrapperRef.current) {\n if (!document.fullscreenElement) {\n wrapperRef.current.requestFullscreen().catch(() => {\n });\n } else {\n document.exitFullscreen().catch(() => {\n });\n }\n }\n resetControlsTimer();\n },\n style: {\n padding: `${8 * responsiveScale}px`,\n borderRadius: \"50%\",\n minWidth: `${36 * responsiveScale}px`,\n minHeight: `${36 * responsiveScale}px`,\n background: \"rgba(0, 0, 0, 0.6)\"\n },\n title: isFullscreen2 ? \"Exit Fullscreen\" : \"Enter Fullscreen\",\n children: isFullscreen2 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CompressIcon, { size: Math.max(14, 18 * responsiveScale) }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandIcon, { size: Math.max(14, 18 * responsiveScale) })\n }\n )\n ]\n }\n )\n ] }),\n onControlClick && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(\n \"div\",\n {\n onClick: onControlClick,\n style: {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 1,\n cursor: \"pointer\"\n }\n }\n )\n ]\n }\n )\n ] });\n },\n (prevProps, nextProps) => {\n for (const prop of CRITICAL_PROPS) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const uiProps = [\n \"autoplay\",\n \"muted\",\n \"controls\",\n \"showCustomControls\",\n \"className\",\n \"style\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"playsInline\",\n \"preload\",\n \"poster\",\n \"children\"\n ];\n for (const prop of uiProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n const callbackProps = [\n \"onReady\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n ];\n for (const prop of callbackProps) {\n if (prevProps[prop] !== nextProps[prop]) {\n return false;\n }\n }\n return true;\n }\n);\n\n// src/StormcloudPlayer.tsx\nvar import_react6 = __toESM(require(\"react\"), 1);\n\n// src/props.ts\nvar noop = () => {\n};\nvar defaultProps = {\n playing: false,\n loop: false,\n controls: true,\n volume: 1,\n muted: false,\n playbackRate: 1,\n width: \"100%\",\n height: \"auto\",\n style: {},\n progressInterval: 1e3,\n playsInline: false,\n autoplay: false,\n preload: \"metadata\",\n poster: \"\",\n className: \"\",\n wrapperClassName: \"\",\n wrapperStyle: {},\n allowNativeHls: false,\n lowLatencyMode: false,\n driftToleranceMs: 1e3,\n immediateManifestAds: true,\n debugAdTiming: false,\n showCustomControls: false,\n hideLoadingIndicator: false,\n licenseKey: \"\",\n isVmap: false,\n vmapUrl: \"\",\n adFailsafeTimeoutMs: 1e4,\n minSegmentsBeforePlay: 2,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onProgress: noop,\n onVolumeToggle: noop,\n onFullscreenToggle: noop,\n onControlClick: noop\n};\n\n// src/utils.ts\nvar import_react2 = require(\"react\");\nvar lazy = import_react2.lazy;\nvar omit = (object, keys) => {\n const result = { ...object };\n keys.forEach((key) => {\n delete result[key];\n });\n return result;\n};\nvar isMediaStream = (url) => {\n return typeof window !== \"undefined\" && window.MediaStream && url instanceof window.MediaStream;\n};\nvar supportsWebKitPresentationMode = () => {\n if (typeof window === \"undefined\") return false;\n const video = document.createElement(\"video\");\n return \"webkitSupportsPresentationMode\" in video;\n};\nvar randomString = () => {\n return Math.random().toString(36).substr(2, 9);\n};\nvar parseQuery = (url) => {\n const query = {};\n const queryString = url.split(\"?\")[1] || \"\";\n if (!queryString) return query;\n const manualParse = (qs) => {\n qs.split(\"&\").forEach((param) => {\n const [key, value] = param.split(\"=\");\n if (key) {\n try {\n query[decodeURIComponent(key)] = value ? decodeURIComponent(value.replace(/\\+/g, \" \")) : \"\";\n } catch (e) {\n query[key] = value || \"\";\n }\n }\n });\n };\n if (typeof URLSearchParams !== \"undefined\") {\n try {\n const params = new URLSearchParams(queryString);\n params.forEach((value, key) => {\n query[key] = value;\n });\n return query;\n } catch (e) {\n manualParse(queryString);\n }\n } else {\n manualParse(queryString);\n }\n return query;\n};\nvar merge = (target, ...sources) => {\n if (!sources.length) return target;\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n merge(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return merge(target, ...sources);\n};\nvar isObject = (item) => {\n return item && typeof item === \"object\" && !Array.isArray(item);\n};\nvar IS_BROWSER = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar IS_SAFARI = IS_BROWSER && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\nvar SUPPORTS_HLS = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/vnd.apple.mpegurl\"));\n};\nvar SUPPORTS_DASH = () => {\n if (!IS_BROWSER) return false;\n const video = document.createElement(\"video\");\n return Boolean(video.canPlayType(\"application/dash+xml\"));\n};\n\n// src/patterns.ts\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_PATHS = /\\/hls\\//i;\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|webm|ogg|avi|mov|wmv|flv|mkv)($|\\?)/i;\nvar AUDIO_EXTENSIONS = /\\.(mp3|wav|ogg|aac|wma|flac|m4a)($|\\?)/i;\nvar canPlay = {\n hls: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return HLS_EXTENSIONS.test(url) || HLS_PATHS.test(url);\n },\n dash: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return DASH_EXTENSIONS.test(url);\n },\n video: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url);\n },\n audio: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return AUDIO_EXTENSIONS.test(url);\n },\n file: (url) => {\n if (!url || typeof url !== \"string\") return false;\n return VIDEO_EXTENSIONS.test(url) || AUDIO_EXTENSIONS.test(url);\n }\n};\n\n// src/players/HlsPlayer.tsx\nvar import_react3 = require(\"react\");\nvar HlsPlayer = class extends import_react3.Component {\n constructor() {\n super(...arguments);\n this.player = null;\n this.mounted = false;\n this.load = async () => {\n if (!this.props.videoElement || !this.props.src) return;\n try {\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n const config = {\n src: this.props.src,\n videoElement: this.props.videoElement\n };\n if (this.props.autoplay !== void 0)\n config.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) config.muted = this.props.muted;\n if (this.props.lowLatencyMode !== void 0)\n config.lowLatencyMode = this.props.lowLatencyMode;\n if (this.props.allowNativeHls !== void 0)\n config.allowNativeHls = this.props.allowNativeHls;\n if (this.props.isLiveStream !== void 0)\n config.isLiveStream = this.props.isLiveStream;\n if (this.props.driftToleranceMs !== void 0)\n config.driftToleranceMs = this.props.driftToleranceMs;\n if (this.props.immediateManifestAds !== void 0)\n config.immediateManifestAds = this.props.immediateManifestAds;\n if (this.props.debugAdTiming !== void 0)\n config.debugAdTiming = this.props.debugAdTiming;\n if (this.props.showCustomControls !== void 0)\n config.showCustomControls = this.props.showCustomControls;\n if (this.props.onVolumeToggle !== void 0)\n config.onVolumeToggle = this.props.onVolumeToggle;\n if (this.props.onFullscreenToggle !== void 0)\n config.onFullscreenToggle = this.props.onFullscreenToggle;\n if (this.props.onControlClick !== void 0)\n config.onControlClick = this.props.onControlClick;\n if (this.props.licenseKey !== void 0)\n config.licenseKey = this.props.licenseKey;\n if (this.props.adFailsafeTimeoutMs !== void 0)\n config.adFailsafeTimeoutMs = this.props.adFailsafeTimeoutMs;\n if (this.props.minSegmentsBeforePlay !== void 0)\n config.minSegmentsBeforePlay = this.props.minSegmentsBeforePlay;\n if (this.props.ctvAdRequest !== void 0)\n config.ctvAdRequest = this.props.ctvAdRequest;\n this.player = new StormcloudVideoPlayer(config);\n this.props.onMount?.(this);\n await this.player.load();\n if (this.mounted) {\n this.props.onReady?.();\n }\n } catch (error) {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n }\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[HlsPlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n this.props.onPlay?.();\n } else {\n console.warn(\"[HlsPlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n this.props.onPause?.();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"player\") return this.player;\n if (key === \"video\") return this.props.videoElement;\n if (key === \"hls\" && this.player) return this.player.hls;\n return null;\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n if (this.player) {\n this.player.destroy();\n this.player = null;\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nHlsPlayer.displayName = \"HlsPlayer\";\nHlsPlayer.canPlay = canPlay.hls;\n\n// src/players/FilePlayer.tsx\nvar import_react4 = require(\"react\");\nvar FilePlayer = class extends import_react4.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.ready = false;\n this.load = () => {\n if (!this.props.videoElement || !this.props.src) return;\n const video = this.props.videoElement;\n const handleLoadedMetadata = () => {\n if (this.mounted && !this.ready) {\n this.ready = true;\n this.props.onReady?.();\n }\n };\n const handlePlay = () => {\n if (this.mounted) {\n this.props.onPlay?.();\n }\n };\n const handlePause = () => {\n if (this.mounted) {\n this.props.onPause?.();\n }\n };\n const handleEnded = () => {\n if (this.mounted) {\n this.props.onEnded?.();\n }\n };\n const handleError = (error) => {\n if (this.mounted) {\n this.props.onError?.(error);\n }\n };\n const handleLoadedData = () => {\n if (this.mounted) {\n this.props.onLoaded?.();\n }\n };\n video.addEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.addEventListener(\"play\", handlePlay);\n video.addEventListener(\"pause\", handlePause);\n video.addEventListener(\"ended\", handleEnded);\n video.addEventListener(\"error\", handleError);\n video.addEventListener(\"loadeddata\", handleLoadedData);\n video.src = this.props.src;\n if (this.props.autoplay !== void 0) video.autoplay = this.props.autoplay;\n if (this.props.muted !== void 0) video.muted = this.props.muted;\n if (this.props.loop !== void 0) video.loop = this.props.loop;\n if (this.props.controls !== void 0) video.controls = this.props.controls;\n if (this.props.playsInline !== void 0)\n video.playsInline = this.props.playsInline;\n if (this.props.preload !== void 0)\n video.preload = this.props.preload;\n if (this.props.poster !== void 0) video.poster = this.props.poster;\n this.props.onMount?.(this);\n return () => {\n video.removeEventListener(\"loadedmetadata\", handleLoadedMetadata);\n video.removeEventListener(\"play\", handlePlay);\n video.removeEventListener(\"pause\", handlePause);\n video.removeEventListener(\"ended\", handleEnded);\n video.removeEventListener(\"error\", handleError);\n video.removeEventListener(\"loadeddata\", handleLoadedData);\n };\n };\n this.play = () => {\n if (this.props.videoElement) {\n const video = this.props.videoElement;\n const hasValidSource = video.src || video.currentSrc && video.currentSrc !== \"\" || video.readyState >= 1;\n if (hasValidSource) {\n video.play()?.catch((error) => {\n console.error(\"[FilePlayer] Failed to play:\", error);\n this.props.onError?.(error);\n });\n } else {\n console.warn(\"[FilePlayer] Cannot play: video has no valid source\");\n }\n }\n };\n this.pause = () => {\n if (this.props.videoElement) {\n this.props.videoElement.pause();\n }\n };\n this.stop = () => {\n this.pause();\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = 0;\n }\n };\n this.seekTo = (seconds, keepPlaying) => {\n if (this.props.videoElement) {\n this.props.videoElement.currentTime = seconds;\n if (!keepPlaying) {\n this.pause();\n }\n }\n };\n this.setVolume = (volume) => {\n if (this.props.videoElement) {\n this.props.videoElement.volume = Math.max(0, Math.min(1, volume));\n }\n };\n this.mute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = true;\n }\n };\n this.unmute = () => {\n if (this.props.videoElement) {\n this.props.videoElement.muted = false;\n }\n };\n this.setPlaybackRate = (rate) => {\n if (this.props.videoElement && rate > 0) {\n this.props.videoElement.playbackRate = rate;\n }\n };\n this.setLoop = (loop) => {\n if (this.props.videoElement) {\n this.props.videoElement.loop = loop;\n }\n };\n this.getDuration = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.duration)) {\n return this.props.videoElement.duration;\n }\n return null;\n };\n this.getCurrentTime = () => {\n if (this.props.videoElement && isFinite(this.props.videoElement.currentTime)) {\n return this.props.videoElement.currentTime;\n }\n return null;\n };\n this.getSecondsLoaded = () => {\n if (this.props.videoElement && this.props.videoElement.buffered.length > 0) {\n return this.props.videoElement.buffered.end(\n this.props.videoElement.buffered.length - 1\n );\n }\n return null;\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (key === \"video\") return this.props.videoElement;\n return null;\n };\n this.enablePIP = async () => {\n if (this.props.videoElement && \"requestPictureInPicture\" in this.props.videoElement) {\n try {\n await this.props.videoElement.requestPictureInPicture();\n } catch (error) {\n console.warn(\"Picture-in-Picture failed:\", error);\n }\n }\n };\n this.disablePIP = async () => {\n if (document.pictureInPictureElement) {\n try {\n await document.exitPictureInPicture();\n } catch (error) {\n console.warn(\"Exit Picture-in-Picture failed:\", error);\n }\n }\n };\n }\n componentDidMount() {\n this.mounted = true;\n this.load();\n }\n componentWillUnmount() {\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (prevProps.src !== this.props.src) {\n this.load();\n }\n }\n render() {\n return null;\n }\n};\nFilePlayer.displayName = \"FilePlayer\";\nFilePlayer.canPlay = canPlay.file;\n\n// src/players/index.ts\nvar players = [\n {\n key: \"hls\",\n name: \"HLS Player\",\n canPlay: canPlay.hls,\n lazyPlayer: lazy(() => Promise.resolve({ default: HlsPlayer }))\n },\n {\n key: \"file\",\n name: \"File Player\",\n canPlay: canPlay.file,\n canEnablePIP: (url) => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || typeof document.webkitSupportsPresentationMode === \"function\");\n },\n lazyPlayer: lazy(() => Promise.resolve({ default: FilePlayer }))\n }\n];\nvar players_default = players;\n\n// src/Player.tsx\nvar import_react5 = __toESM(require(\"react\"), 1);\nvar SEEK_ON_PLAY_EXPIRY = 5e3;\nvar Player = class extends import_react5.Component {\n constructor() {\n super(...arguments);\n this.mounted = false;\n this.isReady = false;\n this.isPlaying = false;\n this.isLoading = true;\n this.loadOnReady = null;\n this.startOnPlay = true;\n this.seekOnPlay = null;\n this.onDurationCalled = false;\n this.handlePlayerMount = (player) => {\n if (this.player) {\n this.progress();\n return;\n }\n this.player = player;\n this.player.load(this.props.src);\n this.progress();\n };\n this.getInternalPlayer = (key) => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.progress = () => {\n if (this.props.src && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0;\n const loadedSeconds = this.getSecondsLoaded();\n const duration = this.getDuration();\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration,\n loaded: 0,\n loadedSeconds: 0\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress?.(progress);\n }\n this.prevPlayed = progress.playedSeconds;\n this.prevLoaded = progress.loadedSeconds;\n }\n }\n this.progressTimeout = window.setTimeout(\n this.progress,\n this.props.progressInterval || 1e3\n );\n };\n this.handleReady = () => {\n if (!this.mounted) return;\n this.isReady = true;\n this.isLoading = false;\n const { onReady, playing, volume, muted } = this.props;\n onReady();\n if (!muted && volume !== null) {\n this.player.setVolume(volume);\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true);\n this.loadOnReady = null;\n } else if (playing) {\n this.player.play();\n }\n this.handleDurationCheck();\n };\n this.handlePlay = () => {\n this.isPlaying = true;\n this.isLoading = false;\n const { onStart, onPlay, playbackRate } = this.props;\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate);\n }\n onStart?.();\n this.startOnPlay = false;\n }\n onPlay?.();\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay);\n this.seekOnPlay = null;\n }\n this.handleDurationCheck();\n };\n this.handlePause = (e) => {\n this.isPlaying = false;\n if (!this.isLoading) {\n this.props.onPause?.(e);\n }\n };\n this.handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props;\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0);\n }\n if (!loop) {\n this.isPlaying = false;\n onEnded?.();\n }\n };\n this.handleError = (...args) => {\n this.isLoading = false;\n this.props.onError?.(args[0], args[1], args[2], args[3]);\n };\n this.handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout);\n const duration = this.getDuration();\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration?.(duration);\n this.onDurationCalled = true;\n }\n } else {\n this.durationCheckTimeout = window.setTimeout(\n this.handleDurationCheck,\n 100\n );\n }\n };\n this.handleLoaded = () => {\n this.isLoading = false;\n };\n }\n componentDidMount() {\n this.mounted = true;\n }\n componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n this.mounted = false;\n }\n componentDidUpdate(prevProps) {\n if (!this.player) return;\n const { src, playing, volume, muted, playbackRate, loop, activePlayer } = this.props;\n if (prevProps.src !== src) {\n if (this.isLoading && !activePlayer.forceLoad && !isMediaStream(src)) {\n console.warn(\n `StormcloudPlayer: the attempt to load ${src} is being deferred until the player has loaded`\n );\n this.loadOnReady = src || null;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(src, this.isReady);\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play();\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause();\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume);\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (volume !== null) {\n setTimeout(() => this.player.setVolume(volume));\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate);\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop);\n }\n }\n getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n seekTo(amount, type, keepPlaying) {\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(() => {\n this.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n }\n return;\n }\n const isFraction = !type ? amount > 0 && amount < 1 : type === \"fraction\";\n if (isFraction) {\n const duration = this.player.getDuration();\n if (!duration) {\n console.warn(\n \"StormcloudPlayer: could not seek using fraction \\u2013 duration not yet available\"\n );\n return;\n }\n this.player.seekTo(duration * amount, keepPlaying);\n return;\n }\n this.player.seekTo(amount, keepPlaying);\n }\n render() {\n const Player2 = this.props.activePlayer;\n if (!Player2) {\n return null;\n }\n return import_react5.default.createElement(Player2, {\n ...this.props,\n onMount: this.handlePlayerMount,\n onReady: this.handleReady,\n onPlay: this.handlePlay,\n onPause: this.handlePause,\n onEnded: this.handleEnded,\n onLoaded: this.handleLoaded,\n onError: this.handleError\n });\n }\n};\nPlayer.displayName = \"Player\";\nPlayer.defaultProps = defaultProps;\n\n// src/StormcloudPlayer.tsx\nvar IS_BROWSER2 = typeof window !== \"undefined\" && window.document;\nvar IS_GLOBAL2 = typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.document;\nvar UniversalSuspense = IS_BROWSER2 || IS_GLOBAL2 ? import_react6.Suspense : () => null;\nvar SUPPORTED_PROPS = [\n \"src\",\n \"playing\",\n \"loop\",\n \"controls\",\n \"volume\",\n \"muted\",\n \"playbackRate\",\n \"width\",\n \"height\",\n \"style\",\n \"progressInterval\",\n \"playsInline\",\n \"autoplay\",\n \"preload\",\n \"poster\",\n \"className\",\n \"wrapperClassName\",\n \"wrapperStyle\",\n \"allowNativeHls\",\n \"lowLatencyMode\",\n \"isLiveStream\",\n \"driftToleranceMs\",\n \"immediateManifestAds\",\n \"debugAdTiming\",\n \"showCustomControls\",\n \"licenseKey\",\n \"isVmap\",\n \"vmapUrl\",\n \"adFailsafeTimeoutMs\",\n \"minSegmentsBeforePlay\",\n \"ctvAdRequest\",\n \"onReady\",\n \"onStart\",\n \"onPlay\",\n \"onPause\",\n \"onBuffer\",\n \"onBufferEnd\",\n \"onEnded\",\n \"onError\",\n \"onDuration\",\n \"onSeek\",\n \"onProgress\",\n \"onVolumeToggle\",\n \"onFullscreenToggle\",\n \"onControlClick\"\n];\nvar customPlayers = [];\nvar createStormcloudPlayer = (playerList, fallback) => {\n var _a;\n return _a = class extends import_react6.Component {\n constructor() {\n super(...arguments);\n this.state = {\n showPreview: false\n };\n this.references = {\n wrapper: (wrapper) => {\n this.wrapper = wrapper;\n },\n player: (player) => {\n this.player = player;\n }\n };\n this.getActivePlayer = (src) => {\n if (!src) return null;\n for (const player of [...customPlayers, ...playerList]) {\n if (player.canPlay(src)) {\n return player;\n }\n }\n if (fallback) {\n return fallback;\n }\n return null;\n };\n this.getAttributes = (src) => {\n return omit(this.props, SUPPORTED_PROPS);\n };\n this.handleReady = () => {\n this.props.onReady?.(this);\n };\n this.seekTo = (fraction, type, keepPlaying) => {\n if (!this.player) return null;\n this.player.seekTo(fraction, type, keepPlaying);\n };\n this.getCurrentTime = () => {\n if (!this.player) return null;\n return this.player.getCurrentTime();\n };\n this.getSecondsLoaded = () => {\n if (!this.player) return null;\n return this.player.getSecondsLoaded();\n };\n this.getDuration = () => {\n if (!this.player) return null;\n return this.player.getDuration();\n };\n this.getInternalPlayer = (key = \"player\") => {\n if (!this.player) return null;\n return this.player.getInternalPlayer(key);\n };\n this.renderActivePlayer = (src) => {\n if (!src) return null;\n const activePlayer = this.getActivePlayer(src);\n if (!activePlayer) return null;\n return import_react6.default.createElement(Player, {\n ...this.props,\n key: activePlayer.key,\n ref: this.references.player,\n activePlayer: activePlayer.lazyPlayer || activePlayer,\n onReady: this.handleReady\n });\n };\n }\n render() {\n const {\n src,\n style,\n width,\n height,\n fallback: fallbackElement,\n wrapper: Wrapper\n } = this.props;\n const attributes = this.getAttributes(src);\n const wrapperRef = typeof Wrapper === \"string\" ? this.references.wrapper : void 0;\n return import_react6.default.createElement(\n Wrapper,\n {\n ref: wrapperRef,\n style: { ...style, width, height },\n ...attributes\n },\n import_react6.default.createElement(\n UniversalSuspense,\n { fallback: fallbackElement },\n this.renderActivePlayer(src)\n )\n );\n }\n }, _a.displayName = \"StormcloudPlayer\", _a.defaultProps = {\n ...defaultProps,\n fallback: null,\n wrapper: \"div\"\n }, _a.addCustomPlayer = (player) => {\n customPlayers.push(player);\n }, _a.removeCustomPlayers = () => {\n customPlayers.length = 0;\n }, _a.canPlay = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canPlay(src)) {\n return true;\n }\n }\n return false;\n }, _a.canEnablePIP = (src) => {\n for (const Player2 of [...customPlayers, ...playerList]) {\n if (Player2.canEnablePIP && Player2.canEnablePIP(src)) {\n return true;\n }\n }\n return false;\n }, _a;\n};\nvar StormcloudPlayer = createStormcloudPlayer(\n players_default,\n players_default[players_default.length - 1]\n);\nvar StormcloudPlayer_default = StormcloudPlayer;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n DEFAULT_FLOOR_LADDER_BOUNDS,\n DEFAULT_REQUEST_SAFETY_MS,\n DEFAULT_TRACKING_INGEST_CONFIG,\n DISABLED_FLOOR_LADDER_CONFIG,\n GAM_AD_OPPORTUNITY_DURATION_MS,\n IS_BROWSER,\n IS_GLOBAL,\n IS_IOS,\n IS_SAFARI,\n SUPPORTS_DASH,\n SUPPORTS_HLS,\n StormcloudPlayer,\n StormcloudVideoPlayer,\n StormcloudVideoPlayerComponent,\n applyTrackingIngestConfig,\n buildAnalyticsContext,\n canPlay,\n configureTrackingIngest,\n createHlsAdPlayer,\n createPalNonceManager,\n createStormcloudPlayer,\n detectBrowser,\n fixedFloorSelector,\n generateFloorLevels,\n getBrowserConfigOverrides,\n getBrowserID,\n getClientInfo,\n ingestPlayerTracking,\n initializePolyfills,\n isMediaStream,\n isTrackingIngestEnabled,\n lazy,\n logBrowserInfo,\n merge,\n omit,\n parseApiFloorLadder,\n parseQuery,\n players,\n randomString,\n requiresMediaPipelineResetAfterAds,\n resolveFloorLadderBounds,\n sendAdDetectTracking,\n sendAdImpressionTracking,\n sendAdLoadedTracking,\n sendHeartbeat,\n sendInitialTracking,\n supportsFeature,\n supportsModernJS,\n supportsWebKitPresentationMode,\n trackingIngestConfig,\n validateFloorCents,\n validateFloorLadderConfig\n});\n"]}