@vindral/web-sdk 4.1.1-11-g21fcefab → 4.1.1-12-g2ca2f288
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{Bhw251E0.js → CHpnKe5u.js} +3 -3
- package/core.js +1 -1
- package/legacy.es.js +1 -1
- package/legacy.umd.js +1 -1
- package/{BmpK-YbY.js → noFXEMTb.js} +1 -1
- package/{Czki8oPP.js → owj7riWL.js} +1 -1
- package/package.json +1 -1
- package/player.js +54 -49
|
@@ -8109,7 +8109,7 @@ class ad {
|
|
|
8109
8109
|
for (const h of i)
|
|
8110
8110
|
switch (h.type) {
|
|
8111
8111
|
case "audio": {
|
|
8112
|
-
const { OpusDecoderContext: d } = yield import("./
|
|
8112
|
+
const { OpusDecoderContext: d } = yield import("./noFXEMTb.js");
|
|
8113
8113
|
c.set(h.type, {
|
|
8114
8114
|
buffer: [],
|
|
8115
8115
|
decoderContext: yield d.create(48e3, 2),
|
|
@@ -8120,7 +8120,7 @@ class ad {
|
|
|
8120
8120
|
break;
|
|
8121
8121
|
}
|
|
8122
8122
|
case "video": {
|
|
8123
|
-
const { H264DecoderWorkerContext: d } = yield import("./
|
|
8123
|
+
const { H264DecoderWorkerContext: d } = yield import("./owj7riWL.js");
|
|
8124
8124
|
c.set(h.type, {
|
|
8125
8125
|
buffer: [],
|
|
8126
8126
|
decoderContext: yield d.create(o),
|
|
@@ -10989,7 +10989,7 @@ const Ge = class Ge extends bi {
|
|
|
10989
10989
|
const t = this.modules.canvasModule ? this.options.get("iosMediaElementEnabled") : void 0;
|
|
10990
10990
|
return v({
|
|
10991
10991
|
uptime: Date.now() - this.createdAt,
|
|
10992
|
-
version: "4.1.1-
|
|
10992
|
+
version: "4.1.1-12-g2ca2f288",
|
|
10993
10993
|
clientId: this.clientId,
|
|
10994
10994
|
sessionId: this.sessionId,
|
|
10995
10995
|
channelId: this.channelId,
|
package/core.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as C, c as I, e as _, f as O, C as D, D as T, I as a, N as A, V as s, g as r } from "./
|
|
1
|
+
import { b as C, c as I, e as _, f as O, C as D, D as T, I as a, N as A, V as s, g as r } from "./CHpnKe5u.js";
|
|
2
2
|
export {
|
|
3
3
|
C as AUTHENTICATION_EXPIRED_CODE,
|
|
4
4
|
I as AUTHENTICATION_FAILED_CODE,
|
package/legacy.es.js
CHANGED
|
@@ -11414,7 +11414,7 @@ const KA = class KA extends _A {
|
|
|
11414
11414
|
const e = this.modules.canvasModule ? this.options.get("iosMediaElementEnabled") : void 0;
|
|
11415
11415
|
return h({
|
|
11416
11416
|
uptime: Date.now() - this.createdAt,
|
|
11417
|
-
version: "4.1.1-
|
|
11417
|
+
version: "4.1.1-12-g2ca2f288",
|
|
11418
11418
|
clientId: this.clientId,
|
|
11419
11419
|
sessionId: this.sessionId,
|
|
11420
11420
|
channelId: this.channelId,
|
package/legacy.umd.js
CHANGED
|
@@ -47,7 +47,7 @@ void main() {
|
|
|
47
47
|
gl_Position = model * vec4(position, 0.0, 1.0);
|
|
48
48
|
}
|
|
49
49
|
`,zl={width:256,codedWidth:256,height:144,codedHeight:144},Pl={preserveDrawingBuffer:!1,alpha:!1,depth:!1,stencil:!1,antialias:!1,premultipliedAlpha:!1},lF=class lF extends $A{constructor(){super();i(this,"canvas",document.createElement("canvas"));i(this,"context",xl(this.canvas,Pl));i(this,"pixelShader",jQ(this.context,this.context.FRAGMENT_SHADER,Kl));i(this,"vertexShader",jQ(this.context,this.context.VERTEX_SHADER,Ol));i(this,"buffer",Xl(this.context,lF.SQUARE_VERTICES));i(this,"program",Ra(this.context,this.vertexShader,this.pixelShader));i(this,"textures",{y:Ot(this.context),u:Ot(this.context),v:Ot(this.context)});i(this,"textRenderer");i(this,"size",zl);i(this,"onContextLost",e=>{this.textRenderer=void 0;const t=new Error(e instanceof WebGLContextEvent?e.statusMessage:"webgl context lost");this.emit("context lost",CE(t)),e.preventDefault()});i(this,"onContextRestored",()=>{this.emit("context restored"),this.context=xl(this.canvas,Pl),this.pixelShader=jQ(this.context,this.context.FRAGMENT_SHADER,Kl),this.vertexShader=jQ(this.context,this.context.VERTEX_SHADER,Ol),this.buffer=Xl(this.context,lF.SQUARE_VERTICES),this.program=Ra(this.context,this.vertexShader,this.pixelShader),this.textures={y:Ot(this.context),u:Ot(this.context),v:Ot(this.context)},this.load()});i(this,"load",()=>{this.context.useProgram(this.program),this.setupPositionVertexAttributes(),this.setSize(zl),this.context.uniform1i(this.context.getUniformLocation(this.program,"y_texture"),0),this.context.uniform1i(this.context.getUniformLocation(this.program,"u_texture"),1),this.context.uniform1i(this.context.getUniformLocation(this.program,"v_texture"),2),this.setConversionMatrix(this.rec709())});i(this,"unload",()=>{var t;this.setSize({width:1,height:1,codedHeight:1,codedWidth:1}),[this.textures.y,this.textures.u,this.textures.v].forEach(B=>this.context.deleteTexture(B)),this.context.deleteShader(this.pixelShader),this.context.deleteShader(this.vertexShader),this.context.deleteProgram(this.program),this.context.deleteBuffer(this.buffer),this.canvas.removeEventListener("webglcontextlost",this.onContextLost),this.canvas.removeEventListener("webglcontextrestored",this.onContextRestored),(t=this.context.getExtension("WEBGL_lose_context"))==null||t.loseContext()});i(this,"resetSize",()=>{this.setSize({width:this.size.width/2,height:this.size.height/2,codedHeight:this.size.codedHeight/2,codedWidth:this.size.codedWidth/2})});i(this,"render",(e,t)=>{var B;this.context.useProgram(this.program),this.setSize({width:e.width,height:e.height,codedWidth:e.codedWidth,codedHeight:e.codedHeight}),this.setConversionMatrix(this.rec709()),this.setModelMatrix(this.size.width/this.size.codedWidth,this.size.height/this.size.codedHeight),this.context.activeTexture(this.context.TEXTURE0),this.updateTexture(this.textures.y,this.size.codedWidth,this.size.codedHeight,e.data[0]),this.context.activeTexture(this.context.TEXTURE1),this.updateTexture(this.textures.u,this.size.codedWidth/2,this.size.codedHeight/2,e.data[1]),this.context.activeTexture(this.context.TEXTURE2),this.updateTexture(this.textures.v,this.size.codedWidth/2,this.size.codedHeight/2,e.data[2]),this.context.drawArrays(this.context.TRIANGLE_STRIP,0,4),this.textRenderer&&this.textRenderer.render({width:Math.max(t.clientWidth,960)*window.devicePixelRatio,height:Math.max(t.clientHeight,540)*window.devicePixelRatio,padding:-parseInt((B=t.style.getPropertyValue("--vindral-control-bar-offset"))!=null?B:"0",10)})});i(this,"updateTexture",(e,t,B,F)=>{const s=this.context.LUMINANCE,a=this.context.UNSIGNED_BYTE;this.context.bindTexture(this.context.TEXTURE_2D,e),this.context.texImage2D(this.context.TEXTURE_2D,0,s,t,B,0,s,a,F)});i(this,"setupPositionVertexAttributes",()=>{const e=this.context.getAttribLocation(this.program,"position");this.context.enableVertexAttribArray(e),this.context.vertexAttribPointer(e,2,this.context.FLOAT,!1,0,0)});i(this,"setSize",e=>{Gt(e,this.size)||(this.size=e,this.canvas.setAttribute("width",e.width.toString()),this.canvas.setAttribute("height",e.height.toString()),this.context.viewport(0,0,e.width,e.height),this.setModelMatrix(e.width/e.codedWidth,e.height/e.codedHeight))});i(this,"setModelMatrix",(e,t)=>{const B=this.context.getUniformLocation(this.program,"model");this.context.uniformMatrix4fv(B,!1,this.transformMatrix(e,t))});i(this,"setConversionMatrix",e=>{const t=this.context.getUniformLocation(this.program,"conversion");this.context.uniformMatrix4fv(t,!1,e)});i(this,"transformMatrix",(e,t)=>[2/e,0,0,0,0,-2/t,0,0,0,0,2/1,0,-1,1,0,1]);i(this,"rec709",()=>[1.16438,0,1.79274,-.97295,1.16438,-.21325,-.53291,.30148,1.16438,2.1124,0,-1.1334,0,0,0,1]);i(this,"rec601",()=>[1.16438,0,1.59603,-.87079,1.16438,-.39176,-.81297,.52959,1.16438,2.01723,0,-1.08139,0,0,0,1]);this.canvas.addEventListener("webglcontextlost",this.onContextLost),this.canvas.addEventListener("webglcontextrestored",this.onContextRestored,!1),this.canvas.style.width="100%",this.canvas.style.position="relative"}getTextRenderer(){return this.textRenderer||(this.textRenderer=new QC(this.context)),this.textRenderer}};i(lF,"SQUARE_VERTICES",new Float32Array([0,0,0,1,1,0,1,1]));let ha=lF;const es=class es{constructor(A,e,t,B){i(this,"oldTimestampLimit",400);i(this,"pool");i(this,"logger");i(this,"videoRenderer",new ha);i(this,"renderQueue",[]);i(this,"clockSource");i(this,"isFirstFrame",!0);i(this,"animationFrameRequest");i(this,"renderedFrameCount",0);i(this,"rendererDroppedFrameCount",0);i(this,"renderTargetSize");i(this,"load",()=>{this.videoRenderer.load()});i(this,"unload",()=>(this.stopRender(),this.videoRenderer.unload(),Promise.resolve()));i(this,"suspend",()=>{this.renderQueue=[],this.stopRender()});i(this,"unsuspend",()=>{this.animationFrameRequest=requestAnimationFrame(this.render)});i(this,"element",()=>this.videoRenderer.canvas);i(this,"getStatistics",()=>({renderedFrameCount:this.renderedFrameCount,rendererDroppedFrameCount:this.rendererDroppedFrameCount,contextLostCount:0,contextRestoredCount:0}));i(this,"resetSize",()=>{this.videoRenderer.resetSize()});i(this,"setActiveCues",(A,e)=>{this.videoRenderer.getTextRenderer().setActiveCues(A,e)});i(this,"onDecodedFrame",A=>{if(A.type==="video")if(this.isFirstFrame)this.isFirstFrame=!1,requestAnimationFrame(()=>{this.renderSample(A)});else{const e=(this.clockSource.currentTime-this.oldTimestampLimit)/1e3;this.renderQueue=this.renderQueue.filter(t=>{const B=t.timestamp/t.timescale,F=A.timestamp/A.timescale,n=B>e&&B<=F;return n||this.pool.reclaim(t.buffer),n}),this.renderQueue.push(A)}});i(this,"render",()=>{const A=this.clockSource.currentTime;let e=this.renderQueue[0],t,B=0;for(;e&&e.timestamp/e.timescale*1e3<=A;)e=this.renderQueue.shift(),e&&(B++,t&&this.pool.reclaim(t.buffer),t=e),e=this.renderQueue[0];t&&this.renderSample(t),this.rendererDroppedFrameCount+=Math.max(B-1,0),this.animationFrameRequest=requestAnimationFrame(this.render)});i(this,"renderSample",A=>{this.renderedFrameCount++,this.videoRenderer.render(A,this.renderTargetSize),this.pool.reclaim(A.buffer)});i(this,"stopRender",()=>{this.animationFrameRequest&&cancelAnimationFrame(this.animationFrameRequest)});this.logger=A,this.clockSource=e,this.pool=t,this.renderTargetSize=B||this.videoRenderer.canvas}};i(es,"create",(A,e,t,B)=>new es(A,e,t,B));let an=es;const ts=class ts{constructor(A,e,t,B,F){i(this,"logger");i(this,"emitter");i(this,"audioPlayer");i(this,"videoPlayer");i(this,"pool");i(this,"unmuter",new $c);i(this,"_isPaused",!1);i(this,"isDisconnected",!1);i(this,"timers",new pA);i(this,"textTracks",new Yl);i(this,"playbackRate");i(this,"reset",()=>{});i(this,"load",()=>{this.audioPlayer.useDefaultDestination(),this.emitter.on("decoded frame",this.onDecodedFrame),this.emitter.on("flush buffers",this.flushBuffers),this.videoPlayer.load(),this.timers.setInterval(()=>{if(!this.textTracks.language)return;const A=this.textTracks.getActiveCues(this.currentTime/1e3);this.videoPlayer.setActiveCues(A,{width:this.videoPlayer.element().clientWidth,height:this.videoPlayer.element().clientHeight})},100)});i(this,"unload",()=>{this.emitter.off("decoded frame",this.onDecodedFrame),this.emitter.off("flush buffers",this.flushBuffers),this.audioPlayer.unload(),this.videoPlayer.unload(),this.timers.unload()});i(this,"suspend",()=>{this.videoPlayer.suspend(),this.audioPlayer.suspend()});i(this,"unsuspend",()=>{this.videoPlayer.unsuspend(),this.audioPlayer.unsuspend()});i(this,"element",()=>this.videoPlayer.element());i(this,"getStatistics",()=>this.videoPlayer.getStatistics());i(this,"flushBuffers",()=>{this.audioPlayer.flushBuffer()});i(this,"activateAudioPlayer",()=>(this.isDisconnected&&(this.isDisconnected=!1,this.audioPlayer.useDefaultDestination()),this._isPaused=!1,this.unmuter.unmute(),this.audioPlayer.play()));i(this,"onDecodedFrame",A=>{try{this.audioPlayer.onDecodedFrame(A)}catch(e){e instanceof Error&&this.emitter.emit("error",xo(!1,e))}this.videoPlayer.onDecodedFrame(A)});this.logger=e,this.emitter=A,this.pool=t,this.audioPlayer=sn.create(this.logger.createContext("AudioPlayerModule"),B,{muted:F,reInitWhenStuck:!0}),this.audioPlayer.on("stuck",()=>{this.isDisconnected=!0}),this.audioPlayer.on("state change",()=>{this.emitter.emit("volume state",{volume:this.volume,isMuted:this.muted})}),this.videoPlayer=an.create(this.logger.createContext("VideoPlayerModule"),this.audioPlayer,this.pool)}get volume(){return this.audioPlayer.volume}set volume(A){this.audioPlayer.volume=A}get muted(){return this.audioPlayer.muted}set muted(A){const e=this.muted;this.audioPlayer.muted=A,!A&&e&&this.activateAudioPlayer().catch(V)}get currentTime(){return this.audioPlayer.currentTime}set currentTime(A){this.audioPlayer.currentTime=A}get isActivated(){return this.audioPlayer.isActivated}set isActivated(A){this.audioPlayer.isActivated=A}get seekTime(){return this.audioPlayer.seekTime}get isPaused(){return this._isPaused}get isSeeking(){return this.audioPlayer.isSeeking}get audioNode(){return this.audioPlayer.audioNode}play(){this.activateAudioPlayer().then(()=>{this.emitter.emit("media element state","playing")}).catch(()=>{this.emitter.emit("needs user input",{forAudio:!0,forVideo:!1})})}pause(){this._isPaused=!0,this.audioPlayer.pause(),this.emitter.emit("media element state","paused")}};i(ts,"create",(A,e,t,B,F)=>new ts(A,e,t,B,F));let Sa=ts;const Qs=class Qs{constructor(A,e,t,B,{muted:F,type:n,poster:s}){i(this,"logger");i(this,"emitter");i(this,"mediaElement");i(this,"audioPlayer");i(this,"videoPlayer");i(this,"pool");i(this,"isDisconnected",!0);i(this,"_userProvidedMuted",!1);i(this,"timers",new pA);i(this,"volumeState");i(this,"textTracks",new Yl);i(this,"reset",()=>{});i(this,"load",()=>{this.mediaElement.load(),this.emitter.on("decoded frame",this.onDecodedFrame),this.emitter.on("flush buffers",this.flushBuffers),this.emitter.on("ios-hack: reset size",this.resetCanvasSize),this.emitter.on("enter picture in picture",this.onEnterIOSHack),this.emitter.on("exit picture in picture",this.onExitIOSHack),this.element().element.addEventListener("webkitendfullscreen",this.onExitIOSHack),this.element().element.addEventListener("webkitbeginfullscreen",this.onEnterIOSHack),this.videoPlayer.load(),this.timers.setInterval(()=>{if(!this.textTracks.language)return;const A=this.textTracks.getActiveCues(this.currentTime/1e3);this.videoPlayer.setActiveCues(A,{width:this.mediaElement.element.clientWidth,height:this.mediaElement.element.clientHeight})},100)});i(this,"unload",()=>{this.emitter.off("decoded frame",this.onDecodedFrame),this.emitter.off("flush buffers",this.flushBuffers),this.emitter.off("ios-hack: reset size",this.resetCanvasSize),this.emitter.off("enter picture in picture",this.onEnterIOSHack),this.emitter.off("exit picture in picture",this.onExitIOSHack),this.element().element.removeEventListener("webkitendfullscreen",this.onExitIOSHack),this.element().element.removeEventListener("webkitbeginfullscreen",this.onEnterIOSHack),this.mediaElement.unload(),this.timers.unload(),this.audioPlayer.unload(),this.videoPlayer.unload()});i(this,"suspend",()=>{this.videoPlayer.suspend(),this.audioPlayer.suspend()});i(this,"unsuspend",()=>{this.videoPlayer.unsuspend(),this.audioPlayer.unsuspend()});i(this,"element",()=>this.mediaElement);i(this,"getStatistics",()=>this.videoPlayer.getStatistics());i(this,"activateAudioPlayer",()=>(this.isDisconnected&&this.connectStreams(),this.audioPlayer.play()));i(this,"flushBuffers",()=>{this.audioPlayer.flushBuffer()});i(this,"resetCanvasSize",()=>{this.videoPlayer.resetSize()});i(this,"onEnterIOSHack",()=>{this.mediaElement._iosHackEnterPiPMode()});i(this,"onExitIOSHack",()=>{this.mediaElement._iosHackExitPiPMode()});i(this,"onDecodedFrame",A=>{try{this.audioPlayer.onDecodedFrame(A)}catch(e){e instanceof Error&&this.emitter.emit("error",xo(!1,e))}this.videoPlayer.onDecodedFrame(A)});i(this,"connectStreams",()=>{const A=this.videoPlayer.element().captureStream(),e=this.audioPlayer.useMediaStreamDestination().stream,t=[];t.push(...A.getTracks(),...e.getTracks()),this.mediaElement.element.srcObject=new MediaStream(t),this.isDisconnected=!1});i(this,"updateVolumeState",()=>{const A={isMuted:this.muted,volume:this.volume};Gt(A,this.volumeState)||(this.volumeState=A,this.emitter.emit("volume state",this.volumeState))});this.logger=e,this.emitter=A,this.pool=t,this._userProvidedMuted=F,this.mediaElement=new Ys({poster:s,type:n,muted:F,autoplay:!1,logger:this.logger.createContext("MediaElement")}),this.mediaElement.on("volume state",a=>{this.updateVolumeState(),!a.isMuted&&!this.audioPlayer.isContextRunning&&this.activateAudioPlayer().catch(V),a.isMuted||(this._userProvidedMuted=!1)}),this.mediaElement.on("media element state",a=>{a==="paused"&&this.audioPlayer.flushBuffer(),this.emitter.emit("media element state",a)}),this.audioPlayer=sn.create(this.logger.createContext("AudioPlayerModule"),B,{muted:!1,reInitWhenStuck:!1}),this.audioPlayer.on("stuck",()=>{this.isDisconnected=!0}),this.audioPlayer.on("state change",a=>{a==="suspended"||a==="interrupted"?this.mediaElement.muted=!0:a==="running"&&(this.mediaElement.muted=this._userProvidedMuted||document.visibilityState==="hidden"),this.updateVolumeState()}),this.videoPlayer=an.create(this.logger.createContext("VideoPlayerModule"),this.audioPlayer,this.pool,this.mediaElement.element),this.volumeState={volume:this.volume,isMuted:this.muted}}get volume(){return this.mediaElement.volume}set volume(A){this.mediaElement.volume=A}get muted(){return this.mediaElement.muted||this.audioPlayer.muted}set muted(A){const e=this.muted;this._userProvidedMuted=A,this.mediaElement.muted=A,!A&&e&&this.activateAudioPlayer().catch(V)}get currentTime(){return this.audioPlayer.currentTime}set currentTime(A){this.audioPlayer.currentTime=A}get isActivated(){return this.mediaElement.isActivated}set isActivated(A){this.mediaElement.isActivated=A}get seekTime(){return this.mediaElement.seekTime}get isPaused(){return this.mediaElement.isPaused}get isSeeking(){return this.mediaElement.isSeeking}get audioNode(){return this.audioPlayer.audioNode}play(){const A=this._userProvidedMuted;return this.activateAudioPlayer().catch(()=>{A||this.emitter.emit("needs user input",{forAudio:!0,forVideo:!1})}),this.mediaElement.play()}pause(){this.mediaElement.pause()}};i(Qs,"create",(A,e,t,B,F)=>new Qs(A,e,t,B,F));let Ja=Qs;const iC=()=>Q=>jl(Q.buffered.start(0),Q.buffered.end(Q.buffered.length-1)),jl=(Q,A)=>e=>e.remove(Math.max(0,Q),Math.min(Number.POSITIVE_INFINITY,A)),ql=Q=>A=>A.appendBuffer(Q),BC=Q=>A=>A.changeType(Q),UC=Q=>A=>Q(A);class FC{constructor(A){i(this,"commandQueue",[]);i(this,"sourceBuffer");i(this,"currentInit");i(this,"handleQueue",()=>{var A;this.sourceBuffer.updating||(A=this.commandQueue.shift())==null||A.execute(this.sourceBuffer)});i(this,"appendBuffer",(A,e)=>new Promise((t,B)=>{if(e&&this.currentInit!==e){const n=new xQ(ql(e),t,B);this.commandQueue.push(n),this.currentInit=e}const F=new xQ(ql(A),t,B);this.commandQueue.push(F),this.handleQueue()}));i(this,"execute",A=>new Promise((e,t)=>{const B=new xQ(UC(A),e,t);this.commandQueue.push(B),this.handleQueue()}));i(this,"buffered",()=>this.sourceBuffer.buffered);i(this,"removeFromMediaSource",A=>{A.removeSourceBuffer(this.sourceBuffer)});i(this,"changeType",A=>new Promise((e,t)=>{const B=new xQ(BC(A),e,t);this.commandQueue.push(B),this.handleQueue()}));i(this,"removeBuffer",(A,e)=>new Promise((t,B)=>{const F=new xQ(jl(A,e),t,B);this.commandQueue.push(F),this.handleQueue()}));i(this,"flush",()=>new Promise((A,e)=>{const t=new xQ(iC,A,e);this.commandQueue.push(t),this.handleQueue()}));this.sourceBuffer=A,this.sourceBuffer.addEventListener("updateend",this.handleQueue)}}class _l extends $A{constructor(){super();i(this,"MediaSource",ae());i(this,"mediaSource",new this.MediaSource);i(this,"isOpen",()=>this.mediaSource.readyState==="open");i(this,"isClosed",()=>this.mediaSource.readyState==="closed");i(this,"isEnded",()=>this.mediaSource.readyState==="ended");i(this,"createObjectURL",()=>URL.createObjectURL(this.mediaSource));i(this,"attach",e=>{const t=e;if("srcObject"in t)try{t.srcObject=this.mediaSource}catch(B){if(B instanceof Error&&B.name!=="TypeError")throw B;t.src=this.createObjectURL()}else e.src=this.createObjectURL()});i(this,"detach",e=>{if(this.mediaSource&&this.mediaSource.readyState==="open")try{this.mediaSource.endOfStream()}catch(t){}e.srcObject&&(e.srcObject=null),e.src!==""&&(URL.revokeObjectURL(e.src),e.removeAttribute("src")),e.load()});i(this,"addSourceBuffer",e=>{const t=this.mediaSource.addSourceBuffer(e);return new FC(t)});i(this,"removeSourceBuffer",e=>{e.removeFromMediaSource(this.mediaSource)});i(this,"endOfStream",e=>{this.mediaSource.endOfStream(e)});i(this,"onSourceOpen",()=>{this.setDurationIfNeeded(),this.emit("source open")});i(this,"onSourceEnded",()=>this.emit("source ended"));i(this,"onSourceClosed",()=>this.emit("source close"));i(this,"setDurationIfNeeded",()=>{if(Number.isNaN(this.mediaSource.duration)&&this.mediaSource.readyState==="open"){for(let e=0;e<this.mediaSource.sourceBuffers.length;e++){const t=this.mediaSource.sourceBuffers[e];if(t!=null&&t.updating)return}this.mediaSource.duration=Number.POSITIVE_INFINITY}});this.mediaSource.addEventListener("sourceopen",this.onSourceOpen),this.mediaSource.addEventListener("sourceclose",this.onSourceClosed),this.mediaSource.addEventListener("sourceended",this.onSourceEnded)}}i(_l,"isTypeSupported",e=>{var t,B;return(B=(t=ae())==null?void 0:t.isTypeSupported(e))!=null?B:!1});class $l{constructor(){i(this,"initSegments",new Map);i(this,"set",(A,e,t)=>{var F;const B=(F=this.initSegments.get(A))!=null?F:new Map;B.set(e,t),this.initSegments.set(A,B)});i(this,"get",(A,e)=>{var t;return(t=this.initSegments.get(A))==null?void 0:t.get(e)})}}function nC(Q,{mediaSource:A,mimeType:e,codec:t}){return O(S({},Q),{state:"initialized",mimeType:e,codec:t,sourceBuffer:A.addSourceBuffer(e),isWorkingOnPendingSamples:!1,sequenceNumber:0,lastBufferCleanupTime:Date.now()})}function Ar({initSegments:Q,pendingSamples:A}){return{state:"uninitialized",initSegments:Q!=null?Q:new $l,sequenceNumber:0,isWorkingOnPendingSamples:!1,hasFirstSync:!!A,pendingSamples:A!=null?A:[],consecutiveQuotaExceededErrorCount:0,successfulAppendCalls:0}}const is=class is{constructor(A,e,t){i(this,"maxChunkSize",20);i(this,"minConsecutiveErrorsBeforeEmit",5);i(this,"maxSecondsInBuffer",60);i(this,"logger");i(this,"timers",pA.create());i(this,"emitter");i(this,"mediaElement");i(this,"mediaSource",new _l);i(this,"trackContexts",new Map);i(this,"autoRecoverFromMediaErrors",!0);i(this,"quotaErrorCount",0);i(this,"recoveredFromErrorCount",0);i(this,"sourceOpenStartTime",Date.now());i(this,"sourceOpenEndTime",Date.now());i(this,"pendingTracksToAddSourceBuffers");i(this,"hasAddedInitialPosterFrame",!0);i(this,"load",()=>{this.emitter.on("init segment",this.init),this.emitter.on("coded sample",this.onCodedSample),this.emitter.on("flush buffers",this.flushBuffers),this.emitter.on("fragment",this.onFragment)});i(this,"unload",()=>{this.logger.debug("Unloading module..."),this.emitter.off("init segment",this.init),this.emitter.off("coded sample",this.onCodedSample),this.emitter.off("flush buffers",this.flushBuffers),this.emitter.off("fragment",this.onFragment),this.mediaSource.off("source ended",this.onSourceEnded),this.mediaSource.off("source open",this.onSourceOpen),this.mediaSource.detach(this.mediaElement),this.trackContexts.forEach(A=>A.pendingSamples=[]),this.timers.unload(),this.logger.debug("Unloaded module")});i(this,"getStatistics",()=>{var e,t,B,F;const A={quotaErrorCount:this.quotaErrorCount,mediaSourceOpenTime:this.sourceOpenEndTime-this.sourceOpenStartTime,successfulAudioAppendsCalls:(e=this.trackContexts.get("audio"))==null?void 0:e.successfulAppendCalls,successfulVideoAppendCalls:(t=this.trackContexts.get("video"))==null?void 0:t.successfulAppendCalls};if(this.mediaElement instanceof HTMLVideoElement){const n=(F=(B=this.mediaElement).getVideoPlaybackQuality)==null?void 0:F.call(B);A.totalVideoFrames=n==null?void 0:n.totalVideoFrames,A.droppedVideoFrames=n==null?void 0:n.droppedVideoFrames}return A});i(this,"flushBuffers",()=>{this.trackContexts.forEach(A=>{A.pendingSamples=[],A.hasFirstSync=!1,A.state!=="uninitialized"&&this.mediaSource.isOpen()&&A.sourceBuffer.removeBuffer(0,Number.POSITIVE_INFINITY).catch(e=>{this.logger.error("Failed to remove buffer",e)})})});i(this,"setTrackContexts",(A=new Map)=>{this.logger.debug("setTrackContexts"),["audio","video"].forEach(t=>{var n,s,a,r;const B=(s=(n=A.get(t))==null?void 0:n.pendingSamples)!=null?s:[],F=(a=A.get(t))==null?void 0:a.initSegments;for(;B.length>0&&!((r=B[0])!=null&&r.isSync);)B.shift();this.trackContexts.set(t,Ar({pendingSamples:B,initSegments:F}))})});i(this,"setSourceBuffers",A=>d(this,null,function*(){if(this.mediaSource.isClosed()){this.pendingTracksToAddSourceBuffers=A;return}let e=!0;for(const t of A){const B=this.trackContexts.get(t.type);if(!B||B.state==="uninitialized"||B.mimeType!==t.mimeType){e=!1;break}}if(e){this.logger.debug("Already setup with the correct mime types");return}for(const t of A){let B=this.trackContexts.get(t.type);B||(B=Ar({pendingSamples:[],initSegments:new $l}),this.trackContexts.set(t.type,B)),B.state==="initialized"?t.mimeType!==B.mimeType&&(yield B.sourceBuffer.changeType(t.mimeType)):this.trackContexts.set(t.type,nC(B,{mimeType:t.mimeType,mediaSource:this.mediaSource,codec:t.codec}))}}));i(this,"getBuffer",A=>{const e=[];if(this.mediaSource.isClosed())return[];const t=this.trackContexts.get(A);if(!t||t.state==="uninitialized")return[];try{const B=t.sourceBuffer.buffered();if(!B)return[];for(let F=0;F<B.length;F++)e.push({start:B.start(F)*1e3,end:B.end(F)*1e3});return e}catch(B){return[]}});i(this,"init",({initSegment:A,mimeType:e})=>{this.logger.debug("Added init segment",{channel:A.channelId,renditionId:A.renditionId});const t=this.trackContexts.get(A.type);if(!t)throw kF(A.type,A.renditionId);t.state==="initialized"&&(t.mimeType=e);const B=QI(A.codec,A.data,A.timescale);B&&t.initSegments.set(A.channelId,A.renditionId,new Uint8Array(B))});i(this,"append",(A,e)=>d(this,null,function*(){var s;const t=A[0];if(!t)return;const B=this.trackContexts.get(t.type),F=B==null?void 0:B.initSegments.get(t.channelId,t.renditionId);if(this.mediaSource.isClosed())return;if(!F)throw lE(t.renditionId,t.channelId);if(!B)throw kF(t.type,t.renditionId);if(B.state==="uninitialized")throw rE(t.type,t.renditionId);if(e){const a=(t.timestamp+((s=t.compositionTimeOffset)!=null?s:0))/t.timescale;yield B.sourceBuffer.removeBuffer(a,Number.POSITIVE_INFINITY);const r=B.previousSample;if(r&&r.codec!==t.codec&&B.sourceBuffer.changeType)try{yield B.sourceBuffer.changeType(B.mimeType)}catch(E){}"fragmented"in t||(yield B.sourceBuffer.appendBuffer(F))}const n=Math.max(0,t.timestamp/t.timescale-this.maxSecondsInBuffer);n>0&&Date.now()-B.lastBufferCleanupTime>1e4&&(B.lastBufferCleanupTime=Date.now(),yield B.sourceBuffer.removeBuffer(0,n+10));try{let a=B.sequenceNumber;if("fragmented"in t)for(const r of A)"initData"in r&&(yield B.sourceBuffer.appendBuffer(r.data,r.initData));else{const r=sI(A,a++);yield B.sourceBuffer.appendBuffer(r)}B.sequenceNumber=a,B.consecutiveQuotaExceededErrorCount=0,B.successfulAppendCalls++}catch(a){throw a instanceof DOMException&&(a.code===DOMException.QUOTA_EXCEEDED_ERR?(this.quotaErrorCount++,B.consecutiveQuotaExceededErrorCount++,this.logger.error("quota exceeded error",{error:a}),B.pendingSamples.unshift(...A)):this.mediaElement.error&&B.pendingSamples.unshift(...A)),a}}));i(this,"onFragment",({fragment:A,mimeType:e,codec:t,channelId:B,renditionId:F})=>{const n=A.mediaType(),s=A.rawBytes(),a=A.header().rawBytes(),r=A.baseMediaDecodeTime(),E=A.timescale(),g=A.duration(),c=n==="video"?A.startsWithKeyframe():!0,J=A.compositionTimeOffset(0);if(n==="text"){this.logger.warn("Skipping unexpected text fragment");return}if(!t){this.logger.warn("Skipping fragment with no codec");return}const u=this.trackContexts.get(n);if(!u)throw kF(n);u.state==="initialized"&&e&&(u.mimeType=e,u.initSegments.set(B,F,a));const D={fragmented:!0,type:n,data:s,initData:a,timestamp:r,duration:g,timescale:E,channelId:B,renditionId:F,isSync:c,codec:t,fragment:A,compositionTimeOffset:J};this.onCodedSample(D)});i(this,"onCodedSample",A=>{if(A.duration===0)return;const e=this.trackContexts.get(A.type);if(!e)throw kF(A.type,A.renditionId);if(!(!e.hasFirstSync&&!A.isSync)){if(this.hasAddedInitialPosterFrame&&A.isSync&&A.type==="video"){this.hasAddedInitialPosterFrame=!1;const t=S({},A);"fragment"in t?(t.fragment=t.fragment.clone(),t.fragment.updateBaseMediaDecodeTime(0),t.data=t.fragment.rawBytes()):t.timestamp=0,e.pendingSamples.push(t)}e.hasFirstSync=!0,e.pendingSamples.push(A),e.state!=="uninitialized"&&(e.isWorkingOnPendingSamples||sC(e,this.append,this.maxChunkSize).catch(t=>{if(e.isWorkingOnPendingSamples=!1,t instanceof Error){if(this.logger.error("append failed",{message:t.message,name:t.name}),t instanceof DOMException&&t.code===DOMException.QUOTA_EXCEEDED_ERR){if(e.consecutiveQuotaExceededErrorCount>=this.minConsecutiveErrorsBeforeEmit){const B=Xo(!1,t,e.consecutiveQuotaExceededErrorCount,A.type);this.emitter.emit("error",B)}}else{const B=Xo(!1,t,e.consecutiveQuotaExceededErrorCount,A.type);this.emitter.emit("error",B)}this.mediaElement.error&&this.onSourceEnded()}}))}});i(this,"onSourceOpen",()=>{this.logger.debug("source opened"),this.sourceOpenEndTime=Date.now(),this.pendingTracksToAddSourceBuffers&&(this.setSourceBuffers(this.pendingTracksToAddSourceBuffers),this.pendingTracksToAddSourceBuffers=void 0)});i(this,"onSourceEnded",()=>{const{error:A}=this.mediaElement;if(A){const e=/AUDIO_RENDERER/.test(A.message)||!this.autoRecoverFromMediaErrors,t=oE(e,A);if(this.logger.error("MediaElement error",{error:t}),this.emitter.emit("error",t),!t.isFatal()){this.logger.info("Re-opening MediaSource"),this.emitter.emit("recovered from media error",{error:t,count:this.recoveredFromErrorCount}),this.recoveredFromErrorCount++;const B=!this.mediaElement.paused,F=[];this.trackContexts.forEach((n,s)=>{n.state==="initialized"&&F.push({type:s,mimeType:n.mimeType,codec:n.codec})}),this.sourceOpenStartTime=Date.now(),this.pendingTracksToAddSourceBuffers=F,this.mediaElement.src="",this.setTrackContexts(this.trackContexts),this.mediaSource.attach(this.mediaElement),B&&this.mediaElement.play().catch(V)}}this.logger.debug("source ended")});this.logger=A,this.mediaElement=t,this.emitter=e}};i(is,"create",(A,e,t)=>{const B=new is(A,e,t);return B.setTrackContexts(),B.mediaSource.on("source ended",B.onSourceEnded),B.mediaSource.on("source open",B.onSourceOpen),B.mediaSource.attach(t),B});let Va=is;const er=(Q,A)=>{var s;const e=Q.renditionId!==A.renditionId,t=Q.channelId!==A.channelId,B=((s=Q.timestamp)!=null?s:0)>A.timestamp,F=Q.type==="video"&&A.type==="video"&&"levelIdc"in Q&&"levelIdc"in A&&Q.levelIdc!==A.levelIdc;let n=!1;return Q.type==="video"&&A.type==="video"&&"width"in Q&&"width"in A&&(n=A.width!==Q.width||A.height!==Q.height),t||e||B||n||F},sC=(Q,A,e)=>d(this,null,function*(){for(Q.isWorkingOnPendingSamples=!0;Q.pendingSamples.length>0;){const t=[];let B=0;for(let s=0;s<Q.pendingSamples.length;s++){B=s;const a=Q.pendingSamples[s],r=Q.pendingSamples[s+1];if(a&&(t.push(a),r)){if(er(a,r))break;const E=(a.timestamp+a.duration)/a.timescale;if(r.timestamp/r.timescale-E>.1)break}if(s===e-1)break}const F=t[0];if(!F)break;const n=Q.previousSample?er(Q.previousSample,F):!0;yield A(t,n),Q.pendingSamples=Q.pendingSamples.slice(B+1),Q.previousSample=t[t.length-1]}Q.isWorkingOnPendingSamples=!1}),Bs=class Bs{constructor(A,e){i(this,"logger");i(this,"emitter");i(this,"element");i(this,"pictureInPictureWindow");i(this,"unload",()=>{this.emitter.off("add picture in picture listener",this.onEnablePictureInPicture)});i(this,"onEnablePictureInPicture",A=>{this.element=A.element,A.element.addEventListener("leavepictureinpicture",()=>{this.pictureInPictureWindow=void 0,this.logger.debug("Leave picture in picture"),this.emitter.emit("exit picture in picture")}),A.element.addEventListener("enterpictureinpicture",e=>{this.pictureInPictureWindow=e.pictureInPictureWindow,this.logger.debug("Enter picture in picture"),this.emitter.emit("enter picture in picture",this)}),A.element.autopictureinpicture=!0});i(this,"getPictureInPictureSize",()=>this.pictureInPictureWindow);i(this,"isPictureInPictureActive",()=>this.isWebkitPresentationModeActive()||this.isStandardPictureInPictureActive());i(this,"isPictureInPictureSupported",()=>this.isWebkitPresentationModeSupported()||this.isStandardPictureInPictureSupported());i(this,"requestPictureInPicture",()=>(this.emitter.emit("ios-hack: reset size"),this.isStandardPictureInPictureSupported()?this.requestStandardPictureInPicture():this.isWebkitPresentationModeSupported()?this.requestWebkitPresentationMode("picture-in-picture"):Promise.reject(new Error("Picture in picture is not supported"))));i(this,"exitPictureInPicture",()=>this.isStandardPictureInPictureSupported()?this.exitStandardPictureInPicture():this.isWebkitPresentationModeSupported()?this.requestWebkitPresentationMode("inline"):Promise.reject(new Error("Picture in picture is not supported")));i(this,"getStatistics",()=>({isPictureInPictureActive:this.isPictureInPictureActive()}));i(this,"requestStandardPictureInPicture",()=>d(this,null,function*(){return yield this.element.requestPictureInPicture()}));i(this,"exitStandardPictureInPicture",()=>d(this,null,function*(){return yield document.exitPictureInPicture()}));i(this,"isStandardPictureInPictureSupported",()=>!!this.element&&!!this.element.requestPictureInPicture&&!!document.pictureInPictureEnabled);i(this,"isStandardPictureInPictureActive",()=>!!this.element&&!!document.pictureInPictureElement);i(this,"isWebkitPresentationModeActive",()=>!!this.element&&this.element.webkitPresentationMode==="picture-in-picture");i(this,"requestWebkitPresentationMode",A=>d(this,null,function*(){return this.element.webkitSetPresentationMode(A),Promise.resolve()}));i(this,"isWebkitPresentationModeSupported",()=>!!this.element&&!!this.element.webkitSetPresentationMode);this.emitter=A,this.logger=e,this.emitter.on("add picture in picture listener",this.onEnablePictureInPicture)}};i(Bs,"create",(A,e)=>new Bs(A,e));let ua=Bs;const Us=class Us{constructor(A,e,t,B){i(this,"emitter");i(this,"logger");i(this,"clockSource");i(this,"state","buffering");i(this,"bufferFullness",0);i(this,"targetBufferTime");i(this,"lastBufferStateEvent","drained");i(this,"firstFrameTime");i(this,"currentTimeIsInRange",!1);i(this,"needsInputForAudioCount",0);i(this,"needsInputForVideoCount",0);i(this,"unload",()=>{this.emitter.off("buffer state",this.onBufferedStateChanged),this.emitter.off("needs user input",this.onNeedsUserInput)});i(this,"setTargetBufferTime",A=>void(this.targetBufferTime=A));i(this,"getTargetBufferTime",()=>this.targetBufferTime);i(this,"getBufferFullness",()=>this.bufferFullness);i(this,"getLastBufferStateEvent",()=>this.lastBufferStateEvent);i(this,"getState",()=>this.state);i(this,"getFirstFrameTime",()=>this.firstFrameTime);i(this,"getStatistics",()=>({bufferTime:this.targetBufferTime,needsInputForAudioCount:this.needsInputForAudioCount,needsInputForVideoCount:this.needsInputForVideoCount}));i(this,"onBufferedStateChanged",({buffered:A,isPaused:e})=>{const t=this.clockSource.currentTime,B=A.some(E=>E.start<t&&t<E.end),F=A[A.length-1],n=F?F.end-F.start>=this.targetBufferTime:!1,s=F?Math.max(0,F.end-t)/this.targetBufferTime:0,a=e?"paused":B?"playing":"buffering",r=this.state;this.currentTimeIsInRange!==B&&!B?(this.lastBufferStateEvent="drained",this.emitter.emit("buffer state event",this.lastBufferStateEvent)):B&&n&&this.lastBufferStateEvent==="drained"&&(this.lastBufferStateEvent="filled",this.emitter.emit("buffer state event",this.lastBufferStateEvent)),a==="playing"&&!this.firstFrameTime&&(this.firstFrameTime=Date.now()),this.currentTimeIsInRange=B,this.state=a,this.bufferFullness=B?s:0,r!==a&&this.emitter.emit("playback state",a),this.emitter.emit("buffer fullness",this.bufferFullness)});i(this,"onNeedsUserInput",({forAudio:A,forVideo:e})=>{A&&this.needsInputForAudioCount++,e&&this.needsInputForVideoCount++});this.emitter=A,this.logger=e,this.clockSource=t,this.targetBufferTime=B,this.emitter.on("buffer state",this.onBufferedStateChanged),this.emitter.on("needs user input",this.onNeedsUserInput)}};i(Us,"create",(A,e,t,B)=>new Us(A,e,t,B));let ka=Us;const Na=()=>({upgradesFromLevel:[],downgradesFromLevel:[],bufferingRanges:[],activeRanges:[],decodeRate:Number.MAX_SAFE_INTEGER}),aC=()=>({levels:{},levelDowngrades:[],levelUpgrades:[],bufferFullness:0,general:Na()}),Fs=class Fs{constructor(A,e){i(this,"minBufferFullnessLengthForRegression",6);i(this,"logger");i(this,"emitter");i(this,"timers",pA.create());i(this,"metrics",aC());i(this,"bufferFullness",new w(30));i(this,"bufferFullnessRegression");i(this,"currentLevel");i(this,"isSuspended",!1);i(this,"_fatalQosCount",0);i(this,"hasAsserted",!1);i(this,"load",()=>{this.emitter.on("playback state",this.onPlaybackState),this.emitter.on("buffer fullness",this.onBufferFullness),this.emitter.on("rendition level changed",this.onRenditionLevelChanged),this.emitter.on("video decode rate",this.onVideoDecodeRate)});i(this,"unload",()=>{this.emitter.off("playback state",this.onPlaybackState),this.emitter.off("buffer fullness",this.onBufferFullness),this.emitter.off("rendition level changed",this.onRenditionLevelChanged),this.emitter.off("video decode rate",this.onVideoDecodeRate),this.suspend()});i(this,"suspend",()=>{this.isSuspended=!0,this.timers.unload(),this.stopBuffering(),this.unsetActive()});i(this,"unsuspend",()=>{this.isSuspended=!1,this.currentLevel&&this.setActive()});i(this,"fatalQosGraceTime",()=>1e4*(this.fatalQosCount+1));i(this,"incrementFatalQosCount",()=>{this._fatalQosCount++});i(this,"getMetrics",()=>this.metrics);i(this,"getLevelStats",A=>{var t,B,F,n;const e=((B=(t=A.video)==null?void 0:t.bitRate)!=null?B:0)+((n=(F=A.audio)==null?void 0:F.bitRate)!=null?n:0);return this.metrics.levels[e]});i(this,"getBufferFullnessRegression",()=>this.bufferFullnessRegression);i(this,"activeRatios",()=>{const A=new Map,e=OQ(this.metrics.general.activeRanges);if(Object.entries(this.metrics.levels).forEach(([t,B])=>{A.set(t,e?OQ(B.activeRanges)/e:0)}),!this.hasAsserted){const t=A.size?Math.abs(Array.from(A.values()).reduce((B,F)=>B+F,0)-1)<=.02:!0;t||(this.hasAsserted=!0,console.assert(t,`Active ratios should be close to 1 - actual: ${Array.from(A.values()).reduce((B,F)=>B+F,0)}`))}return A});i(this,"bufferingRatios",()=>{const A=new Map,e=OQ(this.metrics.general.bufferingRanges);if(Object.entries(this.metrics.levels).forEach(([t,B])=>{A.set(t,e?OQ(B.bufferingRanges)/e:0)}),!this.hasAsserted){const t=Array.from(A.values()).reduce((B,F)=>B+F,0)<=1;t||(this.hasAsserted=!0,console.assert(t,`Buffering ratios should be less than 1 - actual: ${Array.from(A.values()).reduce((B,F)=>B+F,0)}`))}return A});i(this,"bufferingEventsLast",A=>this.metrics.general.bufferingRanges.filter(e=>e.start>=Date.now()-A).length);i(this,"timeSpentBufferingLast",A=>Jo(this.metrics.general.bufferingRanges,A));i(this,"timeSpentActiveLast",A=>Jo(this.metrics.general.activeRanges,A));i(this,"timeSpentPlayingInAtLeastLevelRatio",A=>{var a,r,E,g;const e=this.timeSpentBuffering(),t=this.timeActive(),B=this.bufferingRatios(),F=this.activeRatios(),n=((r=(a=A.video)==null?void 0:a.bitRate)!=null?r:0)+((g=(E=A.audio)==null?void 0:E.bitRate)!=null?g:0),s=e/t;return Object.keys(this.metrics.levels).map(c=>parseInt(c,10)).filter(c=>c>=n).reduce((c,J)=>{var u,D;return((u=F.get(J.toString()))!=null?u:0)-((D=B.get(J.toString()))!=null?D:0)*s+c},0)});i(this,"timeSpentBuffering",()=>OQ(this.metrics.general.bufferingRanges));i(this,"timeActive",()=>OQ(this.metrics.general.activeRanges));i(this,"getStatistics",()=>({timeSpentBuffering:this.timeSpentBuffering(),bufferingEventsCount:this.metrics.general.bufferingRanges.length,timeSpentRatio:[...this.activeRatios()].reduce((A,[e,t])=>(A[e]=t,A),{}),fatalQosCount:this.fatalQosCount}));i(this,"onRenditionLevelChanged",A=>{var F,n,s,a,r,E,g,c,J,u,D,T,L,Z;const e=((s=(n=(F=A.from)==null?void 0:F.video)==null?void 0:n.bitRate)!=null?s:0)+((E=(r=(a=A.from)==null?void 0:a.audio)==null?void 0:r.bitRate)!=null?E:0),t=((J=(c=(g=A.to)==null?void 0:g.video)==null?void 0:c.bitRate)!=null?J:0)+((T=(D=(u=A.to)==null?void 0:u.audio)==null?void 0:D.bitRate)!=null?T:0);this.logger.info("rendition level changed",{fromLevel:e,toLevel:t}),this.metrics.general.activeRanges.length===0&&this.setActive(),A.from&&A.to&&(e<t?this.metrics.general.upgradesFromLevel.push(Date.now()):this.metrics.general.downgradesFromLevel.push(Date.now()));let B=!1;if(A.from){const M=(L=this.metrics.levels[e])!=null?L:Na();e<t?M.upgradesFromLevel.push(Date.now()):M.downgradesFromLevel.push(Date.now()),Mt(M.activeRanges);const H=M.bufferingRanges[M.bufferingRanges.length-1];B=!!H&&!H.end,Mt(M.bufferingRanges),this.metrics.levels[e]=M}if(A.to){const M=(Z=this.metrics.levels[t])!=null?Z:Na();KQ(M.activeRanges),B&&KQ(M.bufferingRanges),this.metrics.levels[t]=M,this.currentLevel=t}});i(this,"onBufferFullness",A=>{this.bufferFullness.push(A),this.metrics.bufferFullness=A,this.bufferFullness.items().length>=this.minBufferFullnessLengthForRegression&&(this.bufferFullnessRegression=this.calculateLinearRegression())});i(this,"onPlaybackState",A=>{switch(this.logger.info("Playback state",{state:A,currentLevel:this.currentLevel}),A){case"playing":this.stopBuffering();break;case"buffering":this.isSuspended||this.startBuffering();break}});i(this,"onVideoDecodeRate",A=>{var t;if(this.metrics.general.decodeRate=A,!this.currentLevel)return;const e=this.metrics.levels[(t=this.currentLevel)!=null?t:0];e&&(e.decodeRate=A)});i(this,"calculateLinearRegression",()=>Md(this.bufferFullness.items().map((A,e)=>({x:e,y:A}))));i(this,"stopBuffering",()=>{if(this.currentLevel){const A=this.metrics.levels[this.currentLevel];A&&Mt(A.bufferingRanges)}Mt(this.metrics.general.bufferingRanges)});i(this,"startBuffering",()=>{if(this.currentLevel){const A=this.metrics.levels[this.currentLevel];A&&KQ(A.bufferingRanges)}KQ(this.metrics.general.bufferingRanges)});i(this,"unsetActive",()=>{if(this.currentLevel){const A=this.metrics.levels[this.currentLevel];A&&Mt(A.activeRanges)}Mt(this.metrics.general.activeRanges)});this.logger=e,this.emitter=A}get fatalQosCount(){return this._fatalQosCount}setActive(){if(this.currentLevel){const A=this.metrics.levels[this.currentLevel];A&&KQ(A.activeRanges)}KQ(this.metrics.general.activeRanges)}};i(Fs,"create",(A,e)=>new Fs(A,e));let ma=Fs;const ns=class ns{constructor(A,e){i(this,"renditions",new Map);i(this,"renditionLevels",[]);i(this,"languages",[]);i(this,"emitter");i(this,"subscriptionSource");i(this,"renditionLevelChangeCount",0);i(this,"unload",()=>{this.emitter.off("renditions",this.onRenditions),this.emitter.off("subscription changed",this.onSubscriptionChanged)});i(this,"getRenditionLevels",A=>A?this.createRenditionLevels(A):this.renditionLevels);i(this,"getRenditionLevel",A=>{var s;const e=A!=null?A:this.getCurrentSubscription(),t=A?this.createRenditionLevels(A):this.renditionLevels;if(!e.video)return t.length?t[0]:void 0;const B=e.video.bitRate||Number.MAX_SAFE_INTEGER,F=e.video.width||Number.MAX_SAFE_INTEGER,n=e.video.height||Number.MAX_SAFE_INTEGER;return(s=t.filter(a=>a.video&&e.video?a.video.bitRate<=B&&a.video.width<=F&&a.video.height<=n:!0).pop())!=null?s:t[0]});i(this,"setRenditions",(A,e)=>{this.renditions.set(A,e)});i(this,"getLanguages",()=>this.languages);i(this,"getVideoRendition",(A,e=this.getCurrentSubscription().channelId)=>{const t=this.getRendition(A,e);if(t&&Lt(t))return t});i(this,"getAudioRenditions",A=>{const e=this.renditions.get(A);return e==null?void 0:e.filter(B=>Ht(B))});i(this,"getVideoRenditions",A=>{const e=this.renditions.get(A);return e==null?void 0:e.filter(B=>Lt(B))});i(this,"getAudioRendition",(A,e=this.getCurrentSubscription().channelId)=>{const t=this.getRendition(A,e);if(t&&Ht(t))return t});i(this,"getRendition",(A,e=this.getCurrentSubscription().channelId)=>{var t;return(t=this.renditions.get(e))==null?void 0:t.find(B=>B.id===A)});i(this,"getStatistics",()=>{var e,t,B,F,n,s,a,r,E,g;const A=this.getRenditionLevel();return{videoCodec:(e=A==null?void 0:A.video)==null?void 0:e.codec,audioCodec:(t=A==null?void 0:A.audio)==null?void 0:t.codec,videoRenditionId:(B=A==null?void 0:A.video)==null?void 0:B.id,audioRenditionId:(F=A==null?void 0:A.audio)==null?void 0:F.id,videoWidth:(n=A==null?void 0:A.video)==null?void 0:n.width,videoHeight:(s=A==null?void 0:A.video)==null?void 0:s.height,expectedVideoBitRate:(a=A==null?void 0:A.video)==null?void 0:a.bitRate,expectedAudioBitRate:(r=A==null?void 0:A.audio)==null?void 0:r.bitRate,frameRate:(E=A==null?void 0:A.video)==null?void 0:E.frameRate,language:(g=A==null?void 0:A.audio)==null?void 0:g.language,renditionLevelChangeCount:this.renditionLevelChangeCount}});i(this,"onRenditions",A=>{const e=this.subscriptionSource.getCurrentSubscription();this.renditions.set(A.channelId,A.renditions),this.updateRenditionLevels({to:e,from:e})});i(this,"onSubscriptionChanged",A=>{this.updateRenditionLevels(A)});i(this,"updateRenditionLevels",({to:A,from:e})=>{var r;const{channelId:t,initiator:B}=A,F=this.getRenditionLevel(e),n=new Set;((r=this.renditions.get(t))!=null?r:[]).filter(E=>E.codec!=="webvtt").forEach(E=>E.language?n.add(E.language):void 0),this.languages=Array.from(n),this.renditionLevels=this.createRenditionLevels(A);const a=this.getRenditionLevel(A);Gt(F,a)||(this.renditionLevelChangeCount++,this.emitter.emit("rendition level changed",{to:a,from:F,reason:B?"manual":"abr"}))});i(this,"createRenditionLevels",A=>{var E;const{video:e,audio:t,channelId:B}=A,F=(E=this.renditions.get(B))!=null?E:[],n=F.filter(Lt).filter(g=>e&&g.codec===e.codec),s=F.filter(Ht).filter(g=>t&&g.codec===t.codec&&g.language===t.language),a=Math.max(n.length,s.length),r=[];for(let g=0;g<a;g++){const c=n[Math.min(n.length-1,g)],J=s[Math.min(s.length-1,g)];r.push({audio:J,video:c})}return r});i(this,"getCurrentSubscription",()=>this.subscriptionSource.getCurrentSubscription());this.subscriptionSource=e,this.emitter=A,this.emitter.on("renditions",this.onRenditions),this.emitter.on("subscription changed",this.onSubscriptionChanged)}};i(ns,"create",(A,e)=>new ns(A,e));let Wa=ns;const VB=Q=>JSON.parse(JSON.stringify(Q)),oC=1e4,ss=class ss{constructor(A,e,t){i(this,"logger");i(this,"timers",new pA);i(this,"emitter");i(this,"targetSubscription");i(this,"currentSubscription");i(this,"_isSwitchingSubscription",!1);i(this,"pendingSubscriptionTimeoutId");i(this,"burstMs",0);i(this,"unload",()=>{this.logger.debug("Unloading module..."),this.timers.unload(),this.emitter.off("subscription changed",this.onSubscriptionChanged),this.logger.debug("Unloaded module")});i(this,"isSwitchingSubscription",()=>this._isSwitchingSubscription);i(this,"getTargetSubscription",()=>this.targetSubscription);i(this,"getCurrentSubscription",()=>this.currentSubscription);i(this,"enableBurst",A=>{this.burstMs=A});i(this,"setSize",A=>{this.targetSubscription.video.width=A.width,this.targetSubscription.video.height=A.height,this.scheduleSubscriptionChange()});i(this,"setVideoConstraint",A=>{this.targetSubscription.video=A,this.scheduleSubscriptionChange()});i(this,"setAudioConstraint",A=>{this.targetSubscription.audio=A,this.scheduleSubscriptionChange()});i(this,"setVideoBitRate",A=>{this.targetSubscription.video.bitRate=A,this.scheduleSubscriptionChange()});i(this,"setAudioBitRate",A=>{this.targetSubscription.audio.bitRate=A,this.scheduleSubscriptionChange()});i(this,"setChannelId",A=>{this.targetSubscription.channelId=A,this.scheduleSubscriptionChange()});i(this,"setLanguage",A=>{this.targetSubscription.audio.language=A,this.scheduleSubscriptionChange()});i(this,"setVideoCodec",A=>{this.targetSubscription.video.codec=A,this.scheduleSubscriptionChange()});i(this,"setAudioCodec",A=>{this.targetSubscription.audio.codec=A,this.scheduleSubscriptionChange()});i(this,"setBurst",A=>{A?this.targetSubscription.burstMs=A:delete this.targetSubscription.burstMs});i(this,"isNewSubscription",()=>{const A=["burstMs","meta","initiator","channelGroupId"];return!Gt(So(this.currentSubscription,A),So(this.targetSubscription,A))});i(this,"onSubscriptionChanged",({to:A,reset:e})=>{this.logger.debug("onSubscriptionChanged",{to:A,reset:e}),e?this.targetSubscription=VB(this.currentSubscription):this.currentSubscription=VB(A),this._isSwitchingSubscription=this.isNewSubscription()});i(this,"scheduleSubscriptionChange",()=>{this.targetSubscription=VB(this.targetSubscription),this._isSwitchingSubscription=this.isNewSubscription();const A=this.currentSubscription.channelId,e=this.targetSubscription.channelId,t=A!==e;this._isSwitchingSubscription&&(t&&this.burstMs?this.setBurst(this.burstMs):this.setBurst(0),this.pendingSubscriptionTimeoutId&&(this.timers.clearTimeout(this.pendingSubscriptionTimeoutId),this.pendingSubscriptionTimeoutId=void 0),t&&this.timers.setTimeout(()=>{this.currentSubscription.channelId===A&&this.targetSubscription.channelId===e&&(this.logger.warn("Channel switch timeout",e),this.targetSubscription=VB(this.currentSubscription),this.emitter.emit("channel switch timeout",e))},oC),this.pendingSubscriptionTimeoutId=this.timers.setTimeout(()=>this.emitter.emit("send signal",{type:"subscribe",subscription:this.getTargetSubscription()}),0))});this.logger=A,this.targetSubscription=e,this.currentSubscription=VB(e),this.emitter=t,this.emitter.on("subscription changed",this.onSubscriptionChanged)}};i(ss,"create",(A,e,t)=>new ss(A,t,e));let pa=ss;const tr=5e3,lC=()=>HQ()||kA()||OA(),Qr=()=>lC()?100:0,ir=Q=>A=>A>Q,as=class as{constructor(A,e,t,B,F){i(this,"emitter");i(this,"logger");i(this,"playbackSource");i(this,"bufferSource");i(this,"keyframeTimestamps",new w(10));i(this,"lastSeekTime",Date.now());i(this,"seekCooldownTime",1e3);i(this,"seekTimeoutTime",5e3);i(this,"seekKeyframeOvershoot",50);i(this,"syncMaxBehind");i(this,"syncMaxBehindMultiplierStep",1);i(this,"syncMaxBehindIncreaseEvery",2);i(this,"syncMaxBehindMaximumAllowed",2e3);i(this,"syncMaxBehindMultiplier",1);i(this,"timeshiftOnAudio",!1);i(this,"syncMaxAhead",150);i(this,"timeshiftSync",{enabled:!1,maxBehind:50,multiplier:1,maxBehindAllowed:600,overshoot:Qr(),minOvershootAllowed:Qr(),maxOvershootAllowed:500});i(this,"maxTimeSyncDifferenceTolerance",150);i(this,"timers",pA.create());i(this,"rtt",0);i(this,"channelSyncInfo",new Map);i(this,"driftAdjustmentsCount",0);i(this,"timeshiftDriftAdjustmentCount",0);i(this,"driftAdjustments",[]);i(this,"timeShiftAdjustments",[]);i(this,"timestampOffset");i(this,"currentChannelId");i(this,"highestSeenTimestamps",new Map);i(this,"isSuspended",!1);i(this,"isSyncAdjustmentActivated",!1);i(this,"load",()=>{this.timers.setInterval(this.onSync,100)});i(this,"unload",()=>{this.logger.debug("Unloading module..."),this.emitter.off("rtt",this.updateRtt),this.timers.unload(),this.logger.debug("Unloaded module")});i(this,"suspend",()=>{this.isSuspended=!0});i(this,"unsuspend",()=>{this.resetSyncState(),this.isSuspended=!1});i(this,"deactivateSyncAdjustments",()=>{this.isSyncAdjustmentActivated=!1});i(this,"activateSyncAdjustments",()=>{this.tryApplySyncInfo(0),this.lastSeekTime=Date.now(),this.isSyncAdjustmentActivated=!0});i(this,"reset",()=>{this.logger.info("Reset sync state"),this.currentChannelId=void 0,this.timestampOffset=void 0,this.resetSyncState(),this.highestSeenTimestamps.clear()});i(this,"getTimeshiftOffset",()=>{var A;return(A=this.timestampOffset)!=null?A:0});i(this,"getCurrentChannelId",()=>this.currentChannelId);i(this,"resetSyncState",()=>{this.timeshiftSync.multiplier=1,this.syncMaxBehindMultiplier=1,this.driftAdjustments=[],this.timeShiftAdjustments=[]});i(this,"getLiveEdgeTime",A=>{const e=this.channelSyncInfo.get(A);if(!e)return;const t=Date.now()-e.localTimestamp;return e.timestamp+t});i(this,"getLiveEdgeTimeLatencyAdjusted",A=>{const e=this.getLiveEdgeTime(A);if(e)return e+this.rtt/2});i(this,"getWallclockTime",A=>{const e=this.channelSyncInfo.get(A);if(!e)return;const t=Date.now()-e.localTimestamp;return e.wallclockTime+t});i(this,"getWallclockTimeLatencyAdjusted",A=>{const e=this.getWallclockTime(A);if(e)return e+this.rtt/2});i(this,"processSample",A=>{var B;if(!A.channelId)throw new Error("Sample must be assigned to a channel");this.currentChannelId||(this.currentChannelId=A.channelId),this.timestampOffset||(this.timestampOffset=A.timestamp/A.timescale*1e3-tr);const e=A.type==="video"&&A.isSync;if(this.currentChannelId!==A.channelId){let F=Number.MAX_SAFE_INTEGER;console.assert(this.highestSeenTimestamps.size!==0,"no known timestamps"),this.highestSeenTimestamps.forEach(s=>{F=Math.min(F,s)});const n=A.timestamp/A.timescale*1e3;this.currentChannelId=A.channelId,this.timestampOffset=n-F}else(e||this.timeshiftOnAudio)&&this.tryTimeshiftSync();const t=this.timestampOffset*A.timescale/1e3;return A.timestamp-=t,e&&this.keyframeTimestamps.push(A.timestamp/A.timescale*1e3),this.highestSeenTimestamps.set(A.type,Math.max((B=this.highestSeenTimestamps.get(A.type))!=null?B:0,A.timestamp/A.timescale*1e3)),A});i(this,"processFragment",(A,e)=>{var n;this.currentChannelId||(this.currentChannelId=A);const t=e.mediaType();if(!t)throw new Error("Fragment must have a media type");this.timestampOffset||(this.timestampOffset=e.baseMediaDecodeTime()/e.timescale()*1e3-tr);const B=e.mediaType()==="video"&&e.startsWithKeyframe();this.currentChannelId!==A?(console.assert(this.highestSeenTimestamps.size!==0,"no known timestamps"),this.highestSeenTimestamps.forEach(s=>{}),this.currentChannelId=A):(B||this.timeshiftOnAudio)&&this.tryTimeshiftSync();const F=this.timestampOffset*e.timescale()/1e3;return e.updateBaseMediaDecodeTime(e.baseMediaDecodeTime()-F),B&&this.keyframeTimestamps.push(e.baseMediaDecodeTime()/e.timescale()*1e3),this.highestSeenTimestamps.set(t,Math.max((n=this.highestSeenTimestamps.get(t))!=null?n:0,e.baseMediaDecodeTime()/e.timescale()*1e3)),e});i(this,"getStatistics",()=>({drift:this.drift,driftAdjustmentCount:this.driftAdjustmentsCount,timeshiftDriftAdjustmentCount:this.timeshiftDriftAdjustmentCount,seekTime:this.playbackSource.seekTime}));i(this,"updateRtt",A=>void(this.rtt=A));i(this,"isPlaybackSourceReadyToSeek",()=>!this.isSeeking()&&this.isSeekCooldownExpired()&&this.isSyncAdjustmentActivated);i(this,"isSeeking",()=>this.playbackSource.isSeeking?!this.isSeekTimeoutExpired():!1);i(this,"isAllowedToSync",()=>this.isPlaybackSourceReadyToSeek()&&!!this.currentChannelId&&!this.isSuspended&&!this.playbackSource.isPaused);i(this,"isSeekCooldownExpired",()=>Date.now()-this.lastSeekTime>this.seekCooldownTime);i(this,"isSeekTimeoutExpired",()=>Date.now()-this.lastSeekTime>this.seekTimeoutTime);i(this,"currentTimeshiftMaxBehind",()=>Math.min(this.timeshiftSync.maxBehind*this.timeshiftSync.multiplier,this.timeshiftSync.maxBehindAllowed));i(this,"currentSyncMaxBehind",()=>Math.min(this.syncMaxBehindMultiplier*this.syncMaxBehind,this.syncMaxBehindMaximumAllowed));i(this,"currentSyncMaxAhead",()=>this.playbackSource.seekTime>500?Math.max(this.syncMaxAhead*this.syncMaxBehindMultiplier,300):this.syncMaxAhead);i(this,"tryTimeshiftSync",()=>{var F;if(!this.timeshiftSync.enabled||!this.isAllowedToSync())return;const A=(F=this.drift)!=null?F:0;if(A>=this.syncMaxBehind)return;if(A<this.currentTimeshiftMaxBehind()){this.timeshiftSync.overshoot=0;return}if(!this.timestampOffset)return;const e=Date.now()-this.seekTimeoutTime*this.timeshiftSync.multiplier,t=this.timeShiftAdjustments.filter(ir(e)).length;if(t&&this.timeshiftSync.multiplier>2)return this.logger.debug("Too many diff timeShifts within sliding window",{timeShiftsCooldownMs:e,timeShiftsWithinCooldownTime:t}),!1;const B=A+this.timeshiftSync.overshoot;this.logger.info("Adjusting for drift using timeshift",{drift:A,syncAmount:B,currentTime:this.playbackSource.currentTime,rtt:this.rtt,overshoot:this.timeshiftSync.overshoot}),this.timestampOffset+=B,this.lastSeekTime=Date.now(),!this.playbackSource.isPaused&&(this.timeShiftAdjustments.push(this.lastSeekTime),this.timeshiftDriftAdjustmentCount++,this.timeshiftSync.multiplier++,this.timeshiftSync.overshoot=Math.max(this.timeshiftSync.minOvershootAllowed,Math.min(this.timeshiftSync.multiplier*A/2,this.timeshiftSync.maxOvershootAllowed)))});i(this,"onSync",()=>{var s;if(!this.isAllowedToSync())return;const A=(s=this.drift)!=null?s:0;if(A<0&&-A<this.currentSyncMaxAhead()||A>0&&A<this.currentSyncMaxBehind()||Math.abs(A)<1||!this.isSeekCooldownExpired())return;const e=Date.now()-this.seekTimeoutTime*this.syncMaxBehindMultiplier,t=this.driftAdjustments.filter(ir(e)).length;if(t&&this.syncMaxBehindMultiplier>2)return this.logger.debug("Too many diff adjustments within sliding window",{adjustmentsCooldownMs:e,adjustmentsWithinCooldownTime:t}),!1;const B=this.playbackSource.seekTime,F=this.playbackSource.currentTime+A,n=this.findKeyframeCloseToTimestamp(F);if(n||this.keyframeTimestamps.isEmpty()){const a=n?n+this.seekKeyframeOvershoot:F;if(this.logger.info("Adjusting for drift using seek",{drift:A,currentTime:this.playbackSource.currentTime,targetCurrentTime:a,seekTime:B,rtt:this.rtt}),this.lastSeekTime=Date.now(),this.driftAdjustments.push(this.lastSeekTime),this.driftAdjustmentsCount++,this.playbackSource.currentTime=a+B,this.timeshiftSync.overshoot=Math.max(this.timeshiftSync.minOvershootAllowed,this.timeshiftSync.overshoot/2),this.driftAdjustmentsCount%this.syncMaxBehindIncreaseEvery===0&&!this.playbackSource.isPaused){const r=this.currentSyncMaxBehind;this.syncMaxBehindMultiplier+=this.syncMaxBehindMultiplierStep,r!==this.currentSyncMaxBehind&&this.logger.info("Increasing max drift behind allowed",{from:r,to:this.currentSyncMaxBehind})}}});i(this,"findKeyframeCloseToTimestamp",A=>{const e=this.keyframeTimestamps.items();for(const t of e)if(t>=A&&t<=A+200)return t});this.logger=e,this.emitter=A,this.playbackSource=t,this.bufferSource=B,this.timeshiftSync.enabled=F,this.syncMaxBehind=this.timeshiftSync.enabled?1e3:200,this.emitter.on("rtt",this.updateRtt)}updateChannelSyncInfo(A,e){const t=Date.now(),B=this.channelSyncInfo.get(A),F=this.getLiveEdgeTime(A);if(this.isSuspended)return;if(!B||!F){this.logger.info("Initial timing info",{syncInfo:e}),this.channelSyncInfo.set(A,O(S({},e),{localTimestamp:t,timeDifferences:new w(12)}));return}const n=e.wallclockTime-B.wallclockTime,s=e.timestamp-B.timestamp,a=t-B.localTimestamp,r=s-a;if(B.timeDifferences.push(r),this.logger.debug("Timing info",{rtt:this.rtt,channelId:A,syncInfo:e,localTimestamp:t,diffFromEstimated:r,timestampDelta:s,wallclockDelta:n,localWallclockDelta:a}),Math.abs(r)>=this.bufferSource.getTargetBufferTime()*2){this.logger.info("Resetting sync info",{diffFromEstimated:r}),this.channelSyncInfo.set(A,O(S({},e),{localTimestamp:t,timeDifferences:new w(B.timeDifferences.maxSize+1)})),this.currentChannelId&&this.currentChannelId===A&&(this.reset(),this.emitter.emit("channel reset"));return}B.timeDifferences.isFull()&&this.tryApplySyncInfo(this.maxTimeSyncDifferenceTolerance)}tryApplySyncInfo(A){const e=this.getCurrentChannelId();if(!e)return;const t=this.channelSyncInfo.get(e);if(!t)return;const B=XQ(t.timeDifferences.items());Math.abs(B)>A&&(this.logger.info("Adjusting sync info",{averageDifference:B}),t.timestamp+=B,t.timeDifferences.clear())}get serverCurrentTime(){return this.channelCurrentTime-this.getTimeshiftOffset()}get channelCurrentTime(){const A=this.getCurrentChannelId();if(!A)return 0;const e=this.getLiveEdgeTime(A);return e?e-this.bufferSource.getTargetBufferTime():0}get drift(){return this.serverCurrentTime-this.playbackSource.currentTime}};i(as,"create",(A,e,t,B,F)=>new as(A,e,t,B,F));let Da=as;const rC={enabled:!0,interval:3e4,includeErrors:!0,includeEvents:!0,includeStats:!0,maxRetries:10,maxErrorReports:50,maxEvents:50},Za=(Q,A)=>O(S({},A),{type:Q,timestamp:new Date().toISOString(),discriminator:"web"}),os=class os{constructor(A,e,t,B){i(this,"logger");i(this,"timers",new pA);i(this,"emitter");i(this,"options");i(this,"parentContext");i(this,"unsentLines",new w(100));i(this,"retries",0);i(this,"errorCount",0);i(this,"eventCount",0);i(this,"statsCount",0);i(this,"unload",()=>{this.logger.debug("Unloading module..."),window.removeEventListener("error",this.onError),window.removeEventListener("unhandledrejection",this.onRejection),this.timers.unload(),this.emitter.off("error",this.addError),this.emitter.off("visibilitystate",this.onVisibilityChange),this.emitter.off("pagehide",this.onPageHide),this.emitter.off("telemetry event",this.addEvent),this.addStats({isFinal:!0,initiator:"unload"}),this.send("beacon"),this.logger.debug("Unloaded module")});i(this,"load",()=>{window.addEventListener("error",this.onError),window.addEventListener("unhandledrejection",this.onRejection),this.emitter.on("error",this.addError),this.emitter.on("visibilitystate",this.onVisibilityChange),this.emitter.on("pagehide",this.onPageHide),this.emitter.on("telemetry event",this.addEvent),this.timers.setInterval(()=>{this.addStats(),this.send("fetch")},this.options.interval)});i(this,"addStats",({isFinal:A,initiator:e}={isFinal:!1,initiator:"interval"},t={})=>{if(!this.options.includeStats)return;const B=this.parentContext.getStatistics(),F=Za("stats",O(S(S({},t),B),{isFinal:A,initiator:e,count:this.statsCount++}));this.unsentLines.push(F)});i(this,"addEvent",A=>{if(!this.options.includeEvents||this.eventCount>this.options.maxEvents)return;const e=this.parentContext.getStatistics(),t=Za("event",S(S({},e),A));this.eventCount++,this.unsentLines.push(t)});i(this,"getStatistics",()=>({errorCount:this.errorCount}));i(this,"send",A=>d(this,null,function*(){if(this.options.enabled&&!(this.retries>=this.options.maxRetries)&&!this.unsentLines.isEmpty()){this.logger.debug("Sending telemetry",{lines:this.unsentLines.items()});try{const e=this.unsentLines.items().map(t=>JSON.stringify(t)).reverse().join(`
|
|
50
|
-
`);switch(A){case"beacon":navigator.sendBeacon(this.options.url,e);break;case"fetch":default:this.parentContext.connectionState==="connected"?this.emitter.emit("send signal",{type:"telemetry",body:e}):yield Do(new URL(this.options.url),{body:e,headers:{"Content-Type":"text/plain"}});break}this.retries=0,this.unsentLines.clear()}catch(e){this.retries++}}}));i(this,"onVisibilityChange",A=>{A==="hidden"&&(this.addStats({isFinal:!0,initiator:"visibilitychange"}),this.send("beacon"))});i(this,"onPageHide",A=>{this.addStats({isFinal:!0,initiator:"pagehide"},{persisted:A.persisted}),this.send("beacon")});i(this,"onRejection",A=>this.addError(A.reason));i(this,"onError",A=>this.addError(A.error));i(this,"addError",A=>{const{includeErrors:e,maxErrorReports:t}=this.options;if(e&&A instanceof X){if(this.errorCount++,this.errorCount>t)return;const B=this.parentContext.getStatistics();this.unsentLines.push(Za("error",S(S({},B),A.toStringifiable())))}});this.logger=A,this.emitter=e,this.options=S(S({},rC),t),this.parentContext=B}};i(os,"create",(A,e,t,B)=>new os(A,e,t,B));let on=os;const ls=class ls{constructor(A,e,t){i(this,"logger");i(this,"element");i(this,"documentState");i(this,"timers",new pA);i(this,"unload",()=>{this.timers.unload()});i(this,"unpause",()=>{this.element.userHasProvidedInput&&this.element.isPaused&&this.documentState.isVisible&&this.documentState.isOnline&&(this.logger.debug("Unpause video"),this.element.tryPlay())});this.logger=A,this.element=e,this.documentState=t,this.timers.setInterval(this.unpause,100)}};i(ls,"create",(A,e,t)=>new ls(A,e,t));let ln=ls;const dC=6,EC=Q=>{let A=[Q],e=0,t=0,B=!1;const F=(s,a)=>{var T,L,Z;s.flags&&SB(s.flags)&&(e=(T=s.compositionTimeOffset)!=null?T:0),s.timestamp+=e,s.compositionTimeOffset=((L=s.compositionTimeOffset)!=null?L:0)-e;const r=s.timestamp/s.timescale,g=a.flags&&SB(a.flags)?(Z=a.compositionTimeOffset)!=null?Z:0:e,J=(a.timestamp+g)/a.timescale,u=Math.max(0,Math.round((J-r)*s.timescale));return u>0&&(t=u),O(S({},s),{duration:u>0?u:t})};return(s,a=!1)=>{if(s.flags&&SB(s.flags)&&a&&(B=!B),!(a&&A.length<dC&&B)&&A.length>0){B=!1;let E=s;for(let c=A.length-1;c>0;c--){const J=A[c];if(!J||!E)break;J.timestamp>=E.timestamp?A.splice(c,1):E=J}const g=A.map((c,J)=>F(c,A[J+1]||s));return A=[s],g}return A.push(s),[]}},gC=(Q,A,e)=>{if(Lt(A))return S(O(S({},Q),{type:"video",codec:A.codec,isSync:SB(Q.flags),data:Q.payload,duration:0,width:A.width,height:A.height}),e);if(A.codec==="webvtt")throw new Error("WebVTT is not supported");return O(S({},Q),{type:"audio",channels:A.channels,sampleRate:A.sampleRate,codec:A.codec,language:A.language,isSync:SB(Q.flags),data:Q.payload,duration:0})};class IC{constructor(){i(this,"highEntropyValues");var A;(A=self.navigator.userAgentData)==null||A.getHighEntropyValues(["architecture","model","platformVersion","fullVersionList"]).then(e=>{this.highEntropyValues=e})}getUserAgentInformation(){var F,n,s,a,r,E;const A=window.location.origin,t=!A||A=="null"?"":`${window.location.pathname}${window.location.search}`.substring(0,1e3),B={locationOrigin:window.location.origin,locationPath:t,ancestorOrigins:((F=window.location.ancestorOrigins)==null?void 0:F.length)>0?Array.from(window.location.ancestorOrigins):void 0,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory};if(self.navigator.userAgentData&&this.highEntropyValues){const g="1",c=[...(n=this.highEntropyValues.brands)!=null?n:[]];c.sort((Z,M)=>Z.brand.localeCompare(M.brand));const J=[...(s=this.highEntropyValues.fullVersionList)!=null?s:[]];J.sort((Z,M)=>Z.brand.localeCompare(M.brand));const u=J.map(Z=>Z.version),D=c.map(Z=>Z.brand),T=c.map(Z=>Z.version),L=parseInt((r=(a=this.highEntropyValues.platformVersion)==null?void 0:a.split(".")[0])!=null?r:g);return S({userAgentLegacy:window.navigator.userAgent,ua:{browser:{brands:D,fullVersionBrands:u,majorVersions:T},device:this.highEntropyValues.model||"Other",os:{family:this.highEntropyValues.platform||"Other",version:(E=this.highEntropyValues.platformVersion)!=null?E:g,major_version:Number.isFinite(L)?L:0}}},B)}else return S({userAgent:window.navigator.userAgent},B)}}const cC=Q=>{if(typeof Q!="object"||Q===null)throw new Error("not an object");if(!("video"in Q))throw new Error("missing video in subscription");if(!("audio"in Q))throw new Error("missing audio in subscription");if(!("channelId"in Q))throw new Error("missing channelId");return!0},Ue=class Ue extends $A{constructor(e){super();i(this,"pictureInPicture");i(this,"drm");i(this,"browser",us());i(this,"options");i(this,"element");i(this,"playbackSource");i(this,"emitter",new $A);i(this,"logger");i(this,"modules");i(this,"clientIp");i(this,"sessionId");i(this,"clientId",ko());i(this,"_channels",[]);i(this,"createdAt",Date.now());i(this,"hasCalledConnect",!1);i(this,"latestEmittedLanguages",[]);i(this,"wakeLock");i(this,"pool",new k(Ue.MAX_POOL_SIZE));i(this,"userAgentInformation",new IC);i(this,"encryptedMediaExtensions");o(this,TQ,0);o(this,qA,[]);i(this,"sampleProcessingSesssions",new Map);i(this,"sizes",new Map);i(this,"isSuspended",!0);i(this,"disconnectTimeout");o(this,yQ);i(this,"attach",e=>{var t;(t=this.wakeLock)==null||t.attach(e),e.appendChild(this.element)});i(this,"getOptions",()=>this.options.getOptions());i(this,"getThumbnailUrl",()=>{let e=this.options.get("edgeUrl")||this.options.get("url");e=e.replace("wss://","https://"),e=e.replace("ws://","http://"),e=e.endsWith("/")?e.slice(0,-1):e;const t=window.devicePixelRatio||1,B=Math.round(window.innerWidth*t),F=Math.round(window.innerHeight*t),n=this.options.get("authenticationToken"),s=n?`&auth.token=${n}`:"";return`${e}/api/thumbnail?channelId=${this.channelId}${s}&width=${B}&height=${F}`});i(this,"updateAuthenticationToken",e=>{this.logger.debug("Got new auth token",{token:e}),this.options.set("authenticationToken",e),this.emitter.emit("send signal",{type:"refresh auth",token:e})});i(this,"connect",()=>{this.hasCalledConnect||(this.play(),this._connect())});i(this,"_connect",()=>{var e,t;this.hasCalledConnect||(this.hasCalledConnect=!0,Object.values(this.modules).forEach(B=>{B&&"load"in B&&B.load()}),this.unsuspend(),this.playbackSource instanceof Ys&&((t=(e=this.playbackSource).load)==null||t.call(e)),this.modules.connection.connect())});i(this,"getCastOptions",()=>({url:this.options.get("url"),channelId:this.options.get("channelId"),channelGroupId:this.options.get("channelGroupId"),authenticationToken:this.options.get("authenticationToken"),language:this.options.get("language"),logLevel:this.options.get("logLevel"),minBufferTime:this.options.get("minBufferTime"),tags:this.options.get("tags"),ownerSessionId:this.sessionId,edgeUrl:this.options.get("edgeUrl"),media:this.options.get("media"),drm:this.options.get("drm")}));i(this,"onConnectInfo",e=>d(this,null,function*(){var r;this.sessionId=ko();const t=this.modules.subscription.getTargetSubscription(),B=e.channels.find(E=>E.channelId===t.channelId);if(this.emitter.emit("connect info",e),this._channels=e.channels,this.updateTextTracks((r=B==null?void 0:B.renditions)!=null?r:[]),!this.textTrack&&this.options.get("textTrack")&&(this.textTrack=this.options.get("textTrack")),yield Promise.all(e.channels.map(E=>d(this,null,function*(){E.overrides&&this.options.addOverrides(E.channelId,E.overrides),E.renditions=yield this.filterRenditions(E.renditions),this.modules.renditions.setRenditions(E.channelId,E.renditions)}))),!B)throw Ko("external");const F=this.options.getOverride("sizeBasedResolutionCapEnabled",this.channelId);F!==void 0&&(this.modules.constraintCap.sizeBasedResolutionCapEnabled=F);const n=this.options.getOverride("minBufferTime",this.channelId),s=this.options.getOverride("maxBufferTime",this.channelId);if((n||s)&&(this.modules.bufferTime.updateConfig({minBufferTime:this.options.get("minBufferTime",this.channelId),maxBufferTime:this.options.get("maxBufferTime",this.channelId)}),this.targetBufferTime=this.options.get("minBufferTime",this.channelId)),this.options.get("burstEnabled",this.channelId)&&this.modules.subscription.enableBurst(this.targetBufferTime),this.emit("is live",B.isLive),!B.isLive)throw new Error("Waiting for channel to go live");this.patchSubscription(B,this.modules.connection.estimatedBandwidth),yield this.initializeDecodingModule(),this.resetModules(),this.emit("rendition levels",this.modules.renditions.getRenditionLevels()),this.emit("channels",this.channels),this.emitLanguagesIfChanged(),this.sampleProcessingSesssions.clear();const a=this.options.get("burstEnabled",this.channelId);return{video:this.targetSubscription.video,audio:this.targetSubscription.audio,burstMs:a?this.targetBufferTime:void 0,sessionId:this.sessionId,clientId:this.clientId,channelId:this.channelId,channelGroupId:this.options.get("channelGroupId"),authToken:this.options.get("authenticationToken"),textTrack:this.textTrack}}));i(this,"emitLanguagesIfChanged",()=>{const e=this.modules.renditions.getLanguages(),t=this.latestEmittedLanguages;e.length==t.length&&e.every(F=>t.includes(F))||(this.logger.debug("Emitting new languages",{currentLanguages:e}),this.latestEmittedLanguages=e,this.emit("languages",this.latestEmittedLanguages))});i(this,"updateTextTracks",e=>{const t=e.filter(B=>B.codec==="webvtt");t.forEach(B=>{if(!U(this,qA).find(n=>n.language===B.language)){if(this.modules.canvasModule){const n=this.modules.canvasModule.textTracks.addTextTrack(B.kind,B.label||B.language||"",B.language||"");U(this,qA).push(n)}else if(this.mediaElement instanceof HTMLVideoElement){const n=this.mediaElement.addTextTrack(B.kind,B.label||B.language,B.language);U(this,qA).push(n)}}});for(const B of U(this,qA))t.find(n=>n.language===B.language)?B.mode==="disabled"&&(B.mode="hidden"):B.mode="disabled";this.emit("text tracks",this.textTracks)});i(this,"cleanupTextTracks",(e=this.currentTime-2e4)=>{U(this,qA).forEach(t=>{if(t.cues)for(const B of t.cues)B.endTime*1e3<e-2e3&&t.removeCue(B)})});i(this,"filterRenditions",e=>d(this,null,function*(){const t=yield Promise.all(e.map(s=>d(this,null,function*(){var E,g,c;if(Ht(s))return!0;if(!Lt(s)||!this.isSupportedVideoCodecProfile(s.codec,s.codecString))return!1;if(!this.willUseMediaSource()){const J=this.options.get("advanced"),u=(E=J.wasmDecodingConstraint.bitRate)!=null?E:Number.MAX_SAFE_INTEGER,D=(g=J.wasmDecodingConstraint.width)!=null?g:Number.MAX_SAFE_INTEGER,T=(c=J.wasmDecodingConstraint.height)!=null?c:Number.MAX_SAFE_INTEGER;return s.bitRate<=u&&s.width<=D&&s.height<=T}const a=yield SI(s);if(!a.supported||s.codec=="av1"&&!a.smooth&&!a.powerEfficient)return!1;const r=this.options.getOverride("maxVideoBitRate",this.channelId);return r?r>=s.bitRate:!0})));let B=e.filter((s,a)=>t[a]);const F=B.filter(s=>s.codec==="h264").reverse()[0],n=B.filter(s=>s.codec==="av1").reverse()[0];return F&&n&&F.width>n.width&&F.height>n.height&&(B=B.filter(s=>s.codec!=="av1")),B}));i(this,"patchSubscription",(e,t)=>{const B=Math.min(this.options.get("maxVideoBitRate"),Ue.INITIAL_MAX_BIT_RATE,t,this.targetSubscription.video.bitRate),F=Math.min(this.options.get("maxAudioBitRate"),Ue.INITIAL_MAX_BIT_RATE,t,this.targetSubscription.audio.bitRate),n=this.options.get("media")==="audio"?[]:this.options.get("videoCodecs",this.channelId),s=this.supportedAudioCodecs(),a=e.renditions.filter(Ht),r=e.renditions.filter(Lt),E=s.find(u=>a.find(D=>D.codec===u)!==void 0),g=n.find(u=>r.find(D=>D.codec===u)!==void 0),c=a.map(u=>u.language);if(this.logger.debug("supported and selected codecs",{audioCodecs:s,videoCodecs:n,audioCodec:E,videoCodec:g}),g){const u=this.options.get("maxSize");this.modules.subscription.setVideoConstraint(S({codec:g,bitRate:this.abrEnabled?B:this.options.get("maxVideoBitRate")},u))}E&&(this.modules.subscription.setAudioConstraint({codec:E,bitRate:this.abrEnabled?F:this.options.get("maxAudioBitRate"),language:this.options.get("language")}),(!c.includes(this.options.get("language"))||this.language===void 0)&&this.modules.subscription.setLanguage(c[0])),this.alignSizeAndBitRate(this.targetSubscription);const J=this.modules.subscription.getTargetSubscription();this.emitter.emit("subscription changed",{to:J,from:this.modules.subscription.getCurrentSubscription()})});i(this,"isSupportedVideoCodecProfile",(e,t)=>{if(this.willUseMediaSource()){const B=ae();return B?B.isTypeSupported(Yt({codec:e,codecString:t})):!0}if(e==="h264"){const B=!!(t!=null&&t.startsWith("avc1.42")),F=!!(t!=null&&t.startsWith("avc1.66."));return B||F}return e!=="av1"});i(this,"supportedAudioCodecs",()=>{if(this.options.get("media")==="video")return[];const e=[];return(this.browser.supportsMp4Opus&&this.options.get("mseOpusEnabled")||!this.willUseMediaSource())&&e.push("opus"),this.willUseMediaSource()&&e.push("aac"),e});i(this,"initializeDecodingModule",()=>d(this,null,function*(){var B,F;const e=this.currentRenditionLevel,t=[];if(!e)throw new X("No currentRenditionLevel",{code:"no_current_rendition_level",isFatal:!1});if(e!=null&&e.video&&t.push({type:"video",mimeType:Yt(e.video),codec:e.video.codec}),e!=null&&e.audio&&t.push({type:"audio",codec:e.audio.codec,mimeType:Yt(e.audio)}),t.length===0)throw new X("Can't initialize decoding module without tracks",{code:"no_tracks",isFatal:!1});if(this.willUseMediaSource()&&this.element instanceof HTMLMediaElement)this.emitter.emit("flush buffers"),yield(B=this.modules.mseModule)==null?void 0:B.setSourceBuffers(t);else{const n=yield Ea.create(this.emitter,this.logger.createContext("DecoderModule"),t,this.playbackSource,this.pool);(F=this.modules.decoder)==null||F.unload(),this.modules.decoder=n,this.modules.decoder.load()}}));i(this,"unload",()=>d(this,null,function*(){var e,t,B;this.logger.debug("Unloading modules..."),yield Promise.all(Object.values(this.modules).map(F=>F==null?void 0:F.unload())),(e=this.wakeLock)==null||e.unload(),this.pool=new k(Ue.MAX_POOL_SIZE),(B=(t=this.playbackSource).unload)==null||B.call(t),this.element.remove(),this.emitter.reset(),this.encryptedMediaExtensions.unload(),this.reset(),this.logger.debug("Unloaded modules")}));i(this,"userInput",()=>{this.play()});i(this,"pause",()=>{this.options.get("pauseSupportEnabled")&&this.playbackState!=="paused"&&(this.playbackSource.pause(),this.hasCalledConnect&&this.suspend())});i(this,"registerDebugInstance",()=>{hI(this)});i(this,"play",()=>{var e;this.hasCalledConnect?this.unsuspend():this.playbackState!=="playing"&&(this._connect(),self.addEventListener("__vindral_register_debug__",this.registerDebugInstance),this.modules.timer.setInterval(()=>this.cleanupTextTracks(),Ue.REMOVE_CUE_THRESHOLD)),(e=this.wakeLock)==null||e.enable(),this.playbackState==="paused"&&(this.resetModules(),this.emitter.emit("flush buffers"),this.cleanupTextTracks(Number.MAX_SAFE_INTEGER)),this.playbackSource.play()});i(this,"getStatistics",()=>Object.values(this.modules).reduce((e,t)=>t&&"getStatistics"in t?S(S({},e),t.getStatistics()):e,this.getRuntimeInfo()));i(this,"resetModules",()=>{Object.values(this.modules).forEach(e=>{e&&"reset"in e&&e.reset()}),this.sampleProcessingSesssions.clear(),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1});i(this,"getRuntimeInfo",()=>{const e=this.modules.canvasModule?this.options.get("iosMediaElementEnabled"):void 0;return S({uptime:Date.now()-this.createdAt,version:"4.1.1-11-g21fcefab",clientId:this.clientId,sessionId:this.sessionId,channelId:this.channelId,channelGroupId:this.options.get("channelGroupId"),ip:this.clientIp,url:this.options.get("url"),timeToFirstFrame:this.timeToFirstFrame(),iosMediaElementEnabled:e},this.userAgentInformation.getUserAgentInformation())});i(this,"onMediaElementState",e=>{this.logger.info("media element state",{state:e}),this.options.get("pauseSupportEnabled")&&(e==="paused"?this.modules.documentState.isVisible&&(this.suspend(),this.modules.connection.disconnect()):(this.unsuspend(),this.modules.connection.getState()==="disconnected"&&this.modules.connection.unsuspend()))});i(this,"onBufferEvent",e=>{var B,F,n,s;this.emit("buffer state event",e);const t=!this.playbackSource.isActivated||this.playbackSource.isPaused;if(e==="filled"&&t){const a=Math.max(this.currentTime,(F=(B=this.videoBufferedRanges[0])==null?void 0:B.start)!=null?F:0,(s=(n=this.audioBufferedRanges[0])==null?void 0:n.start)!=null?s:0);this.logger.info("Buffer filled - starting playback",{currentTime:a}),this.playbackSource.currentTime=a,this.modules.sync.activateSyncAdjustments(),this.playbackSource.isActivated=!0}else e==="drained"&&this.playbackSource.isPaused&&(this.playbackSource.isActivated=!1,this.modules.sync.deactivateSyncAdjustments())});i(this,"timeToFirstFrame",()=>{const e=this.modules.playback.getFirstFrameTime(),t=this.modules.connection.firstConnectionTime;if(t&&e)return e-t});this.options=new RI(S(S({},AE),RE(e)));const t=["localhost","127.0.0.1"];e.telemetryEnabled===void 0&&t.includes(location.hostname)&&this.options.set("telemetryEnabled",!1);const B={channelId:this.options.get("channelId"),audio:{language:this.options.get("language"),bitRate:this.options.get("maxAudioBitRate")},video:{bitRate:this.options.get("maxVideoBitRate"),width:this.options.get("maxSize").width,height:this.options.get("maxSize").height}},F=WA.get();F.setLevel(this.options.get("logLevel")),F.setDebug(!1),this.logger=F;const n=ua.create(this.emitter,this.logger.createContext("PictureInPictureModule")),s=pA.create(),a=la.create(this.emitter,this.logger.createContext("ConnectionModule"),{reconnectHandler:this.options.get("reconnectHandler"),options:this.options,onConnectInfo:this.onConnectInfo}),r=pa.create(this.logger.createContext("SubscriptionModule"),this.emitter,B),E=Wa.create(this.emitter,r),g=ma.create(this.emitter,this.logger.createContext("QualityOfServiceModule")),c=ka.create(this.emitter,this.logger.createContext("PlaybackModule"),this,this.options.get("minBufferTime"));this.encryptedMediaExtensions=new Ql(this.emitter,this.logger.createContext("EncryptedMediaExtensions"),e.drm),this.drm={setHeaders:R=>{this.encryptedMediaExtensions.headers=R},setQueryParams:R=>{this.encryptedMediaExtensions.queryParams=R}};const J=ga.create(this.emitter),u=this.options.get("poster"),D=u===!0?this.getThumbnailUrl():u||void 0;let T,L,Z;if(this.willUseMediaSource()){const R=new Ys({type:this.options.get("media")=="audio"?"audio":"video",autoplay:!1,muted:this.options.get("muted")||this.options.get("media")==="video",logger:this.logger.createContext("MediaElement"),poster:D});R.on("buffer state",W=>this.emitter.emit("buffer state",W)),R.on("needs user input",W=>this.emitter.emit("needs user input",W)),R.on("volume state",W=>this.emit("volume state",W)),R.on("media element state",W=>this.onMediaElementState(W)),this.element=R.element,this.playbackSource=R,Ql.isSupported()&&this.encryptedMediaExtensions.attach(R.element),T=Va.create(this.logger.createContext("MseModule"),this.emitter,this.element),this.options.get("pauseSupportEnabled")||(L=ln.create(this.logger.createContext("UnpauseModule"),R,J)),this.options.get("pictureInPictureEnabled")&&this.emitter.emit("add picture in picture listener",{element:R.element})}else if(this.browser.platform.iosVersion>=15&&this.options.get("iosMediaElementEnabled")){const R=Ja.create(this.emitter,this.logger.createContext("ModernCanvasModule"),this.pool,this,{type:this.options.get("media")=="audio"?"audio":"video",muted:this.options.get("muted")||this.options.get("media")==="video",poster:D}),W=R.element();this.element=W.element,this.playbackSource=R,Z=R,this.options.get("pictureInPictureEnabled")&&this.browser.platform.iosVersion>15&&this.emitter.emit("add picture in picture listener",{element:this.element}),this.options.get("pauseSupportEnabled")||(L=ln.create(this.logger.createContext("UnpauseModule"),W,J))}else{const R=Sa.create(this.emitter,this.logger.createContext("LegacyCanvasModule"),this.pool,this,this.options.get("muted")||this.options.get("media")==="video");this.element=R.element(),this.playbackSource=R,Z=R,this.options.get("iosWakeLockEnabled")&&(this.wakeLock=new gI)}this.emitter.on("channel reset",this.resetModules),this.emitter.on("no data timeout",this.resetModules),this.emitter.on("media element state",R=>this.onMediaElementState(R)),this.emitter.on("volume state",R=>this.emit("volume state",R)),this.options.get("pauseSupportEnabled")||this.emitter.on("exit picture in picture",()=>s.setTimeout(()=>this.play(),0)),this.emitter.on("constraint cap changed",R=>{this.logger.info("new cap set",{cap:R}),this.alignSizeAndBitRate(this.targetSubscription)}),this.pictureInPicture={enter:()=>n.requestPictureInPicture(),exit:()=>n.exitPictureInPicture(),isActive:()=>n.isPictureInPictureActive(),isSupported:()=>n.isPictureInPictureSupported()},this.emitter.on("error",R=>{if(R.type()==="external"&&this.emit("error",R),R.isFatal())return()=>void this.unload()});const M=this.browser.platform.isIOS&&!this.browser.platform.isIpadOS,H=Da.create(this.emitter,this.logger.createContext("SyncModule"),this.playbackSource,c,this.willUseMediaSource()&&!M),Y=(this.options.get("edgeUrl")||this.options.get("url")).replace("wss://","https://").replace("ws://","http://").replace("//lb.","//errors."),P=new URL("/telemetry",Y).toString(),VA=on.create(this.logger.createContext("TelemetryModule"),this.emitter,{url:P,enabled:this.options.get("telemetryEnabled"),includeStats:!1,interval:5e3},this);this.modules={telemetry:VA,bufferTime:Os.create(this.emitter,this.logger.createContext("BufferTimeModule"),g,this,{maxBufferTime:this.options.get("maxBufferTime"),minBufferTime:this.options.get("minBufferTime")}),incomingData:ca.create(this.emitter),adaptivity:Ks.create(this.emitter,this.logger.createContext("AdaptivityModule"),g,{cooldownTime:Math.max(this.options.get("minBufferTime"),2e3)}),constraintCap:da.create(this.emitter,this.element,E,this.options.get("abrEnabled")?this.options.get("sizeBasedResolutionCapEnabled"):!1),event:Ia.create(this.emitter,this.logger.createContext("EventModule"),H),sync:H,documentState:J,connection:a,playback:c,pictureInPicture:n,timer:s,subscription:r,renditions:E,qualityOfService:g,mseModule:T,unpause:L,canvasModule:Z},this.modules.adaptivity.isEnabled=this.options.get("abrEnabled"),this.emitter.on("page active",R=>{var W;R&&typeof this.disconnectTimeout=="number"&&(this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=void 0),R?this.playbackSource.isPaused||(this.logger.debug("Unsuspending"),this.unsuspend()):(this.logger.debug("Suspending"),this.suspend(),this.modules.decoder?this.options.get("iosBackgroundPlayEnabled")?(this.modules.decoder.unsuspend(),(W=this.modules.canvasModule)==null||W.unsuspend()):this.modules.connection.disconnect():(this.disconnectTimeout&&this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=this.modules.timer.setInterval(()=>{const x=this.playbackState==="paused"||this.muted;this.connectionState==="connected"&&x&&(this.emitter.emit("flush buffers"),this.modules.connection.disconnect("Page inactive timeout"))},Ue.DISCONNECT_TIMEOUT)))});let FA;this.emitter.on("context switch complete",()=>{FA||(FA=window.setTimeout(()=>{window.clearTimeout(FA),FA=void 0,this.emit("context switch","completed"),this.emitLanguagesIfChanged()},this.targetBufferTime))}),this.emitter.on("context switch started",()=>this.emit("context switch","started")),this.emitter.on("needs user input",R=>this.emit("needs user input",R)),this.emitter.on("event",R=>{switch(R.type){case"metadata":this.emit("metadata",R);break;case"channel switch":this.emit("channel switch",{channelId:R.channelId});break;case"language switch":this.emit("language switch",{language:R.language});break}}),this.emitter.on("buffer state event",this.onBufferEvent),this.emitter.on("playback state",R=>this.emit("playback state",R)),this.emitter.on("rendition level changed",({to:R})=>{R&&this.emit("rendition level",R)}),this.emitter.on("connection state",R=>{this.emit("connection state",R)}),this.emitter.on("recovered from media error",()=>{this.modules.adaptivity.reset(this.targetBufferTime*2)}),this.emitter.once("connect info",R=>{var tA,K,j;const x=((K=(tA=R.telemetry)==null?void 0:tA.probability)!=null?K:1)>=Math.random();R.telemetry&&((j=this.modules.telemetry)==null||j.unload(),this.modules.telemetry=on.create(this.logger.createContext("TelemetryModule"),this.emitter,O(S({},R.telemetry),{enabled:this.options.get("telemetryEnabled")&&x}),this),this.modules.telemetry.load())}),this.emitter.on("adapt level",R=>{var fA,N,v,AA,nA;this.logger.debug("adapt level",{direction:R});const W=this.modules.renditions.getRenditionLevels(),x=this.modules.renditions.getRenditionLevel(),tA=W.findIndex(f=>f===x),K=W.length-1;let j=tA;switch(R){case"upgrade":{const f=Math.min(tA+1,K),UA=W[f],oB=(fA=this.modules.connection.estimatedBandwidth)!=null?fA:st(),lB=((v=(N=UA==null?void 0:UA.audio)==null?void 0:N.bitRate)!=null?v:0)+((nA=(AA=UA==null?void 0:UA.video)==null?void 0:AA.bitRate)!=null?nA:0),EF=oB*2>lB;UA&&EF&&this.modules.adaptivity.isQoSOk(UA)&&(j=f)}break;case"downgrade":j=Math.max(tA-1,0);break;case"double downgrade":j=Math.max(tA-2,0);break;case"reconnect":if(tA===0||this.modules.qualityOfService.timeSpentBufferingLast(6e3)>5e3){if(!this.modules.connection.lastConnectionTime||Date.now()-this.modules.connection.lastConnectionTime<this.modules.qualityOfService.fatalQosGraceTime()||this.modules.connection.getState()!=="connected")return;this.modules.qualityOfService.incrementFatalQosCount(),this.logger.info("Reconnecting due to poor qos"),this.modules.connection.reconnect("Fatal QOS"),this.emitter.emit("adapted level");return}else j=0}if(j===tA)return;const aA=W[j];this.alignSizeAndBitRate(O(S({},this.targetSubscription),{video:S(S({},this.targetSubscription.video),aA==null?void 0:aA.video),audio:S(S({},this.targetSubscription.audio),aA==null?void 0:aA.audio)})),this.emitter.emit("adapted level")}),this.emitter.on("text track data",R=>{const W=U(this,qA).find(j=>j.language===R.language),tA=this.modules.sync.getTimeshiftOffset()/1e3,K=tA-U(this,TQ);if(l(this,TQ,tA),W){if(W.cues)for(const j of W.cues)j.startTime-=K,j.endTime-=K;for(const j of R.cues){const aA=new VTTCue(j.startTime-tA,j.endTime-tA,j.text);W.addCue(aA)}}}),this.emitter.on("received signal",R=>{var tA;const W=R,x=this.modules.subscription.getCurrentSubscription();switch(this.logger.debug("received",S({},W)),W.type){case"client ip":this.clientIp=W.ip;break;case"renditions":this.updateTextTracks(W.renditions),l(this,yQ,this.filterRenditions(W.renditions).then(K=>{this.emitter.emit("renditions",{renditions:K,channelId:this.currentSubscription.channelId}),this.emit("rendition levels",this.modules.renditions.getRenditionLevels()),this.emitLanguagesIfChanged()}).finally(()=>{l(this,yQ,void 0)}));break;case"subscription changed":try{cC(W.subscription)}catch(K){this.emitter.emit("error",new X("Subscription failed validation",{source:K instanceof Error?K:void 0,isFatal:!1,code:"subscription_failed_validation"}))}this.emitter.emit("subscription changed",{reset:W.reset,to:W.subscription,from:this.modules.subscription.getCurrentSubscription()}),W.reset&&x.channelId!==W.subscription.channelId&&(this.emit("error",Po(W.subscription.channelId)),this.emit("channel switch failed",{channelId:x.channelId})),this.modules.sync.timeshiftOnAudio=!((tA=W.subscription.video)!=null&&tA.codec),this.modules.adaptivity.reset();break;case"timing info":this.modules.sync.updateChannelSyncInfo(W.timingInfo.channelId,W.timingInfo),this.emit("server wallclock time",W.timingInfo.wallclockTime);break}}),this.emitter.on("channel switch timeout",R=>{this.emit("error",Po(R)),this.emit("channel switch failed",{channelId:this.currentSubscription.channelId})}),this.emitter.on("received data",R=>{const W=this.modules.subscription.getCurrentSubscription(),x=dI(R);if(!W){this.logger.warn("Received unwanted message",S({},x));return}Fe(O(S({},x),{channelId:W.channelId}))}),this.emitter.on("received moq data",R=>{var j,aA,fA;const W=R.payload.mediaType(),x=R.channelId,tA=R.renditionId,K=this.modules.sync.processFragment(x,R.payload);if(R.switchInfo.channelId&&(R.switchInfo.drmTransition&&this.emitter.emit("error",jo("Switching between DRM and non-DRM channels is not supported",!0)),this.encryptedMediaExtensions.onChannelSwitch(),this.emit("rendition levels",this.modules.renditions.getRenditionLevels()),this.modules.event.addEvent({type:"channel switch",channelId:R.switchInfo.channelId,timestamp:K.baseMediaDecodeTime()/K.timescale()*1e3})),R.switchInfo.language&&this.modules.event.addEvent({type:"language switch",language:R.switchInfo.language,timestamp:K.baseMediaDecodeTime()/K.timescale()*1e3}),this.modules.incomingData.add(W,R.payload.rawBytes().byteLength),K.fragment().emsgs.forEach(N=>{if(!N.presentationTime)return;const v=LE(N.data);v&&this.modules.event.addEvent({id:N.id,timestamp:N.presentationTime/N.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:v.txx.value,type:"metadata"})}),this.modules.decoder){const N=(j=K.header().init().moov.traks[0])==null?void 0:j.mdia.minf.stbl.stsd,v=(aA=N==null?void 0:N.avc1)==null?void 0:aA.avcC.bytes,AA=(fA=N==null?void 0:N.codec)!=null?fA:"h264";if(v){const nA=v.buffer.slice(v.byteOffset,v.byteOffset+v.byteLength);if(W==="text")throw new Error("Subtitles are not supported");this.emitter.emit("init segment",{initSegment:{channelId:x,renditionId:tA,data:nA,timescale:1e3,type:W,codec:AA},mimeType:W})}for(let nA=0;nA<K.samplesCount();nA++){const f=K.sample(nA);f&&this.emitter.emit("coded sample",O(S({},f),{renditionId:tA,channelId:x,data:f.data.buffer.slice(f.data.byteOffset,f.data.byteOffset+f.data.byteLength)}))}}else this.emitter.emit("fragment",{mimeType:R.mimeType,codec:R.codec,fragment:K,channelId:x,renditionId:tA})});const uA=this.options.get("container");uA&&this.attach(uA),this.logger.info("Created Vindral instance",{options:this.options});const Fe=R=>d(this,null,function*(){const W=R.channelId;U(this,yQ)&&(yield U(this,yQ));const x=this.modules.renditions.getRendition(R.renditionId,W);if(!oI(R.flags)){if(lI(R.flags)){const K=new TextDecoder().decode(R.payload),j=this.modules.sync.getTimeshiftOffset();if(R.renditionId!==0){const aA=uo(K);if(aA&&aA.language!==void 0){const N=new gl().parse(aA.content||""),v=j/1e3,AA=U(this,qA).find(f=>f.language===aA.language),nA=v-U(this,TQ);if(l(this,TQ,v),AA){if(AA.cues)for(const f of AA.cues)f.startTime-=nA,f.endTime-=nA;for(const f of N){const UA=new VTTCue(f.startTime-v,f.endTime-v,f.text);AA.addCue(UA)}}}}else this.modules.event.addEvent({timestamp:R.timestamp/R.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:K,type:"metadata"})}else if(x!=null&&x.codec){const tA=h(x.codec);if(tA==="text")throw new Error("Subtitles are not supported");if(this.modules.incomingData.add(tA,R.payload.byteLength),aI(R.flags)){const K=O(S({type:tA,data:R.payload,codec:x.codec},R),{channelId:W}),j=iI(K.codec,K.payload);j&&this.sizes.set(K.renditionId,j);const aA=Yt({codec:x.codec,codecString:x.codecString});this.emitter.emit("init segment",{initSegment:K,mimeType:aA}),this.emit("initialized media")}else{const K=gC(R,x,this.sizes.get(R.renditionId));let j=this.sampleProcessingSesssions.get(tA);if(!j)j=EC(this.modules.sync.processSample(K)),this.sampleProcessingSesssions.set(tA,j);else{const aA=j(this.modules.sync.processSample(K),this.isSwitchingRenditionLevel&&K.type==="video");let fA=K;aA.forEach(N=>{this.modules.event.extractEvent(N,fA),this.emitter.emit("coded sample",N),fA=N})}}}}});this.options.get("maxVideoBitRate")!==Number.MAX_SAFE_INTEGER&&(this.maxVideoBitRate=this.options.get("maxVideoBitRate")),this.options.get("maxAudioBitRate")!==Number.MAX_SAFE_INTEGER&&(this.maxAudioBitRate=this.options.get("maxAudioBitRate")),Gt(this.options.get("maxSize"),uF())||(this.maxSize=this.options.get("maxSize")),this.options.get("burstEnabled")&&r.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){if(e===this.muted)return;const t=this.playbackSource.muted;this.playbackSource.muted=e,!e&&t&&!this.playbackSource.isPaused&&this.playbackSource.play()}get muted(){return this.playbackSource.muted}get media(){return this.options.get("media")}get videoBitRate(){return this.modules.incomingData.averageBitRate("video")}get audioBitRate(){return this.modules.incomingData.averageBitRate("audio")}get connectionState(){return this.modules.connection.getState()}get playbackState(){return this.modules.playback.getState()}get bufferFullness(){return this.modules.playback.getBufferFullness()}get sizeBasedResolutionCapEnabled(){return this.modules.constraintCap.sizeBasedResolutionCapEnabled}set sizeBasedResolutionCapEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e}get abrEnabled(){return this.modules.adaptivity.isEnabled}set abrEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e?this.options.get("sizeBasedResolutionCapEnabled"):!1,this.modules.adaptivity.isEnabled=e,this.alignSizeAndBitRate(this.targetSubscription)}get serverEdgeTime(){return this.modules.sync.getLiveEdgeTimeLatencyAdjusted(this.currentSubscription.channelId)}get serverWallclockTime(){return this.modules.sync.getWallclockTimeLatencyAdjusted(this.currentSubscription.channelId)}get currentTime(){return this.modules.sync.serverCurrentTime}get channelCurrentTime(){return this.modules.sync.channelCurrentTime}get targetBufferTime(){return this.modules.playback.getTargetBufferTime()}set targetBufferTime(e){this.modules.playback.getTargetBufferTime()!==e&&(this.modules.playback.setTargetBufferTime(e),this.playbackSource.currentTime=this.modules.sync.serverCurrentTime,this.options.get("burstEnabled",this.channelId)?this.modules.subscription.enableBurst(this.targetBufferTime):this.modules.subscription.enableBurst(0))}get playbackLatency(){var e;if(this.playbackSource.currentTime!==0)return this.targetBufferTime+((e=this.modules.sync.drift)!=null?e:0)+this.modules.connection.rtt/2}get playbackWallclockTime(){if(!(!this.serverWallclockTime||!this.playbackLatency))return this.serverWallclockTime-this.playbackLatency}get channels(){return this._channels}get languages(){return this.modules.renditions.getLanguages()}get language(){return this.modules.subscription.getTargetSubscription().audio.language}set language(e){this.modules.subscription.setLanguage(e)}set textTrack(e){U(this,qA).forEach(t=>{t.label===e?t.mode="showing":t.mode="hidden"}),this.emitter.emit("text track",e)}get textTracks(){return U(this,qA).filter(e=>e.mode!=="disabled").map(e=>e.label)}get textTrack(){var e;return(e=U(this,qA).find(t=>t.mode==="showing"))==null?void 0:e.label}get channelId(){var e,t;return(t=(e=this.modules)==null?void 0:e.subscription.getTargetSubscription().channelId)!=null?t:this.options.get("channelId")}set channelId(e){if(e===this.channelId)return;this.modules.subscription.setChannelId(e);const t=this.options.get("media")==="audio"?[]:this.options.get("videoCodecs"),B=this.modules.renditions.getAudioRenditions(e),F=this.modules.renditions.getVideoRenditions(e),n=this.targetSubscription.audio.language,s=B==null?void 0:B.some(r=>r.language===n),a=t.find(r=>(F==null?void 0:F.find(E=>E.codec===r))!==void 0);a&&this.modules.subscription.setVideoCodec(a),this.logger.debug("Channel switch - started",{audioRenditions:B,targetSubscriptionLanguage:n,targetHasCurrentLanguage:s}),this.alignSizeAndBitRate(this.targetSubscription)}get maxSize(){var B,F;const{width:e,height:t}=(F=(B=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:B.video)!=null?F:uF();return{width:e,height:t}}set maxSize(e){this.modules.constraintCap.setUserSpecifiedCap({video:{width:e.width,height:e.height}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxVideoBitRate(){var e,t;return(t=(e=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:e.video.bitRate)!=null?t:st()}set maxVideoBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({video:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxAudioBitRate(){var e,t;return(t=(e=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:e.audio.bitRate)!=null?t:st()}set maxAudioBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({audio:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get renditionLevels(){return this.modules.renditions.getRenditionLevels()}get currentRenditionLevel(){return this.modules.renditions.getRenditionLevel()}get targetRenditionLevel(){return this.modules.renditions.getRenditionLevel(this.modules.subscription.getTargetSubscription())}get isSwitchingRenditionLevel(){return this.modules.subscription.isSwitchingSubscription()}get videoBufferedRanges(){var e,t,B,F;return(F=(B=(e=this.modules.mseModule)==null?void 0:e.getBuffer("video"))!=null?B:(t=this.modules.decoder)==null?void 0:t.getBuffer("video"))!=null?F:[]}get audioBufferedRanges(){var e,t,B,F;return(F=(B=(e=this.modules.mseModule)==null?void 0:e.getBuffer("audio"))!=null?B:(t=this.modules.decoder)==null?void 0:t.getBuffer("audio"))!=null?F:[]}getApiClient(){return this.modules.connection.apiClient}get lastBufferEvent(){return this.modules.playback.getLastBufferStateEvent()}get activeRatios(){return this.modules.qualityOfService.activeRatios()}get bufferingRatios(){return this.modules.qualityOfService.bufferingRatios()}get timeSpentBuffering(){return this.modules.qualityOfService.timeSpentBuffering()}get timeActive(){return this.modules.qualityOfService.timeActive()}get mediaElement(){return this.element}get audioNode(){var e;return(e=this.modules)!=null&&e.canvasModule?this.modules.canvasModule.audioNode:void 0}get drmStatistics(){var e;return(e=this.encryptedMediaExtensions)==null?void 0:e.getStatistics()}get uptime(){return Date.now()-this.createdAt}suspend(){this.isSuspended||(Object.values(this.modules).forEach(e=>{e&&"suspend"in e&&e.suspend()}),this.isSuspended=!0)}unsuspend(){this.isSuspended&&(Object.values(this.modules).forEach(e=>{e&&"unsuspend"in e&&e.unsuspend()}),this.isSuspended=!1)}alignSizeAndBitRate(e){const t=this.modules.constraintCap.constrainSubscription(O(S({},e),{video:S({},e.video),audio:S({},e.audio)})),B=this.modules.constraintCap.getUserSpecifiedCap();!this.abrEnabled&&B&&(t.audio.bitRate=B.audio.bitRate,t.video.bitRate=B.video.bitRate,t.video.width=B.video.width,t.video.height=B.video.height);const F=this.modules.renditions.getRenditionLevel(t);if(F){if(F.video&&(this.modules.subscription.setVideoBitRate(F.video.bitRate),this.modules.subscription.setSize(F.video)),F.audio)this.modules.subscription.setAudioBitRate(F.audio.bitRate),this.modules.subscription.setLanguage(F.audio.language);else if(t.audio.language){let n=this.modules.renditions.getAudioRenditions(t.channelId);!this.abrEnabled&&B&&(n=n==null?void 0:n.filter(g=>g.bitRate<B.audio.bitRate));const s=t.audio.language,a=n==null?void 0:n.some(g=>g.language===s),r=n==null?void 0:n.find(g=>g.language),E=(n==null?void 0:n.length)&&n[0]||void 0;a||(r?(this.logger.debug("Randomizing language since target did not have current language"),this.modules.subscription.setAudioBitRate(r.bitRate),this.modules.subscription.setLanguage(r.language)):(this.logger.debug("Randomizing audio rendition since target did not have current language"),E!=null&&E.bitRate&&this.modules.subscription.setAudioBitRate(E.bitRate),this.modules.subscription.setLanguage(E==null?void 0:E.language)))}}}get currentSubscription(){return this.modules.subscription.getCurrentSubscription()}get targetSubscription(){return this.modules.subscription.getTargetSubscription()}willUseMediaSource(){return this.browser.supportsMediaSource&&this.options.get("mseEnabled")}};TQ=new WeakMap,qA=new WeakMap,yQ=new WeakMap,i(Ue,"MAX_POOL_SIZE",10),i(Ue,"INITIAL_MAX_BIT_RATE",2.5*1e3*1e3),i(Ue,"DISCONNECT_TIMEOUT",15*1e3),i(Ue,"REMOVE_CUE_THRESHOLD",1e3*10);let rn=Ue;const dn={buffering:"_buffering_1ccif_1","buffering-fullscreen":"_buffering-fullscreen_1ccif_16",hidden:"_hidden_1ccif_25","buffering-indicator":"_buffering-indicator_1ccif_31"};class Ae{constructor(A){i(this,"attach",A=>{this.detach(),A.appendChild(this.element)});i(this,"attachBefore",(A,e)=>{this.detach(),A.insertBefore(this.element,e)});i(this,"detach",()=>this.element.remove());this.element=A}}const wa=dn.hidden,CC=dn.buffering,Br=dn["buffering-fullscreen"],RC=dn["buffering-indicator"];class Ur extends Ae{constructor(){super(document.createElement("div"));i(this,"indicator",document.createElement("div"));i(this,"isHidden",()=>this.element.classList.contains(wa));i(this,"setHidden",e=>e?this.hide():this.show());i(this,"hide",()=>this.element.classList.add(wa));i(this,"show",()=>this.element.classList.remove(wa));i(this,"fullscreen",e=>{e?this.element.classList.add(Br):this.element.classList.remove(Br)});this.element.className=CC,this.indicator.className=RC,this.element.appendChild(this.indicator)}}class Fr extends $A{constructor(e){super();i(this,"config");i(this,"hlsUrl");i(this,"element");i(this,"connectingTimeout");i(this,"castingAvailable",!1);i(this,"updateAuthenticationToken",e=>{this.config.authenticationToken=e,this.hlsUrl=this.getHlsUrl(),this.castingAvailable&&(this.element.src=this.hlsUrl)});i(this,"unload",()=>{this.element&&(this.element.removeEventListener("webkitplaybacktargetavailabilitychanged",this.onAirPlayAvailable),this.element.removeEventListener("webkitcurrentplaybacktargetiswirelesschanged",this.onAirPlayPlaybackChanged),this.element.remove())});i(this,"onAirPlayAvailable",e=>{switch(e.availability){case"available":{this.castingAvailable=!0,this.element.src!==this.hlsUrl&&this.checkHlsUrl(this.hlsUrl).then(B=>{B&&(this.element.src=this.hlsUrl,this.emit("available"))});break}case"not-available":this.castingAvailable=!1;break}});i(this,"onAirPlayPlaybackChanged",()=>{window.clearTimeout(this.connectingTimeout),this.element.webkitCurrentPlaybackTargetIsWireless?(this.emit("connected"),this.element.style.display="block",this.element.paused&&this.element.play()):(this.emit("disconnected"),this.element.pause(),this.element.src="",this.element.src=this.hlsUrl,this.element.style.display="none")});this.config=e,this.hlsUrl=this.getHlsUrl(),this.element=document.createElement("video"),this.element.style.position="absolute",this.element.style.top="0",this.element.style.bottom="0",this.element.style.left="0",this.element.style.right="0",this.element.style.width="100%",this.element.style.height="100%",this.element.style.zIndex="1001",this.element.style.display="none",this.element.id="vindral-airplay-element",this.element.slot="overlay",this.element.playsInline=!0,this.element.controls=!0,this.element.preload="metadata",this.element.addEventListener("webkitplaybacktargetavailabilitychanged",this.onAirPlayAvailable),this.element.addEventListener("webkitcurrentplaybacktargetiswirelesschanged",this.onAirPlayPlaybackChanged),this.config.container.appendChild(this.element)}get casting(){return this.element.webkitCurrentPlaybackTargetIsWireless}set channelId(e){}showPlaybackTargetPicker(){this.element.paused&&(this.element.play(),this.connectingTimeout=window.setTimeout(()=>{this.casting||(this.element.pause(),this.element.src="",this.element.src=this.hlsUrl)},3e4)),this.element.webkitShowPlaybackTargetPicker()}static isAirPlaySupported(){return!!window.WebKitPlaybackTargetAvailabilityEvent}getHlsUrl(){const e=new URL(`/api/hls?channelId=${this.config.channelId}`,this.config.url);return this.config.authenticationToken&&e.searchParams.set("authenticationToken",this.config.authenticationToken),e.toString()}checkHlsUrl(e){return d(this,null,function*(){try{return(yield fetch(e,{method:"HEAD"})).ok}catch(t){return!1}})}}const nr={bar:"_bar_zames_1",hidden:"_hidden_zames_45"},uB={"channel-selection-item":"_channel-selection-item_suenn_1","channel-selection-item-selected":"_channel-selection-item-selected_suenn_8","channel-selection-item-image":"_channel-selection-item-image_suenn_13",withThumbnails:"_withThumbnails_suenn_19","hide-on-small":"_hide-on-small_suenn_27"},hC={"icon-button":"_icon-button_5fg7v_1"},sr={enter:{viewBox:"-12 -12 38 38",content:`<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-5.000000, -5.000000)">
|
|
50
|
+
`);switch(A){case"beacon":navigator.sendBeacon(this.options.url,e);break;case"fetch":default:this.parentContext.connectionState==="connected"?this.emitter.emit("send signal",{type:"telemetry",body:e}):yield Do(new URL(this.options.url),{body:e,headers:{"Content-Type":"text/plain"}});break}this.retries=0,this.unsentLines.clear()}catch(e){this.retries++}}}));i(this,"onVisibilityChange",A=>{A==="hidden"&&(this.addStats({isFinal:!0,initiator:"visibilitychange"}),this.send("beacon"))});i(this,"onPageHide",A=>{this.addStats({isFinal:!0,initiator:"pagehide"},{persisted:A.persisted}),this.send("beacon")});i(this,"onRejection",A=>this.addError(A.reason));i(this,"onError",A=>this.addError(A.error));i(this,"addError",A=>{const{includeErrors:e,maxErrorReports:t}=this.options;if(e&&A instanceof X){if(this.errorCount++,this.errorCount>t)return;const B=this.parentContext.getStatistics();this.unsentLines.push(Za("error",S(S({},B),A.toStringifiable())))}});this.logger=A,this.emitter=e,this.options=S(S({},rC),t),this.parentContext=B}};i(os,"create",(A,e,t,B)=>new os(A,e,t,B));let on=os;const ls=class ls{constructor(A,e,t){i(this,"logger");i(this,"element");i(this,"documentState");i(this,"timers",new pA);i(this,"unload",()=>{this.timers.unload()});i(this,"unpause",()=>{this.element.userHasProvidedInput&&this.element.isPaused&&this.documentState.isVisible&&this.documentState.isOnline&&(this.logger.debug("Unpause video"),this.element.tryPlay())});this.logger=A,this.element=e,this.documentState=t,this.timers.setInterval(this.unpause,100)}};i(ls,"create",(A,e,t)=>new ls(A,e,t));let ln=ls;const dC=6,EC=Q=>{let A=[Q],e=0,t=0,B=!1;const F=(s,a)=>{var T,L,Z;s.flags&&SB(s.flags)&&(e=(T=s.compositionTimeOffset)!=null?T:0),s.timestamp+=e,s.compositionTimeOffset=((L=s.compositionTimeOffset)!=null?L:0)-e;const r=s.timestamp/s.timescale,g=a.flags&&SB(a.flags)?(Z=a.compositionTimeOffset)!=null?Z:0:e,J=(a.timestamp+g)/a.timescale,u=Math.max(0,Math.round((J-r)*s.timescale));return u>0&&(t=u),O(S({},s),{duration:u>0?u:t})};return(s,a=!1)=>{if(s.flags&&SB(s.flags)&&a&&(B=!B),!(a&&A.length<dC&&B)&&A.length>0){B=!1;let E=s;for(let c=A.length-1;c>0;c--){const J=A[c];if(!J||!E)break;J.timestamp>=E.timestamp?A.splice(c,1):E=J}const g=A.map((c,J)=>F(c,A[J+1]||s));return A=[s],g}return A.push(s),[]}},gC=(Q,A,e)=>{if(Lt(A))return S(O(S({},Q),{type:"video",codec:A.codec,isSync:SB(Q.flags),data:Q.payload,duration:0,width:A.width,height:A.height}),e);if(A.codec==="webvtt")throw new Error("WebVTT is not supported");return O(S({},Q),{type:"audio",channels:A.channels,sampleRate:A.sampleRate,codec:A.codec,language:A.language,isSync:SB(Q.flags),data:Q.payload,duration:0})};class IC{constructor(){i(this,"highEntropyValues");var A;(A=self.navigator.userAgentData)==null||A.getHighEntropyValues(["architecture","model","platformVersion","fullVersionList"]).then(e=>{this.highEntropyValues=e})}getUserAgentInformation(){var F,n,s,a,r,E;const A=window.location.origin,t=!A||A=="null"?"":`${window.location.pathname}${window.location.search}`.substring(0,1e3),B={locationOrigin:window.location.origin,locationPath:t,ancestorOrigins:((F=window.location.ancestorOrigins)==null?void 0:F.length)>0?Array.from(window.location.ancestorOrigins):void 0,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory};if(self.navigator.userAgentData&&this.highEntropyValues){const g="1",c=[...(n=this.highEntropyValues.brands)!=null?n:[]];c.sort((Z,M)=>Z.brand.localeCompare(M.brand));const J=[...(s=this.highEntropyValues.fullVersionList)!=null?s:[]];J.sort((Z,M)=>Z.brand.localeCompare(M.brand));const u=J.map(Z=>Z.version),D=c.map(Z=>Z.brand),T=c.map(Z=>Z.version),L=parseInt((r=(a=this.highEntropyValues.platformVersion)==null?void 0:a.split(".")[0])!=null?r:g);return S({userAgentLegacy:window.navigator.userAgent,ua:{browser:{brands:D,fullVersionBrands:u,majorVersions:T},device:this.highEntropyValues.model||"Other",os:{family:this.highEntropyValues.platform||"Other",version:(E=this.highEntropyValues.platformVersion)!=null?E:g,major_version:Number.isFinite(L)?L:0}}},B)}else return S({userAgent:window.navigator.userAgent},B)}}const cC=Q=>{if(typeof Q!="object"||Q===null)throw new Error("not an object");if(!("video"in Q))throw new Error("missing video in subscription");if(!("audio"in Q))throw new Error("missing audio in subscription");if(!("channelId"in Q))throw new Error("missing channelId");return!0},Ue=class Ue extends $A{constructor(e){super();i(this,"pictureInPicture");i(this,"drm");i(this,"browser",us());i(this,"options");i(this,"element");i(this,"playbackSource");i(this,"emitter",new $A);i(this,"logger");i(this,"modules");i(this,"clientIp");i(this,"sessionId");i(this,"clientId",ko());i(this,"_channels",[]);i(this,"createdAt",Date.now());i(this,"hasCalledConnect",!1);i(this,"latestEmittedLanguages",[]);i(this,"wakeLock");i(this,"pool",new k(Ue.MAX_POOL_SIZE));i(this,"userAgentInformation",new IC);i(this,"encryptedMediaExtensions");o(this,TQ,0);o(this,qA,[]);i(this,"sampleProcessingSesssions",new Map);i(this,"sizes",new Map);i(this,"isSuspended",!0);i(this,"disconnectTimeout");o(this,yQ);i(this,"attach",e=>{var t;(t=this.wakeLock)==null||t.attach(e),e.appendChild(this.element)});i(this,"getOptions",()=>this.options.getOptions());i(this,"getThumbnailUrl",()=>{let e=this.options.get("edgeUrl")||this.options.get("url");e=e.replace("wss://","https://"),e=e.replace("ws://","http://"),e=e.endsWith("/")?e.slice(0,-1):e;const t=window.devicePixelRatio||1,B=Math.round(window.innerWidth*t),F=Math.round(window.innerHeight*t),n=this.options.get("authenticationToken"),s=n?`&auth.token=${n}`:"";return`${e}/api/thumbnail?channelId=${this.channelId}${s}&width=${B}&height=${F}`});i(this,"updateAuthenticationToken",e=>{this.logger.debug("Got new auth token",{token:e}),this.options.set("authenticationToken",e),this.emitter.emit("send signal",{type:"refresh auth",token:e})});i(this,"connect",()=>{this.hasCalledConnect||(this.play(),this._connect())});i(this,"_connect",()=>{var e,t;this.hasCalledConnect||(this.hasCalledConnect=!0,Object.values(this.modules).forEach(B=>{B&&"load"in B&&B.load()}),this.unsuspend(),this.playbackSource instanceof Ys&&((t=(e=this.playbackSource).load)==null||t.call(e)),this.modules.connection.connect())});i(this,"getCastOptions",()=>({url:this.options.get("url"),channelId:this.options.get("channelId"),channelGroupId:this.options.get("channelGroupId"),authenticationToken:this.options.get("authenticationToken"),language:this.options.get("language"),logLevel:this.options.get("logLevel"),minBufferTime:this.options.get("minBufferTime"),tags:this.options.get("tags"),ownerSessionId:this.sessionId,edgeUrl:this.options.get("edgeUrl"),media:this.options.get("media"),drm:this.options.get("drm")}));i(this,"onConnectInfo",e=>d(this,null,function*(){var r;this.sessionId=ko();const t=this.modules.subscription.getTargetSubscription(),B=e.channels.find(E=>E.channelId===t.channelId);if(this.emitter.emit("connect info",e),this._channels=e.channels,this.updateTextTracks((r=B==null?void 0:B.renditions)!=null?r:[]),!this.textTrack&&this.options.get("textTrack")&&(this.textTrack=this.options.get("textTrack")),yield Promise.all(e.channels.map(E=>d(this,null,function*(){E.overrides&&this.options.addOverrides(E.channelId,E.overrides),E.renditions=yield this.filterRenditions(E.renditions),this.modules.renditions.setRenditions(E.channelId,E.renditions)}))),!B)throw Ko("external");const F=this.options.getOverride("sizeBasedResolutionCapEnabled",this.channelId);F!==void 0&&(this.modules.constraintCap.sizeBasedResolutionCapEnabled=F);const n=this.options.getOverride("minBufferTime",this.channelId),s=this.options.getOverride("maxBufferTime",this.channelId);if((n||s)&&(this.modules.bufferTime.updateConfig({minBufferTime:this.options.get("minBufferTime",this.channelId),maxBufferTime:this.options.get("maxBufferTime",this.channelId)}),this.targetBufferTime=this.options.get("minBufferTime",this.channelId)),this.options.get("burstEnabled",this.channelId)&&this.modules.subscription.enableBurst(this.targetBufferTime),this.emit("is live",B.isLive),!B.isLive)throw new Error("Waiting for channel to go live");this.patchSubscription(B,this.modules.connection.estimatedBandwidth),yield this.initializeDecodingModule(),this.resetModules(),this.emit("rendition levels",this.modules.renditions.getRenditionLevels()),this.emit("channels",this.channels),this.emitLanguagesIfChanged(),this.sampleProcessingSesssions.clear();const a=this.options.get("burstEnabled",this.channelId);return{video:this.targetSubscription.video,audio:this.targetSubscription.audio,burstMs:a?this.targetBufferTime:void 0,sessionId:this.sessionId,clientId:this.clientId,channelId:this.channelId,channelGroupId:this.options.get("channelGroupId"),authToken:this.options.get("authenticationToken"),textTrack:this.textTrack}}));i(this,"emitLanguagesIfChanged",()=>{const e=this.modules.renditions.getLanguages(),t=this.latestEmittedLanguages;e.length==t.length&&e.every(F=>t.includes(F))||(this.logger.debug("Emitting new languages",{currentLanguages:e}),this.latestEmittedLanguages=e,this.emit("languages",this.latestEmittedLanguages))});i(this,"updateTextTracks",e=>{const t=e.filter(B=>B.codec==="webvtt");t.forEach(B=>{if(!U(this,qA).find(n=>n.language===B.language)){if(this.modules.canvasModule){const n=this.modules.canvasModule.textTracks.addTextTrack(B.kind,B.label||B.language||"",B.language||"");U(this,qA).push(n)}else if(this.mediaElement instanceof HTMLVideoElement){const n=this.mediaElement.addTextTrack(B.kind,B.label||B.language,B.language);U(this,qA).push(n)}}});for(const B of U(this,qA))t.find(n=>n.language===B.language)?B.mode==="disabled"&&(B.mode="hidden"):B.mode="disabled";this.emit("text tracks",this.textTracks)});i(this,"cleanupTextTracks",(e=this.currentTime-2e4)=>{U(this,qA).forEach(t=>{if(t.cues)for(const B of t.cues)B.endTime*1e3<e-2e3&&t.removeCue(B)})});i(this,"filterRenditions",e=>d(this,null,function*(){const t=yield Promise.all(e.map(s=>d(this,null,function*(){var E,g,c;if(Ht(s))return!0;if(!Lt(s)||!this.isSupportedVideoCodecProfile(s.codec,s.codecString))return!1;if(!this.willUseMediaSource()){const J=this.options.get("advanced"),u=(E=J.wasmDecodingConstraint.bitRate)!=null?E:Number.MAX_SAFE_INTEGER,D=(g=J.wasmDecodingConstraint.width)!=null?g:Number.MAX_SAFE_INTEGER,T=(c=J.wasmDecodingConstraint.height)!=null?c:Number.MAX_SAFE_INTEGER;return s.bitRate<=u&&s.width<=D&&s.height<=T}const a=yield SI(s);if(!a.supported||s.codec=="av1"&&!a.smooth&&!a.powerEfficient)return!1;const r=this.options.getOverride("maxVideoBitRate",this.channelId);return r?r>=s.bitRate:!0})));let B=e.filter((s,a)=>t[a]);const F=B.filter(s=>s.codec==="h264").reverse()[0],n=B.filter(s=>s.codec==="av1").reverse()[0];return F&&n&&F.width>n.width&&F.height>n.height&&(B=B.filter(s=>s.codec!=="av1")),B}));i(this,"patchSubscription",(e,t)=>{const B=Math.min(this.options.get("maxVideoBitRate"),Ue.INITIAL_MAX_BIT_RATE,t,this.targetSubscription.video.bitRate),F=Math.min(this.options.get("maxAudioBitRate"),Ue.INITIAL_MAX_BIT_RATE,t,this.targetSubscription.audio.bitRate),n=this.options.get("media")==="audio"?[]:this.options.get("videoCodecs",this.channelId),s=this.supportedAudioCodecs(),a=e.renditions.filter(Ht),r=e.renditions.filter(Lt),E=s.find(u=>a.find(D=>D.codec===u)!==void 0),g=n.find(u=>r.find(D=>D.codec===u)!==void 0),c=a.map(u=>u.language);if(this.logger.debug("supported and selected codecs",{audioCodecs:s,videoCodecs:n,audioCodec:E,videoCodec:g}),g){const u=this.options.get("maxSize");this.modules.subscription.setVideoConstraint(S({codec:g,bitRate:this.abrEnabled?B:this.options.get("maxVideoBitRate")},u))}E&&(this.modules.subscription.setAudioConstraint({codec:E,bitRate:this.abrEnabled?F:this.options.get("maxAudioBitRate"),language:this.options.get("language")}),(!c.includes(this.options.get("language"))||this.language===void 0)&&this.modules.subscription.setLanguage(c[0])),this.alignSizeAndBitRate(this.targetSubscription);const J=this.modules.subscription.getTargetSubscription();this.emitter.emit("subscription changed",{to:J,from:this.modules.subscription.getCurrentSubscription()})});i(this,"isSupportedVideoCodecProfile",(e,t)=>{if(this.willUseMediaSource()){const B=ae();return B?B.isTypeSupported(Yt({codec:e,codecString:t})):!0}if(e==="h264"){const B=!!(t!=null&&t.startsWith("avc1.42")),F=!!(t!=null&&t.startsWith("avc1.66."));return B||F}return e!=="av1"});i(this,"supportedAudioCodecs",()=>{if(this.options.get("media")==="video")return[];const e=[];return(this.browser.supportsMp4Opus&&this.options.get("mseOpusEnabled")||!this.willUseMediaSource())&&e.push("opus"),this.willUseMediaSource()&&e.push("aac"),e});i(this,"initializeDecodingModule",()=>d(this,null,function*(){var B,F;const e=this.currentRenditionLevel,t=[];if(!e)throw new X("No currentRenditionLevel",{code:"no_current_rendition_level",isFatal:!1});if(e!=null&&e.video&&t.push({type:"video",mimeType:Yt(e.video),codec:e.video.codec}),e!=null&&e.audio&&t.push({type:"audio",codec:e.audio.codec,mimeType:Yt(e.audio)}),t.length===0)throw new X("Can't initialize decoding module without tracks",{code:"no_tracks",isFatal:!1});if(this.willUseMediaSource()&&this.element instanceof HTMLMediaElement)this.emitter.emit("flush buffers"),yield(B=this.modules.mseModule)==null?void 0:B.setSourceBuffers(t);else{const n=yield Ea.create(this.emitter,this.logger.createContext("DecoderModule"),t,this.playbackSource,this.pool);(F=this.modules.decoder)==null||F.unload(),this.modules.decoder=n,this.modules.decoder.load()}}));i(this,"unload",()=>d(this,null,function*(){var e,t,B;this.logger.debug("Unloading modules..."),yield Promise.all(Object.values(this.modules).map(F=>F==null?void 0:F.unload())),(e=this.wakeLock)==null||e.unload(),this.pool=new k(Ue.MAX_POOL_SIZE),(B=(t=this.playbackSource).unload)==null||B.call(t),this.element.remove(),this.emitter.reset(),this.encryptedMediaExtensions.unload(),this.reset(),this.logger.debug("Unloaded modules")}));i(this,"userInput",()=>{this.play()});i(this,"pause",()=>{this.options.get("pauseSupportEnabled")&&this.playbackState!=="paused"&&(this.playbackSource.pause(),this.hasCalledConnect&&this.suspend())});i(this,"registerDebugInstance",()=>{hI(this)});i(this,"play",()=>{var e;this.hasCalledConnect?this.unsuspend():this.playbackState!=="playing"&&(this._connect(),self.addEventListener("__vindral_register_debug__",this.registerDebugInstance),this.modules.timer.setInterval(()=>this.cleanupTextTracks(),Ue.REMOVE_CUE_THRESHOLD)),(e=this.wakeLock)==null||e.enable(),this.playbackState==="paused"&&(this.resetModules(),this.emitter.emit("flush buffers"),this.cleanupTextTracks(Number.MAX_SAFE_INTEGER)),this.playbackSource.play()});i(this,"getStatistics",()=>Object.values(this.modules).reduce((e,t)=>t&&"getStatistics"in t?S(S({},e),t.getStatistics()):e,this.getRuntimeInfo()));i(this,"resetModules",()=>{Object.values(this.modules).forEach(e=>{e&&"reset"in e&&e.reset()}),this.sampleProcessingSesssions.clear(),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1});i(this,"getRuntimeInfo",()=>{const e=this.modules.canvasModule?this.options.get("iosMediaElementEnabled"):void 0;return S({uptime:Date.now()-this.createdAt,version:"4.1.1-12-g2ca2f288",clientId:this.clientId,sessionId:this.sessionId,channelId:this.channelId,channelGroupId:this.options.get("channelGroupId"),ip:this.clientIp,url:this.options.get("url"),timeToFirstFrame:this.timeToFirstFrame(),iosMediaElementEnabled:e},this.userAgentInformation.getUserAgentInformation())});i(this,"onMediaElementState",e=>{this.logger.info("media element state",{state:e}),this.options.get("pauseSupportEnabled")&&(e==="paused"?this.modules.documentState.isVisible&&(this.suspend(),this.modules.connection.disconnect()):(this.unsuspend(),this.modules.connection.getState()==="disconnected"&&this.modules.connection.unsuspend()))});i(this,"onBufferEvent",e=>{var B,F,n,s;this.emit("buffer state event",e);const t=!this.playbackSource.isActivated||this.playbackSource.isPaused;if(e==="filled"&&t){const a=Math.max(this.currentTime,(F=(B=this.videoBufferedRanges[0])==null?void 0:B.start)!=null?F:0,(s=(n=this.audioBufferedRanges[0])==null?void 0:n.start)!=null?s:0);this.logger.info("Buffer filled - starting playback",{currentTime:a}),this.playbackSource.currentTime=a,this.modules.sync.activateSyncAdjustments(),this.playbackSource.isActivated=!0}else e==="drained"&&this.playbackSource.isPaused&&(this.playbackSource.isActivated=!1,this.modules.sync.deactivateSyncAdjustments())});i(this,"timeToFirstFrame",()=>{const e=this.modules.playback.getFirstFrameTime(),t=this.modules.connection.firstConnectionTime;if(t&&e)return e-t});this.options=new RI(S(S({},AE),RE(e)));const t=["localhost","127.0.0.1"];e.telemetryEnabled===void 0&&t.includes(location.hostname)&&this.options.set("telemetryEnabled",!1);const B={channelId:this.options.get("channelId"),audio:{language:this.options.get("language"),bitRate:this.options.get("maxAudioBitRate")},video:{bitRate:this.options.get("maxVideoBitRate"),width:this.options.get("maxSize").width,height:this.options.get("maxSize").height}},F=WA.get();F.setLevel(this.options.get("logLevel")),F.setDebug(!1),this.logger=F;const n=ua.create(this.emitter,this.logger.createContext("PictureInPictureModule")),s=pA.create(),a=la.create(this.emitter,this.logger.createContext("ConnectionModule"),{reconnectHandler:this.options.get("reconnectHandler"),options:this.options,onConnectInfo:this.onConnectInfo}),r=pa.create(this.logger.createContext("SubscriptionModule"),this.emitter,B),E=Wa.create(this.emitter,r),g=ma.create(this.emitter,this.logger.createContext("QualityOfServiceModule")),c=ka.create(this.emitter,this.logger.createContext("PlaybackModule"),this,this.options.get("minBufferTime"));this.encryptedMediaExtensions=new Ql(this.emitter,this.logger.createContext("EncryptedMediaExtensions"),e.drm),this.drm={setHeaders:R=>{this.encryptedMediaExtensions.headers=R},setQueryParams:R=>{this.encryptedMediaExtensions.queryParams=R}};const J=ga.create(this.emitter),u=this.options.get("poster"),D=u===!0?this.getThumbnailUrl():u||void 0;let T,L,Z;if(this.willUseMediaSource()){const R=new Ys({type:this.options.get("media")=="audio"?"audio":"video",autoplay:!1,muted:this.options.get("muted")||this.options.get("media")==="video",logger:this.logger.createContext("MediaElement"),poster:D});R.on("buffer state",W=>this.emitter.emit("buffer state",W)),R.on("needs user input",W=>this.emitter.emit("needs user input",W)),R.on("volume state",W=>this.emit("volume state",W)),R.on("media element state",W=>this.onMediaElementState(W)),this.element=R.element,this.playbackSource=R,Ql.isSupported()&&this.encryptedMediaExtensions.attach(R.element),T=Va.create(this.logger.createContext("MseModule"),this.emitter,this.element),this.options.get("pauseSupportEnabled")||(L=ln.create(this.logger.createContext("UnpauseModule"),R,J)),this.options.get("pictureInPictureEnabled")&&this.emitter.emit("add picture in picture listener",{element:R.element})}else if(this.browser.platform.iosVersion>=15&&this.options.get("iosMediaElementEnabled")){const R=Ja.create(this.emitter,this.logger.createContext("ModernCanvasModule"),this.pool,this,{type:this.options.get("media")=="audio"?"audio":"video",muted:this.options.get("muted")||this.options.get("media")==="video",poster:D}),W=R.element();this.element=W.element,this.playbackSource=R,Z=R,this.options.get("pictureInPictureEnabled")&&this.browser.platform.iosVersion>15&&this.emitter.emit("add picture in picture listener",{element:this.element}),this.options.get("pauseSupportEnabled")||(L=ln.create(this.logger.createContext("UnpauseModule"),W,J))}else{const R=Sa.create(this.emitter,this.logger.createContext("LegacyCanvasModule"),this.pool,this,this.options.get("muted")||this.options.get("media")==="video");this.element=R.element(),this.playbackSource=R,Z=R,this.options.get("iosWakeLockEnabled")&&(this.wakeLock=new gI)}this.emitter.on("channel reset",this.resetModules),this.emitter.on("no data timeout",this.resetModules),this.emitter.on("media element state",R=>this.onMediaElementState(R)),this.emitter.on("volume state",R=>this.emit("volume state",R)),this.options.get("pauseSupportEnabled")||this.emitter.on("exit picture in picture",()=>s.setTimeout(()=>this.play(),0)),this.emitter.on("constraint cap changed",R=>{this.logger.info("new cap set",{cap:R}),this.alignSizeAndBitRate(this.targetSubscription)}),this.pictureInPicture={enter:()=>n.requestPictureInPicture(),exit:()=>n.exitPictureInPicture(),isActive:()=>n.isPictureInPictureActive(),isSupported:()=>n.isPictureInPictureSupported()},this.emitter.on("error",R=>{if(R.type()==="external"&&this.emit("error",R),R.isFatal())return()=>void this.unload()});const M=this.browser.platform.isIOS&&!this.browser.platform.isIpadOS,H=Da.create(this.emitter,this.logger.createContext("SyncModule"),this.playbackSource,c,this.willUseMediaSource()&&!M),Y=(this.options.get("edgeUrl")||this.options.get("url")).replace("wss://","https://").replace("ws://","http://").replace("//lb.","//errors."),P=new URL("/telemetry",Y).toString(),VA=on.create(this.logger.createContext("TelemetryModule"),this.emitter,{url:P,enabled:this.options.get("telemetryEnabled"),includeStats:!1,interval:5e3},this);this.modules={telemetry:VA,bufferTime:Os.create(this.emitter,this.logger.createContext("BufferTimeModule"),g,this,{maxBufferTime:this.options.get("maxBufferTime"),minBufferTime:this.options.get("minBufferTime")}),incomingData:ca.create(this.emitter),adaptivity:Ks.create(this.emitter,this.logger.createContext("AdaptivityModule"),g,{cooldownTime:Math.max(this.options.get("minBufferTime"),2e3)}),constraintCap:da.create(this.emitter,this.element,E,this.options.get("abrEnabled")?this.options.get("sizeBasedResolutionCapEnabled"):!1),event:Ia.create(this.emitter,this.logger.createContext("EventModule"),H),sync:H,documentState:J,connection:a,playback:c,pictureInPicture:n,timer:s,subscription:r,renditions:E,qualityOfService:g,mseModule:T,unpause:L,canvasModule:Z},this.modules.adaptivity.isEnabled=this.options.get("abrEnabled"),this.emitter.on("page active",R=>{var W;R&&typeof this.disconnectTimeout=="number"&&(this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=void 0),R?this.playbackSource.isPaused||(this.logger.debug("Unsuspending"),this.unsuspend()):(this.logger.debug("Suspending"),this.suspend(),this.modules.decoder?this.options.get("iosBackgroundPlayEnabled")?(this.modules.decoder.unsuspend(),(W=this.modules.canvasModule)==null||W.unsuspend()):this.modules.connection.disconnect():(this.disconnectTimeout&&this.modules.timer.clearInterval(this.disconnectTimeout),this.disconnectTimeout=this.modules.timer.setInterval(()=>{const x=this.playbackState==="paused"||this.muted;this.connectionState==="connected"&&x&&(this.emitter.emit("flush buffers"),this.modules.connection.disconnect("Page inactive timeout"))},Ue.DISCONNECT_TIMEOUT)))});let FA;this.emitter.on("context switch complete",()=>{FA||(FA=window.setTimeout(()=>{window.clearTimeout(FA),FA=void 0,this.emit("context switch","completed"),this.emitLanguagesIfChanged()},this.targetBufferTime))}),this.emitter.on("context switch started",()=>this.emit("context switch","started")),this.emitter.on("needs user input",R=>this.emit("needs user input",R)),this.emitter.on("event",R=>{switch(R.type){case"metadata":this.emit("metadata",R);break;case"channel switch":this.emit("channel switch",{channelId:R.channelId});break;case"language switch":this.emit("language switch",{language:R.language});break}}),this.emitter.on("buffer state event",this.onBufferEvent),this.emitter.on("playback state",R=>this.emit("playback state",R)),this.emitter.on("rendition level changed",({to:R})=>{R&&this.emit("rendition level",R)}),this.emitter.on("connection state",R=>{this.emit("connection state",R)}),this.emitter.on("recovered from media error",()=>{this.modules.adaptivity.reset(this.targetBufferTime*2)}),this.emitter.once("connect info",R=>{var tA,K,j;const x=((K=(tA=R.telemetry)==null?void 0:tA.probability)!=null?K:1)>=Math.random();R.telemetry&&((j=this.modules.telemetry)==null||j.unload(),this.modules.telemetry=on.create(this.logger.createContext("TelemetryModule"),this.emitter,O(S({},R.telemetry),{enabled:this.options.get("telemetryEnabled")&&x}),this),this.modules.telemetry.load())}),this.emitter.on("adapt level",R=>{var fA,N,v,AA,nA;this.logger.debug("adapt level",{direction:R});const W=this.modules.renditions.getRenditionLevels(),x=this.modules.renditions.getRenditionLevel(),tA=W.findIndex(f=>f===x),K=W.length-1;let j=tA;switch(R){case"upgrade":{const f=Math.min(tA+1,K),UA=W[f],oB=(fA=this.modules.connection.estimatedBandwidth)!=null?fA:st(),lB=((v=(N=UA==null?void 0:UA.audio)==null?void 0:N.bitRate)!=null?v:0)+((nA=(AA=UA==null?void 0:UA.video)==null?void 0:AA.bitRate)!=null?nA:0),EF=oB*2>lB;UA&&EF&&this.modules.adaptivity.isQoSOk(UA)&&(j=f)}break;case"downgrade":j=Math.max(tA-1,0);break;case"double downgrade":j=Math.max(tA-2,0);break;case"reconnect":if(tA===0||this.modules.qualityOfService.timeSpentBufferingLast(6e3)>5e3){if(!this.modules.connection.lastConnectionTime||Date.now()-this.modules.connection.lastConnectionTime<this.modules.qualityOfService.fatalQosGraceTime()||this.modules.connection.getState()!=="connected")return;this.modules.qualityOfService.incrementFatalQosCount(),this.logger.info("Reconnecting due to poor qos"),this.modules.connection.reconnect("Fatal QOS"),this.emitter.emit("adapted level");return}else j=0}if(j===tA)return;const aA=W[j];this.alignSizeAndBitRate(O(S({},this.targetSubscription),{video:S(S({},this.targetSubscription.video),aA==null?void 0:aA.video),audio:S(S({},this.targetSubscription.audio),aA==null?void 0:aA.audio)})),this.emitter.emit("adapted level")}),this.emitter.on("text track data",R=>{const W=U(this,qA).find(j=>j.language===R.language),tA=this.modules.sync.getTimeshiftOffset()/1e3,K=tA-U(this,TQ);if(l(this,TQ,tA),W){if(W.cues)for(const j of W.cues)j.startTime-=K,j.endTime-=K;for(const j of R.cues){const aA=new VTTCue(j.startTime-tA,j.endTime-tA,j.text);W.addCue(aA)}}}),this.emitter.on("received signal",R=>{var tA;const W=R,x=this.modules.subscription.getCurrentSubscription();switch(this.logger.debug("received",S({},W)),W.type){case"client ip":this.clientIp=W.ip;break;case"renditions":this.updateTextTracks(W.renditions),l(this,yQ,this.filterRenditions(W.renditions).then(K=>{this.emitter.emit("renditions",{renditions:K,channelId:this.currentSubscription.channelId}),this.emit("rendition levels",this.modules.renditions.getRenditionLevels()),this.emitLanguagesIfChanged()}).finally(()=>{l(this,yQ,void 0)}));break;case"subscription changed":try{cC(W.subscription)}catch(K){this.emitter.emit("error",new X("Subscription failed validation",{source:K instanceof Error?K:void 0,isFatal:!1,code:"subscription_failed_validation"}))}this.emitter.emit("subscription changed",{reset:W.reset,to:W.subscription,from:this.modules.subscription.getCurrentSubscription()}),W.reset&&x.channelId!==W.subscription.channelId&&(this.emit("error",Po(W.subscription.channelId)),this.emit("channel switch failed",{channelId:x.channelId})),this.modules.sync.timeshiftOnAudio=!((tA=W.subscription.video)!=null&&tA.codec),this.modules.adaptivity.reset();break;case"timing info":this.modules.sync.updateChannelSyncInfo(W.timingInfo.channelId,W.timingInfo),this.emit("server wallclock time",W.timingInfo.wallclockTime);break}}),this.emitter.on("channel switch timeout",R=>{this.emit("error",Po(R)),this.emit("channel switch failed",{channelId:this.currentSubscription.channelId})}),this.emitter.on("received data",R=>{const W=this.modules.subscription.getCurrentSubscription(),x=dI(R);if(!W){this.logger.warn("Received unwanted message",S({},x));return}Fe(O(S({},x),{channelId:W.channelId}))}),this.emitter.on("received moq data",R=>{var j,aA,fA;const W=R.payload.mediaType(),x=R.channelId,tA=R.renditionId,K=this.modules.sync.processFragment(x,R.payload);if(R.switchInfo.channelId&&(R.switchInfo.drmTransition&&this.emitter.emit("error",jo("Switching between DRM and non-DRM channels is not supported",!0)),this.encryptedMediaExtensions.onChannelSwitch(),this.emit("rendition levels",this.modules.renditions.getRenditionLevels()),this.modules.event.addEvent({type:"channel switch",channelId:R.switchInfo.channelId,timestamp:K.baseMediaDecodeTime()/K.timescale()*1e3})),R.switchInfo.language&&this.modules.event.addEvent({type:"language switch",language:R.switchInfo.language,timestamp:K.baseMediaDecodeTime()/K.timescale()*1e3}),this.modules.incomingData.add(W,R.payload.rawBytes().byteLength),K.fragment().emsgs.forEach(N=>{if(!N.presentationTime)return;const v=LE(N.data);v&&this.modules.event.addEvent({id:N.id,timestamp:N.presentationTime/N.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:v.txx.value,type:"metadata"})}),this.modules.decoder){const N=(j=K.header().init().moov.traks[0])==null?void 0:j.mdia.minf.stbl.stsd,v=(aA=N==null?void 0:N.avc1)==null?void 0:aA.avcC.bytes,AA=(fA=N==null?void 0:N.codec)!=null?fA:"h264";if(v){const nA=v.buffer.slice(v.byteOffset,v.byteOffset+v.byteLength);if(W==="text")throw new Error("Subtitles are not supported");this.emitter.emit("init segment",{initSegment:{channelId:x,renditionId:tA,data:nA,timescale:1e3,type:W,codec:AA},mimeType:W})}for(let nA=0;nA<K.samplesCount();nA++){const f=K.sample(nA);f&&this.emitter.emit("coded sample",O(S({},f),{renditionId:tA,channelId:x,data:f.data.buffer.slice(f.data.byteOffset,f.data.byteOffset+f.data.byteLength)}))}}else this.emitter.emit("fragment",{mimeType:R.mimeType,codec:R.codec,fragment:K,channelId:x,renditionId:tA})});const uA=this.options.get("container");uA&&this.attach(uA),this.logger.info("Created Vindral instance",{options:this.options});const Fe=R=>d(this,null,function*(){const W=R.channelId;U(this,yQ)&&(yield U(this,yQ));const x=this.modules.renditions.getRendition(R.renditionId,W);if(!oI(R.flags)){if(lI(R.flags)){const K=new TextDecoder().decode(R.payload),j=this.modules.sync.getTimeshiftOffset();if(R.renditionId!==0){const aA=uo(K);if(aA&&aA.language!==void 0){const N=new gl().parse(aA.content||""),v=j/1e3,AA=U(this,qA).find(f=>f.language===aA.language),nA=v-U(this,TQ);if(l(this,TQ,v),AA){if(AA.cues)for(const f of AA.cues)f.startTime-=nA,f.endTime-=nA;for(const f of N){const UA=new VTTCue(f.startTime-v,f.endTime-v,f.text);AA.addCue(UA)}}}}else this.modules.event.addEvent({timestamp:R.timestamp/R.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:K,type:"metadata"})}else if(x!=null&&x.codec){const tA=h(x.codec);if(tA==="text")throw new Error("Subtitles are not supported");if(this.modules.incomingData.add(tA,R.payload.byteLength),aI(R.flags)){const K=O(S({type:tA,data:R.payload,codec:x.codec},R),{channelId:W}),j=iI(K.codec,K.payload);j&&this.sizes.set(K.renditionId,j);const aA=Yt({codec:x.codec,codecString:x.codecString});this.emitter.emit("init segment",{initSegment:K,mimeType:aA}),this.emit("initialized media")}else{const K=gC(R,x,this.sizes.get(R.renditionId));let j=this.sampleProcessingSesssions.get(tA);if(!j)j=EC(this.modules.sync.processSample(K)),this.sampleProcessingSesssions.set(tA,j);else{const aA=j(this.modules.sync.processSample(K),this.isSwitchingRenditionLevel&&K.type==="video");let fA=K;aA.forEach(N=>{this.modules.event.extractEvent(N,fA),this.emitter.emit("coded sample",N),fA=N})}}}}});this.options.get("maxVideoBitRate")!==Number.MAX_SAFE_INTEGER&&(this.maxVideoBitRate=this.options.get("maxVideoBitRate")),this.options.get("maxAudioBitRate")!==Number.MAX_SAFE_INTEGER&&(this.maxAudioBitRate=this.options.get("maxAudioBitRate")),Gt(this.options.get("maxSize"),uF())||(this.maxSize=this.options.get("maxSize")),this.options.get("burstEnabled")&&r.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){if(e===this.muted)return;const t=this.playbackSource.muted;this.playbackSource.muted=e,!e&&t&&!this.playbackSource.isPaused&&this.playbackSource.play()}get muted(){return this.playbackSource.muted}get media(){return this.options.get("media")}get videoBitRate(){return this.modules.incomingData.averageBitRate("video")}get audioBitRate(){return this.modules.incomingData.averageBitRate("audio")}get connectionState(){return this.modules.connection.getState()}get playbackState(){return this.modules.playback.getState()}get bufferFullness(){return this.modules.playback.getBufferFullness()}get sizeBasedResolutionCapEnabled(){return this.modules.constraintCap.sizeBasedResolutionCapEnabled}set sizeBasedResolutionCapEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e}get abrEnabled(){return this.modules.adaptivity.isEnabled}set abrEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e?this.options.get("sizeBasedResolutionCapEnabled"):!1,this.modules.adaptivity.isEnabled=e,this.alignSizeAndBitRate(this.targetSubscription)}get serverEdgeTime(){return this.modules.sync.getLiveEdgeTimeLatencyAdjusted(this.currentSubscription.channelId)}get serverWallclockTime(){return this.modules.sync.getWallclockTimeLatencyAdjusted(this.currentSubscription.channelId)}get currentTime(){return this.modules.sync.serverCurrentTime}get channelCurrentTime(){return this.modules.sync.channelCurrentTime}get targetBufferTime(){return this.modules.playback.getTargetBufferTime()}set targetBufferTime(e){this.modules.playback.getTargetBufferTime()!==e&&(this.modules.playback.setTargetBufferTime(e),this.playbackSource.currentTime=this.modules.sync.serverCurrentTime,this.options.get("burstEnabled",this.channelId)?this.modules.subscription.enableBurst(this.targetBufferTime):this.modules.subscription.enableBurst(0))}get playbackLatency(){var e;if(this.playbackSource.currentTime!==0)return this.targetBufferTime+((e=this.modules.sync.drift)!=null?e:0)+this.modules.connection.rtt/2}get playbackWallclockTime(){if(!(!this.serverWallclockTime||!this.playbackLatency))return this.serverWallclockTime-this.playbackLatency}get channels(){return this._channels}get languages(){return this.modules.renditions.getLanguages()}get language(){return this.modules.subscription.getTargetSubscription().audio.language}set language(e){this.modules.subscription.setLanguage(e)}set textTrack(e){U(this,qA).forEach(t=>{t.label===e?t.mode="showing":t.mode="hidden"}),this.emitter.emit("text track",e)}get textTracks(){return U(this,qA).filter(e=>e.mode!=="disabled").map(e=>e.label)}get textTrack(){var e;return(e=U(this,qA).find(t=>t.mode==="showing"))==null?void 0:e.label}get channelId(){var e,t;return(t=(e=this.modules)==null?void 0:e.subscription.getTargetSubscription().channelId)!=null?t:this.options.get("channelId")}set channelId(e){if(e===this.channelId)return;this.modules.subscription.setChannelId(e);const t=this.options.get("media")==="audio"?[]:this.options.get("videoCodecs"),B=this.modules.renditions.getAudioRenditions(e),F=this.modules.renditions.getVideoRenditions(e),n=this.targetSubscription.audio.language,s=B==null?void 0:B.some(r=>r.language===n),a=t.find(r=>(F==null?void 0:F.find(E=>E.codec===r))!==void 0);a&&this.modules.subscription.setVideoCodec(a),this.logger.debug("Channel switch - started",{audioRenditions:B,targetSubscriptionLanguage:n,targetHasCurrentLanguage:s}),this.alignSizeAndBitRate(this.targetSubscription)}get maxSize(){var B,F;const{width:e,height:t}=(F=(B=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:B.video)!=null?F:uF();return{width:e,height:t}}set maxSize(e){this.modules.constraintCap.setUserSpecifiedCap({video:{width:e.width,height:e.height}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxVideoBitRate(){var e,t;return(t=(e=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:e.video.bitRate)!=null?t:st()}set maxVideoBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({video:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxAudioBitRate(){var e,t;return(t=(e=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:e.audio.bitRate)!=null?t:st()}set maxAudioBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({audio:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get renditionLevels(){return this.modules.renditions.getRenditionLevels()}get currentRenditionLevel(){return this.modules.renditions.getRenditionLevel()}get targetRenditionLevel(){return this.modules.renditions.getRenditionLevel(this.modules.subscription.getTargetSubscription())}get isSwitchingRenditionLevel(){return this.modules.subscription.isSwitchingSubscription()}get videoBufferedRanges(){var e,t,B,F;return(F=(B=(e=this.modules.mseModule)==null?void 0:e.getBuffer("video"))!=null?B:(t=this.modules.decoder)==null?void 0:t.getBuffer("video"))!=null?F:[]}get audioBufferedRanges(){var e,t,B,F;return(F=(B=(e=this.modules.mseModule)==null?void 0:e.getBuffer("audio"))!=null?B:(t=this.modules.decoder)==null?void 0:t.getBuffer("audio"))!=null?F:[]}getApiClient(){return this.modules.connection.apiClient}get lastBufferEvent(){return this.modules.playback.getLastBufferStateEvent()}get activeRatios(){return this.modules.qualityOfService.activeRatios()}get bufferingRatios(){return this.modules.qualityOfService.bufferingRatios()}get timeSpentBuffering(){return this.modules.qualityOfService.timeSpentBuffering()}get timeActive(){return this.modules.qualityOfService.timeActive()}get mediaElement(){return this.element}get audioNode(){var e;return(e=this.modules)!=null&&e.canvasModule?this.modules.canvasModule.audioNode:void 0}get drmStatistics(){var e;return(e=this.encryptedMediaExtensions)==null?void 0:e.getStatistics()}get uptime(){return Date.now()-this.createdAt}suspend(){this.isSuspended||(Object.values(this.modules).forEach(e=>{e&&"suspend"in e&&e.suspend()}),this.isSuspended=!0)}unsuspend(){this.isSuspended&&(Object.values(this.modules).forEach(e=>{e&&"unsuspend"in e&&e.unsuspend()}),this.isSuspended=!1)}alignSizeAndBitRate(e){const t=this.modules.constraintCap.constrainSubscription(O(S({},e),{video:S({},e.video),audio:S({},e.audio)})),B=this.modules.constraintCap.getUserSpecifiedCap();!this.abrEnabled&&B&&(t.audio.bitRate=B.audio.bitRate,t.video.bitRate=B.video.bitRate,t.video.width=B.video.width,t.video.height=B.video.height);const F=this.modules.renditions.getRenditionLevel(t);if(F){if(F.video&&(this.modules.subscription.setVideoBitRate(F.video.bitRate),this.modules.subscription.setSize(F.video)),F.audio)this.modules.subscription.setAudioBitRate(F.audio.bitRate),this.modules.subscription.setLanguage(F.audio.language);else if(t.audio.language){let n=this.modules.renditions.getAudioRenditions(t.channelId);!this.abrEnabled&&B&&(n=n==null?void 0:n.filter(g=>g.bitRate<B.audio.bitRate));const s=t.audio.language,a=n==null?void 0:n.some(g=>g.language===s),r=n==null?void 0:n.find(g=>g.language),E=(n==null?void 0:n.length)&&n[0]||void 0;a||(r?(this.logger.debug("Randomizing language since target did not have current language"),this.modules.subscription.setAudioBitRate(r.bitRate),this.modules.subscription.setLanguage(r.language)):(this.logger.debug("Randomizing audio rendition since target did not have current language"),E!=null&&E.bitRate&&this.modules.subscription.setAudioBitRate(E.bitRate),this.modules.subscription.setLanguage(E==null?void 0:E.language)))}}}get currentSubscription(){return this.modules.subscription.getCurrentSubscription()}get targetSubscription(){return this.modules.subscription.getTargetSubscription()}willUseMediaSource(){return this.browser.supportsMediaSource&&this.options.get("mseEnabled")}};TQ=new WeakMap,qA=new WeakMap,yQ=new WeakMap,i(Ue,"MAX_POOL_SIZE",10),i(Ue,"INITIAL_MAX_BIT_RATE",2.5*1e3*1e3),i(Ue,"DISCONNECT_TIMEOUT",15*1e3),i(Ue,"REMOVE_CUE_THRESHOLD",1e3*10);let rn=Ue;const dn={buffering:"_buffering_1ccif_1","buffering-fullscreen":"_buffering-fullscreen_1ccif_16",hidden:"_hidden_1ccif_25","buffering-indicator":"_buffering-indicator_1ccif_31"};class Ae{constructor(A){i(this,"attach",A=>{this.detach(),A.appendChild(this.element)});i(this,"attachBefore",(A,e)=>{this.detach(),A.insertBefore(this.element,e)});i(this,"detach",()=>this.element.remove());this.element=A}}const wa=dn.hidden,CC=dn.buffering,Br=dn["buffering-fullscreen"],RC=dn["buffering-indicator"];class Ur extends Ae{constructor(){super(document.createElement("div"));i(this,"indicator",document.createElement("div"));i(this,"isHidden",()=>this.element.classList.contains(wa));i(this,"setHidden",e=>e?this.hide():this.show());i(this,"hide",()=>this.element.classList.add(wa));i(this,"show",()=>this.element.classList.remove(wa));i(this,"fullscreen",e=>{e?this.element.classList.add(Br):this.element.classList.remove(Br)});this.element.className=CC,this.indicator.className=RC,this.element.appendChild(this.indicator)}}class Fr extends $A{constructor(e){super();i(this,"config");i(this,"hlsUrl");i(this,"element");i(this,"connectingTimeout");i(this,"castingAvailable",!1);i(this,"updateAuthenticationToken",e=>{this.config.authenticationToken=e,this.hlsUrl=this.getHlsUrl(),this.castingAvailable&&(this.element.src=this.hlsUrl)});i(this,"unload",()=>{this.element&&(this.element.removeEventListener("webkitplaybacktargetavailabilitychanged",this.onAirPlayAvailable),this.element.removeEventListener("webkitcurrentplaybacktargetiswirelesschanged",this.onAirPlayPlaybackChanged),this.element.remove())});i(this,"onAirPlayAvailable",e=>{switch(e.availability){case"available":{this.castingAvailable=!0,this.element.src!==this.hlsUrl&&this.checkHlsUrl(this.hlsUrl).then(B=>{B&&(this.element.src=this.hlsUrl,this.emit("available"))});break}case"not-available":this.castingAvailable=!1;break}});i(this,"onAirPlayPlaybackChanged",()=>{window.clearTimeout(this.connectingTimeout),this.element.webkitCurrentPlaybackTargetIsWireless?(this.emit("connected"),this.element.style.display="block",this.element.paused&&this.element.play()):(this.emit("disconnected"),this.element.pause(),this.element.src="",this.element.src=this.hlsUrl,this.element.style.display="none")});this.config=e,this.hlsUrl=this.getHlsUrl(),this.element=document.createElement("video"),this.element.style.position="absolute",this.element.style.top="0",this.element.style.bottom="0",this.element.style.left="0",this.element.style.right="0",this.element.style.width="100%",this.element.style.height="100%",this.element.style.zIndex="1001",this.element.style.display="none",this.element.id="vindral-airplay-element",this.element.slot="overlay",this.element.playsInline=!0,this.element.controls=!0,this.element.preload="metadata",this.element.addEventListener("webkitplaybacktargetavailabilitychanged",this.onAirPlayAvailable),this.element.addEventListener("webkitcurrentplaybacktargetiswirelesschanged",this.onAirPlayPlaybackChanged),this.config.container.appendChild(this.element)}get casting(){return this.element.webkitCurrentPlaybackTargetIsWireless}set channelId(e){}showPlaybackTargetPicker(){this.element.paused&&(this.element.play(),this.connectingTimeout=window.setTimeout(()=>{this.casting||(this.element.pause(),this.element.src="",this.element.src=this.hlsUrl)},3e4)),this.element.webkitShowPlaybackTargetPicker()}static isAirPlaySupported(){return!!window.WebKitPlaybackTargetAvailabilityEvent}getHlsUrl(){const e=new URL(`/api/hls?channelId=${this.config.channelId}`,this.config.url);return this.config.authenticationToken&&e.searchParams.set("authenticationToken",this.config.authenticationToken),e.toString()}checkHlsUrl(e){return d(this,null,function*(){try{return(yield fetch(e,{method:"HEAD"})).ok}catch(t){return!1}})}}const nr={bar:"_bar_zames_1",hidden:"_hidden_zames_45"},uB={"channel-selection-item":"_channel-selection-item_suenn_1","channel-selection-item-selected":"_channel-selection-item-selected_suenn_8","channel-selection-item-image":"_channel-selection-item-image_suenn_13",withThumbnails:"_withThumbnails_suenn_19","hide-on-small":"_hide-on-small_suenn_27"},hC={"icon-button":"_icon-button_5fg7v_1"},sr={enter:{viewBox:"-12 -12 38 38",content:`<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-5.000000, -5.000000)">
|
|
51
51
|
<path d="M6,14 C5.45,14 5,14.45 5,15 L5,18 C5,18.55 5.45,19 6,19 L9,19 C9.55,19 10,18.55 10,18 C10,17.45 9.55,17 9,17 L7,17 L7,15 C7,14.45 6.55,14 6,14 Z M6,10 C6.55,10 7,9.55 7,9 L7,7 L9,7 C9.55,7 10,6.55 10,6 C10,5.45 9.55,5 9,5 L6,5 C5.45,5 5,5.45 5,6 L5,9 C5,9.55 5.45,10 6,10 Z M17,17 L15,17 C14.45,17 14,17.45 14,18 C14,18.55 14.45,19 15,19 L18,19 C18.55,19 19,18.55 19,18 L19,15 C19,14.45 18.55,14 18,14 C17.45,14 17,14.45 17,15 L17,17 Z M14,6 C14,6.55 14.45,7 15,7 L17,7 L17,9 C17,9.55 17.45,10 18,10 C18.55,10 19,9.55 19,9 L19,6 C19,5.45 18.55,5 18,5 L15,5 C14.45,5 14,5.45 14,6 Z" fill="white"></path>
|
|
52
52
|
</g>`},exit:{viewBox:"-12 -12 38 38",content:`<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-5.000000, -5.000000)">
|
|
53
53
|
<path d="M6,16 L8,16 L8,18 C8,18.55 8.45,19 9,19 C9.55,19 10,18.55 10,18 L10,15 C10,14.45 9.55,14 9,14 L6,14 C5.45,14 5,14.45 5,15 C5,15.55 5.45,16 6,16 Z M8,8 L6,8 C5.45,8 5,8.45 5,9 C5,9.55 5.45,10 6,10 L9,10 C9.55,10 10,9.55 10,9 L10,6 C10,5.45 9.55,5 9,5 C8.45,5 8,5.45 8,6 L8,8 Z M15,19 C15.55,19 16,18.55 16,18 L16,16 L18,16 C18.55,16 19,15.55 19,15 C19,14.45 18.55,14 18,14 L15,14 C14.45,14 14,14.45 14,15 L14,18 C14,18.55 14.45,19 15,19 Z M16,8 L16,6 C16,5.45 15.55,5 15,5 C14.45,5 14,5.45 14,6 L14,9 C14,9.55 14.45,10 15,10 L18,10 C18.55,10 19,9.55 19,9 C19,8.45 18.55,8 18,8 L16,8 Z" fill="white"></path>
|
|
@@ -27,7 +27,7 @@ var X = (B, g, A) => new Promise((J, k) => {
|
|
|
27
27
|
}, o = (h) => h.done ? J(h.value) : Promise.resolve(h.value).then(y, a);
|
|
28
28
|
o((A = A.apply(B, g)).next());
|
|
29
29
|
});
|
|
30
|
-
import { F as RA, d as JA, n as kA } from "./
|
|
30
|
+
import { F as RA, d as JA, n as kA } from "./CHpnKe5u.js";
|
|
31
31
|
var hA = function() {
|
|
32
32
|
var B = typeof document != "undefined" && document.currentScript ? document.currentScript.src : void 0;
|
|
33
33
|
return function(g) {
|