@vindral/web-sdk 4.6.0-29-g4de98bfe → 4.6.0-30-g09527bd9

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.
@@ -1,5 +1,5 @@
1
1
  import { n as e, t } from "./BsfwXDui.js";
2
- import { C as n, D as r, E as i, O as a, S as o, T as s, _ as c, b as l, g as u, h as ee, k as d, m as te, p as ne, t as re, v as ie, w as ae, x as oe, y as se } from "./DWxtmoaX.js";
2
+ import { C as n, D as r, E as i, O as a, S as o, T as s, _ as c, b as l, g as u, h as ee, k as d, m as te, p as ne, t as re, v as ie, w as ae, x as oe, y as se } from "./DzR0KUge.js";
3
3
  import { t as ce } from "./CuYn2z5X.js";
4
4
  import { i as f, n as p, r as m, t as h } from "./DSw1XhvD.js";
5
5
  import { c as le, n as ue, t as de } from "./Btob1dQR.js";
@@ -1070,7 +1070,7 @@ var an = (e) => "width" in e && typeof e.width == "number", on = (e) => "sampleR
1070
1070
  sizeBasedResolutionCapEnabled: !0,
1071
1071
  pictureInPictureEnabled: !0,
1072
1072
  abrEnabled: !0,
1073
- burstEnabled: !1,
1073
+ burstEnabled: !0,
1074
1074
  mseEnabled: !0,
1075
1075
  mseOpusEnabled: !0,
1076
1076
  muted: !1,
@@ -11722,6 +11722,8 @@ var _b = class {
11722
11722
  (t = this.wakeLock) == null || t.attach(e), e.appendChild(this.element);
11723
11723
  }), e(this, "setElement", (e) => {
11724
11724
  this.element !== e && (this.element = e, this.modules.constraintCap.setElement(e));
11725
+ }), e(this, "applyBurstEnabled", (e) => {
11726
+ this.modules.subscription.enableBurst(this.options.get("burstEnabled", e) ? this.targetBufferTime : 0);
11725
11727
  }), e(this, "getOptions", () => this.options.getOptions()), e(this, "getThumbnailUrl", () => {
11726
11728
  let e = this.options.get("edgeUrl") || this.options.get("url");
11727
11729
  e = e.replace("wss://", "https://"), e = e.replace("ws://", "http://"), e = e.endsWith("/") ? e.slice(0, -1) : e;
@@ -11756,7 +11758,8 @@ var _b = class {
11756
11758
  ownerSessionId: this.sessionId,
11757
11759
  edgeUrl: this.options.get("edgeUrl"),
11758
11760
  media: this.options.get("media"),
11759
- drm: this.options.get("drm")
11761
+ drm: this.options.get("drm"),
11762
+ burstEnabled: this.options.get("burstEnabled")
11760
11763
  })), e(this, "onConnectInfo", function() {
11761
11764
  var e = t(function* (e) {
11762
11765
  var n;
@@ -11776,7 +11779,7 @@ var _b = class {
11776
11779
  if ((s || c) && (o.modules.bufferTime.updateConfig({
11777
11780
  minBufferTime: o.options.get("minBufferTime", o.channelId),
11778
11781
  maxBufferTime: o.options.get("maxBufferTime", o.channelId)
11779
- }), o.targetBufferTime = o.options.get("minBufferTime", o.channelId)), o.options.get("burstEnabled", o.channelId) && o.modules.subscription.enableBurst(o.targetBufferTime), o.emit("is live", i.isLive), !i.isLive) throw Gn();
11782
+ }), o.targetBufferTime = o.options.get("minBufferTime", o.channelId)), o.applyBurstEnabled(o.channelId), o.emit("is live", i.isLive), !i.isLive) throw Gn();
11780
11783
  let l = o.modules.connection.estimatedBandwidth;
11781
11784
  o.patchSubscription(i, l), yield o.initializeDecodingModule(), o.resetModules(), o.emit("rendition levels", o.modules.renditions.getRenditionLevels()), o.emit("channels", o.channels), o.emitLanguagesIfChanged(), o.sampleProcessingSesssions.clear();
11782
11785
  let u = o.options.get("burstEnabled", o.channelId) && o.burstFits(l);
@@ -12083,7 +12086,7 @@ var _b = class {
12083
12086
  let e = this.modules.canvasModule instanceof Dy ? !0 : void 0;
12084
12087
  return C({
12085
12088
  uptime: this.uptime,
12086
- version: "4.6.0-29-g4de98bfe",
12089
+ version: "4.6.0-30-g09527bd9",
12087
12090
  clientId: this.clientId,
12088
12091
  sessionId: this.sessionId,
12089
12092
  channelId: this.channelId,
@@ -12624,7 +12627,7 @@ var _b = class {
12624
12627
  return this.modules.playback.getTargetBufferTime();
12625
12628
  }
12626
12629
  set targetBufferTime(e) {
12627
- 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));
12630
+ this.modules.playback.getTargetBufferTime() !== e && (this.modules.playback.setTargetBufferTime(e), this.playbackSource.currentTime = this.modules.sync.serverCurrentTime, this.applyBurstEnabled(this.channelId));
12628
12631
  }
12629
12632
  updateBufferTimeConfig(e) {
12630
12633
  this.modules.bufferTime.updateConfig(e);
@@ -12676,7 +12679,7 @@ var _b = class {
12676
12679
  }
12677
12680
  set channelId(e) {
12678
12681
  if (e === this.channelId) return;
12679
- this.modules.subscription.setChannelId(e);
12682
+ this.applyBurstEnabled(e), this.modules.subscription.setChannelId(e);
12680
12683
  let t = this.options.get("media") === "audio" ? [] : this.options.get("videoCodecs"), n = this.modules.renditions.getAudioRenditions(e), r = this.modules.renditions.getVideoRenditions(e), i = this.targetSubscription.audio.language, a = n == null ? void 0 : n.some((e) => e.language === i), o = t.find((e) => (r == null ? void 0 : r.find((t) => t.codec === e)) !== void 0);
12681
12684
  o && this.modules.subscription.setVideoCodec(o), this.logger.debug("Channel switch - started", {
12682
12685
  audioRenditions: n,
package/cast-sender.d.ts CHANGED
@@ -175,7 +175,7 @@ interface Options {
175
175
  * starts below the lowest rendition. If the rendition it starts at still needs more than half the estimated
176
176
  * bandwidth (the lowest one on a slow link, or the fixed one with adaptive bit rate off), the burst is skipped.
177
177
  *
178
- * Is disabled by default.
178
+ * Is enabled by default.
179
179
  *
180
180
  */
181
181
  burstEnabled?: boolean;
package/core.d.ts CHANGED
@@ -271,7 +271,7 @@ export interface Options {
271
271
  * starts below the lowest rendition. If the rendition it starts at still needs more than half the estimated
272
272
  * bandwidth (the lowest one on a slow link, or the fixed one with adaptive bit rate off), the burst is skipped.
273
273
  *
274
- * Is disabled by default.
274
+ * Is enabled by default.
275
275
  *
276
276
  */
277
277
  burstEnabled?: boolean;
@@ -1376,6 +1376,11 @@ export declare class Vindral extends Emitter<PublicVindralEvents> {
1376
1376
  * setting targetBufferTime within that range for consistancy if using both min/max.
1377
1377
  */
1378
1378
  set targetBufferTime(bufferTimeMs: number);
1379
+ /**
1380
+ * Set the burst for joins and channel switches from `burstEnabled` as resolved for the channel, so a channel
1381
+ * override can turn it off as well as on
1382
+ */
1383
+ private applyBurstEnabled;
1379
1384
  /**
1380
1385
  * Update the dynamic buffer time configuration at runtime.
1381
1386
  * Allows adjusting min and max buffer time without recreating the Vindral instance.
package/core.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, d as n, f as r, i, l as a, o, r as s, s as c, t as l, u } from "./DWxtmoaX.js";
1
+ import { a as e, c as t, d as n, f as r, i, l as a, o, r as s, s as c, t as l, u } from "./DzR0KUge.js";
2
2
  export { s as AUTHENTICATION_EXPIRED_CODE, i as AUTHENTICATION_FAILED_CODE, e as CHANNEL_NOT_FOUND_CODE, o as CHANNEL_NOT_LIVE_CODE, c as CONNECTION_FAILED_AFTER_RETRIES_CODE, t as CONNECTION_FAILED_CODE, a as DISCONNECTED_BY_EDGE, u as INACTIVITY_CODE, n as NO_INCOMING_DATA, l as Vindral, r as VindralError };
package/legacy.d.ts CHANGED
@@ -274,7 +274,7 @@ export interface Options {
274
274
  * starts below the lowest rendition. If the rendition it starts at still needs more than half the estimated
275
275
  * bandwidth (the lowest one on a slow link, or the fixed one with adaptive bit rate off), the burst is skipped.
276
276
  *
277
- * Is disabled by default.
277
+ * Is enabled by default.
278
278
  *
279
279
  */
280
280
  burstEnabled?: boolean;
@@ -1391,6 +1391,11 @@ export declare class Vindral extends Emitter<PublicVindralEvents> {
1391
1391
  * setting targetBufferTime within that range for consistancy if using both min/max.
1392
1392
  */
1393
1393
  set targetBufferTime(bufferTimeMs: number);
1394
+ /**
1395
+ * Set the burst for joins and channel switches from `burstEnabled` as resolved for the channel, so a channel
1396
+ * override can turn it off as well as on
1397
+ */
1398
+ private applyBurstEnabled;
1394
1399
  /**
1395
1400
  * Update the dynamic buffer time configuration at runtime.
1396
1401
  * Allows adjusting min and max buffer time without recreating the Vindral instance.
package/legacy.es.js CHANGED
@@ -1606,7 +1606,7 @@ var Br = {
1606
1606
  sizeBasedResolutionCapEnabled: !0,
1607
1607
  pictureInPictureEnabled: !0,
1608
1608
  abrEnabled: !0,
1609
- burstEnabled: !1,
1609
+ burstEnabled: !0,
1610
1610
  mseEnabled: !0,
1611
1611
  mseOpusEnabled: !0,
1612
1612
  muted: !1,
@@ -13309,6 +13309,8 @@ var wC = 1e4, TC = 1280 * 720, EC = /* @__PURE__ */ new WeakMap(), DC = /* @__PU
13309
13309
  (t = this.wakeLock) == null || t.attach(e), e.appendChild(this.element);
13310
13310
  }), p(this, "setElement", (e) => {
13311
13311
  this.element !== e && (this.element = e, this.modules.constraintCap.setElement(e));
13312
+ }), p(this, "applyBurstEnabled", (e) => {
13313
+ this.modules.subscription.enableBurst(this.options.get("burstEnabled", e) ? this.targetBufferTime : 0);
13312
13314
  }), p(this, "getOptions", () => this.options.getOptions()), p(this, "getThumbnailUrl", () => {
13313
13315
  let e = this.options.get("edgeUrl") || this.options.get("url");
13314
13316
  e = e.replace("wss://", "https://"), e = e.replace("ws://", "http://"), e = e.endsWith("/") ? e.slice(0, -1) : e;
@@ -13343,7 +13345,8 @@ var wC = 1e4, TC = 1280 * 720, EC = /* @__PURE__ */ new WeakMap(), DC = /* @__PU
13343
13345
  ownerSessionId: this.sessionId,
13344
13346
  edgeUrl: this.options.get("edgeUrl"),
13345
13347
  media: this.options.get("media"),
13346
- drm: this.options.get("drm")
13348
+ drm: this.options.get("drm"),
13349
+ burstEnabled: this.options.get("burstEnabled")
13347
13350
  })), p(this, "onConnectInfo", function() {
13348
13351
  var e = P(function* (e) {
13349
13352
  var t;
@@ -13363,7 +13366,7 @@ var wC = 1e4, TC = 1280 * 720, EC = /* @__PURE__ */ new WeakMap(), DC = /* @__PU
13363
13366
  if ((o || s) && (n.modules.bufferTime.updateConfig({
13364
13367
  minBufferTime: n.options.get("minBufferTime", n.channelId),
13365
13368
  maxBufferTime: n.options.get("maxBufferTime", n.channelId)
13366
- }), n.targetBufferTime = n.options.get("minBufferTime", n.channelId)), n.options.get("burstEnabled", n.channelId) && n.modules.subscription.enableBurst(n.targetBufferTime), n.emit("is live", i.isLive), !i.isLive) throw Bi();
13369
+ }), n.targetBufferTime = n.options.get("minBufferTime", n.channelId)), n.applyBurstEnabled(n.channelId), n.emit("is live", i.isLive), !i.isLive) throw Bi();
13367
13370
  let c = n.modules.connection.estimatedBandwidth;
13368
13371
  n.patchSubscription(i, c), yield n.initializeDecodingModule(), n.resetModules(), n.emit("rendition levels", n.modules.renditions.getRenditionLevels()), n.emit("channels", n.channels), n.emitLanguagesIfChanged(), n.sampleProcessingSesssions.clear();
13369
13372
  let l = n.options.get("burstEnabled", n.channelId) && n.burstFits(c);
@@ -13670,7 +13673,7 @@ var wC = 1e4, TC = 1280 * 720, EC = /* @__PURE__ */ new WeakMap(), DC = /* @__PU
13670
13673
  let e = this.modules.canvasModule instanceof gS ? !0 : void 0;
13671
13674
  return B({
13672
13675
  uptime: this.uptime,
13673
- version: "4.6.0-29-g4de98bfe",
13676
+ version: "4.6.0-30-g09527bd9",
13674
13677
  clientId: this.clientId,
13675
13678
  sessionId: this.sessionId,
13676
13679
  channelId: this.channelId,
@@ -14211,7 +14214,7 @@ var wC = 1e4, TC = 1280 * 720, EC = /* @__PURE__ */ new WeakMap(), DC = /* @__PU
14211
14214
  return this.modules.playback.getTargetBufferTime();
14212
14215
  }
14213
14216
  set targetBufferTime(e) {
14214
- 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));
14217
+ this.modules.playback.getTargetBufferTime() !== e && (this.modules.playback.setTargetBufferTime(e), this.playbackSource.currentTime = this.modules.sync.serverCurrentTime, this.applyBurstEnabled(this.channelId));
14215
14218
  }
14216
14219
  updateBufferTimeConfig(e) {
14217
14220
  this.modules.bufferTime.updateConfig(e);
@@ -14263,7 +14266,7 @@ var wC = 1e4, TC = 1280 * 720, EC = /* @__PURE__ */ new WeakMap(), DC = /* @__PU
14263
14266
  }
14264
14267
  set channelId(e) {
14265
14268
  if (e === this.channelId) return;
14266
- this.modules.subscription.setChannelId(e);
14269
+ this.applyBurstEnabled(e), this.modules.subscription.setChannelId(e);
14267
14270
  let t = this.options.get("media") === "audio" ? [] : this.options.get("videoCodecs"), n = this.modules.renditions.getAudioRenditions(e), r = this.modules.renditions.getVideoRenditions(e), i = this.targetSubscription.audio.language, a = n == null ? void 0 : n.some((e) => e.language === i), o = t.find((e) => (r == null ? void 0 : r.find((t) => t.codec === e)) !== void 0);
14268
14271
  o && this.modules.subscription.setVideoCodec(o), this.logger.debug("Channel switch - started", {
14269
14272
  audioRenditions: n,
package/legacy.umd.js CHANGED
@@ -47,7 +47,7 @@
47
47
  break;
48
48
  }
49
49
  };
50
- `),m(ar,`create`,(e,t)=>{if(typeof Worker>`u`||typeof Blob>`u`||typeof URL>`u`||typeof URL.createObjectURL!=`function`)return;let n;try{n=URL.createObjectURL(new Blob([rr.source],{type:`text/javascript`}));let r=new Worker(n);return new rr(r,n,e,t)}catch(e){n!==void 0&&URL.revokeObjectURL(n);return}}),or=class{constructor({mode:e=`window`}={}){m(this,`pendingTimeouts`,new Map),m(this,`pendingIntervals`,new Map),m(this,`timeoutHandles`,new Map),m(this,`intervalHandles`,new Map),m(this,`nextHandle`,1),m(this,`workerBackend`,void 0),m(this,`requestedMode`,void 0),m(this,`isWorkerBackendUnavailable`,()=>this.requestedMode===`worker-preferred`&&this.workerBackend===void 0),m(this,`clearTimeout`,e=>{if(!this.pendingTimeouts.delete(e))return;if(this.workerBackend){this.workerBackend.clearTimeout(e);return}let t=this.timeoutHandles.get(e);t!==void 0&&(globalThis.clearTimeout(t),this.timeoutHandles.delete(e))}),m(this,`clearInterval`,e=>{if(!this.pendingIntervals.delete(e))return;if(this.workerBackend){this.workerBackend.clearInterval(e);return}let t=this.intervalHandles.get(e);t!==void 0&&(globalThis.clearInterval(t),this.intervalHandles.delete(e))}),m(this,`setTimeout`,(e,t,...n)=>{let r=this.nextHandle++;return this.pendingTimeouts.set(r,{callback:()=>e(...n),delay:t}),this.workerBackend?(this.workerBackend.setTimeout(r,t),r):(this.armNativeTimeout(r,t),r)}),m(this,`setInterval`,(e,t,...n)=>{let r=this.nextHandle++;return this.pendingIntervals.set(r,{callback:()=>e(...n),delay:t}),this.workerBackend?(this.workerBackend.setInterval(r,t),r):(this.armNativeInterval(r,t),r)}),m(this,`armNativeTimeout`,(e,t)=>{this.timeoutHandles.set(e,globalThis.setTimeout(()=>this.fireTimeout(e),t))}),m(this,`armNativeInterval`,(e,t)=>{this.intervalHandles.set(e,globalThis.setInterval(()=>this.fireInterval(e),t))}),m(this,`unload`,()=>{var e;this.pendingIntervals.forEach((e,t)=>this.clearInterval(t)),this.pendingTimeouts.forEach((e,t)=>this.clearTimeout(t)),(e=this.workerBackend)==null||e.unload(),this.workerBackend=void 0}),m(this,`fireTimeout`,e=>{let t=this.pendingTimeouts.get(e);t&&(this.pendingTimeouts.delete(e),this.timeoutHandles.delete(e),t.callback())}),m(this,`fireInterval`,e=>{var t;(t=this.pendingIntervals.get(e))==null||t.callback()}),m(this,`onWorkerFailure`,()=>{this.workerBackend!==void 0&&(this.workerBackend.unload(),this.workerBackend=void 0,this.pendingTimeouts.forEach((e,t)=>{this.armNativeTimeout(t,e.delay)}),this.pendingIntervals.forEach((e,t)=>{this.armNativeInterval(t,e.delay)}))}),m(this,`onWorkerFire`,e=>{if(e.type===`timeout`){this.fireTimeout(e.id);return}this.fireInterval(e.id)}),this.requestedMode=e,e===`worker-preferred`&&(this.workerBackend=ar.create(this.onWorkerFire,this.onWorkerFailure))}},ir=or,m(or,`create`,(e={})=>new ir(e))})),cr,lr,ur,dr,fr,pr,mr=n((()=>{cr=(e,t=performance.now())=>{let n=e.length;if(n>0){let r=e[n-1];r.end||(r.end=t)}},lr=(e,t=performance.now())=>{cr(e,t),e.push({start:t})},ur=e=>e.reduce((e,t)=>{var n;return e+(((n=t.end)==null?performance.now():n)-t.start)},0),dr=(e,t,n=performance.now())=>e.reduce((e,r)=>{var i;let a=Math.max(n-t,r.start),o=(i=r.end)==null?n:i;return Math.max(0,o-a)+e},0),fr=(e,t,n,r)=>{let i=e[e.length-1];if(!i||t>=i.start){i&&t-r<=i.end?i.end=Math.max(i.end,n):e.push({start:t,end:n});return}let a=e.length;for(;a>0&&e[a-1].start>t;)a--;e.splice(a,0,{start:t,end:n});let o=0;for(let t=1;t<e.length;t++){let n=e[o],i=e[t];i.start-r<=n.end?n.end=Math.max(n.end,i.end):(o++,e[o]=i)}e.length=o+1},pr=(e,t)=>e.some(e=>e.start<=t&&t<e.end)}));function hr(e){try{return e()}catch(e){return e}}var gr=n((()=>{})),_r,vr=n((()=>{_r=e=>{try{return JSON.parse(e)}catch(e){return}}})),yr=n((()=>{})),br,xr=n((()=>{ae(),h(),V(),br=class{constructor(){var e;m(this,`highEntropyValues`,void 0),(e=self.navigator.userAgentData)==null||e.getHighEntropyValues([`architecture`,`model`,`platformVersion`,`fullVersionList`]).then(e=>{this.highEntropyValues=e}).catch(C)}getUserAgentInformation(){var e;let t=window.location.origin,n=!t||t===`null`?``:`${window.location.pathname}${window.location.search}`.substring(0,1e3),r={locationOrigin:window.location.origin,locationPath:n,ancestorOrigins:((e=window.location.ancestorOrigins)==null?void 0:e.length)>0?Array.from(window.location.ancestorOrigins):void 0,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory};if(self.navigator.userAgentData&&this.highEntropyValues){var i,a,o,s,c;let e=[...(i=this.highEntropyValues.brands)==null?[]:i];e.sort((e,t)=>e.brand.localeCompare(t.brand));let t=[...(a=this.highEntropyValues.fullVersionList)==null?[]:a];t.sort((e,t)=>e.brand.localeCompare(t.brand));let n=t.map(e=>e.version),l=e.map(e=>e.brand),u=e.map(e=>e.version),d=parseInt((o=(s=this.highEntropyValues.platformVersion)==null?void 0:s.split(`.`)[0])==null?`1`:o,10);return B({userAgentLegacy:window.navigator.userAgent,ua:{browser:{brands:l,fullVersionBrands:n,majorVersions:u},device:this.highEntropyValues.model||`Other`,os:{family:this.highEntropyValues.platform||`Other`,version:(c=this.highEntropyValues.platformVersion)==null?`1`:c,major_version:Number.isFinite(d)?d:0}}},r)}else return B({userAgent:window.navigator.userAgent},r)}}})),Sr,Cr=n((()=>{Sr=()=>{let e=[...Array(256).keys()].map(e=>e.toString(16).padStart(2,`0`)),t=crypto.getRandomValues(new Uint8Array(16));return t[6]=t[6]&15|64,t[8]=t[8]&63|128,[...t.entries()].map(([t,n])=>[4,6,8,10].includes(t)?`-${e[n]}`:e[n]).join(``)}})),wr,Tr,Er=n((()=>{we(),F(),wr=function(){var e=P(function*(e,t){return new Promise((n,r)=>{let i=setTimeout(()=>{a(),n()},e),a=xe(t,e=>{clearTimeout(i),r(ye(e))})})});return function(t,n){return e.apply(this,arguments)}}(),Tr=function(){var e=P(function*(e,t=Error(`Timeout`)){return new Promise((n,r)=>setTimeout(()=>r(t),e))});return function(t){return e.apply(this,arguments)}}(),function(){var e=P(function*(e,t){throw yield e,Error(t)});return function(t,n){return e.apply(this,arguments)}}()})),U=n((()=>{ie(),ve(),we(),Ee(),Oe(),Ae(),Fe(),Ve(),Ue(),Ge(),ft(),ft(),It(),Le(),Rt(),Kt(),Jt(),oe(),Yt(),Zt(),$t(),se(),tn(),un(),dn(),qe(),bn(),Mn(),Pn(),Fn(),In(),ae(),Xn(),Qn(),$n(),Wt(),er(),nr(),Cn(),sr(),mr(),gr(),vr(),yr(),xr(),Cr(),Er()}));U(),h(),F();var Dr=class extends Qt{constructor(e){super(),m(this,`config`,void 0),m(this,`hlsUrl`,void 0),m(this,`element`,void 0),m(this,`connectingTimeout`,void 0),m(this,`castingAvailable`,!1),m(this,`updateAuthenticationToken`,e=>{this.config.authenticationToken=e,this.hlsUrl=this.getHlsUrl(),this.castingAvailable&&(this.element.src=this.hlsUrl)}),m(this,`unload`,()=>{this.element&&(this.element.removeEventListener(`webkitplaybacktargetavailabilitychanged`,this.onAirPlayAvailable),this.element.removeEventListener(`webkitcurrentplaybacktargetiswirelesschanged`,this.onAirPlayPlaybackChanged),this.element.remove())}),m(this,`onAirPlayAvailable`,e=>{switch(e.availability){case`available`:this.castingAvailable=!0,this.element.src!==this.hlsUrl&&this.checkHlsUrl(this.hlsUrl).then(e=>{e&&(this.element.src=this.hlsUrl,this.emit(`available`))});break;case`not-available`:this.castingAvailable=!1;break;default:break}}),m(this,`onAirPlayPlaybackChanged`,()=>{window.clearTimeout(this.connectingTimeout),this.element.webkitCurrentPlaybackTargetIsWireless?(this.emit(`connected`),this.element.style.display=`block`,this.element.paused&&this.element.play().catch(C)):(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(){`webkitShowPlaybackTargetPicker`in this.element&&this.castingAvailable&&(this.element.paused&&(this.element.play().catch(C),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(){let 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 P(function*(){try{return(yield fetch(e,{method:`HEAD`})).ok}catch(e){return!1}})()}};U(),h(),F();var Or=1e4,kr=`CastSender was unloaded before the Google Cast SDK finished initializing`,Ar=class extends Qt{constructor(e){var t;super(),t=this,m(this,`state`,`not casting`),m(this,`config`,void 0),m(this,`unloaded`,!1),m(this,`logger`,vn.get().createContext(`CastSender`)),m(this,`devicesAvailable`,void 0),m(this,`updateAuthenticationToken`,e=>{this.config&&(this.config.options.authenticationToken=e,this.send({type:`updateAuthToken`,token:e}))}),m(this,`unload`,()=>{var e;this.unloaded=!0,(e=this.getSession())==null||e.removeMessageListener(`urn:x-cast:com.vindral.castdata`,this.onMessage),this.devicesAvailable&&this.emit(`devices available`,!1),this.devicesAvailable=void 0}),m(this,`init`,P(function*(){return new Promise((e,n)=>{let r=!1,i=setTimeout(()=>{r=!0,n(Error(`Timed out after ${Or} ms waiting for the Google Cast SDK`))},Or);window.__onGCastApiAvailable=a=>{if(clearTimeout(i),t.unloaded)return n(Error(kr));if(!a)return n(Error(`The Google Cast SDK reported the Cast API as unavailable`));setTimeout(()=>{if(t.unloaded)return n(Error(kr));try{t.onGCastApiAvailable(),e()}catch(e){let i=e instanceof Error?e:Error(String(e));r&&t.logger.warn(`Late Google Cast SDK initialization failed`,i),n(i)}},1e3)},t.castLibrariesAdded()&&window.cast?window.__onGCastApiAvailable(!0):t.verifyCastLibraries()})})),m(this,`start`,P(function*(){var e;yield(e=t.getInstance())==null?void 0:e.requestSession()})),m(this,`stop`,()=>{var e;(e=this.getSession())==null||e.endSession(!0)}),m(this,`getReceiverName`,()=>{var e;return((e=this.getSession())==null||(e=e.getCastDevice())==null?void 0:e.friendlyName)||void 0}),m(this,`onGCastApiAvailable`,()=>{var e;let t=this.getInstance();if(!t)throw`cast context should exist`;let n=t.getSessionState(),r=((e=this.config)==null?void 0:e.receiverApplicationId)||`A5452297`;t.setOptions({receiverApplicationId:r,autoJoinPolicy:chrome.cast.AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED,resumeSavedSession:!0}),t.addEventListener(cast.framework.CastContextEventType.SESSION_STATE_CHANGED,this.onSessionStateChanged),t.addEventListener(cast.framework.CastContextEventType.CAST_STATE_CHANGED,this.onCastStateChanged),this.updateDevicesAvailable(t.getCastState()),n===cast.framework.SessionState.SESSION_STARTED&&setTimeout(()=>{this.state=`casting`,this.emit(`resumed`)})}),m(this,`send`,e=>{var t;(t=this.getSession())==null||t.sendMessage(`urn:x-cast:com.vindral.castdata`,e)}),m(this,`onMessage`,(e,t)=>{if(e===`urn:x-cast:com.vindral.castdata`)try{let e=JSON.parse(t);switch(e.type){case`metadata`:this.emit(`metadata`,e.metadata);break;case`serverWallclockTime`:this.emit(`server wallclock time`,e.serverWallclockTime);break;default:break}}catch(e){}}),m(this,`onSessionStarted`,()=>{var e;(e=this.getSession())==null||e.addMessageListener(`urn:x-cast:com.vindral.castdata`,this.onMessage),this.send({type:`start`,config:this.config})}),m(this,`onCastStateChanged`,e=>{this.unloaded||this.updateDevicesAvailable(e.castState)}),m(this,`updateDevicesAvailable`,e=>{let t=e!==cast.framework.CastState.NO_DEVICES_AVAILABLE;t!==this.devicesAvailable&&(this.devicesAvailable=t,this.emit(`devices available`,t))}),m(this,`onSessionStateChanged`,e=>{if(!this.unloaded)switch(e.sessionState){case cast.framework.SessionState.SESSION_START_FAILED:this.state=`not casting`,this.emit(`failed`);break;case cast.framework.SessionState.SESSION_ENDED:this.state=`not casting`,this.emit(`disconnected`);break;case cast.framework.SessionState.SESSION_ENDING:break;case cast.framework.SessionState.SESSION_RESUMED:this.onSessionStarted(),this.state=`casting`,this.emit(`resumed`);break;case cast.framework.SessionState.SESSION_STARTED:this.onSessionStarted(),this.state=`casting`,this.emit(`connected`);break;case cast.framework.SessionState.SESSION_STARTING:break;default:break}}),m(this,`getInstance`,()=>{var e;return(e=window.cast)==null?void 0:e.framework.CastContext.getInstance()}),m(this,`getSession`,()=>{var e;return(e=this.getInstance())==null?void 0:e.getCurrentSession()}),m(this,`castLibrariesAdded`,()=>!!(document.querySelector(`#vindralCastFrameworkLib`)&&document.querySelector(`#vindralCastSenderLib`))),m(this,`verifyCastLibraries`,()=>{if(this.castLibrariesAdded())return;let e=document.createElement(`script`);e.type=`text/javascript`,e.id=`vindralCastFrameworkLib`,e.src=`//www.gstatic.com/cast/sdk/libs/sender/1.0/cast_framework.js`,document.head.appendChild(e);let t=document.createElement(`script`);t.type=`text/javascript`,t.id=`vindralCastSenderLib`,t.src=`//www.gstatic.com/cv/js/sender/v1/cast_sender.js`,document.head.appendChild(t)}),this.config=e}get casting(){return this.state===`casting`}get volume(){var e,t;return(e=(t=this.getSession())==null?void 0:t.getVolume())==null?0:e}set volume(e){var t;(t=this.getSession())==null||t.setVolume(e)}get language(){var e;return(e=this.config)==null||(e=e.options)==null?void 0:e.language}set language(e){this.config&&(this.config.options.language=e,this.send({type:`setLanguage`,language:e}))}get channelId(){var e;return((e=this.config)==null?void 0:e.options.channelId)||``}set channelId(e){this.config&&(this.config.options.channelId=e,this.send({type:`setChannelId`,channelId:e}))}},jr=e=>{switch(e){case`h264`:case`h265`:case`av1`:return`video`;case`aac`:case`opus`:case`mp3`:return`audio`;case`webvtt`:return`text`;default:throw Error(`Unknown codec`)}};function Mr(e){if(e.startsWith(`opus`))return`opus`;if(e.startsWith(`mp4a`))return`aac`;if(e.startsWith(`avc1`))return`h264`;if(e.startsWith(`hvc1`)||e.startsWith(`hev1`))return`h265`;if(e.startsWith(`av01`))return`av1`;if(e.startsWith(`webvtt`))return`webvtt`}U();function Nr(e){return!(typeof e.edges[0]==`string`||e.channels[0]&&!(`catalog`in e.channels[0]))}function Pr(e){return e.tracks.filter(e=>!!e.codec).filter(e=>Mr(e.codec||``)).map((e,t)=>{let n=e.codec,r=e.bitrate;Te(n,`codec is required`),Te(r!==void 0,`bitrate is required`);let i=Mr(n);if(Te(i,`codec is required`),jr(i)===`audio`){let a=e.samplerate||0;return{track:e,id:t,codec:i,codecString:n,bitRate:r,channels:e.channelConfig===`stereo`?2:1,sampleRate:a,language:e.language}}return jr(i)===`text`?{track:e,id:t,bitRate:0,codec:i,kind:`subtitles`,codecString:n,label:e.label,language:e.language}:(Te(e.width,`width is required`),Te(e.height,`width is required`),Te(e.framerate,`framerate is required`),{track:e,id:t,codec:i,bitRate:r,codecString:n,width:e.width,height:e.height,frameRate:e.framerate})}).sort((e,t)=>e.bitRate-t.bitRate)}var Fr=e=>`width`in e&&typeof e.width==`number`,Ir=e=>`sampleRate`in e&&typeof e.sampleRate==`number`,Lr=e=>{switch(e.codec){case`opus`:return`audio/mp4; codecs="opus"`;case`mp3`:return`audio/mpeg`;case`webvtt`:return`text/vtt`;case`aac`:return e.codecString?`audio/mp4; codecs="${e.codecString}"`:`audio/mp4`;case`h264`:case`h265`:return e.codecString?`video/mp4; codecs="${e.codecString}"`:`video/mp4`;case`av1`:return e.codecString?`video/mp4; codecs="${e.codecString}"`:`video/mp4`}},Rr=()=>2**53-1,zr=()=>({width:2**53-1,height:2**53-1}),Br=e=>!(typeof e!=`object`||!e||!(`type`in e));U();var Vr={sizeBasedResolutionCapEnabled:!0,pictureInPictureEnabled:!0,abrEnabled:!0,burstEnabled:!1,mseEnabled:!0,mseOpusEnabled:!0,muted:!1,volume:1,minBufferTime:1500,maxBufferTime:1500,logLevel:pn.OFF,maxSize:zr(),maxVideoBitRate:Rr(),maxAudioBitRate:Rr(),maxInitialBitRate:2.5*1e3*1e3,tags:[],media:`audio+video`,poster:!0,reconnectHandler:e=>e.reconnectRetries<30,iosWakeLockEnabled:!1,backgroundPlayEnabled:!0,mediaSessionEnabled:!0,telemetryEnabled:!0,streamToMediaElementEnabled:!1,iosMediaElementEnabled:!1,pauseSupportEnabled:!0,webcodecsHardwareAcceleration:`no-preference`,offscreenCanvasEnabled:void 0,advanced:{},videoCodecs:[`av1`,`h264`,`h265`],webtransportEnabled:!0};function Hr(e){return typeof e==`function`?this.then(t=>Promise.resolve(e()).then(()=>t),t=>Promise.resolve(e()).then(()=>{throw t})):this.then()}function Ur(e=Promise){return typeof e.prototype.finally!=`function`&&Object.defineProperty(e.prototype,`finally`,{configurable:!0,enumerable:!1,value:Hr,writable:!0}),e.prototype.finally}Ur();var Wr=e=>{e.width=320,e.height=180,e.style.width=`100%`,e.style.position=`relative`,e.style.backgroundColor=`#000`};z(),D(),h(),V(),N(),j(),k();var Gr={backgroundColor:`rgba(0,0,0,0.6)`,textPadding:8,fontSize:`28px`,lineGap:16},Kr=new WeakMap,qr=new WeakMap,Jr=new WeakMap,Yr=new WeakMap,Xr=new WeakSet,Zr=class{constructor(){R(this,Xr),E(this,Kr,[]),E(this,qr,document.createElement(`canvas`)),E(this,Jr,void 0),E(this,Yr,window.devicePixelRatio||1),m(this,`config`,B({},Gr));let e=M(qr,this).getContext(`2d`,{alpha:!0});if(!e)throw Error(`Failed to create 2d context`);A(Jr,this,e),O(Xr,this,$r).call(this)}get canvas(){return M(qr,this)}setActiveCues(e){A(Kr,this,e)}render(e,t=!1){let n=M(Kr,this).flatMap(t=>t.text.split(`
50
+ `),m(ar,`create`,(e,t)=>{if(typeof Worker>`u`||typeof Blob>`u`||typeof URL>`u`||typeof URL.createObjectURL!=`function`)return;let n;try{n=URL.createObjectURL(new Blob([rr.source],{type:`text/javascript`}));let r=new Worker(n);return new rr(r,n,e,t)}catch(e){n!==void 0&&URL.revokeObjectURL(n);return}}),or=class{constructor({mode:e=`window`}={}){m(this,`pendingTimeouts`,new Map),m(this,`pendingIntervals`,new Map),m(this,`timeoutHandles`,new Map),m(this,`intervalHandles`,new Map),m(this,`nextHandle`,1),m(this,`workerBackend`,void 0),m(this,`requestedMode`,void 0),m(this,`isWorkerBackendUnavailable`,()=>this.requestedMode===`worker-preferred`&&this.workerBackend===void 0),m(this,`clearTimeout`,e=>{if(!this.pendingTimeouts.delete(e))return;if(this.workerBackend){this.workerBackend.clearTimeout(e);return}let t=this.timeoutHandles.get(e);t!==void 0&&(globalThis.clearTimeout(t),this.timeoutHandles.delete(e))}),m(this,`clearInterval`,e=>{if(!this.pendingIntervals.delete(e))return;if(this.workerBackend){this.workerBackend.clearInterval(e);return}let t=this.intervalHandles.get(e);t!==void 0&&(globalThis.clearInterval(t),this.intervalHandles.delete(e))}),m(this,`setTimeout`,(e,t,...n)=>{let r=this.nextHandle++;return this.pendingTimeouts.set(r,{callback:()=>e(...n),delay:t}),this.workerBackend?(this.workerBackend.setTimeout(r,t),r):(this.armNativeTimeout(r,t),r)}),m(this,`setInterval`,(e,t,...n)=>{let r=this.nextHandle++;return this.pendingIntervals.set(r,{callback:()=>e(...n),delay:t}),this.workerBackend?(this.workerBackend.setInterval(r,t),r):(this.armNativeInterval(r,t),r)}),m(this,`armNativeTimeout`,(e,t)=>{this.timeoutHandles.set(e,globalThis.setTimeout(()=>this.fireTimeout(e),t))}),m(this,`armNativeInterval`,(e,t)=>{this.intervalHandles.set(e,globalThis.setInterval(()=>this.fireInterval(e),t))}),m(this,`unload`,()=>{var e;this.pendingIntervals.forEach((e,t)=>this.clearInterval(t)),this.pendingTimeouts.forEach((e,t)=>this.clearTimeout(t)),(e=this.workerBackend)==null||e.unload(),this.workerBackend=void 0}),m(this,`fireTimeout`,e=>{let t=this.pendingTimeouts.get(e);t&&(this.pendingTimeouts.delete(e),this.timeoutHandles.delete(e),t.callback())}),m(this,`fireInterval`,e=>{var t;(t=this.pendingIntervals.get(e))==null||t.callback()}),m(this,`onWorkerFailure`,()=>{this.workerBackend!==void 0&&(this.workerBackend.unload(),this.workerBackend=void 0,this.pendingTimeouts.forEach((e,t)=>{this.armNativeTimeout(t,e.delay)}),this.pendingIntervals.forEach((e,t)=>{this.armNativeInterval(t,e.delay)}))}),m(this,`onWorkerFire`,e=>{if(e.type===`timeout`){this.fireTimeout(e.id);return}this.fireInterval(e.id)}),this.requestedMode=e,e===`worker-preferred`&&(this.workerBackend=ar.create(this.onWorkerFire,this.onWorkerFailure))}},ir=or,m(or,`create`,(e={})=>new ir(e))})),cr,lr,ur,dr,fr,pr,mr=n((()=>{cr=(e,t=performance.now())=>{let n=e.length;if(n>0){let r=e[n-1];r.end||(r.end=t)}},lr=(e,t=performance.now())=>{cr(e,t),e.push({start:t})},ur=e=>e.reduce((e,t)=>{var n;return e+(((n=t.end)==null?performance.now():n)-t.start)},0),dr=(e,t,n=performance.now())=>e.reduce((e,r)=>{var i;let a=Math.max(n-t,r.start),o=(i=r.end)==null?n:i;return Math.max(0,o-a)+e},0),fr=(e,t,n,r)=>{let i=e[e.length-1];if(!i||t>=i.start){i&&t-r<=i.end?i.end=Math.max(i.end,n):e.push({start:t,end:n});return}let a=e.length;for(;a>0&&e[a-1].start>t;)a--;e.splice(a,0,{start:t,end:n});let o=0;for(let t=1;t<e.length;t++){let n=e[o],i=e[t];i.start-r<=n.end?n.end=Math.max(n.end,i.end):(o++,e[o]=i)}e.length=o+1},pr=(e,t)=>e.some(e=>e.start<=t&&t<e.end)}));function hr(e){try{return e()}catch(e){return e}}var gr=n((()=>{})),_r,vr=n((()=>{_r=e=>{try{return JSON.parse(e)}catch(e){return}}})),yr=n((()=>{})),br,xr=n((()=>{ae(),h(),V(),br=class{constructor(){var e;m(this,`highEntropyValues`,void 0),(e=self.navigator.userAgentData)==null||e.getHighEntropyValues([`architecture`,`model`,`platformVersion`,`fullVersionList`]).then(e=>{this.highEntropyValues=e}).catch(C)}getUserAgentInformation(){var e;let t=window.location.origin,n=!t||t===`null`?``:`${window.location.pathname}${window.location.search}`.substring(0,1e3),r={locationOrigin:window.location.origin,locationPath:n,ancestorOrigins:((e=window.location.ancestorOrigins)==null?void 0:e.length)>0?Array.from(window.location.ancestorOrigins):void 0,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory};if(self.navigator.userAgentData&&this.highEntropyValues){var i,a,o,s,c;let e=[...(i=this.highEntropyValues.brands)==null?[]:i];e.sort((e,t)=>e.brand.localeCompare(t.brand));let t=[...(a=this.highEntropyValues.fullVersionList)==null?[]:a];t.sort((e,t)=>e.brand.localeCompare(t.brand));let n=t.map(e=>e.version),l=e.map(e=>e.brand),u=e.map(e=>e.version),d=parseInt((o=(s=this.highEntropyValues.platformVersion)==null?void 0:s.split(`.`)[0])==null?`1`:o,10);return B({userAgentLegacy:window.navigator.userAgent,ua:{browser:{brands:l,fullVersionBrands:n,majorVersions:u},device:this.highEntropyValues.model||`Other`,os:{family:this.highEntropyValues.platform||`Other`,version:(c=this.highEntropyValues.platformVersion)==null?`1`:c,major_version:Number.isFinite(d)?d:0}}},r)}else return B({userAgent:window.navigator.userAgent},r)}}})),Sr,Cr=n((()=>{Sr=()=>{let e=[...Array(256).keys()].map(e=>e.toString(16).padStart(2,`0`)),t=crypto.getRandomValues(new Uint8Array(16));return t[6]=t[6]&15|64,t[8]=t[8]&63|128,[...t.entries()].map(([t,n])=>[4,6,8,10].includes(t)?`-${e[n]}`:e[n]).join(``)}})),wr,Tr,Er=n((()=>{we(),F(),wr=function(){var e=P(function*(e,t){return new Promise((n,r)=>{let i=setTimeout(()=>{a(),n()},e),a=xe(t,e=>{clearTimeout(i),r(ye(e))})})});return function(t,n){return e.apply(this,arguments)}}(),Tr=function(){var e=P(function*(e,t=Error(`Timeout`)){return new Promise((n,r)=>setTimeout(()=>r(t),e))});return function(t){return e.apply(this,arguments)}}(),function(){var e=P(function*(e,t){throw yield e,Error(t)});return function(t,n){return e.apply(this,arguments)}}()})),U=n((()=>{ie(),ve(),we(),Ee(),Oe(),Ae(),Fe(),Ve(),Ue(),Ge(),ft(),ft(),It(),Le(),Rt(),Kt(),Jt(),oe(),Yt(),Zt(),$t(),se(),tn(),un(),dn(),qe(),bn(),Mn(),Pn(),Fn(),In(),ae(),Xn(),Qn(),$n(),Wt(),er(),nr(),Cn(),sr(),mr(),gr(),vr(),yr(),xr(),Cr(),Er()}));U(),h(),F();var Dr=class extends Qt{constructor(e){super(),m(this,`config`,void 0),m(this,`hlsUrl`,void 0),m(this,`element`,void 0),m(this,`connectingTimeout`,void 0),m(this,`castingAvailable`,!1),m(this,`updateAuthenticationToken`,e=>{this.config.authenticationToken=e,this.hlsUrl=this.getHlsUrl(),this.castingAvailable&&(this.element.src=this.hlsUrl)}),m(this,`unload`,()=>{this.element&&(this.element.removeEventListener(`webkitplaybacktargetavailabilitychanged`,this.onAirPlayAvailable),this.element.removeEventListener(`webkitcurrentplaybacktargetiswirelesschanged`,this.onAirPlayPlaybackChanged),this.element.remove())}),m(this,`onAirPlayAvailable`,e=>{switch(e.availability){case`available`:this.castingAvailable=!0,this.element.src!==this.hlsUrl&&this.checkHlsUrl(this.hlsUrl).then(e=>{e&&(this.element.src=this.hlsUrl,this.emit(`available`))});break;case`not-available`:this.castingAvailable=!1;break;default:break}}),m(this,`onAirPlayPlaybackChanged`,()=>{window.clearTimeout(this.connectingTimeout),this.element.webkitCurrentPlaybackTargetIsWireless?(this.emit(`connected`),this.element.style.display=`block`,this.element.paused&&this.element.play().catch(C)):(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(){`webkitShowPlaybackTargetPicker`in this.element&&this.castingAvailable&&(this.element.paused&&(this.element.play().catch(C),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(){let 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 P(function*(){try{return(yield fetch(e,{method:`HEAD`})).ok}catch(e){return!1}})()}};U(),h(),F();var Or=1e4,kr=`CastSender was unloaded before the Google Cast SDK finished initializing`,Ar=class extends Qt{constructor(e){var t;super(),t=this,m(this,`state`,`not casting`),m(this,`config`,void 0),m(this,`unloaded`,!1),m(this,`logger`,vn.get().createContext(`CastSender`)),m(this,`devicesAvailable`,void 0),m(this,`updateAuthenticationToken`,e=>{this.config&&(this.config.options.authenticationToken=e,this.send({type:`updateAuthToken`,token:e}))}),m(this,`unload`,()=>{var e;this.unloaded=!0,(e=this.getSession())==null||e.removeMessageListener(`urn:x-cast:com.vindral.castdata`,this.onMessage),this.devicesAvailable&&this.emit(`devices available`,!1),this.devicesAvailable=void 0}),m(this,`init`,P(function*(){return new Promise((e,n)=>{let r=!1,i=setTimeout(()=>{r=!0,n(Error(`Timed out after ${Or} ms waiting for the Google Cast SDK`))},Or);window.__onGCastApiAvailable=a=>{if(clearTimeout(i),t.unloaded)return n(Error(kr));if(!a)return n(Error(`The Google Cast SDK reported the Cast API as unavailable`));setTimeout(()=>{if(t.unloaded)return n(Error(kr));try{t.onGCastApiAvailable(),e()}catch(e){let i=e instanceof Error?e:Error(String(e));r&&t.logger.warn(`Late Google Cast SDK initialization failed`,i),n(i)}},1e3)},t.castLibrariesAdded()&&window.cast?window.__onGCastApiAvailable(!0):t.verifyCastLibraries()})})),m(this,`start`,P(function*(){var e;yield(e=t.getInstance())==null?void 0:e.requestSession()})),m(this,`stop`,()=>{var e;(e=this.getSession())==null||e.endSession(!0)}),m(this,`getReceiverName`,()=>{var e;return((e=this.getSession())==null||(e=e.getCastDevice())==null?void 0:e.friendlyName)||void 0}),m(this,`onGCastApiAvailable`,()=>{var e;let t=this.getInstance();if(!t)throw`cast context should exist`;let n=t.getSessionState(),r=((e=this.config)==null?void 0:e.receiverApplicationId)||`A5452297`;t.setOptions({receiverApplicationId:r,autoJoinPolicy:chrome.cast.AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED,resumeSavedSession:!0}),t.addEventListener(cast.framework.CastContextEventType.SESSION_STATE_CHANGED,this.onSessionStateChanged),t.addEventListener(cast.framework.CastContextEventType.CAST_STATE_CHANGED,this.onCastStateChanged),this.updateDevicesAvailable(t.getCastState()),n===cast.framework.SessionState.SESSION_STARTED&&setTimeout(()=>{this.state=`casting`,this.emit(`resumed`)})}),m(this,`send`,e=>{var t;(t=this.getSession())==null||t.sendMessage(`urn:x-cast:com.vindral.castdata`,e)}),m(this,`onMessage`,(e,t)=>{if(e===`urn:x-cast:com.vindral.castdata`)try{let e=JSON.parse(t);switch(e.type){case`metadata`:this.emit(`metadata`,e.metadata);break;case`serverWallclockTime`:this.emit(`server wallclock time`,e.serverWallclockTime);break;default:break}}catch(e){}}),m(this,`onSessionStarted`,()=>{var e;(e=this.getSession())==null||e.addMessageListener(`urn:x-cast:com.vindral.castdata`,this.onMessage),this.send({type:`start`,config:this.config})}),m(this,`onCastStateChanged`,e=>{this.unloaded||this.updateDevicesAvailable(e.castState)}),m(this,`updateDevicesAvailable`,e=>{let t=e!==cast.framework.CastState.NO_DEVICES_AVAILABLE;t!==this.devicesAvailable&&(this.devicesAvailable=t,this.emit(`devices available`,t))}),m(this,`onSessionStateChanged`,e=>{if(!this.unloaded)switch(e.sessionState){case cast.framework.SessionState.SESSION_START_FAILED:this.state=`not casting`,this.emit(`failed`);break;case cast.framework.SessionState.SESSION_ENDED:this.state=`not casting`,this.emit(`disconnected`);break;case cast.framework.SessionState.SESSION_ENDING:break;case cast.framework.SessionState.SESSION_RESUMED:this.onSessionStarted(),this.state=`casting`,this.emit(`resumed`);break;case cast.framework.SessionState.SESSION_STARTED:this.onSessionStarted(),this.state=`casting`,this.emit(`connected`);break;case cast.framework.SessionState.SESSION_STARTING:break;default:break}}),m(this,`getInstance`,()=>{var e;return(e=window.cast)==null?void 0:e.framework.CastContext.getInstance()}),m(this,`getSession`,()=>{var e;return(e=this.getInstance())==null?void 0:e.getCurrentSession()}),m(this,`castLibrariesAdded`,()=>!!(document.querySelector(`#vindralCastFrameworkLib`)&&document.querySelector(`#vindralCastSenderLib`))),m(this,`verifyCastLibraries`,()=>{if(this.castLibrariesAdded())return;let e=document.createElement(`script`);e.type=`text/javascript`,e.id=`vindralCastFrameworkLib`,e.src=`//www.gstatic.com/cast/sdk/libs/sender/1.0/cast_framework.js`,document.head.appendChild(e);let t=document.createElement(`script`);t.type=`text/javascript`,t.id=`vindralCastSenderLib`,t.src=`//www.gstatic.com/cv/js/sender/v1/cast_sender.js`,document.head.appendChild(t)}),this.config=e}get casting(){return this.state===`casting`}get volume(){var e,t;return(e=(t=this.getSession())==null?void 0:t.getVolume())==null?0:e}set volume(e){var t;(t=this.getSession())==null||t.setVolume(e)}get language(){var e;return(e=this.config)==null||(e=e.options)==null?void 0:e.language}set language(e){this.config&&(this.config.options.language=e,this.send({type:`setLanguage`,language:e}))}get channelId(){var e;return((e=this.config)==null?void 0:e.options.channelId)||``}set channelId(e){this.config&&(this.config.options.channelId=e,this.send({type:`setChannelId`,channelId:e}))}},jr=e=>{switch(e){case`h264`:case`h265`:case`av1`:return`video`;case`aac`:case`opus`:case`mp3`:return`audio`;case`webvtt`:return`text`;default:throw Error(`Unknown codec`)}};function Mr(e){if(e.startsWith(`opus`))return`opus`;if(e.startsWith(`mp4a`))return`aac`;if(e.startsWith(`avc1`))return`h264`;if(e.startsWith(`hvc1`)||e.startsWith(`hev1`))return`h265`;if(e.startsWith(`av01`))return`av1`;if(e.startsWith(`webvtt`))return`webvtt`}U();function Nr(e){return!(typeof e.edges[0]==`string`||e.channels[0]&&!(`catalog`in e.channels[0]))}function Pr(e){return e.tracks.filter(e=>!!e.codec).filter(e=>Mr(e.codec||``)).map((e,t)=>{let n=e.codec,r=e.bitrate;Te(n,`codec is required`),Te(r!==void 0,`bitrate is required`);let i=Mr(n);if(Te(i,`codec is required`),jr(i)===`audio`){let a=e.samplerate||0;return{track:e,id:t,codec:i,codecString:n,bitRate:r,channels:e.channelConfig===`stereo`?2:1,sampleRate:a,language:e.language}}return jr(i)===`text`?{track:e,id:t,bitRate:0,codec:i,kind:`subtitles`,codecString:n,label:e.label,language:e.language}:(Te(e.width,`width is required`),Te(e.height,`width is required`),Te(e.framerate,`framerate is required`),{track:e,id:t,codec:i,bitRate:r,codecString:n,width:e.width,height:e.height,frameRate:e.framerate})}).sort((e,t)=>e.bitRate-t.bitRate)}var Fr=e=>`width`in e&&typeof e.width==`number`,Ir=e=>`sampleRate`in e&&typeof e.sampleRate==`number`,Lr=e=>{switch(e.codec){case`opus`:return`audio/mp4; codecs="opus"`;case`mp3`:return`audio/mpeg`;case`webvtt`:return`text/vtt`;case`aac`:return e.codecString?`audio/mp4; codecs="${e.codecString}"`:`audio/mp4`;case`h264`:case`h265`:return e.codecString?`video/mp4; codecs="${e.codecString}"`:`video/mp4`;case`av1`:return e.codecString?`video/mp4; codecs="${e.codecString}"`:`video/mp4`}},Rr=()=>2**53-1,zr=()=>({width:2**53-1,height:2**53-1}),Br=e=>!(typeof e!=`object`||!e||!(`type`in e));U();var Vr={sizeBasedResolutionCapEnabled:!0,pictureInPictureEnabled:!0,abrEnabled:!0,burstEnabled:!0,mseEnabled:!0,mseOpusEnabled:!0,muted:!1,volume:1,minBufferTime:1500,maxBufferTime:1500,logLevel:pn.OFF,maxSize:zr(),maxVideoBitRate:Rr(),maxAudioBitRate:Rr(),maxInitialBitRate:2.5*1e3*1e3,tags:[],media:`audio+video`,poster:!0,reconnectHandler:e=>e.reconnectRetries<30,iosWakeLockEnabled:!1,backgroundPlayEnabled:!0,mediaSessionEnabled:!0,telemetryEnabled:!0,streamToMediaElementEnabled:!1,iosMediaElementEnabled:!1,pauseSupportEnabled:!0,webcodecsHardwareAcceleration:`no-preference`,offscreenCanvasEnabled:void 0,advanced:{},videoCodecs:[`av1`,`h264`,`h265`],webtransportEnabled:!0};function Hr(e){return typeof e==`function`?this.then(t=>Promise.resolve(e()).then(()=>t),t=>Promise.resolve(e()).then(()=>{throw t})):this.then()}function Ur(e=Promise){return typeof e.prototype.finally!=`function`&&Object.defineProperty(e.prototype,`finally`,{configurable:!0,enumerable:!1,value:Hr,writable:!0}),e.prototype.finally}Ur();var Wr=e=>{e.width=320,e.height=180,e.style.width=`100%`,e.style.position=`relative`,e.style.backgroundColor=`#000`};z(),D(),h(),V(),N(),j(),k();var Gr={backgroundColor:`rgba(0,0,0,0.6)`,textPadding:8,fontSize:`28px`,lineGap:16},Kr=new WeakMap,qr=new WeakMap,Jr=new WeakMap,Yr=new WeakMap,Xr=new WeakSet,Zr=class{constructor(){R(this,Xr),E(this,Kr,[]),E(this,qr,document.createElement(`canvas`)),E(this,Jr,void 0),E(this,Yr,window.devicePixelRatio||1),m(this,`config`,B({},Gr));let e=M(qr,this).getContext(`2d`,{alpha:!0});if(!e)throw Error(`Failed to create 2d context`);A(Jr,this,e),O(Xr,this,$r).call(this)}get canvas(){return M(qr,this)}setActiveCues(e){A(Kr,this,e)}render(e,t=!1){let n=M(Kr,this).flatMap(t=>t.text.split(`
51
51
  `).flatMap(t=>O(Xr,this,ei).call(this,t,e.width)).filter(e=>e.length>0).map(e=>{O(Xr,this,$r).call(this);let t=M(Jr,this).measureText(e);return{text:e,measurement:t,size:{height:t.fontBoundingBoxAscent+t.fontBoundingBoxDescent+this.config.textPadding*2,width:t.width+this.config.textPadding*2}}}));if(n.length===0){O(Xr,this,Qr).call(this,0,0),M(Jr,this).clearRect(0,0,M(qr,this).width,M(qr,this).height);return}let r=Math.max(...n.map(e=>e.size.width)),i=n.reduce((e,{size:t})=>e+t.height,0)+(n.length-1)*this.config.lineGap,a=0;O(Xr,this,Qr).call(this,r,i),M(Jr,this).clearRect(0,0,M(qr,this).width,M(qr,this).height);for(let{size:e,text:t}of n)O(Xr,this,$r).call(this),M(Jr,this).fillStyle=this.config.backgroundColor,M(Jr,this).fillRect(0,a,e.width,e.height),O(Xr,this,$r).call(this),M(Jr,this).fillText(t,this.config.textPadding,a+this.config.textPadding),a+=e.height+this.config.lineGap;t&&(M(Jr,this).strokeStyle=`red`,M(Jr,this).strokeRect(0,0,e.width,M(qr,this).height))}};function Qr(e,t){M(qr,this).width=e*M(Yr,this),M(qr,this).height=t*M(Yr,this),M(Jr,this).setTransform(M(Yr,this),0,0,M(Yr,this),0,0),this.canvas.style.width=`${e}px`,this.canvas.style.height=`${t}px`}function $r(){M(Jr,this).fillStyle=`white`,M(Jr,this).textAlign=`left`,M(Jr,this).textBaseline=`top`,M(Jr,this).font=`${this.config.fontSize} sans-serif`}function ei(e,t){let n=[],r=e.split(` `),i=``;for(;r.length>0;){O(Xr,this,$r).call(this);let e=0;for(;M(Jr,this).measureText(i+(i.length>0?` `:``)+r[0]).width+this.config.textPadding*2<=t&&r.length>0;)e++,i+=(i.length>0?` `:``)+r.shift();if(e===0){n.push(r.shift()||``),i=``;continue}n.push(i),i=``}return n}function ti(e){var t;let{subtitleWidth:n,subtitleHeight:r,canvasWidth:i,canvasHeight:a,containerWidth:o,bottomPadding:s}=e,c=(t=e.baseMargin)==null?20:t,l=i/o,u=n*l,d=r*l;return{drawWidth:u,drawHeight:d,x:(i-u)/2,y:a-d-(s+c)*l}}function ni(e,t,n){return{scaleX:2*e.drawWidth/t,scaleY:2*e.drawHeight/n,translateX:2*e.x/t-1,translateY:1-2*e.y/n}}U(),h();var ri={width:256,height:144},ii=class extends Qt{constructor(){super(),m(this,`canvas`,document.createElement(`canvas`)),m(this,`context`,null),m(this,`size`,ri),m(this,`hasWarnedNoVideoFrame`,!1),m(this,`subtitleRenderer`,null),m(this,`hasActiveSubtitles`,!1),m(this,`load`,()=>{if(this.hasWarnedNoVideoFrame=!1,this.context=this.canvas.getContext(`2d`,{alpha:!1,desynchronized:!0}),!this.context)throw Error(`Failed to get 2D rendering context`);this.setSize(ri)}),m(this,`unload`,()=>{this.context=null,this.subtitleRenderer=null,this.hasActiveSubtitles=!1,this.setSize(ri)}),m(this,`setActiveCues`,(e,t)=>{this.subtitleRenderer||(this.subtitleRenderer=new Zr),this.subtitleRenderer.config.fontSize=tr(t.width,t.height),this.subtitleRenderer.setActiveCues(e),this.subtitleRenderer.render(t),this.hasActiveSubtitles=e.some(e=>e.text.length>0)}),m(this,`render`,(e,t=0)=>{if(!this.context)return;if(!e.videoFrame){this.hasWarnedNoVideoFrame||(console.warn(`[VideoFrameCanvas2DRenderer] No VideoFrame in sample, cannot render`),this.hasWarnedNoVideoFrame=!0);return}let n=e.videoFrame;this.setSize({width:e.width,height:e.height});try{this.context.drawImage(n,0,0,this.canvas.width,this.canvas.height),this.renderSubtitles(t)}catch(e){this.emit(`context lost`,e instanceof Error?e:Error(`Failed to render VideoFrame`))}}),m(this,`renderSubtitles`,e=>{if(!this.hasActiveSubtitles||!this.subtitleRenderer||!this.context)return;let t=this.subtitleRenderer.canvas;if(t.width===0||t.height===0)return;let n=window.devicePixelRatio||1,r=this.canvas.clientWidth||this.canvas.width,i=ti({subtitleWidth:t.width/n,subtitleHeight:t.height/n,canvasWidth:this.canvas.width,canvasHeight:this.canvas.height,containerWidth:r,bottomPadding:e});this.context.drawImage(t,i.x,i.y,i.drawWidth,i.drawHeight)}),m(this,`setSize`,e=>{e.width===this.size.width&&e.height===this.size.height||(this.size=e,this.canvas.width=e.width,this.canvas.height=e.height,this.context&&(this.context.fillStyle=`#000`,this.context.fillRect(0,0,e.width,e.height)))}),Wr(this.canvas)}},ai=`
52
52
  precision mediump float;
53
53
  uniform sampler2D texture;
@@ -1319,7 +1319,7 @@ var __async = (__this, __arguments, generator) => {
1319
1319
  });
1320
1320
  })();
1321
1321
  `,wx=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,Cx],{type:`text/javascript;charset=utf-8`})})),Ex=r({VideoDecoderWorkerContext:()=>Ox}),Dx,Ox,kx=n((()=>{U(),Tx(),h(),V(),F(),Ox=class{get isWebCodecs(){return this._isWebCodecs}get usingOffscreenCanvas(){return this._usingOffscreenCanvas}constructor(e,t,n,r,i=!1,a=!1){m(this,`decodedSamples`,[]),m(this,`codedSamples`,[]),m(this,`decoder`,void 0),m(this,`logger`,void 0),m(this,`errors`,new T(10)),m(this,`pool`,void 0),m(this,`getCurrentTime`,void 0),m(this,`_usingOffscreenCanvas`,void 0),m(this,`_isWebCodecs`,void 0),m(this,`_renderedFrameCount`,0),m(this,`_rendererDroppedFrameCount`,0),m(this,`statisticsQueue`,new T(1e3)),m(this,`samplesInTransitToWorker`,0),m(this,`workerPendingDecodeCount`,0),m(this,`videoTrackLostListener`,void 0),m(this,`targetSamplesInBatch`,4),m(this,`maxSamplesInFlight`,20),m(this,`unload`,()=>{this.decoder.postMessage({type:`unload`}),this.decoder.removeEventListener(`message`,this.onDecoderEvent),this.decoder.terminate(),this.statisticsQueue.clear(),this.codedSamples=[],this.decodedSamples.forEach(e=>{var t;return(t=e.videoFrame)==null?void 0:t.close()}),this.decodedSamples=[],this.samplesInTransitToWorker=0,this.workerPendingDecodeCount=0}),m(this,`enqueue`,e=>{this.codedSamples.push(B({},e)),this.flushQueuedSamples()}),m(this,`setRenderingEnabled`,e=>{this.decoder.postMessage({type:`render enabled`,enabled:e})}),m(this,`setMaxCanvasPixels`,e=>{this.decoder.postMessage({type:`max canvas pixels`,maxPixels:e})}),m(this,`_videoTrack`,void 0),m(this,`onVideoTrackLost`,e=>{this.videoTrackLostListener=e}),m(this,`setSubtitleCues`,(e,t,n,r,i)=>{this.decoder.postMessage({type:`subtitle cues`,cues:e,containerWidth:t,containerHeight:n,devicePixelRatio:r,bottomPadding:i})}),m(this,`prepareOutputBuffers`,e=>{this._isWebCodecs||e.forEach(e=>{let t=Math.ceil(e.width/16)*16*(Math.ceil(e.height/16)*16)*3/2;e.buffer=this.pool.get(t)})}),m(this,`flushQueuedSamples`,()=>{for(;this.codedSamples.length>0&&this.samplesInFlight()<this.maxSamplesInFlight;){let e=Math.max(this.maxSamplesInFlight-this.samplesInFlight(),0),t=Math.min(this.targetSamplesInBatch,this.codedSamples.length,e);if(t<=0)return;let n=this.codedSamples.slice(0,t);this.codedSamples=this.codedSamples.slice(t),this.prepareOutputBuffers(n),this.sendSamples(n),this.samplesInTransitToWorker+=n.length}}),m(this,`initSegment`,e=>{let t={type:`init segment`,initSegment:e};this.decoder.postMessage(t)}),m(this,`take`,()=>this.decodedSamples.shift()),m(this,`samplesInFlight`,()=>this.samplesInTransitToWorker+this.workerPendingDecodeCount),m(this,`getRenderStatistics`,()=>({renderedFrameCount:this._renderedFrameCount,rendererDroppedFrameCount:this._rendererDroppedFrameCount})),m(this,`takeEstimatedStatistics`,()=>this.statisticsQueue.pop()),m(this,`sendSamples`,e=>{var t;let n={type:`decode samples`,samples:e,timestamp:Date.now(),currentTime:(t=this.getCurrentTime)==null?void 0:t.call(this)},r=this._isWebCodecs?e.map(e=>e.data):e.flatMap(e=>[e.data,e.buffer]).filter(e=>e!==void 0);this.decoder.postMessage(n,r)}),m(this,`onDecoderEvent`,e=>{switch(e.data.type){case`ready`:break;case`video track lost`:var t;this._videoTrack=void 0,(t=this.videoTrackLostListener)==null||t.call(this,e.data.error);break;case`error`:this.errors.push(Error(e.data.message)),this.samplesInTransitToWorker=0,this.workerPendingDecodeCount=0;break;case`decoder error`:this.errors.push(Object.assign(Error(e.data.message),{name:e.data.name,stream:e.data.stream}));break;case`decoded samples`:{typeof e.data.samplesAcceptedCount==`number`&&e.data.samplesAcceptedCount>0&&(this.samplesInTransitToWorker=Math.max(0,this.samplesInTransitToWorker-e.data.samplesAcceptedCount)),typeof e.data.decoderPendingCount==`number`&&e.data.decoderPendingCount>=0&&(this.workerPendingDecodeCount=e.data.decoderPendingCount);let t=e.data.timestamp,n=Date.now()-t;if(typeof e.data.estimatedSampleCount==`number`&&e.data.estimatedSampleCount>0&&typeof e.data.estimatedDecodeTimeSum==`number`&&typeof e.data.estimatedTransportTimeToWorkerSum==`number`){let t=e.data.estimatedSampleCount,r=e.data.estimatedDecodeTimeSum/t,i=e.data.estimatedTransportTimeToWorkerSum/t+n;for(let e=0;e<t;e++)this.statisticsQueue.push({decodeTime:r,transportTime:i})}e.data.samples.forEach(e=>{e.statistics&&(e.statistics.transportTimeFromWorker=n)}),typeof e.data.renderedFrameCount==`number`&&(this._renderedFrameCount=e.data.renderedFrameCount),typeof e.data.rendererDroppedFrameCount==`number`&&(this._rendererDroppedFrameCount=e.data.rendererDroppedFrameCount),this.decodedSamples.push(...e.data.samples),this.flushQueuedSamples()}break}}),this.decoder=e,this.logger=t,this.pool=n,this.getCurrentTime=r,this._isWebCodecs=i,this._usingOffscreenCanvas=a,this.decoder.addEventListener(`message`,this.onDecoderEvent)}get videoTrack(){return this._videoTrack}error(){return this.errors.pop()}},Dx=Ox,m(Ox,`create`,function(){var e=P(function*(e,t,n,r=!1,i=`no-preference`,a,o,s=!1,c){let l=new Sx,{isWebCodecs:u,usingOffscreenCanvas:d,videoTrack:f,videoTrackError:p}=yield new Promise((n,o)=>{let u=!1,d=setTimeout(()=>{u||(u=!0,f(Error(`Decoder worker initialization timed out`)))},1e4),f=e=>{if(u=!0,clearTimeout(d),l.removeEventListener(`message`,p),l.terminate(),e instanceof Error){o(e);return}o(Error(`Failed to initialize decoder worker`))},p=e=>{if(!u)switch(u=!0,clearTimeout(d),l.removeEventListener(`message`,p),e.data.type){case`ready`:n({isWebCodecs:e.data.isWebCodecs,usingOffscreenCanvas:e.data.usingOffscreenCanvas,videoTrack:e.data.videoTrack,videoTrackError:e.data.videoTrackError});break;case`error`:var t;f(Error((t=e.data.message)==null?`Failed to initialize decoder worker`:t));break;default:f(Error(`Failed to initialize decoder worker`));break}};l.addEventListener(`message`,p);let m={type:`init`,logLevel:t,useWebCodecs:r,webcodecsHardwareAcceleration:i,offscreenCanvas:a,videoTrackRequested:s,maxCanvasPixels:c};try{a?l.postMessage(m,[a]):l.postMessage(m)}catch(n){let o=n instanceof DOMException&&n.name===`DataCloneError`;if(a&&o){e.warn(`Failed to transfer OffscreenCanvas to worker, falling back to main-thread rendering`,n);try{l.postMessage({type:`init`,logLevel:t,useWebCodecs:r,webcodecsHardwareAcceleration:i,offscreenCanvas:void 0})}catch(e){f(e)}}else f(n)}}),m=new Dx(l,e,n,o,u,d);return m._videoTrack=f,s&&!f&&e.info(`Worker video track unavailable, using canvas capture`,{error:p}),m});return function(t,n,r){return e.apply(this,arguments)}}())}));U(),h(),V(),F();var Ax=5,jx=40,Mx=1,Nx=5,Px=e=>{var t,n;return((t=e.maxCompositionOffsetMs)==null?0:t)-((n=e.minCompositionOffsetMs)==null?0:n)},Fx=(e,t,n)=>{let r=[];for(let i of e){let e=r[r.length-1];if(e&&e.end>=t&&i.start-e.end<=n){e.end=Math.max(e.end,i.end);continue}r.push({start:i.start,end:i.end})}return r},Ix=(e,t)=>{let n=e[e.length-1];n&&n.end>t&&n.start<t&&(n.end=t)},Lx=100,Rx=1e3,zx=class e{constructor(e,t,n,r,i=!1,a=!1,o=!1){m(this,`backgroundTimersEnabled`,!1),m(this,`timers`,this.createTimers()),m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`trackContexts`,void 0),m(this,`playbackSource`,void 0),m(this,`isLoaded`,!1),m(this,`isSuspended`,!1),m(this,`_webCodecsInUse`,void 0),m(this,`_audioWebCodecsInUse`,void 0),m(this,`_offscreenCanvasInUse`,void 0),m(this,`currentVideoDecodeRate`,2),m(this,`decodeRateGraceIntervals`,3),m(this,`isAudioEmitRetryScheduled`,!1),m(this,`videoKeyframeTimestamps`,[]),m(this,`load`,()=>{this.isLoaded=!0,this.armTimers(),this.emitter.on(`init segment`,this.onInitSegment),this.emitter.on(`coded sample`,this.decode),this.emitter.on(`flush buffers`,this.resetContexts)}),m(this,`enableBackgroundTimers`,()=>{this.backgroundTimersEnabled||(this.backgroundTimersEnabled=!0,this.replaceTimers())}),m(this,`unload`,()=>{this.isLoaded=!1,this.trackContexts.forEach(({decoderContext:e})=>e.unload()),this.timers.unload(),this.isAudioEmitRetryScheduled=!1,this.videoKeyframeTimestamps=[],this.emitter.off(`init segment`,this.onInitSegment),this.emitter.off(`coded sample`,this.decode),this.emitter.off(`flush buffers`,this.resetContexts)}),m(this,`resetContexts`,()=>{this.trackContexts.forEach(({decoderContext:e})=>{var t;(t=e.reset)==null||t.call(e)})}),m(this,`suspend`,()=>{this.isSuspended=!0}),m(this,`unsuspend`,()=>{this.isSuspended=!1,this.emitDecodedFrames(),this._audioWebCodecsInUse&&this.scheduleAudioEmitRetry()}),m(this,`armTimers`,()=>{let e=this._audioWebCodecsInUse?20:Lx;this.timers.setInterval(this.emitDecodedFrames,e),this.timers.setInterval(this.emitDecodeRate,Rx)}),m(this,`replaceTimers`,()=>{let e=this.isAudioEmitRetryScheduled;this.isAudioEmitRetryScheduled=!1,this.timers.unload(),this.timers=this.createTimers(),this.timers.isWorkerBackendUnavailable()&&this.logger.warn(`Background timer worker is unavailable (likely blocked by CSP or unsupported in this environment). Falling back to main-thread timers; hidden-tab playback may be throttled.`),this.isLoaded&&(this.armTimers(),e&&this.scheduleAudioEmitRetry())}),m(this,`getBuffer`,e=>{let t=this.trackContexts.get(e);return t&&this.playableRanges(t).map(e=>({start:e.start,end:e.end}))}),m(this,`getVideoKeyframeTimestamps`,()=>this.videoKeyframeTimestamps),m(this,`videoDecodeRate`,()=>this.currentVideoDecodeRate),m(this,`calculateVideoDecodeRate`,()=>{var e;if(this._webCodecsInUse)return 2;let t=this.trackContexts.get(`video`);if(!t)return 2**53-1;let n=(e=t.sampleDuration)==null?40:e,r=Ht(t.decodeTime.items()),i=Ht(t.transportTime.items()),a=r.average+i.average;return a<=0?2:Math.min(n/a,100)}),m(this,`getStatistics`,()=>{var e,t,n,r,i;let a=this.trackContexts.get(`video`),o=Ht((e=a==null?void 0:a.decodeTime.items())==null?[]:e),s=Ht((t=a==null?void 0:a.transportTime.items())==null?[]:t),c=Ht((n=(r=this.trackContexts.get(`audio`))==null?void 0:r.decodeTime.items())==null?[]:n),l=this._offscreenCanvasInUse?a==null||(i=a.getRenderStatistics)==null?void 0:i.call(a):void 0;return B(B({videoDecodeRate:this.videoDecodeRate(),videoDecodeTime:o,audioDecodeTime:c,videoTransportTime:s,videoKeyframeIntervalMs:Bt(this.videoKeyframeTimestamps)},l?{renderedFrameCount:l.renderedFrameCount,rendererDroppedFrameCount:l.rendererDroppedFrameCount}:{}),{},{videoRenderer:this._offscreenCanvasInUse?`OffscreenCanvas`:`Canvas`,videoDecoder:this._webCodecsInUse?`WebCodecs`:`WASM`,audioRenderer:`AudioContext`,audioDecoder:this._audioWebCodecsInUse?`WebCodecs`:`WASM`})}),m(this,`setVideoRenderingEnabled`,e=>{var t,n,r;this._offscreenCanvasInUse&&((t=this.trackContexts.get(`video`))==null||(r=(n=t.decoderContext).setRenderingEnabled)==null||r.call(n,e))}),m(this,`setMaxVideoCanvasPixels`,e=>{var t,n,r;this._offscreenCanvasInUse&&((t=this.trackContexts.get(`video`))==null||(r=(n=t.decoderContext).setMaxCanvasPixels)==null||r.call(n,e))}),m(this,`onVideoTrackLost`,e=>{var t,n,r;(t=this.trackContexts.get(`video`))==null||(r=(n=t.decoderContext).onVideoTrackLost)==null||r.call(n,e)}),m(this,`setSubtitleCues`,(e,t,n,r,i)=>{var a;if(!this._offscreenCanvasInUse)return;let o=(a=this.trackContexts.get(`video`))==null?void 0:a.decoderContext;o&&`setSubtitleCues`in o&&o.setSubtitleCues(e,t,n,r,i)}),m(this,`onInitSegment`,({initSegment:e})=>{var t;let n=(t=this.trackContexts.get(e.type))==null?void 0:t.decoderContext;if(!n)throw new W(`No known decoder context`,{code:`no_known_decoder_context`,isFatal:!1});n.initSegment(e)}),m(this,`decode`,e=>{var t,n,r;let i=this.trackContexts.get(e.type);if(!i)throw new W(`No known decoder context`,{code:`no_known_decoder_context`,isFatal:!1});if(this.isSuspended)return;let a=e.compositionTimeOffset||0,{decoderContext:o,buffer:s}=i;i.stream=`${e.channelId}/${e.renditionId}`;let c=(e.timestamp+a)/e.timescale*1e3,l=e.duration/e.timescale*1e3;l>0&&(i.sampleDuration=l);let u=i.sampleDuration||jx,d=e.timestamp/e.timescale*1e3,f=a/e.timescale*1e3,p=Px(i),m=(t=s[s.length-1])==null?void 0:t.end,h=Math.max(u*Nx,p+((n=i.frontierSampleDurationMs)==null?u:n)),g=m!==void 0&&c+h<m;i.lastDecodeTimestampMs=g?d:Math.max((r=i.lastDecodeTimestampMs)==null?d:r,d);let _=i.channelId!==void 0&&!tx(i.channelId,i.renditionId,e.channelId,e.renditionId);i.channelId=e.channelId,i.renditionId=e.renditionId,(g||_)&&(i.minCompositionOffsetMs=void 0,i.maxCompositionOffsetMs=void 0,i.hasAnchoredGop=!1,i.isReorderStructureStale=!0);let v=i.hasAnchoredGop===!0;if(e.isSync&&(i.hasAnchoredGop=!0),!g&&i.hasAnchoredGop){var y,b;i.minCompositionOffsetMs=Math.min((y=i.minCompositionOffsetMs)==null?f:y,f),i.maxCompositionOffsetMs=Math.max((b=i.maxCompositionOffsetMs)==null?f:b,f),v&&(i.isReorderStructureStale=!1)}let ee=Px(i)>0;if(g)i.buffer=[{start:c,end:c+u}],i.frontierSampleDurationMs=u,e.type===`video`&&(this.videoKeyframeTimestamps=[]);else{var x;!ee&&!i.isReorderStructureStale&&Ix(s,c+u);let e=(x=s[s.length-1])==null?void 0:x.end;(e===void 0||c+u>=e)&&(i.frontierSampleDurationMs=u),fr(s,c,c+u,Ax)}if(i.playableRangesCache=void 0,e.type===`video`&&e.isSync){let e=this.videoKeyframeTimestamps[this.videoKeyframeTimestamps.length-1];e!==void 0&&c<e&&(this.videoKeyframeTimestamps=[]),this.videoKeyframeTimestamps.push(c),this.videoKeyframeTimestamps.length>20&&(this.videoKeyframeTimestamps=this.videoKeyframeTimestamps.slice(-20))}o.enqueue(e),this.emitDecodedFrames(),this._audioWebCodecsInUse&&e.type===`audio`&&this.scheduleAudioEmitRetry()}),m(this,`scheduleAudioEmitRetry`,()=>{this.isAudioEmitRetryScheduled||(this.isAudioEmitRetryScheduled=!0,this.timers.setTimeout(()=>{this.isAudioEmitRetryScheduled=!1,this.emitDecodedFrames()},0))}),m(this,`emitDecodedFrames`,()=>{let e;this.updateBufferState(),this.trackContexts.forEach((t,n)=>{var r,i,a,o;let s;for(;(s=(r=(i=t.decoderContext).error)==null?void 0:r.call(i))!==void 0;){var c;let e=`${(c=s.stream)==null?t.stream:c} ${s.name}: ${s.message}`;e!==t.lastReportedError&&(t.lastReportedError=e,this.emitter.emit(`error`,Oi(!1,s,n)))}for(;(e=t.decoderContext.take())!==void 0;){t.lastReportedError=void 0;let{statistics:n}=e;n&&(t.decodeTime.push(n.decodeTime),t.transportTime.push((n.transportTimeToWorker+n.transportTimeFromWorker)/n.samplesInBatch)),this.emitter.emit(`decoded frame`,e)}let l=(a=(o=t.decoderContext).takeEstimatedStatistics)==null?void 0:a.call(o);for(;l!==void 0;){var u,d;t.decodeTime.push(l.decodeTime),t.transportTime.push(l.transportTime),l=(u=(d=t.decoderContext).takeEstimatedStatistics)==null?void 0:u.call(d)}})}),m(this,`emitDecodeRate`,()=>{if(this.decodeRateGraceIntervals>0){this.decodeRateGraceIntervals--;return}this.currentVideoDecodeRate=this.calculateVideoDecodeRate(),this.emitter.emit(`video decode rate`,this.currentVideoDecodeRate)}),m(this,`playableRanges`,e=>{let t=Px(e);if(t<=0)return e.buffer;if(e.playableRangesCache===void 0){var n,r;e.playableRangesCache=Fx(e.buffer,((n=e.lastDecodeTimestampMs)==null?1/0:n)-Math.max(0,-((r=e.minCompositionOffsetMs)==null?0:r))-Mx,t+(e.sampleDuration||jx)+Mx)}return e.playableRangesCache}),m(this,`updateBufferState`,()=>{let e=this.playbackSource.currentTime,t,n=!0;this.trackContexts.forEach(r=>{var i,a,o,s;let c=this.playableRanges(r),l=(i=t==null||(a=t[t.length-1])==null?void 0:a.end)==null?0:i,u=(o=(s=c[c.length-1])==null?void 0:s.end)==null?0:o;(t===void 0||l>u)&&(t=c),pr(c,e)||(n=!1)}),t&&this.emitter.emit(`buffer state`,{buffered:t,currentTime:e,isPaused:this.playbackSource.isPaused,playbackState:n?`playing`:`buffering`})}),this.logger=t,this.emitter=e,this.trackContexts=n,this.playbackSource=r,this._webCodecsInUse=i,this._audioWebCodecsInUse=a,this._offscreenCanvasInUse=o}get audioWebCodecsInUse(){return this._audioWebCodecsInUse}createTimers(){return or.create(this.backgroundTimersEnabled?{mode:`worker-preferred`}:void 0)}static create(t,n,r,i,a,o,s=!1,c=`no-preference`,l,u=!1,d){return P(function*(){let f=new Map,p=new Set,m=!1,h=!1,g=!1;for(let e of i){if(p.has(e.type)){n.warn(`Received duplicate track type for decoder initialization. Ignoring subsequent track.`,{trackType:e.type,codec:e.codec,mimeType:e.mimeType});continue}switch(p.add(e.type),e.type){case`audio`:{let t,r,i=!1;if(s){let{WebCodecsAudioDecoderContext:a}=yield Promise.resolve().then(()=>(ux(),ax));if(i=a.isSupported(),i)try{t=yield a.create(n.createContext(`WebCodecsAudio`)),h=!0}catch(t){r=t instanceof Error?t:Error(`Failed to initialize WebCodecs audio decoder`),e.codec===`opus`&&n.warn(`Failed to initialize WebCodecs audio decoder, falling back to WASM Opus decoder`,{codec:e.codec,error:r})}}if(!t)if(e.codec===`opus`){let{OpusDecoderContext:n}=yield Promise.resolve().then(()=>(xx(),vx));t=yield n.create(e.sampleRate||48e3,e.channels||2)}else{let t=s?r?`WebCodecs audio decoder initialization failed: ${r.message}`:i?`WebCodecs audio decoder could not be initialized.`:`WebCodecs AudioDecoder API is not supported in this environment.`:`WebCodecs audio decoding is disabled.`;throw ki(e.codec,t,r)}f.set(e.type,{buffer:[],decoderContext:t,decodeTime:new T(100),transportTime:new T(100),sampleDuration:40});break}case`video`:{let{VideoDecoderWorkerContext:t}=yield Promise.resolve().then(()=>(kx(),Ex)),i=yield t.create(n.createContext(`VideoDecoderWorker`),r,o,s,c,l,()=>a.currentTime,u,d);m=i.isWebCodecs,g=i.usingOffscreenCanvas,f.set(e.type,{buffer:[],decoderContext:i,decodeTime:new T(100),transportTime:new T(100),sampleDuration:40,getRenderStatistics:i.getRenderStatistics});break}default:break}}return new e(t,n,f,a,m,h,g)})()}get videoTrack(){var e;if(this._offscreenCanvasInUse)return(e=this.trackContexts.get(`video`))==null?void 0:e.decoderContext.videoTrack}};h();var Bx,Vx=class{constructor(e){m(this,`emitter`,void 0),m(this,`isVisibleCount`,0),m(this,`isHiddenCount`,0),m(this,`isOnlineCount`,0),m(this,`isOfflineCount`,0),m(this,`isActive`,document.visibilityState===`visible`),m(this,`isBehindAnotherApp`,!1),m(this,`unload`,()=>{this.emitter.off(`fullscreen app switch`,this.onFullscreenAppSwitch),window.removeEventListener(`focus`,this.onVisibilityChanged),document.removeEventListener(`visibilitychange`,this.onVisibilityChanged),window.removeEventListener(`pageshow`,this.onPageShow),window.removeEventListener(`pagehide`,this.onPageHide),window.removeEventListener(`online`,this.onOnline),window.removeEventListener(`offline`,this.onOffline)}),m(this,`load`,()=>{this.emitter.on(`fullscreen app switch`,this.onFullscreenAppSwitch),window.addEventListener(`focus`,this.onVisibilityChanged),document.addEventListener(`visibilitychange`,this.onVisibilityChanged),window.addEventListener(`pageshow`,this.onPageShow),window.addEventListener(`pagehide`,this.onPageHide),window.addEventListener(`online`,this.onOnline),window.addEventListener(`offline`,this.onOffline)}),m(this,`unsuspend`,()=>{}),m(this,`getStatistics`,()=>{var e,t,n,r,i;return{isVisible:this.isVisible,isOnline:this.isOnline,isVisibleCount:this.isVisibleCount,isHiddenCount:this.isHiddenCount,isOnlineCount:this.isOnlineCount,isOfflineCount:this.isOfflineCount,navigatorRtt:(e=navigator.connection)==null?void 0:e.rtt,navigatorEffectiveType:(t=navigator.connection)==null?void 0:t.effectiveType,navigatorConnectionType:(n=navigator.connection)==null?void 0:n.type,navigatorSaveData:(r=navigator.connection)==null?void 0:r.saveData,navigatorDownlink:(i=navigator.connection)==null?void 0:i.downlink}}),m(this,`onOnline`,()=>this.isOnlineCount++),m(this,`onOffline`,()=>this.isOfflineCount++),m(this,`onPageShow`,e=>{this.emitter.emit(`pageshow`,e),this.onVisibilityChanged()}),m(this,`onPageHide`,e=>this.emitter.emit(`pagehide`,e)),m(this,`onVisibilityChanged`,()=>{this.isBehindAnotherApp=!1,this.setIsActive(this.isVisible)}),m(this,`onFullscreenAppSwitch`,()=>{this.isBehindAnotherApp=!0,this.setIsActive(!1)}),m(this,`setIsActive`,e=>{e!==this.isActive&&(this.emitter.emit(`page active`,e),e?this.isVisibleCount++:this.isHiddenCount++),this.isActive=e}),this.emitter=e}get isOnline(){return navigator.onLine}get isVisible(){return document.visibilityState===`visible`&&!this.isBehindAnotherApp}};Bx=Vx,m(Vx,`create`,e=>new Bx(e)),U(),h(),V();var Hx,Ux=e=>(t,n,r)=>t.timestamp<=n||t.timestampAdded<=r-e,Wx=class e{constructor(t,n,r){m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`waitingEvents`,[]),m(this,`isTriggered`,Ux(e.EVENT_TIMEOUT)),m(this,`timeSource`,void 0),m(this,`timers`,new or),m(this,`load`,()=>{this.timers.setInterval(this.onBufferedStateChanged,e.EVENT_CHECK_INTERVAL),this.emitter.on(`add event`,this.addEvent)}),m(this,`unload`,()=>{this.timers.unload(),this.emitter.off(`add event`,this.addEvent)}),m(this,`addEvent`,e=>{this.logger.debug(`Adding event`,{event:e}),!this.waitingEvents.some(t=>t.id!==void 0&&t.id===e.id)&&this.waitingEvents.push(B(B({},e),{},{timestampAdded:performance.now()}))}),m(this,`extractEvent`,(e,t)=>{t.type===`video`&&e.channelId!==t.channelId&&this.addEvent({type:`channel switch`,channelId:t.channelId,timestamp:t.timestamp/t.timescale*1e3}),t.type===`audio`&&e.type===`audio`&&t.language!==void 0&&t.language!==e.language&&this.addEvent({type:`language switch`,language:t.language,timestamp:t.timestamp/t.timescale*1e3})}),m(this,`onBufferedStateChanged`,()=>{var e;let t=performance.now(),n=(e=this.timeSource.drift)==null?0:e,r=this.timeSource.serverCurrentTime-n;if(this.waitingEvents.length===0)return;let i=this.waitingEvents.filter(e=>this.isTriggered(e,r,t));this.waitingEvents=this.waitingEvents.filter(e=>!this.isTriggered(e,r,t)),i.forEach(e=>{this.logger.debug(`Emitting event`,{event:e}),this.emitter.emit(`event`,e)})}),this.logger=n,this.emitter=t,this.timeSource=r}};Hx=Wx,m(Wx,`EVENT_TIMEOUT`,5e3),m(Wx,`EVENT_CHECK_INTERVAL`,20),m(Wx,`create`,(e,t,n)=>new Hx(e,t,n)),U(),h();var Gx,Kx=class e{constructor(t){m(this,`emitter`,void 0),m(this,`timers`,or.create()),m(this,`bytesReceived`,new Map),m(this,`timeoutInterval`,void 0),m(this,`lastBytesUpdated`,performance.now()),m(this,`load`,()=>{this.emitter.on(`connection state`,this.onConnectionState),this.timers.setInterval(()=>this.bytesReceived.forEach(e=>e.tick()),100)}),m(this,`unload`,()=>{this.emitter.off(`connection state`,this.onConnectionState),this.timers.unload()}),m(this,`averageBitRate`,e=>{var t,n;return((t=(n=this.bytesReceived.get(e))==null?void 0:n.average)==null?0:t)*8}),m(this,`totalBytesReceived`,()=>{let e=0;return this.bytesReceived.forEach(t=>{e+=t.total}),e}),m(this,`add`,(t,n)=>{let r=this.bytesReceived.get(t);r||(r=new Gt(20),this.bytesReceived.set(t,r)),n>0&&(this.lastBytesUpdated=performance.now(),this.timeoutInterval||(this.timeoutInterval=this.timers.setInterval(this.checkTimeout,e.UPDATE_RECEIVED_BYTES_INTERVAL))),r.add(n)}),m(this,`getStatistics`,()=>({bytesReceived:this.totalBytesReceived(),videoBitRate:this.averageBitRate(`video`),audioBitRate:this.averageBitRate(`audio`)})),m(this,`onConnectionState`,t=>{this.clearTimeoutInterval(),t===`connected`&&(this.lastBytesUpdated=performance.now(),this.timeoutInterval=this.timers.setInterval(this.checkTimeout,e.UPDATE_RECEIVED_BYTES_INTERVAL))}),m(this,`checkTimeout`,()=>{let t=performance.now()-this.lastBytesUpdated;if(this.totalBytesReceived()===0&&t>e.NO_DATA_ERROR_TIMEOUT){this.emitter.emit(`error`,Hi()),this.emitter.emit(`reconnect`,`no incoming data`),this.clearTimeoutInterval();return}t>e.NO_DATA_TIMEOUT&&this.totalBytesReceived()>0&&(this.emitter.emit(`no data timeout`,this.totalBytesReceived()),this.clearTimeoutInterval())}),m(this,`clearTimeoutInterval`,()=>{this.timeoutInterval&&(this.timers.clearInterval(this.timeoutInterval),this.timeoutInterval=void 0)}),this.emitter=t}};Gx=Kx,m(Kx,`NO_DATA_ERROR_TIMEOUT`,20*1e3),m(Kx,`NO_DATA_TIMEOUT`,5*1e3),m(Kx,`UPDATE_RECEIVED_BYTES_INTERVAL`,1e3),m(Kx,`create`,e=>new Gx(e)),U(),h();var qx=1e3,Jx=50,Yx=class e{constructor(e){m(this,`logger`,void 0),m(this,`trackingState`,new Map),m(this,`runningJitter`,new Map),m(this,`recentJitterSamples`,new Map),m(this,`load`,()=>{this.logger.debug(`JitterModule loaded`)}),m(this,`unload`,()=>{this.trackingState.clear(),this.runningJitter.clear(),this.recentJitterSamples.clear(),this.logger.debug(`JitterModule unloaded`)}),this.logger=e}static create(t){return new e(t)}getTrackingKey(e,t){return`${e}-${t}`}recordSample(e){var t;let n=this.getTrackingKey(e.type,e.renditionId),r=performance.now(),i=e.timestamp/e.timescale*1e3,a=this.trackingState.get(n);if(!a){this.trackingState.set(n,{lastArrivalTime:r,lastTimestampMs:i,jitterSamples:new T(qx),interArrivalTimes:new T(qx)}),this.runningJitter.set(n,0),this.recentJitterSamples.set(n,new T(Jx));return}let o=i-a.lastTimestampMs;if(o<=0){a.lastArrivalTime=r,a.lastTimestampMs=i;return}let s=r-a.lastArrivalTime,c=Math.abs(s-o);a.jitterSamples.push(c),a.interArrivalTimes.push(s);let l=(t=this.runningJitter.get(n))==null?0:t,u=l+(c-l)/16;this.runningJitter.set(n,u);let d=this.recentJitterSamples.get(n);d||(d=new T(Jx),this.recentJitterSamples.set(n,d)),d.push(c),a.lastArrivalTime=r,a.lastTimestampMs=i}getJitterForType(e){for(let[i,a]of this.trackingState)if(i.startsWith(e)){var t,n,r;if(a.jitterSamples.items().length<1)return;let e=(t=this.runningJitter.get(i))==null?0:t,{min:o,max:s,average:c}=Ht((n=(r=this.recentJitterSamples.get(i))==null?void 0:r.items())==null?[]:n);return{min:Math.round(o),max:Math.round(s),last:Math.round(c),average:Math.round(e)}}}getRunningJitter(e){for(let[t,n]of this.runningJitter)if(t.startsWith(e))return n}reset(e,t){if(e!==void 0&&t!==void 0){let n=this.getTrackingKey(e,t);this.trackingState.delete(n),this.runningJitter.delete(n),this.recentJitterSamples.delete(n)}else if(e!==void 0)for(let t of this.trackingState.keys())t.startsWith(e)&&(this.trackingState.delete(t),this.runningJitter.delete(t),this.recentJitterSamples.delete(t));else this.trackingState.clear(),this.runningJitter.clear(),this.recentJitterSamples.clear()}getStatistics(){return{audioJitter:this.getJitterForType(`audio`),videoJitter:this.getJitterForType(`video`)}}};U(),h(),F();var Xx=()=>window.AudioContext||window.webkitAudioContext,Zx=class e extends Qt{constructor(){var t;super(),t=this,m(this,`context`,new(Xx())),m(this,`timers`,or.create()),m(this,`previousCurrentTime`,0),m(this,`_isStuck`,!1),m(this,`mediaStreamDestination`,void 0),m(this,`unload`,()=>(this.timers.unload(),this.context.removeEventListener(`statechange`,this.onStateChange),this.context.state===`closed`?Promise.resolve():this.context.close())),m(this,`createGain`,()=>this.context.createGain()),m(this,`createBuffer`,(e,t,n)=>this.context.createBuffer(e,t,n)),m(this,`createBufferSource`,()=>this.context.createBufferSource()),m(this,`getMediaStreamDestination`,()=>(this.mediaStreamDestination||(this.mediaStreamDestination=this.context.createMediaStreamDestination()),this.mediaStreamDestination)),m(this,`getDefaultDestination`,()=>this.context.destination),m(this,`createSplitter`,()=>this.context.createChannelSplitter(2)),m(this,`resume`,P(function*(){let e=!0,n=t.context.resume();n.then(()=>{e=!1},()=>{e=!1});try{return yield Promise.race([n,Tr(1e3,Fi())])}catch(n){throw!e&&t.context.state!==`running`&&t.suspend().catch(C),n}})),m(this,`suspend`,P(function*(){var e;yield(e=t.context.suspend())==null?Promise.resolve():e})),m(this,`onStateChange`,()=>this.emit(`state`,this.state)),this.context.addEventListener(`statechange`,this.onStateChange),this.timers.setInterval(()=>{this._isStuck=this.isRunning&&this.context.currentTime===this.previousCurrentTime,this._isStuck&&this.emit(`stuck`),this.previousCurrentTime=this.context.currentTime},e.CHECK_INTERVAL)}get isStuck(){return this._isStuck}get isRunning(){return this.state===`running`}get currentTime(){return this.context.currentTime}get sampleRate(){return this.context.sampleRate}get state(){return this.context.state}};m(Zx,`CHECK_INTERVAL`,1e3),U(),h(),F(),V();var Qx,$x=150,eS=400,tS=e=>e===void 0?5:e<=$x?1:e<=eS?2:5,nS=class extends Qt{get isContextRunning(){var e;return((e=this.audio)==null?void 0:e.state)===`running`}get contextState(){var e,t;return(e=(t=this.audio)==null?void 0:t.state)==null?`none`:e}get volume(){return this._volume}set volume(e){this._volume=e,this.muted||this.setGain(e)}get seekTime(){return 0}get totalSeekTime(){return 0}get isSeeking(){return!1}get muted(){var e;return this._muted||!((e=this.audio)!=null&&e.isRunning)}get userMuted(){return this._userProvidedMuted}set muted(e){this._userProvidedMuted=e,this._muted=e,this.setGain(this._volume)}get isPaused(){return!1}get currentTime(){return!this.audio||!this.audio.isRunning||this.audio.isStuck||this.startTimeIsInvalidated?this.clockSource.currentTime:this.audio.currentTime*1e3+this.clockDelta}set currentTime(e){this.logger.debug(`setting current time to`,{currentTime:e}),this.startTimeIsInvalidated=!0}get bufferTime(){return this._bufferTime}set bufferTime(e){this._bufferTime=e,this.audioBufferMultiplier=tS(e)}get sinkPaused(){return this._sinkPaused}set sinkPaused(e){if(this._sinkPaused&&!e){let e=this.clockSource.currentTime;this.preInitSampleQueue.filterPop(({timestamp:t,timescale:n})=>t/n*1e3>e),this.startTimeIsInvalidated=!0}this._sinkPaused=e}get audioNode(){return this.splitter}constructor(e,t,{muted:n,reInitWhenStuck:r,bufferTime:i}){var a;super(),a=this,m(this,`logger`,void 0),m(this,`audio`,void 0),m(this,`gainNode`,void 0),m(this,`splitter`,void 0),m(this,`_volume`,1),m(this,`_userProvidedMuted`,!1),m(this,`_muted`,!1),m(this,`startTime`,0),m(this,`samples`,new Float32Array),m(this,`preInitSampleQueue`,new T(500)),m(this,`unplayedBufferSources`,new T(100)),m(this,`sampleRate`,48e3),m(this,`channels`,2),m(this,`index`,0),m(this,`clockSource`,void 0),m(this,`clockDelta`,0),m(this,`startTimeIsInvalidated`,!0),m(this,`lastSampleTimestamp`,0),m(this,`reInitWhenStuck`,void 0),m(this,`ignoreSuspendCalls`,!1),m(this,`_bufferTime`,void 0),m(this,`_sinkPaused`,!1),m(this,`audioBufferMultiplier`,void 0),m(this,`isActivated`,!1),m(this,`unload`,P(function*(){var e,t;(e=a.gainNode)==null||e.disconnect(),yield(t=a.audio)==null?void 0:t.unload(),a.reset(),a.audio=void 0,a.gainNode=void 0})),m(this,`suspend`,()=>{this.setGain(0)}),m(this,`unsuspend`,()=>{if(this.setGain(this._volume),!it()){this.resume().catch(this.onUnsuspendFailure);return}this.restartContext()}),m(this,`restartContext`,()=>{var e;this.ignoreSuspendCalls=!!this.audio,(e=this.audio)==null||e.suspend().then(P(function*(){yield a.resume(),a.ignoreSuspendCalls=!1})).catch(this.onUnsuspendFailure)}),m(this,`flush`,(e=this.samples.length)=>{if(!this.audio||!this.gainNode)throw new W(`AudioContext must be initialized to flush`,{isFatal:!1,code:`audiocontext_must_be_initialized`});let t=Math.floor(e/this.channels);if(t<=0)return;let n=this.audio.createBufferSource(),r=this.audio.createBuffer(this.channels,t,this.sampleRate);if(this.channels===2){let e=r.getChannelData(0),n=r.getChannelData(1);for(let r=0;r<t;r++){let t=r*2;e[r]=this.samples[t],n[r]=this.samples[t+1]}}else if(this.channels===1)r.getChannelData(0).set(this.samples.subarray(0,t));else{let e=0;for(let n=0;n<this.channels;n++){e=n;let i=r.getChannelData(n);for(let n=0;n<t;n++)i[n]=this.samples[e],e+=this.channels}}let i=Math.max(this.startTime,0);n.buffer=r,n.connect(this.gainNode),this.splitter&&n.connect(this.splitter),n.start(i),this.unplayedBufferSources.push([i,n]),this.startTime+=r.duration}),m(this,`onDecodedFrame`,e=>{var t;if(this._sinkPaused||!(this.gainNode&&(t=this.audio)!=null&&t.isRunning)){if(e.type===`audio`){this.preInitSampleQueue.push(B(B({},e),{},{data:e.data.slice(0,e.data.length)}));let t=this.clockSource.currentTime;this.preInitSampleQueue.filterPop(({timestamp:e,timescale:n})=>e/n*1e3>t)}return}for(;!this.preInitSampleQueue.isEmpty();){let e=this.preInitSampleQueue.items();this.preInitSampleQueue.clear(),e.forEach(this.onDecodedFrame)}if(this.unplayedBufferSources.filterPop(([e,t])=>{var n,r;return((n=(r=this.audio)==null?void 0:r.currentTime)==null?0:n)<e}),e.type===`audio`){let t=e.timestamp/e.timescale*1e3;if(t<this.lastSampleTimestamp&&(this.logger.info(`Unordered timestamp - invalidating start time`),this.startTimeIsInvalidated=!0),this.lastSampleTimestamp=t,this.startTimeIsInvalidated){let e=this.audio.currentTime*1e3,n=this.clockSource.currentTime,r=(e+t-n)/1e3;this.clockDelta=n-e,this.startTime=r,this.startTimeIsInvalidated=!1,this.unplayedBufferSources.items().forEach(([e,t])=>{r<=e&&t.stop()})}let n=e.data.length*this.audioBufferMultiplier;this.samples.length!==n&&(this.index>0&&this.flush(this.index),this.samples=new Float32Array(n),this.index=0),this.channels=e.channels,this.sampleRate=e.sampleRate,this.samples.set(e.data,this.index),this.index+=e.data.length,this.samples.length<=this.index&&(this.flush(this.samples.length),this.index=0)}}),m(this,`play`,P(function*(){a.audio=a.getAudioContext(),yield a.resume()})),m(this,`pause`,()=>{}),m(this,`flushBuffer`,()=>{var e,t;this.unplayedBufferSources.items().forEach(([e,t])=>{try{t.stop()}catch(e){}}),this.unplayedBufferSources.clear(),this.preInitSampleQueue.clear(),this.samples=new Float32Array,this.index=0,this.lastSampleTimestamp=0,this.startTime=(e=(t=this.audio)==null?void 0:t.currentTime)==null?0:e,this.startTimeIsInvalidated=!0}),m(this,`resume`,P(function*(){if(!a._userProvidedMuted)try{var e;yield(e=a.audio)==null?void 0:e.resume(),a._muted=a._userProvidedMuted,a.startTimeIsInvalidated=!0}catch(e){throw a._muted=!0,e}})),m(this,`onUnsuspendFailure`,()=>{this.ignoreSuspendCalls=!1,this.emit(`state change`,`suspended`)}),m(this,`getAudioContext`,()=>this.audio?this.audio:this.setupContext()),m(this,`setupContext`,()=>{var e,t,n;return(e=this.audio)==null||e.unload(),this.audio=new Zx,this.audio.on(`state`,e=>{this.logger.info(`AudioContext state change`,{state:e}),e===`running`&&(this._muted=this._userProvidedMuted,this.setGain(this._volume)),!this.ignoreSuspendCalls&&this.emit(`state change`,e)}),this.audio.on(`stuck`,()=>{if(!this.reInitWhenStuck){this.restartContext();return}this.logger.info(`Re-init audio context`),this.setupContext(),this.resume().catch(C),this.emit(`stuck`)}),(t=this.gainNode)==null||t.disconnect(),this.gainNode=this.audio.createGain(),this.setGain(this._volume),this.startTime=this.audio.currentTime,(n=this.splitter)==null||n.disconnect(),this.splitter=this.audio.createSplitter(),this.audio}),m(this,`setGain`,e=>{this.gainNode&&(this.gainNode.gain.value=this._muted?0:e)}),this._muted=n,this._userProvidedMuted=n,this.logger=e,this.clockSource=t,this.reInitWhenStuck=r,this._bufferTime=i,this.audioBufferMultiplier=tS(i)}useMediaStreamDestination(){var e;let t=this.getAudioContext(),n=t.getMediaStreamDestination();return(e=this.gainNode)==null||e.connect(n),t.isRunning||t.resume().catch(()=>{}),n}useDefaultDestination(){var e;let t=this.getAudioContext().getDefaultDestination();return(e=this.gainNode)==null||e.connect(t),t}};Qx=nS,m(nS,`create`,(e,t,n)=>new Qx(e,t,n)),h();var rS,iS=class{constructor(e,t,n,r,i,a){m(this,`staleFrameThresholdMs`,400),m(this,`pool`,void 0),m(this,`logger`,void 0),m(this,`videoRenderer`,new pa),m(this,`videoFrameCanvas2DRenderer`,null),m(this,`renderQueue`,[]),m(this,`clockSource`,void 0),m(this,`isFirstFrame`,!0),m(this,`usingWebCodecs`,!1),m(this,`onCanvasChangeCallback`,void 0),m(this,`onRendererErrorCallback`,void 0),m(this,`animationFrameRequest`,void 0),m(this,`firstFrameAnimationFrameRequest`,void 0),m(this,`pendingFirstFrameSample`,void 0),m(this,`renderedFrameCount`,0),m(this,`rendererDroppedFrameCount`,0),m(this,`renderTargetSize`,void 0),m(this,`load`,()=>{this.videoRenderer.load(),this.subscribeToContextLost(this.videoRenderer)}),m(this,`unload`,()=>(this.stopRender(),this.clearRenderQueue(),this.unsubscribeFromContextLost(this.videoRenderer),this.videoRenderer.unload(),this.videoFrameCanvas2DRenderer&&(this.unsubscribeFromContextLost(this.videoFrameCanvas2DRenderer),this.videoFrameCanvas2DRenderer.unload()),Promise.resolve())),m(this,`suspend`,()=>{this.clearRenderQueue(),this.stopRender()}),m(this,`unsuspend`,()=>{this.animationFrameRequest===void 0&&(this.animationFrameRequest=requestAnimationFrame(this.render))}),m(this,`element`,()=>this.usingWebCodecs&&this.videoFrameCanvas2DRenderer?this.videoFrameCanvas2DRenderer.canvas:this.videoRenderer.canvas),m(this,`getStatistics`,()=>({renderedFrameCount:this.renderedFrameCount,rendererDroppedFrameCount:this.rendererDroppedFrameCount})),m(this,`resetSize`,()=>{this.videoRenderer.resetSize()}),m(this,`setActiveCues`,(e,t)=>{this.usingWebCodecs&&this.videoFrameCanvas2DRenderer?this.videoFrameCanvas2DRenderer.setActiveCues(e,t):this.usingWebCodecs||this.videoRenderer.getTextRenderer().setActiveCues(e,t)}),m(this,`onDecodedFrame`,e=>{if(e.type===`video`)if(this.isFirstFrame)this.isFirstFrame=!1,this.pendingFirstFrameSample=e,this.firstFrameAnimationFrameRequest=requestAnimationFrame(()=>{this.firstFrameAnimationFrameRequest=void 0;let e=this.pendingFirstFrameSample;this.pendingFirstFrameSample=void 0,e&&this.renderSample(e)});else{let t=(this.clockSource.currentTime-this.staleFrameThresholdMs)/1e3;this.renderQueue=this.renderQueue.filter(n=>{let r=this.samplePresentationTime(n),i=this.samplePresentationTime(e),a=r>t&&r<=i;return a||this.releaseSampleResources(n),a}),this.renderQueue.push(e)}}),m(this,`render`,()=>{let e=this.clockSource.currentTime,t=this.renderQueue[0],n,r=0;for(;t&&this.samplePresentationTime(t)*1e3<=e;)t=this.renderQueue.shift(),t&&(r++,n&&this.releaseSampleResources(n),n=t),t=this.renderQueue[0];n&&this.renderSample(n),this.rendererDroppedFrameCount+=Math.max(r-1,0),this.animationFrameRequest=requestAnimationFrame(this.render)}),m(this,`renderSample`,e=>{if(this.renderedFrameCount++,e.videoFrame){let n=this.videoFrameCanvas2DRenderer;if(!this.usingWebCodecs){var t;this.logger.info(`Switching to Canvas2D renderer for WebCodecs`),n||(n=new ii,n.load(),this.subscribeToContextLost(n),this.videoFrameCanvas2DRenderer=n);let e=this.videoRenderer.canvas,r=n.canvas;if(e.parentElement)try{e.parentElement.replaceChild(r,e)}catch(e){}this.usingWebCodecs=!0,(t=this.onCanvasChangeCallback)==null||t.call(this)}n?n.render(e,this.getSubtitlePadding()):this.videoRenderer.render(e,this.renderTargetSize),e.videoFrame.close()}else{if(this.usingWebCodecs){var n;this.logger.info(`Switching back to WebGL renderer for WASM`);let t=this.videoFrameCanvas2DRenderer;if(!t){this.usingWebCodecs=!1,this.videoRenderer.render(e,this.renderTargetSize),e.buffer.byteLength>0&&this.pool.reclaim(e.buffer);return}let r=t.canvas,i=this.videoRenderer.canvas;if(r.parentElement)try{r.parentElement.replaceChild(i,r)}catch(e){}this.usingWebCodecs=!1,(n=this.onCanvasChangeCallback)==null||n.call(this)}this.videoRenderer.render(e,this.renderTargetSize)}e.buffer.byteLength>0&&this.pool.reclaim(e.buffer)}),m(this,`stopRender`,()=>{this.animationFrameRequest!==void 0&&(cancelAnimationFrame(this.animationFrameRequest),this.animationFrameRequest=void 0),this.firstFrameAnimationFrameRequest!==void 0&&(cancelAnimationFrame(this.firstFrameAnimationFrameRequest),this.firstFrameAnimationFrameRequest=void 0),this.pendingFirstFrameSample&&(this.releaseSampleResources(this.pendingFirstFrameSample),this.pendingFirstFrameSample=void 0)}),m(this,`clearRenderQueue`,()=>{this.renderQueue.forEach(e=>{this.releaseSampleResources(e)}),this.renderQueue=[]}),m(this,`onRendererContextLost`,e=>{var t;(t=this.onRendererErrorCallback)==null||t.call(this,e)}),m(this,`subscribeToContextLost`,e=>{let t=e;typeof t.on==`function`&&t.on(`context lost`,this.onRendererContextLost)}),m(this,`unsubscribeFromContextLost`,e=>{let t=e;typeof t.off==`function`&&t.off(`context lost`,this.onRendererContextLost)}),m(this,`getSubtitlePadding`,()=>{let e=this.renderTargetSize.style.getPropertyValue(`--vindral-subtitle-offset`)||this.renderTargetSize.style.getPropertyValue(`--vindral-control-bar-offset`),t=parseInt(e||`0`,10);return Number.isNaN(t)?0:-t}),m(this,`samplePresentationTime`,e=>(e.timestamp+(e.compositionTimeOffset||0))/e.timescale),m(this,`releaseSampleResources`,e=>{try{var t;(t=e.videoFrame)==null||t.close()}catch(e){}e.buffer.byteLength>0&&this.pool.reclaim(e.buffer)}),this.logger=e,this.clockSource=t,this.pool=n,this.renderTargetSize=r||this.videoRenderer.canvas,this.onCanvasChangeCallback=i,this.onRendererErrorCallback=a}};rS=iS,m(iS,`create`,(e,t,n,r,i,a)=>new rS(e,t,n,r,i,a)),D(),j(),N();var aS=new WeakMap,oS=class{constructor(){E(this,aS,[]),A(aS,this,[])}addTextTrack(e,t,n){let r=[],i={kind:e,label:t,language:n,mode:`disabled`,cues:r,addCue:e=>{r.push(e)},removeCue:e=>{let t=r.findIndex(t=>t===e);t!==-1&&r.splice(t,1)}};return M(aS,this).push(i),i}set language(e){M(aS,this).forEach(t=>{t.language===e?t.mode=`showing`:t.mode=`hidden`})}get language(){var e;return(e=M(aS,this).find(e=>e.mode===`showing`))==null?void 0:e.language}get tracks(){return M(aS,this)}get activeTrack(){return M(aS,this).find(e=>e.mode===`showing`)}getActiveCues(e){let t=M(aS,this).find(e=>e.mode===`showing`);return t?t.cues.filter(({startTime:t,endTime:n})=>e>=t&&e<n):[]}};U(),h();var sS=(e,t)=>{let n;for(n=t;e>1;e--)n+=t;return n},cS=class{constructor(){m(this,`audio`,void 0),m(this,`unmute`,()=>this.audio.play().catch(C));let e=document.createElement(`div`);e.innerHTML=`<audio x-webkit-airplay='deny'></audio>`;let t=e.children.item(0);if(t instanceof HTMLAudioElement)this.audio=t,this.audio.controls=!1,this.audio.disableRemotePlayback=!0,this.audio.preload=`auto`,this.audio.src=`data:audio/mpeg;base64,//uQx`+sS(23,`A`)+`WGluZwAAAA8AAAACAAACcQCA`+sS(16,`gICA`)+sS(66,`/`)+`8AAABhTEFNRTMuMTAwA8MAAAAAAAAAABQgJAUHQQAB9AAAAnGMHkkI`+sS(320,`A`)+`//sQxAADgnABGiAAQBCqgCRMAAgEAH`+sS(15,`/`)+`7+n/9FTuQsQH//////2NG0jWUGlio5gLQTOtIoeR2WX////X4s9Atb/JRVCbBUpeRUq`+sS(18,`/`)+`9RUi0f2jn/+xDECgPCjAEQAABN4AAANIAAAAQVTEFNRTMuMTAw`+sS(97,`V`)+`Q==`,this.audio.loop=!1,this.audio.load();else throw Error(`Failed to create audio tag`)}};U(),h(),V();var lS,uS=class{constructor(e,t,n,r,i,a,o,s){m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`audioPlayer`,void 0),m(this,`videoPlayer`,void 0),m(this,`pool`,void 0),m(this,`unmuter`,new cS),m(this,`_isPaused`,!1),m(this,`isDisconnected`,!1),m(this,`timers`,new or),m(this,`isVideoRenderingEnabled`,!0),m(this,`isLoaded`,!1),m(this,`isSuspended`,!0),m(this,`isVideoPlayerLoaded`,!1),m(this,`volumeState`,void 0),m(this,`textTracks`,new oS),m(this,`playbackRate`,void 0),m(this,`emitVolumeState`,()=>{let e={volume:this.volume,isMuted:this.userMuted};Xt(e,this.volumeState)||(this.volumeState=e,this.emitter.emit(`volume state`,e))}),m(this,`reset`,()=>{}),m(this,`load`,()=>{this.audioPlayer.useDefaultDestination(),this.emitter.on(`decoded frame`,this.onDecodedFrame),this.emitter.on(`flush buffers`,this.flushBuffers),this.isLoaded=!0,this.isVideoRenderingEnabled&&(this.videoPlayer.load(),this.isVideoPlayerLoaded=!0,this.startTextTrackInterval())}),m(this,`unload`,()=>{this.emitter.off(`target buffer time`,this.onTargetBufferTime),this.emitter.off(`decoded frame`,this.onDecodedFrame),this.emitter.off(`flush buffers`,this.flushBuffers),this.audioPlayer.unload(),this.isVideoPlayerLoaded&&(this.videoPlayer.unload(),this.isVideoPlayerLoaded=!1),this.timers.unload(),this.isLoaded=!1}),m(this,`suspend`,()=>{this.isSuspended=!0,this.isVideoRenderingEnabled&&this.videoPlayer.suspend(),this.audioPlayer.suspend()}),m(this,`unsuspend`,()=>{this.isSuspended=!1,this.isVideoRenderingEnabled&&this.videoPlayer.unsuspend(),this.audioPlayer.unsuspend()}),m(this,`setVideoRenderingEnabled`,e=>{if(e!==this.isVideoRenderingEnabled&&(this.isVideoRenderingEnabled=e,this.isLoaded)){if(!e){this.timers.unload(),this.videoPlayer.suspend();return}this.isVideoPlayerLoaded||(this.videoPlayer.load(),this.isVideoPlayerLoaded=!0),this.startTextTrackInterval(),this.isSuspended||this.videoPlayer.unsuspend()}}),m(this,`element`,()=>this.videoPlayer.element()),m(this,`getStatistics`,()=>B(B({},this.videoPlayer.getStatistics()),{},{audioContextState:this.audioPlayer.contextState})),m(this,`startTextTrackInterval`,()=>{this.timers.setInterval(()=>{if(!this.textTracks.language)return;let e=this.textTracks.getActiveCues(this.currentTime/1e3);this.videoPlayer.setActiveCues(e,{width:this.videoPlayer.element().clientWidth,height:this.videoPlayer.element().clientHeight})},100)}),m(this,`flushBuffers`,()=>{this.audioPlayer.flushBuffer()}),m(this,`onTargetBufferTime`,e=>{this.audioPlayer.bufferTime=e}),m(this,`activateAudioPlayer`,()=>(this.isDisconnected&&(this.isDisconnected=!1,this.audioPlayer.useDefaultDestination()),this._isPaused=!1,this.unmuter.unmute(),this.audioPlayer.play())),m(this,`onDecodedFrame`,e=>{try{this.audioPlayer.onDecodedFrame(e)}catch(e){e instanceof Error&&this.emitter.emit(`error`,Ai(!1,e))}this.isVideoRenderingEnabled&&this.videoPlayer.onDecodedFrame(e)}),this.logger=t,this.emitter=e,this.pool=n,this.emitter.on(`target buffer time`,this.onTargetBufferTime),this.audioPlayer=nS.create(this.logger.createContext(`AudioPlayerModule`),r,{muted:i,reInitWhenStuck:!0,bufferTime:s}),a!==void 0&&(this.audioPlayer.volume=a),this.audioPlayer.on(`stuck`,()=>{this.isDisconnected=!0}),this.audioPlayer.on(`state change`,this.emitVolumeState),this.videoPlayer=iS.create(this.logger.createContext(`VideoPlayerModule`),this.audioPlayer,this.pool,void 0,o)}get volume(){return this.audioPlayer.volume}set volume(e){this.audioPlayer.volume=e,this.emitVolumeState()}get muted(){return this.audioPlayer.muted}get userMuted(){return this.audioPlayer.userMuted}set muted(e){let t=this.muted;this.audioPlayer.muted=e,this.emitVolumeState(),!e&&t&&this.activateAudioPlayer().catch(C)}get currentTime(){return this.audioPlayer.currentTime}set currentTime(e){this.audioPlayer.currentTime=e}get isActivated(){return this.audioPlayer.isActivated}set isActivated(e){this.audioPlayer.isActivated=e}get seekTime(){return this.audioPlayer.seekTime}get totalSeekTime(){return this.audioPlayer.totalSeekTime}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`)}};lS=uS,m(uS,`create`,(e,t,n,r,i,a,o,s)=>new lS(e,t,n,r,i,a,o,s)),h(),V();var dS,fS=[`play`,`pause`,`stop`],pS,mS=new Set,hS=class e{constructor(t,n,r){m(this,`emitter`,void 0),m(this,`logger`,void 0),m(this,`options`,void 0),m(this,`isLoaded`,!1),m(this,`playbackState`,void 0),m(this,`pageMetadata`,null),m(this,`load`,()=>{this.isLoaded||!e.isSupported()||(this.isLoaded=!0,mS.add(this),this.emitter.on(`playback state`,this.onPlaybackState),this.emitter.on(`volume state`,this.update))}),m(this,`unload`,()=>{var e;this.isLoaded&&(this.isLoaded=!1,mS.delete(this),this.emitter.off(`playback state`,this.onPlaybackState),this.emitter.off(`volume state`,this.update),this.handOverOwnership(`on unload`),(e=this.options.decoy)==null||e.unload())}),m(this,`stop`,()=>{var e;this.playbackState=void 0,(e=this.options.decoy)==null||e.unload(),pS===this&&this.handOverOwnership(`on stop`)}),m(this,`getStatistics`,()=>{var t;return{mediaSessionSupported:e.isSupported(),mediaSessionOwner:pS===this,mediaSessionPlaybackState:pS===this?this.isPaused?`paused`:`playing`:`none`,decoyState:(t=this.options.decoy)==null?void 0:t.getStatistics().decoyState}}),m(this,`onPlaybackState`,e=>{this.playbackState=e,this.update()}),m(this,`refresh`,()=>{this.update()}),m(this,`update`,()=>{if(this.isLoaded){if(this.isEligibleToOwn&&pS!==this){this.claimOwnership();return}this.sync()}}),m(this,`handOverOwnership`,e=>{if(pS===this){this.logger.debug(`Handing over the media session ${e}`),this.releaseOwnership();for(let e of mS)if(e!==this&&e.isEligibleToOwn){e.claimOwnership();return}}}),m(this,`sync`,()=>{var e,t,n,r,i,a;if(pS!==this)return;if((e=(t=this.options).isSuppressed)!=null&&e.call(t)){var o;(o=this.options.decoy)==null||o.unload(),this.handOverOwnership(`as suppressed`);return}if(this.options.isMuted()&&this.options.pauseMeansMute!==!0){if(this.options.keepDecoyWhenMuted){var s;(s=this.options.decoy)==null||s.pause()}else{var c;(c=this.options.decoy)==null||c.unload()}this.handOverOwnership(`as muted`);return}if(this.isPaused&&(n=(r=this.options).releaseOnHiddenPause)!=null&&n.call(r)&&(i=(a=this.options).isHidden)!=null&&i.call(a)){var l;(l=this.options.decoy)==null||l.unload(),this.handOverOwnership(`as a hidden pause`);return}let u=this.isPaused?`paused`:`playing`;if(navigator.mediaSession.playbackState=u,u===`paused`){if(!this.options.holdDecoyWhilePaused){var d;(d=this.options.decoy)==null||d.pause()}}else{var f;(f=this.options.decoy)==null||f.play()}}),m(this,`claimOwnership`,()=>{pS==null||pS.releaseOwnership(),pS=this,this.pageMetadata=navigator.mediaSession.metadata,this.applyMetadata();for(let e of fS)this.safely(e,()=>navigator.mediaSession.setActionHandler(e,this.onAction[e]));this.safely(`position state`,()=>{var e,t;return(e=(t=navigator.mediaSession).setPositionState)==null?void 0:e.call(t,{duration:1/0,playbackRate:1,position:0})}),this.sync()}),m(this,`applyMetadata`,()=>{let e=this.options.metadata;e&&this.safely(`metadata`,()=>{navigator.mediaSession.metadata=new MediaMetadata(B({},e))})}),m(this,`releaseOwnership`,()=>{var e;if(pS===this){pS=void 0,(e=this.options.decoy)==null||e.pause();for(let e of fS)this.safely(e,()=>navigator.mediaSession.setActionHandler(e,null));this.options.metadata&&this.safely(`metadata restore`,()=>{navigator.mediaSession.metadata=this.pageMetadata}),this.safely(`release`,()=>{navigator.mediaSession.playbackState=`none`}),this.pageMetadata=null}}),m(this,`safely`,(e,t)=>{try{t()}catch(t){this.logger.debug(`Media session ${e} failed`,{error:t})}}),m(this,`onAction`,{play:()=>{this.emitter.emit(`media session: request play`)},pause:()=>{this.emitter.emit(`media session: request pause`)},stop:()=>{this.emitter.emit(`media session: request stop`)}}),this.emitter=t,this.logger=n,this.options=r}get isPaused(){var e,t;return this.playbackState===`paused`||((e=(t=this.options).isSinkPaused)==null?void 0:e.call(t))===!0||this.options.pauseMeansMute===!0&&this.options.isMuted()}get isEligibleToOwn(){var e,t;return this.playbackState!==void 0&&!this.isPaused&&!this.options.isMuted()&&((e=(t=this.options).isSuppressed)==null?void 0:e.call(t))!==!0}};dS=hS,m(hS,`create`,(e,t,n)=>new dS(e,t,n)),m(hS,`isSupported`,()=>typeof navigator<`u`&&`mediaSession`in navigator&&typeof MediaMetadata<`u`),U(),h(),V();var gS,_S=class{constructor(e,t,n,r,{muted:i,volume:a,type:o,poster:s,offscreenCanvas:c,bufferTime:l,backgroundPlaybackEnabled:u,splitAudio:d}){if(m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`mediaElement`,void 0),m(this,`sound`,void 0),m(this,`wantsPlay`,void 0),m(this,`audioPlayer`,void 0),m(this,`videoPlayer`,void 0),m(this,`pool`,void 0),m(this,`isDisconnected`,!0),m(this,`_userProvidedMuted`,!1),m(this,`timers`,new or),m(this,`offscreenCanvas`,void 0),m(this,`videoTrack`,void 0),m(this,`canvasCaptureTracks`,[]),m(this,`backgroundPlaybackEnabled`,void 0),m(this,`nativeTracksByLanguage`,new Map),m(this,`nativeCuesByLanguage`,new Map),m(this,`lastCanvasCueTexts`,[]),m(this,`isIOSNativeFullscreen`,!1),m(this,`knownNativeLanguage`,void 0),m(this,`renderCanvasSubtitlesInNativeFullscreen`,(()=>{let e=dt().platform;return e.isIOS&&e.iosVersion<=16})()),m(this,`volumeState`,void 0),m(this,`textTracks`,new oS),m(this,`reset`,()=>{}),m(this,`load`,()=>{this.mediaElement.load(),this.sound&&(this.sound.load(),document.body.appendChild(this.sound.element),this.mediaElement.element.addEventListener(`pause`,this.onVideoPause),this.mediaElement.element.addEventListener(`play`,this.onVideoPlay),window.addEventListener(`focus`,this.onWindowFocus)),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.textTracks.addEventListener(`change`,this.onNativeTextTrackChange),this.element().element.addEventListener(`webkitendfullscreen`,this.onExitIOSHack),this.element().element.addEventListener(`webkitbeginfullscreen`,this.onEnterIOSHack),this.videoPlayer.load(),this.timers.setInterval(this.syncNativeTextTracks,100)}),m(this,`unload`,()=>{this.emitter.off(`target buffer time`,this.onTargetBufferTime),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.textTracks.removeEventListener(`change`,this.onNativeTextTrackChange),this.element().element.removeEventListener(`webkitendfullscreen`,this.onExitIOSHack),this.element().element.removeEventListener(`webkitbeginfullscreen`,this.onEnterIOSHack);for(let e of this.nativeTracksByLanguage.keys())this.clearNativeCues(e);this.nativeTracksByLanguage.clear(),this.nativeCuesByLanguage.clear(),this.sound&&(this.mediaElement.element.removeEventListener(`pause`,this.onVideoPause),this.mediaElement.element.removeEventListener(`play`,this.onVideoPlay),window.removeEventListener(`focus`,this.onWindowFocus),this.sound.pause(),this.sound.element.srcObject=null,this.sound.unload(),this.sound.element.remove()),this.mediaElement.unload(),this.timers.unload(),this.audioPlayer.unload(),this.videoPlayer.unload()}),m(this,`suspend`,()=>{this.videoPlayer.suspend(),this.audioPlayer.suspend()}),m(this,`unsuspend`,()=>{this.videoPlayer.unsuspend(),this.audioPlayer.unsuspend()}),m(this,`element`,()=>this.mediaElement),m(this,`elements`,()=>this.sound?[this.mediaElement,this.sound]:[this.mediaElement]),m(this,`getStatistics`,()=>B(B({},this.videoPlayer.getStatistics()),{},{audioContextState:this.audioPlayer.contextState})),m(this,`activateAudioPlayer`,()=>(this.isDisconnected&&this.connectStreams(),this.audioPlayer.play())),m(this,`flushBuffers`,()=>{this.audioPlayer.flushBuffer()}),m(this,`onTargetBufferTime`,e=>{this.audioPlayer.bufferTime=e}),m(this,`resetCanvasSize`,()=>{this.videoPlayer.resetSize()}),m(this,`onVideoPause`,()=>{this.mediaElement.element.paused&&(this.emitPlaybackState(),this.wantsPlay&&this.timers.setTimeout(this.isIOSNativeFullscreen?this.reportFullscreenPause:this.restartVideoIfWanted,400))}),m(this,`onVideoPlay`,()=>{if(!this.mediaElement.element.paused){if(!this.wantsPlay){this.isIOSNativeFullscreen?this.emitter.emit(`native control`,`play`):this.mediaElement.pause();return}this.emitPlaybackState()}}),m(this,`onEnterIOSHack`,()=>{this.isIOSNativeFullscreen=!0,this.mediaElement._iosHackEnterPiPMode()}),m(this,`onExitIOSHack`,()=>{this.isIOSNativeFullscreen=!1,this.clearCanvasCues(),this.mediaElement._iosHackExitPiPMode(),this.sound&&this.restartVideoIfWanted()}),m(this,`reportFullscreenPause`,()=>{!this.isIOSNativeFullscreen||!this.wantsPlay||!this.mediaElement.element.paused||(Ot(this.mediaElement.element)===`picture-in-picture`||document.hasFocus()?this.emitter.emit(`native control`,`pause`):this.emitter.emit(`fullscreen app switch`))}),m(this,`onWindowFocus`,()=>{this.isIOSNativeFullscreen&&this.wantsPlay&&this.mediaElement.element.paused&&this.mediaElement.tryPlay()}),m(this,`lastPlaybackState`,void 0),m(this,`emitPlaybackState`,()=>{let e=this.isPaused?`paused`:`playing`;e!==this.lastPlaybackState&&(this.lastPlaybackState=e,this.emitter.emit(`media element state`,e))}),m(this,`restartVideoIfWanted`,()=>{this.wantsPlay&&this.mediaElement.element.paused&&!this.isIOSNativeFullscreen&&document.visibilityState===`visible`&&this.mediaElement.tryPlay()}),m(this,`onDecodedFrame`,e=>{try{this.audioPlayer.onDecodedFrame(e)}catch(e){e instanceof Error&&this.emitter.emit(`error`,Ai(!1,e))}this.offscreenCanvas||this.videoPlayer.onDecodedFrame(e)}),m(this,`onVideoPlayerError`,e=>{if(e instanceof W){this.emitter.emit(`error`,e);return}this.emitter.emit(`error`,Oi(!1,e,`video`))}),m(this,`connectStreams`,()=>{let e=this.offscreenCanvas||this.videoPlayer.element();this.logger.info(`Connecting streams using ${this.offscreenCanvas?`OffscreenCanvas`:`VideoPlayer`} canvas (${e.width}x${e.height})`);let t=this.videoTrack?[this.videoTrack]:e.captureStream().getTracks(),n=this.canvasCaptureTracks;this.canvasCaptureTracks=this.videoTrack?[]:t;let r=this.audioPlayer.useMediaStreamDestination().stream,i=this.sound?t:[...t,...r.getTracks()];this.logger.info(`Video tracks: ${t.length} (${this.videoTrack?`worker track`:`canvas capture`}), Audio tracks: ${r.getTracks().length}`);for(let e of n)e.stop();this.mediaElement.element.srcObject=new MediaStream(i),this.sound&&this.sound.element.srcObject!==r&&(this.sound.element.srcObject=r),this.isDisconnected=!1}),m(this,`setVideoTrack`,e=>{this.videoTrack!==e&&(this.videoTrack=e,this.reconnectCanvasStream())}),m(this,`setOffscreenCanvas`,e=>{this.offscreenCanvas!==e&&(this.offscreenCanvas=e,this.reconnectCanvasStream())}),m(this,`setBackgroundPlaybackEnabled`,e=>{this.backgroundPlaybackEnabled!==e&&(this.backgroundPlaybackEnabled=e,this.applyVisibilityMutePolicy())}),m(this,`reconnectCanvasStream`,()=>{if(!this.isDisconnected){let e=!this.mediaElement.element.paused;this.logger.info(`Reconnecting canvas stream after renderer change`,{wasPlaying:e}),this.connectStreams(),e&&this.mediaElement.tryPlay()}}),m(this,`ensureNativeTrack`,e=>{let t=this.nativeTracksByLanguage.get(e.language);if(t)return t;let n=this.mediaElement.element.addTextTrack(e.kind,e.label,e.language);return this.nativeTracksByLanguage.set(e.language,n),this.nativeCuesByLanguage.set(e.language,[]),n}),m(this,`getSelectedNativeTextTrack`,()=>{let e=this.mediaElement.element.textTracks;for(let t=0;t<e.length;t++){let n=e[t];if((n==null?void 0:n.mode)===`showing`)return n}}),m(this,`onNativeTextTrackChange`,()=>{let e=this.getSelectedNativeTextTrack();if((e==null?void 0:e.language)===this.knownNativeLanguage)return;if(this.knownNativeLanguage=e==null?void 0:e.language,!e){this.emitter.emit(`native text track selected`,void 0);return}let t=this.textTracks.tracks.find(t=>t.language===e.language);t&&this.emitter.emit(`native text track selected`,t.label)}),m(this,`clearNativeCues`,e=>{let t=this.nativeTracksByLanguage.get(e),n=this.nativeCuesByLanguage.get(e);if(!(!t||!n||n.length===0)){for(let e of n)try{t.removeCue(e)}catch(e){}this.nativeCuesByLanguage.set(e,[])}}),m(this,`setNativeCues`,(e,t)=>{let n=this.nativeTracksByLanguage.get(e),r=this.nativeCuesByLanguage.get(e);if(!n||!r||Xt(t.map(e=>e.text),r.map(e=>e.text)))return;this.clearNativeCues(e);let i=[];for(let e of t){let t=new VTTCue(0,2**53-1,e.text);n.addCue(t),i.push(t)}this.nativeCuesByLanguage.set(e,i)}),m(this,`shouldRenderCanvasCues`,()=>this.canvasCuesEnabled&&this.isIOSNativeFullscreen),m(this,`setCanvasCues`,(e,t=!1)=>{let n=e.map(e=>e.text);!t&&Xt(n,this.lastCanvasCueTexts)||(this.lastCanvasCueTexts=n,this.videoPlayer.setActiveCues(e,{width:this.mediaElement.element.clientWidth,height:this.mediaElement.element.clientHeight}))}),m(this,`clearCanvasCues`,()=>{this.canvasCuesEnabled&&this.setCanvasCues([],!0)}),m(this,`syncNativeTextTracks`,()=>{var e;for(let e of this.textTracks.tracks)this.ensureNativeTrack(e);let t=this.textTracks.activeTrack,n=t?this.textTracks.getActiveCues(this.currentTime/1e3):[];this.shouldRenderCanvasCues()&&this.setCanvasCues(n);for(let[e,r]of this.nativeTracksByLanguage)e===(t==null?void 0:t.language)?(r.mode!==`showing`&&(r.mode=`showing`),this.setNativeCues(e,n)):(r.mode!==`disabled`&&(r.mode=`disabled`),this.clearNativeCues(e));this.knownNativeLanguage=(e=this.getSelectedNativeTextTrack())==null?void 0:e.language}),m(this,`updateVolumeState`,()=>{let e={isMuted:this.userMuted,volume:this.volume};Xt(e,this.volumeState)||(this.volumeState=e,this.emitter.emit(`volume state`,this.volumeState))}),m(this,`applyVisibilityMutePolicy`,()=>{if(!this.audioPlayer.isContextRunning)return;let e=document.visibilityState===`hidden`;this.soundElement.muted=this._userProvidedMuted||e&&!this.backgroundPlaybackEnabled}),this.logger=t,this.emitter=e,this.pool=n,this._userProvidedMuted=i,this.offscreenCanvas=c,this.backgroundPlaybackEnabled=u==null?!1:u,this.emitter.on(`target buffer time`,this.onTargetBufferTime),this.mediaElement=new $l({poster:s,type:o,muted:d?!0:i,volume:a,autoplay:!1,logger:this.logger.createContext(`MediaElement`)}),d&&(this.sound=new $l({type:`audio`,muted:i,volume:a,autoplay:!1,logger:this.logger.createContext(`SoundElement`)}),this.sound.element.style.display=`none`,this.sound.element.setAttribute(`aria-hidden`,`true`)),this.soundElement.on(`volume state`,e=>{this.updateVolumeState(),!e.isMuted&&!this.audioPlayer.isContextRunning&&this.activateAudioPlayer().catch(C),e.isMuted||(this._userProvidedMuted=!1)}),this.soundElement.on(`media element state`,e=>{e===`paused`&&this.audioPlayer.flushBuffer(),this.audioPlayer.sinkPaused=e===`paused`,this.emitPlaybackState()}),this.sound)for(let e of this.elements())e.on(`needs user input`,e=>this.emitter.emit(`needs user input`,e)),e.on(`error`,e=>this.emitter.emit(`error`,e));this.audioPlayer=nS.create(this.logger.createContext(`AudioPlayerModule`),r,{muted:!1,reInitWhenStuck:!1,bufferTime:l}),this.audioPlayer.on(`state change`,e=>{e===`suspended`||e===`interrupted`?this.soundElement.muted=!0:e===`running`&&this.applyVisibilityMutePolicy(),this.updateVolumeState()}),this.videoPlayer=iS.create(this.logger.createContext(`VideoPlayerModule`),this.audioPlayer,this.pool,this.mediaElement.element,()=>this.reconnectCanvasStream(),this.onVideoPlayerError)}get volume(){return this.soundElement.volume}set volume(e){this.soundElement.volume=e}get muted(){return this.soundElement.muted||this.audioPlayer.muted}get userMuted(){return this.audioPlayer.isContextRunning?this.soundElement.muted:this._userProvidedMuted}set muted(e){let t=this.muted;this._userProvidedMuted=e,this.soundElement.muted=e,!e&&t&&this.activateAudioPlayer().catch(C)}get currentTime(){return this.audioPlayer.currentTime}set currentTime(e){this.audioPlayer.currentTime=e}get isActivated(){return this.mediaElement.isActivated}set isActivated(e){this.mediaElement.isActivated=e}get seekTime(){return this.mediaElement.seekTime}get totalSeekTime(){return this.mediaElement.totalSeekTime}get isPaused(){return this.sound?this.wantsPlay===!1||this.sound.isPaused&&this.mediaElement.element.paused:this.mediaElement.isPaused}get isPlayingAsRequested(){let e=this.soundElement.element;return!this.wantsPlay||!e.paused&&e.muted===this._userProvidedMuted}get isSeeking(){return this.mediaElement.isSeeking}get audioNode(){return this.audioPlayer.audioNode}play(){var e;this.wantsPlay=!0;let t=this._userProvidedMuted;return this.activateAudioPlayer().catch(()=>{t||this.emitter.emit(`needs user input`,{forAudio:!0,forVideo:!1})}),(e=this.sound)==null||e.play(),this.mediaElement.play()}pause(){var e;this.wantsPlay=!1,(e=this.sound)==null||e.pause(),this.mediaElement.pause()}get soundElement(){var e;return(e=this.sound)==null?this.mediaElement:e}get canvasCuesEnabled(){return this.renderCanvasSubtitlesInNativeFullscreen&&!this.offscreenCanvas}};gS=_S,m(_S,`create`,(e,t,n,r,i)=>new gS(e,t,n,r,i)),U(),h(),V(),F();var vS,yS=class{constructor(){m(this,`initSegments`,new Map),m(this,`set`,(e,t,n)=>{var r;let i=(r=this.initSegments.get(e))==null?new Map:r;i.set(t,n),this.initSegments.set(e,i)}),m(this,`get`,(e,t)=>{var n;return(n=this.initSegments.get(e))==null?void 0:n.get(t)})}};function bS(e,{mediaSource:t,mimeType:n,codec:r}){return B(B({},e),{},{state:`initialized`,mimeType:n,sourceBufferMimeType:n,codec:r,sourceBuffer:t.addSourceBuffer(n),isWorkingOnPendingSamples:!1,sequenceNumber:0,lastBufferCleanupTime:performance.now()})}function xS({initSegments:e,pendingSamples:t}){return{state:`uninitialized`,initSegments:e==null?new yS:e,sequenceNumber:0,isWorkingOnPendingSamples:!1,hasFirstSync:t.some(e=>e.isSync),pendingSamples:t==null?[]:t,pendingSamplesOffset:0,consecutiveQuotaExceededErrorCount:0,successfulAppendCalls:0}}var SS=class{constructor(e,t,n){var r=this;m(this,`maxChunkSize`,20),m(this,`minConsecutiveErrorsBeforeEmit`,5),m(this,`maxSecondsInBuffer`,60),m(this,`logger`,void 0),m(this,`timers`,or.create()),m(this,`emitter`,void 0),m(this,`mediaElement`,void 0),m(this,`mediaSource`,new Ll),m(this,`trackContexts`,new Map),m(this,`autoRecoverFromMediaErrors`,!0),m(this,`quotaErrorCount`,0),m(this,`recoveredFromErrorCount`,0),m(this,`sourceOpenStartTime`,performance.now()),m(this,`sourceOpenEndTime`,performance.now()),m(this,`pendingTracksToAddSourceBuffers`,void 0),m(this,`hasAddedInitialPosterFrame`,!0),m(this,`videoKeyframeTimestamps`,[]),m(this,`isReopening`,!1),m(this,`pendingMediaError`,void 0),m(this,`isFlushDeferred`,!1),m(this,`hasRecoveredSinceShown`,!1),m(this,`playbackStallCount`,0),m(this,`hasStartedPlayback`,!1),m(this,`isPlaybackStalled`,!1),m(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),this.emitter.on(`page active`,this.onPageActive)}),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),this.pendingMediaError=void 0,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.emitter.off(`page active`,this.onPageActive),this.mediaSource.off(`source ended`,this.onSourceEnded),this.mediaSource.off(`source open`,this.onSourceOpen),this.mediaElement.removeEventListener(`error`,this.onMediaElementError),this.mediaElement.removeEventListener(`waiting`,this.onPlaybackStall),this.mediaElement.removeEventListener(`stalled`,this.onPlaybackStall),this.mediaElement.removeEventListener(`playing`,this.onPlaybackProgress),this.mediaElement.removeEventListener(`pause`,this.onPlaybackPauseOrSeek),this.mediaElement.removeEventListener(`play`,this.onPlay),this.mediaElement.removeEventListener(`seeking`,this.onPlaybackPauseOrSeek),this.mediaSource.detach(this.mediaElement),this.trackContexts.forEach(e=>{e.state===`initialized`&&e.sourceBuffer.dispose(),e.pendingSamples=[],e.pendingSamplesOffset=0}),this.videoKeyframeTimestamps=[],this.timers.unload(),this.logger.debug(`Unloaded module`)}),m(this,`getStatistics`,()=>{var e,t;let n={quotaErrorCount:this.quotaErrorCount,mediaSourceOpenTime:this.sourceOpenEndTime-this.sourceOpenStartTime,playbackStallCount:this.playbackStallCount,successfulAudioAppendsCalls:(e=this.trackContexts.get(`audio`))==null?void 0:e.successfulAppendCalls,successfulVideoAppendCalls:(t=this.trackContexts.get(`video`))==null?void 0:t.successfulAppendCalls,videoKeyframeIntervalMs:Bt(this.videoKeyframeTimestamps),videoRenderer:`MSE`,videoDecoder:`MSE`,audioRenderer:`MSE`,audioDecoder:`MSE`};if(this.mediaElement instanceof HTMLVideoElement){var r,i;let e=(r=(i=this.mediaElement).getVideoPlaybackQuality)==null?void 0:r.call(i);n.totalVideoFrames=e==null?void 0:e.totalVideoFrames,n.droppedVideoFrames=e==null?void 0:e.droppedVideoFrames}return n}),m(this,`flushBuffers`,()=>{if(document.visibilityState!==`visible`&&this.mediaElement.paused&&this.hasStartedPlayback){this.logger.info(`Deferring the buffer flush until the page is visible or playback resumes`),this.isFlushDeferred=!0;return}this.isFlushDeferred=!1,this.videoKeyframeTimestamps=[];let e=[];this.trackContexts.forEach(t=>{t.pendingSamples=[],t.pendingSamplesOffset=0,t.hasFirstSync=!1,t.state!==`uninitialized`&&this.mediaSource.isOpen()&&e.push(t.sourceBuffer.removeBuffer(0,1/0).catch(e=>{if(!(e instanceof Fl))throw e}))}),Promise.all(e).then(()=>this.emitter.emit(`buffers flushed`)).catch(e=>this.logger.error(`Failed to remove buffer`,e))}),m(this,`setTrackContexts`,(e=new Map)=>{this.logger.debug(`setTrackContexts`),[`audio`,`video`].forEach(t=>{var n,r,i;let a=e.get(t),o=(n=a==null?void 0:a.pendingSamples)==null?[]:n,s=a==null?void 0:a.initSegments,c=(r=a==null?void 0:a.pendingSamplesOffset)==null?0:r;for(;c<o.length&&!((i=o[c])!=null&&i.isSync);)c++;let l=xS({pendingSamples:o,initSegments:s});l.pendingSamplesOffset=c,this.trackContexts.set(t,l)})}),m(this,`resetRemovedTrackContexts`,e=>{let t=new Set(e.map(e=>e.type));this.trackContexts.forEach((e,n)=>{if(t.has(n))return;e.state===`initialized`&&this.mediaSource.isOpen()&&this.mediaSource.removeSourceBuffer(e.sourceBuffer);let r=xS({pendingSamples:[],initSegments:e.initSegments});this.trackContexts.set(n,r)})}),m(this,`isCurrentTrackContext`,(e,t)=>this.trackContexts.get(e)===t),m(this,`initializeSourceBuffer`,(e,t)=>{let n=bS(e,{mimeType:t.mimeType,mediaSource:this.mediaSource,codec:t.codec});n.sourceBuffer.setErrorCallback(this.onSourceBufferError(t.type)),this.trackContexts.set(t.type,n)}),m(this,`setSourceBuffers`,function(){var e=P(function*(e){if(!r.mediaSource.isOpen()){r.pendingTracksToAddSourceBuffers=e;return}r.resetRemovedTrackContexts(e);let t=!0;for(let n of e){let e=r.trackContexts.get(n.type);if(!e||e.state===`uninitialized`||e.sourceBufferMimeType!==n.mimeType){t=!1;break}}if(t){r.logger.debug(`Already setup with the correct mime types`);return}for(let t of e){let n=r.trackContexts.get(t.type);if(n||(n=xS({pendingSamples:[],initSegments:new yS}),r.trackContexts.set(t.type,n)),n.state===`initialized`){if(t.mimeType!==n.sourceBufferMimeType)try{yield n.sourceBuffer.changeType(t.mimeType),n.sourceBufferMimeType=t.mimeType}catch(i){if(i instanceof Fl)throw r.logger.debug(`Abandoning source buffer setup for a disposed buffer`,{type:t.type}),i;r.logger.warn(`changeType failed, recreating source buffer`,{from:n.sourceBufferMimeType,to:t.mimeType,error:i});try{r.mediaSource.removeSourceBuffer(n.sourceBuffer)}catch(t){r.logger.warn(`removeSourceBuffer failed`,{removeError:t}),r.reopenMediaSource(`changeType recovery failed`),r.pendingTracksToAddSourceBuffers=e;return}let a=xS({pendingSamples:n.pendingSamples,initSegments:n.initSegments});a.pendingSamplesOffset=n.pendingSamplesOffset,r.initializeSourceBuffer(a,t)}}else r.initializeSourceBuffer(n,t)}});return function(t){return e.apply(this,arguments)}}()),m(this,`getBuffer`,e=>{if(this.mediaSource.isClosed())return[];let t=this.trackContexts.get(e);return!t||t.state===`uninitialized`?[]:this.getBufferedRanges(t.sourceBuffer)}),m(this,`getBufferState`,e=>{let t=this.getCommonBufferedRangesForCurrentTracks();if(t)return{buffered:t,playbackState:this.getPlaybackStateForBufferedRanges(e,t)}}),m(this,`getNextBufferedRangeStart`,e=>{let t=this.getCommonBufferedRangesForCurrentTracks();if(t)return CS(e,t)}),m(this,`getVideoKeyframeTimestamps`,()=>this.videoKeyframeTimestamps),m(this,`init`,({initSegment:e,mimeType:t})=>{this.logger.debug(`Added init segment`,{channel:e.channelId,renditionId:e.renditionId});let n=this.trackContexts.get(e.type);if(!n)throw Ni(e.type,e.renditionId);n.state===`initialized`&&(n.mimeType=t);let r=fl({codec:e.codec,timescale:e.timescale,initData:e.data,codecString:e.codecString,width:e.width,height:e.height});r&&n.initSegments.set(e.channelId,e.renditionId,new Uint8Array(r))}),m(this,`append`,function(){var e=P(function*(e,t){let n=e[0];if(!n)return;let i=r.trackContexts.get(n.type),a=i==null?void 0:i.initSegments.get(n.channelId,n.renditionId);if(r.mediaSource.isClosed())return;if(!a)throw ji(n.renditionId,n.channelId);if(!i)throw Ni(n.type,n.renditionId);if(i.state===`uninitialized`)throw Pi(n.type,n.renditionId);if(t){var o;let e=(n.timestamp+((o=n.compositionTimeOffset)==null?0:o))/n.timescale;if(yield i.sourceBuffer.removeBuffer(e,1/0),i.mimeType!==i.sourceBufferMimeType&&i.sourceBuffer.changeType)try{yield i.sourceBuffer.changeType(i.mimeType),i.sourceBufferMimeType=i.mimeType}catch(e){if(e instanceof Fl)throw e;r.logger.warn(`changeType failed`,{from:i.sourceBufferMimeType,to:i.mimeType,error:e})}`fragmented`in n||(yield i.sourceBuffer.appendBuffer(a))}let s=Math.max(0,n.timestamp/n.timescale-r.maxSecondsInBuffer);s>0&&performance.now()-i.lastBufferCleanupTime>1e4&&(i.lastBufferCleanupTime=performance.now(),yield i.sourceBuffer.removeBuffer(0,s+10));try{let t=i.sequenceNumber;if(`fragmented`in n)for(let t of e)`initData`in t&&(yield i.sourceBuffer.appendBuffer(t.data,t.initData));else{let n=yl(e,t++);yield i.sourceBuffer.appendBuffer(n)}i.sequenceNumber=t,i.consecutiveQuotaExceededErrorCount=0,i.successfulAppendCalls++}catch(e){throw e instanceof DOMException&&e.code===DOMException.QUOTA_EXCEEDED_ERR&&(r.quotaErrorCount++,i.consecutiveQuotaExceededErrorCount++,r.logger.error(`quota exceeded error`,{error:e})),e}});return function(t,n){return e.apply(this,arguments)}}()),m(this,`onFragment`,({fragment:e,mimeType:t,codec:n,channelId:r,renditionId:i})=>{let a=e.mediaType(),o=e.rawBytes(),s=e.header().rawBytes(),c=e.baseMediaDecodeTime(),l=e.timescale(),u=e.duration(),d=a===`video`?e.startsWithKeyframe():!0,f=e.compositionTimeOffset(0);if(a===`text`){this.logger.warn(`Skipping unexpected text fragment`);return}if(!n){this.logger.warn(`Skipping fragment with no codec`);return}let p=this.trackContexts.get(a);if(!p)throw Ni(a);p.state===`initialized`&&t&&(p.mimeType=t,p.initSegments.set(r,i,s));let m={fragmented:!0,type:a,data:o,initData:s,timestamp:c,duration:u,timescale:l,channelId:r,renditionId:i,isSync:d,codec:n,fragment:e,compositionTimeOffset:f};this.onCodedSample(m)}),m(this,`onCodedSample`,e=>{if(e.duration===0)return;let t=this.trackContexts.get(e.type);if(!t)throw Ni(e.type,e.renditionId);if(!(!t.hasFirstSync&&!e.isSync)){if(this.hasAddedInitialPosterFrame&&e.isSync&&e.type===`video`){this.hasAddedInitialPosterFrame=!1;let n=B({},e);`fragment`in n?(n.fragment=n.fragment.clone(),n.fragment.updateBaseMediaDecodeTime(0),n.data=n.fragment.rawBytes()):n.timestamp=0,t.pendingSamples.push(n)}if(t.hasFirstSync=!0,t.pendingSamples.push(e),e.type===`video`&&e.isSync){var n;let t=(e.timestamp+((n=e.compositionTimeOffset)==null?0:n))/e.timescale*1e3,r=this.videoKeyframeTimestamps[this.videoKeyframeTimestamps.length-1];r!==void 0&&t<r&&(this.videoKeyframeTimestamps=[]),this.videoKeyframeTimestamps.push(t),this.videoKeyframeTimestamps.length>20&&(this.videoKeyframeTimestamps=this.videoKeyframeTimestamps.slice(-20))}t.state!==`uninitialized`&&(t.isWorkingOnPendingSamples||OS(t,this.append,this.maxChunkSize).catch(n=>{if(t.isWorkingOnPendingSamples=!1,!this.isReopening){if(!this.isCurrentTrackContext(e.type,t)){this.logger.debug(`Suppressing append error from stale track context`,{type:e.type});return}if(n instanceof Fl){this.logger.debug(`Suppressing append error from a disposed source buffer`,{type:e.type});return}if(n instanceof Error){if(this.mediaElement.error){this.onMediaElementError();return}if(this.logger.error(`append failed`,{message:n.message,name:n.name}),n instanceof DOMException&&n.code===DOMException.QUOTA_EXCEEDED_ERR){if(t.consecutiveQuotaExceededErrorCount>=this.minConsecutiveErrorsBeforeEmit){let r=Mi(!1,n,t.consecutiveQuotaExceededErrorCount,e.type);this.emitter.emit(`error`,r)}}else{let r=Mi(!1,n,t.consecutiveQuotaExceededErrorCount,e.type);this.emitter.emit(`error`,r)}}}}))}}),m(this,`onSourceBufferError`,e=>()=>{var t;this.logger.warn(`SourceBuffer error`,{trackType:e,mediaElementError:(t=this.mediaElement.error)==null?void 0:t.message})}),m(this,`onSourceOpen`,()=>{this.logger.debug(`source opened`),this.sourceOpenEndTime=performance.now(),this.isReopening=!1;let e=this.pendingTracksToAddSourceBuffers,t=this.pendingMediaError;this.pendingTracksToAddSourceBuffers=void 0,e&&this.setSourceBuffers(e).then(()=>{t&&this.pendingMediaError===t&&(this.pendingMediaError=void 0,this.hasRecoveredSinceShown=!0,this.emitter.emit(`recovered from media error`,{error:t,count:this.recoveredFromErrorCount}))}).catch(e=>{e instanceof Fl||(this.logger.error(`Failed to set source buffers after source open`,e),t&&this.pendingMediaError===t&&this.onRecoveryFailed(e))})}),m(this,`reopenMediaSource`,e=>{this.logger.info(`Re-opening MediaSource`,{reason:e}),this.isReopening=!0,this.recoveredFromErrorCount++;let t=!this.mediaElement.paused,n=[];this.trackContexts.forEach((e,t)=>{e.state===`initialized`&&n.push({type:t,mimeType:e.mimeType,codec:e.codec})}),this.sourceOpenStartTime=performance.now(),this.pendingTracksToAddSourceBuffers=n,this.mediaSource.detach(this.mediaElement),this.trackContexts.forEach(e=>{e.state===`initialized`&&e.sourceBuffer.dispose()}),this.setTrackContexts(this.trackContexts),this.mediaSource.attach(this.mediaElement),t&&this.mediaElement.play().catch(C)}),m(this,`onMediaElementError`,()=>{let{error:e}=this.mediaElement;if(!e||this.isReopening)return;let t=Di(/AUDIO_RENDERER/.test(e.message)||!this.autoRecoverFromMediaErrors,e);if(this.logger.error(`MediaElement error`,{error:t}),this.emitter.emit(`error`,t),!t.isFatal()){this.pendingMediaError=t;try{this.reopenMediaSource(`media element error recovery`)}catch(e){this.onRecoveryFailed(e)}}}),m(this,`onRecoveryFailed`,e=>{this.pendingMediaError=void 0,this.isReopening=!1,this.emitter.emit(`error`,new W(`MediaSource recovery failed`,{isFatal:!0,code:Si,source:e instanceof Error?e:Error(String(e))}))}),m(this,`onPlay`,()=>{this.isFlushDeferred&&!this.mediaElement.paused&&this.flushBuffers()}),m(this,`onPageActive`,e=>{if(e&&(this.isFlushDeferred&&this.flushBuffers(),this.hasRecoveredSinceShown)){var t;this.hasRecoveredSinceShown=!1,((t=this.trackContexts.get(`video`))==null?void 0:t.state)===`initialized`&&(this.mediaElement.currentTime+=.05)}}),m(this,`onSourceEnded`,()=>{this.mediaElement.error&&this.onMediaElementError(),this.logger.debug(`source ended`)}),m(this,`onPlaybackProgress`,()=>{this.hasStartedPlayback=!0,this.isPlaybackStalled=!1}),m(this,`onPlaybackPauseOrSeek`,()=>{this.isPlaybackStalled=!1}),m(this,`onPlaybackStall`,e=>{!this.hasStartedPlayback||this.mediaElement.paused||this.mediaElement.seeking||this.isPlaybackStalled||(this.playbackStallCount++,this.isPlaybackStalled=!0,this.logger.info(`Detected playback stall`,{event:e.type,currentTime:this.mediaElement.currentTime*1e3,playbackStallCount:this.playbackStallCount}))}),m(this,`getBufferedRanges`,e=>{let t=[];try{let n=e.buffered();if(!n)return[];for(let e=0;e<n.length;e++)t.push({start:n.start(e)*1e3,end:n.end(e)*1e3});return t}catch(e){return[]}}),m(this,`getInitializedTrackBuffers`,()=>{let e=[];return this.trackContexts.forEach(t=>{t.state!==`uninitialized`&&e.push(this.getBufferedRanges(t.sourceBuffer))}),e}),m(this,`getCommonBufferedRangesForCurrentTracks`,()=>{if(this.mediaSource.isClosed())return;let e=this.getInitializedTrackBuffers();if(e.length!==0)return this.getCommonBufferedRanges(e)}),m(this,`getCommonBufferedRanges`,e=>e.slice(1).reduce((e,t)=>ES(e,t),e[0]?Array.from(e[0]):[])),m(this,`getPlaybackStateForBufferedRanges`,(e,t)=>pr(t,e)?`playing`:`buffering`),this.logger=e,this.mediaElement=n,this.emitter=t}};vS=SS,m(SS,`create`,(e,t,n)=>{let r=new vS(e,t,n);return r.setTrackContexts(),r.mediaSource.on(`source ended`,r.onSourceEnded),r.mediaSource.on(`source open`,r.onSourceOpen),n.addEventListener(`error`,r.onMediaElementError),n.addEventListener(`waiting`,r.onPlaybackStall),n.addEventListener(`stalled`,r.onPlaybackStall),n.addEventListener(`playing`,r.onPlaybackProgress),n.addEventListener(`pause`,r.onPlaybackPauseOrSeek),n.addEventListener(`play`,r.onPlay),n.addEventListener(`seeking`,r.onPlaybackPauseOrSeek),r.mediaSource.attach(n),r});var CS=(e,t)=>{for(let r=0;r<t.length;r++){let i=t[r];if(i){if(e<i.start)return i.start;if(i.start<=e&&e<i.end){var n;return(n=t[r+1])==null?void 0:n.start}}}},wS=(e,t)=>{var n;let r=e.renditionId!==t.renditionId,i=e.channelId!==t.channelId,a=((n=e.timestamp)==null?0:n)>t.timestamp,o=e.type===`video`&&t.type===`video`&&`levelIdc`in e&&`levelIdc`in t&&e.levelIdc!==t.levelIdc,s=!1;return e.type===`video`&&t.type===`video`&&`width`in e&&`width`in t&&(s=t.width!==e.width||t.height!==e.height),i||r||a||s||o},TS=32,ES=(e,t)=>{let n=[],r=0,i=0;for(;r<e.length&&i<t.length;){let a=e[r],o=t[i];if(!a||!o)break;let s=Math.max(a.start,o.start),c=Math.min(a.end,o.end);s<c&&n.push({start:s,end:c}),a.end<=o.end?r++:i++}return n},DS=e=>{let t=e.pendingSamplesOffset;if(t!==0){if(t>=e.pendingSamples.length){e.pendingSamples=[],e.pendingSamplesOffset=0;return}t<TS||t*2<e.pendingSamples.length||(e.pendingSamples=e.pendingSamples.slice(t),e.pendingSamplesOffset=0)}},OS=function(){var e=P(function*(e,t,n){for(e.isWorkingOnPendingSamples=!0;e.pendingSamplesOffset<e.pendingSamples.length;){let r=[],i=e.pendingSamplesOffset;for(let t=e.pendingSamplesOffset;t<e.pendingSamples.length;t++){i=t;let a=e.pendingSamples[t],o=e.pendingSamples[t+1];if(a&&(r.push(a),o)){if(wS(a,o))break;let e=(a.timestamp+a.duration)/a.timescale;if(o.timestamp/o.timescale-e>.1)break}if(t-e.pendingSamplesOffset>=n-1)break}let a=r[0];if(!a)break;yield t(r,e.previousSample?wS(e.previousSample,a):!0),e.pendingSamplesOffset=i+1,e.previousSample=r[r.length-1],DS(e)}e.isWorkingOnPendingSamples=!1});return function(t,n,r){return e.apply(this,arguments)}}();U(),h(),F();var kS,AS=class{constructor(e,t){var n=this;m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`element`,void 0),m(this,`pictureInPictureWindow`,void 0),m(this,`unload`,()=>{this.emitter.off(`add picture in picture listener`,this.onEnablePictureInPicture),this.detachElementListeners()}),m(this,`onEnablePictureInPicture`,e=>{this.detachElementListeners(),this.element=e.element,e.element.addEventListener(`leavepictureinpicture`,this.onLeavePictureInPicture),e.element.addEventListener(`enterpictureinpicture`,this.onEnterPictureInPicture),jt(e.element,!0)}),m(this,`getPictureInPictureSize`,()=>this.pictureInPictureWindow),m(this,`isPictureInPictureActive`,()=>this.isWebkitPresentationModeActive()||this.isStandardPictureInPictureActive()),m(this,`isPictureInPictureSupported`,()=>this.isWebkitPresentationModeSupported()||this.isStandardPictureInPictureSupported()),m(this,`requestPictureInPicture`,()=>(this.emitter.emit(`ios-hack: reset size`),this.isStandardPictureInPictureSupported()?this.requestStandardPictureInPicture():this.isWebkitPresentationModeSupported()?this.requestWebkitPresentationMode(`picture-in-picture`):Promise.reject(Error(`Picture in picture is not supported`)))),m(this,`exitPictureInPicture`,()=>this.isStandardPictureInPictureSupported()?this.exitStandardPictureInPicture():this.isWebkitPresentationModeSupported()?this.requestWebkitPresentationMode(`inline`):Promise.reject(Error(`Picture in picture is not supported`))),m(this,`getStatistics`,()=>({isPictureInPictureActive:this.isPictureInPictureActive()})),m(this,`detachElementListeners`,()=>{this.element&&(this.element.removeEventListener(`leavepictureinpicture`,this.onLeavePictureInPicture),this.element.removeEventListener(`enterpictureinpicture`,this.onEnterPictureInPicture),jt(this.element,!1))}),m(this,`onLeavePictureInPicture`,()=>{this.pictureInPictureWindow=void 0,this.logger.debug(`Leave picture in picture`),this.emitter.emit(`exit picture in picture`)}),m(this,`onEnterPictureInPicture`,e=>{this.pictureInPictureWindow=Dt(e),this.logger.debug(`Enter picture in picture`),this.emitter.emit(`enter picture in picture`,this)}),m(this,`requestStandardPictureInPicture`,P(function*(){if(!n.element)throw Error(`Picture in picture is not supported`);let e=St(n.element);if(!e)throw Error(`Picture in picture is not supported`);yield e()})),m(this,`exitStandardPictureInPicture`,P(function*(){let e=Ct();if(!e)throw Error(`Picture in picture is not supported`);yield e()})),m(this,`isStandardPictureInPictureSupported`,()=>!!this.element&&Et(this.element)),m(this,`isStandardPictureInPictureActive`,()=>!!this.element&&Tt()),m(this,`isWebkitPresentationModeActive`,()=>!!this.element&&Ot(this.element)===`picture-in-picture`),m(this,`requestWebkitPresentationMode`,function(){var e=P(function*(e){return n.element&&kt(n.element,e),Promise.resolve()});return function(t){return e.apply(this,arguments)}}()),m(this,`isWebkitPresentationModeSupported`,()=>!!this.element&&At(this.element)),this.emitter=e,this.logger=t,this.emitter.on(`add picture in picture listener`,this.onEnablePictureInPicture)}};kS=AS,m(AS,`create`,(e,t)=>new kS(e,t)),U(),h();var jS,MS=class{constructor(e,t,n,r){m(this,`emitter`,void 0),m(this,`logger`,void 0),m(this,`clockSource`,void 0),m(this,`state`,`buffering`),m(this,`bufferFullness`,0),m(this,`targetBufferTime`,void 0),m(this,`lastBufferStateEvent`,`drained`),m(this,`firstFrameTime`,void 0),m(this,`currentTimeIsInRange`,!1),m(this,`needsInputForAudioCount`,0),m(this,`needsInputForVideoCount`,0),m(this,`unload`,()=>{this.emitter.off(`buffer state`,this.onBufferedStateChanged),this.emitter.off(`needs user input`,this.onNeedsUserInput)}),m(this,`setTargetBufferTime`,e=>{this.targetBufferTime=e,this.emitter.emit(`target buffer time`,e)}),m(this,`getTargetBufferTime`,()=>this.targetBufferTime),m(this,`getBufferFullness`,()=>this.bufferFullness),m(this,`getLastBufferStateEvent`,()=>this.lastBufferStateEvent),m(this,`getState`,()=>this.state),m(this,`getFirstFrameTime`,()=>this.firstFrameTime),m(this,`getStatistics`,()=>({bufferTime:this.targetBufferTime,needsInputForAudioCount:this.needsInputForAudioCount,needsInputForVideoCount:this.needsInputForVideoCount})),m(this,`onBufferedStateChanged`,({buffered:e,isPaused:t,playbackState:n})=>{let r=this.clockSource.currentTime,i=pr(e,r),a=e[e.length-1],o=a?a.end-a.start>=this.targetBufferTime:!1,s=a?Math.max(0,a.end-r)/this.targetBufferTime:0,c=t?`paused`:n,l=this.state;this.currentTimeIsInRange!==i&&!i?(this.lastBufferStateEvent=`drained`,this.emitter.emit(`buffer state event`,this.lastBufferStateEvent)):i&&o&&this.lastBufferStateEvent===`drained`&&(this.lastBufferStateEvent=`filled`,this.emitter.emit(`buffer state event`,this.lastBufferStateEvent)),c===`playing`&&this.firstFrameTime===void 0&&(this.firstFrameTime=performance.now()),this.currentTimeIsInRange=i,this.state=c,this.bufferFullness=i?s:0,l!==c&&this.emitter.emit(`playback state`,c),this.emitter.emit(`buffer fullness`,this.bufferFullness)}),m(this,`onNeedsUserInput`,({forAudio:e,forVideo:t})=>{e&&this.needsInputForAudioCount++,t&&this.needsInputForVideoCount++}),this.emitter=e,this.logger=t,this.clockSource=n,this.targetBufferTime=r,this.emitter.on(`buffer state`,this.onBufferedStateChanged),this.emitter.on(`needs user input`,this.onNeedsUserInput),this.emitter.emit(`target buffer time`,r)}};jS=MS,m(MS,`create`,(e,t,n,r)=>new jS(e,t,n,r)),U(),h();var NS,PS=()=>({upgradesFromLevel:[],downgradesFromLevel:[],bufferingRanges:[],activeRanges:[],decodeRate:2**53-1}),FS=()=>({levels:{},levelDowngrades:[],levelUpgrades:[],bufferFullness:0,general:PS()}),IS=class{constructor(e,t,n){m(this,`minBufferFullnessLengthForRegression`,6),m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`timers`,or.create()),m(this,`metrics`,FS()),m(this,`bufferFullness`,new T(30)),m(this,`bufferFullnessRegression`,void 0),m(this,`currentLevel`,void 0),m(this,`isSuspended`,!1),m(this,`_fatalQosCount`,0),m(this,`targetBufferTime`,0),m(this,`renditionLevelSource`,void 0),m(this,`qualityIndexOrder`,[]),m(this,`hasPlayedInSession`,!1),m(this,`hasAsserted`,!1),m(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),this.emitter.on(`target buffer time`,this.onTargetBufferTime),this.emitter.on(`connection state`,this.onConnectionState)}),m(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.emitter.off(`target buffer time`,this.onTargetBufferTime),this.emitter.off(`connection state`,this.onConnectionState),this.suspend()}),m(this,`suspend`,()=>{this.isSuspended=!0,this.timers.unload(),this.stopBuffering(),this.unsetActive(),this.hasPlayedInSession=!1}),m(this,`unsuspend`,()=>{this.isSuspended=!1,this.currentLevel&&this.setActive()}),m(this,`fatalQosGraceTime`,()=>1e4*(this.fatalQosCount+1)),m(this,`incrementFatalQosCount`,()=>{this._fatalQosCount++}),m(this,`getMetrics`,()=>this.metrics),m(this,`getLevelStats`,e=>{var t,n,r,i;let a=((t=(n=e.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.audio)==null?void 0:i.bitRate)==null?0:r);return this.metrics.levels[a]}),m(this,`getBufferFullnessRegression`,()=>this.bufferFullnessRegression),m(this,`getTargetBufferTime`,()=>this.targetBufferTime),m(this,`activeRatios`,()=>{let e=new Map,t=ur(this.metrics.general.activeRanges);if(Object.entries(this.metrics.levels).forEach(([n,r])=>{var i;let a=parseInt(n,10),o=t?ur(r.activeRanges)/t:0,s=this.getQualityIndex(a).toString();e.set(s,((i=e.get(s))==null?0:i)+o)}),!this.hasAsserted){let t=e.size?Math.abs(Array.from(e.values()).reduce((e,t)=>e+t,0)-1)<=.02:!0;t||(this.hasAsserted=!0,console.assert(t,`Active ratios should be close to 1 - actual: ${Array.from(e.values()).reduce((e,t)=>e+t,0)}`))}return e}),m(this,`bufferingRatios`,()=>{let e=new Map,t=ur(this.metrics.general.bufferingRanges);if(Object.entries(this.metrics.levels).forEach(([n,r])=>{var i;let a=parseInt(n,10),o=t?ur(r.bufferingRanges)/t:0,s=this.getQualityIndex(a).toString();e.set(s,((i=e.get(s))==null?0:i)+o)}),!this.hasAsserted){let t=Array.from(e.values()).reduce((e,t)=>e+t,0)<=1;t||(this.hasAsserted=!0,console.assert(t,`Buffering ratios should be less than 1 - actual: ${Array.from(e.values()).reduce((e,t)=>e+t,0)}`))}return e}),m(this,`bufferingEventsLast`,e=>this.metrics.general.bufferingRanges.filter(t=>t.start>=performance.now()-e).length),m(this,`timeSpentBufferingLast`,e=>dr(this.metrics.general.bufferingRanges,e)),m(this,`timeSpentActiveLast`,e=>dr(this.metrics.general.activeRanges,e)),m(this,`timeSpentPlayingInAtLeastLevelRatio`,e=>{var t,n,r,i;let a=this.timeSpentBuffering(),o=this.timeActive(),s=this.bufferingRatios(),c=this.activeRatios(),l=((t=(n=e.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.audio)==null?void 0:i.bitRate)==null?0:r),u=a/o;return Object.keys(this.metrics.levels).map(e=>parseInt(e,10)).filter(e=>e>=l).reduce((e,t)=>{var n,r;let i=this.getQualityIndex(t).toString();return((n=c.get(i))==null?0:n)-((r=s.get(i))==null?0:r)*u+e},0)}),m(this,`timeSpentBuffering`,()=>ur(this.metrics.general.bufferingRanges)),m(this,`timeActive`,()=>ur(this.metrics.general.activeRanges)),m(this,`getStatistics`,()=>{let e=this.timeSpentBuffering(),t=this.timeActive(),n=this.metrics.general.bufferingRanges.length,r=this.activeRatios(),i=t/6e4,a=t>0?e/t:0,o=Math.max(i,1),s=i>0?n/o:0,c=[...r].reduce((e,[t,n])=>e+parseInt(t,10)*n,0),l=6e4,u=this.timeSpentActiveLast(l),d=this.timeSpentBufferingLast(l),f=u>0?d/u:0,p=this.metrics.general.upgradesFromLevel.length+this.metrics.general.downgradesFromLevel.length,m=i>0?p/o:0,h=n>0?e/n:0;return{timeSpentBuffering:e,bufferingEventsCount:n,timeSpentRatio:[...r].reduce((e,[t,n])=>(e[t]=n,e),{}),fatalQosCount:this.fatalQosCount,bufferingRatio:a,bufferingEventsPerMinute:s,averageRenditionIndex:c,bufferingRatioPerMinute:f,renditionChangesPerMinute:m,timePerBufferingEvent:h}}),m(this,`onRenditionLevelChanged`,e=>{var t,n,r,i,a,o,s,c;let l=((t=(n=e.from)==null||(n=n.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.from)==null||(i=i.audio)==null?void 0:i.bitRate)==null?0:r),u=((a=(o=e.to)==null||(o=o.video)==null?void 0:o.bitRate)==null?0:a)+((s=(c=e.to)==null||(c=c.audio)==null?void 0:c.bitRate)==null?0:s);this.logger.info(`rendition level changed`,{fromLevel:l,toLevel:u}),this.metrics.general.activeRanges.length===0&&this.setActive(),e.from&&e.to&&(l<u?this.metrics.general.upgradesFromLevel.push(performance.now()):this.metrics.general.downgradesFromLevel.push(performance.now()));let d=!1;if(e.from){var f;let e=(f=this.metrics.levels[l])==null?PS():f;l<u?e.upgradesFromLevel.push(performance.now()):e.downgradesFromLevel.push(performance.now()),cr(e.activeRanges);let t=e.bufferingRanges[e.bufferingRanges.length-1];d=!!t&&!t.end,cr(e.bufferingRanges),this.metrics.levels[l]=e}if(e.to){var p;let e=(p=this.metrics.levels[u])==null?PS():p;lr(e.activeRanges),d&&lr(e.bufferingRanges),this.metrics.levels[u]=e,this.currentLevel=u}}),m(this,`onBufferFullness`,e=>{this.bufferFullness.push(e),this.metrics.bufferFullness=e,this.bufferFullness.items().length>=this.minBufferFullnessLengthForRegression&&(this.bufferFullnessRegression=this.calculateLinearRegression())}),m(this,`onPlaybackState`,e=>{switch(this.logger.info(`Playback state`,{state:e,currentLevel:this.currentLevel}),e){case`playing`:this.hasPlayedInSession=!0,this.stopBuffering();break;case`buffering`:!this.isSuspended&&this.hasPlayedInSession&&this.startBuffering();break}}),m(this,`onConnectionState`,e=>{e!==`connected`&&this.isSuspended&&(this.hasPlayedInSession=!1)}),m(this,`onVideoDecodeRate`,e=>{var t;if(this.metrics.general.decodeRate=e,!this.currentLevel)return;let n=this.metrics.levels[(t=this.currentLevel)==null?0:t];n&&(n.decodeRate=e)}),m(this,`onTargetBufferTime`,e=>{this.targetBufferTime=e}),m(this,`calculateLinearRegression`,()=>Ut(this.bufferFullness.items().map((e,t)=>({x:t,y:e})))),m(this,`stopBuffering`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&cr(e.bufferingRanges)}cr(this.metrics.general.bufferingRanges)}),m(this,`startBuffering`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&lr(e.bufferingRanges)}lr(this.metrics.general.bufferingRanges)}),m(this,`unsetActive`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&cr(e.activeRanges)}cr(this.metrics.general.activeRanges)}),m(this,`getQualityIndex`,e=>{if(!this.qualityIndexOrder.length){var t,n;let e=((t=(n=this.renditionLevelSource)==null?void 0:n.getRenditionLevels())==null?[]:t).map(e=>{var t,n,r,i;return((t=(n=e.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.audio)==null?void 0:i.bitRate)==null?0:r)}).filter(e=>e>0);this.qualityIndexOrder=[...new Set(e)].sort((e,t)=>t-e)}let r=this.qualityIndexOrder.indexOf(e);return r===-1&&(this.qualityIndexOrder.push(e),this.qualityIndexOrder.sort((e,t)=>t-e),r=this.qualityIndexOrder.indexOf(e)),r}),this.logger=t,this.emitter=e,this.renditionLevelSource=n}get fatalQosCount(){return this._fatalQosCount}setActive(){if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&lr(e.activeRanges)}lr(this.metrics.general.activeRanges)}};NS=IS,m(IS,`create`,(e,t,n)=>new NS(e,t,n)),U(),h();var LS,RS=class{constructor(e,t){m(this,`renditions`,new Map),m(this,`renditionLevels`,[]),m(this,`languages`,[]),m(this,`emitter`,void 0),m(this,`subscriptionSource`,void 0),m(this,`renditionLevelChangeCount`,0),m(this,`unload`,()=>{this.emitter.off(`renditions`,this.onRenditions),this.emitter.off(`subscription changed`,this.onSubscriptionChanged)}),m(this,`getRenditionLevels`,e=>e?this.createRenditionLevels(e):this.renditionLevels),m(this,`getRenditionLevel`,e=>{var t;let n=e==null?this.getCurrentSubscription():e,r=e?this.createRenditionLevels(e):this.renditionLevels;if(!n.video)return r.length?r[0]:void 0;let i=n.video.bitRate||2**53-1,a=n.video.width||2**53-1,o=n.video.height||2**53-1;return(t=r.filter(e=>e.video&&n.video?e.video.bitRate<=i&&e.video.width<=a&&e.video.height<=o:!0).pop())==null?r[0]:t}),m(this,`setRenditions`,(e,t)=>{this.renditions.set(e,t)}),m(this,`getLanguages`,()=>this.languages),m(this,`getVideoRendition`,(e,t=this.getCurrentSubscription().channelId)=>{let n=this.getRendition(e,t);if(n&&Fr(n))return n}),m(this,`getAudioRenditions`,e=>{let t=this.renditions.get(e);return t==null?void 0:t.filter(e=>Ir(e))}),m(this,`getVideoRenditions`,e=>{let t=this.renditions.get(e);return t==null?void 0:t.filter(e=>Fr(e))}),m(this,`getAudioRendition`,(e,t=this.getCurrentSubscription().channelId)=>{let n=this.getRendition(e,t);if(n&&Ir(n))return n}),m(this,`getRendition`,(e,t=this.getCurrentSubscription().channelId)=>{var n;return(n=this.renditions.get(t))==null?void 0:n.find(t=>t.id===e)}),m(this,`getStatistics`,()=>{var e,t,n,r,i,a,o,s,c,l;let u=this.getRenditionLevel();return{videoCodec:u==null||(e=u.video)==null?void 0:e.codec,audioCodec:u==null||(t=u.audio)==null?void 0:t.codec,videoRenditionId:u==null||(n=u.video)==null?void 0:n.id,audioRenditionId:u==null||(r=u.audio)==null?void 0:r.id,videoWidth:u==null||(i=u.video)==null?void 0:i.width,videoHeight:u==null||(a=u.video)==null?void 0:a.height,expectedVideoBitRate:u==null||(o=u.video)==null?void 0:o.bitRate,expectedAudioBitRate:u==null||(s=u.audio)==null?void 0:s.bitRate,frameRate:u==null||(c=u.video)==null?void 0:c.frameRate,language:u==null||(l=u.audio)==null?void 0:l.language,renditionLevelChangeCount:this.renditionLevelChangeCount}}),m(this,`onRenditions`,e=>{let t=this.subscriptionSource.getCurrentSubscription();this.renditions.set(e.channelId,e.renditions),this.updateRenditionLevels({to:t,from:t})}),m(this,`onSubscriptionChanged`,e=>{this.updateRenditionLevels(e)}),m(this,`updateRenditionLevels`,({to:e,from:t})=>{var n;let{channelId:r,initiator:i}=e,a=this.getRenditionLevel(t),o=new Set;((n=this.renditions.get(r))==null?[]:n).filter(e=>e.codec!==`webvtt`).forEach(e=>e.language?o.add(e.language):void 0),this.languages=Array.from(o),this.renditionLevels=this.createRenditionLevels(e);let s=this.getRenditionLevel(e);Xt(a,s)||(this.renditionLevelChangeCount++,this.emitter.emit(`rendition level changed`,{to:s,from:a,reason:i?`manual`:`abr`}))}),m(this,`createRenditionLevels`,e=>{var t;let{video:n,audio:r,channelId:i}=e,a=(t=this.renditions.get(i))==null?[]:t,o=a.filter(Fr).filter(e=>n&&e.codec===n.codec),s=a.filter(Ir).filter(e=>r&&e.codec===r.codec&&e.language===r.language),c=Math.max(o.length,s.length),l=[];for(let e=0;e<c;e++){let t=o[Math.min(o.length-1,e)],n=s[Math.min(s.length-1,e)];l.push({audio:n,video:t})}return l}),m(this,`getCurrentSubscription`,()=>this.subscriptionSource.getCurrentSubscription()),this.subscriptionSource=t,this.emitter=e,this.emitter.on(`renditions`,this.onRenditions),this.emitter.on(`subscription changed`,this.onSubscriptionChanged)}};LS=RS,m(RS,`create`,(e,t)=>new LS(e,t)),U(),h();var zS,BS=e=>JSON.parse(JSON.stringify(e)),VS=1e4,HS=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`timers`,new or),m(this,`emitter`,void 0),m(this,`targetSubscription`,void 0),m(this,`currentSubscription`,void 0),m(this,`_isSwitchingSubscription`,!1),m(this,`pendingSubscriptionTimeoutId`,void 0),m(this,`burstMs`,0),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),this.timers.unload(),this.emitter.off(`subscription changed`,this.onSubscriptionChanged),this.logger.debug(`Unloaded module`)}),m(this,`isSwitchingSubscription`,()=>this._isSwitchingSubscription),m(this,`getTargetSubscription`,()=>this.targetSubscription),m(this,`getCurrentSubscription`,()=>this.currentSubscription),m(this,`enableBurst`,e=>{this.burstMs=e}),m(this,`setSize`,e=>{this.targetSubscription.video.width=e.width,this.targetSubscription.video.height=e.height,this.scheduleSubscriptionChange()}),m(this,`setVideoConstraint`,e=>{this.targetSubscription.video=e,this.scheduleSubscriptionChange()}),m(this,`setAudioConstraint`,e=>{this.targetSubscription.audio=e,this.scheduleSubscriptionChange()}),m(this,`setVideoBitRate`,e=>{this.targetSubscription.video.bitRate=e,this.scheduleSubscriptionChange()}),m(this,`setAudioBitRate`,e=>{this.targetSubscription.audio.bitRate=e,this.scheduleSubscriptionChange()}),m(this,`setChannelId`,e=>{this.targetSubscription.channelId=e,this.scheduleSubscriptionChange()}),m(this,`setLanguage`,e=>{this.targetSubscription.audio.language=e,this.scheduleSubscriptionChange()}),m(this,`setVideoCodec`,e=>{this.targetSubscription.video.codec=e,this.scheduleSubscriptionChange()}),m(this,`setAudioCodec`,e=>{this.targetSubscription.audio.codec=e,this.scheduleSubscriptionChange()}),m(this,`setBurst`,e=>{e?this.targetSubscription.burstMs=e:delete this.targetSubscription.burstMs}),m(this,`isNewSubscription`,()=>{let e=[`burstMs`,`meta`,`initiator`,`channelGroupId`];return!Xt(Zn(this.currentSubscription,e),Zn(this.targetSubscription,e))}),m(this,`onSubscriptionChanged`,({to:e,reset:t})=>{this.logger.debug(`onSubscriptionChanged`,{to:e,reset:t}),t?this.targetSubscription=BS(this.currentSubscription):this.currentSubscription=BS(e),this._isSwitchingSubscription=this.isNewSubscription()}),m(this,`scheduleSubscriptionChange`,()=>{this.targetSubscription=BS(this.targetSubscription),this._isSwitchingSubscription=this.isNewSubscription();let e=this.currentSubscription.channelId,t=this.targetSubscription.channelId,n=e!==t;this._isSwitchingSubscription&&(n&&this.burstMs?this.setBurst(this.burstMs):this.setBurst(0),this.pendingSubscriptionTimeoutId&&(this.timers.clearTimeout(this.pendingSubscriptionTimeoutId),this.pendingSubscriptionTimeoutId=void 0),n&&this.timers.setTimeout(()=>{this.currentSubscription.channelId===e&&this.targetSubscription.channelId===t&&(this.logger.warn(`Channel switch timeout`,t),this.targetSubscription=BS(this.currentSubscription),this.emitter.emit(`channel switch timeout`,t))},VS),this.pendingSubscriptionTimeoutId=this.timers.setTimeout(()=>this.emitter.emit(`send signal`,{type:`subscribe`,subscription:this.getTargetSubscription()}),0))}),this.logger=e,this.targetSubscription=t,this.currentSubscription=BS(t),this.emitter=n,this.emitter.on(`subscription changed`,this.onSubscriptionChanged)}};zS=HS,m(HS,`create`,(e,t,n)=>new zS(e,n,t)),U(),h();var US=class e{constructor(){m(this,`channelId`,void 0),m(this,`renditionId`,void 0),m(this,`anchorCts`,void 0),m(this,`hasBFramesValue`,!1),m(this,`isAwaitingAssessment`,!1),m(this,`zeroOffsetSamples`,0),m(this,`omittedBoundaryCrossings`,0),m(this,`hasSeenKeyframe`,!1),m(this,`hasObservedReordering`,!1),m(this,`rememberedRenditions`,new en(e.MAX_REMEMBERED_RENDITIONS))}get hasBFrames(){return this.hasBFramesValue}get isAwaitingReorderAssessment(){return this.isAwaitingAssessment}update(e){var t;e.type===`video`&&(this.resetOnSwitch(e.channelId,e.renditionId),!this.hasObservedReordering&&(e.isSync&&this.noteKeyframe(),this.observeOffset((t=e.compositionTimeOffset)==null?0:t,e.isSync)))}updateFromFragment(e){var t;if(e.type!==`video`||(this.resetOnSwitch(e.channelId,e.renditionId),this.hasObservedReordering))return;if(e.startsWithKeyframe&&this.noteKeyframe(),e.compositionTimeOffsets.length===0){if(!e.startsWithKeyframe&&this.hasSeenKeyframe&&this.anchorCts!==void 0&&this.anchorCts!==0&&this.noteOmittedBoundaryCrossing())return;this.zeroOffsetSamples+=e.sampleCount,this.zeroOffsetSamples>=2&&(this.isAwaitingAssessment=!1),this.anchorCts=void 0;return}let n=this.zeroOffsetSamples>0;if(this.zeroOffsetSamples=0,!(this.hasSeenKeyframe&&n&&!e.startsWithKeyframe&&((t=e.compositionTimeOffsets[0])==null?0:t)!==0&&this.noteOmittedBoundaryCrossing()))for(let t=0;t<e.sampleCount;t++){var r;let n=(r=e.compositionTimeOffsets[t])==null?0:r;if(this.observeOffset(n,t===0&&e.startsWithKeyframe))return}}observeOffset(e,t){return t||this.anchorCts===void 0?(this.anchorCts!==void 0&&(this.isAwaitingAssessment=!1),this.anchorCts=e,!1):e===this.anchorCts?(this.isAwaitingAssessment=!1,!1):(this.latchBFrames(),!0)}reset(){this.channelId=void 0,this.renditionId=void 0,this.anchorCts=void 0,this.hasBFramesValue=!1,this.zeroOffsetSamples=0,this.omittedBoundaryCrossings=0,this.hasSeenKeyframe=!1,this.hasObservedReordering=!1,this.isAwaitingAssessment=!0}remember(e){this.channelId!==void 0&&this.rememberedRenditions.set(ex(this.channelId,this.renditionId),e)}latchBFrames(){this.hasBFramesValue=!0,this.hasObservedReordering=!0,this.isAwaitingAssessment=!1,this.remember(!0)}noteOmittedBoundaryCrossing(){return this.omittedBoundaryCrossings+=1,this.omittedBoundaryCrossings>=2?(this.latchBFrames(),!0):!1}noteKeyframe(){this.hasSeenKeyframe&&!this.hasObservedReordering&&(this.remember(!1),this.hasBFramesValue=!1),this.hasSeenKeyframe=!0,this.omittedBoundaryCrossings=0}resetOnSwitch(e,t){if(!tx(e,t,this.channelId,this.renditionId)){let n=this.channelId!==void 0;this.channelId=e,this.renditionId=t,this.anchorCts=void 0,this.zeroOffsetSamples=0,this.omittedBoundaryCrossings=0,this.hasSeenKeyframe=!1,this.hasObservedReordering=!1;let r=this.rememberedRenditions.get(ex(e,t));this.hasBFramesValue=r==null?!1:r,n&&(this.isAwaitingAssessment=r===void 0)}}};m(US,`MAX_REMEMBERED_RENDITIONS`,32),U(),h(),V();var WS,GS=5e3,KS=()=>it()||tt(),qS=e=>e&&KS()?100:0,JS=e=>t=>t>e,YS=100,XS=1e3,ZS={seek:{toleranceMs:200,toleranceMaxMs:2500,toleranceMultiplierStep:1,backoffEveryN:2,cooldownMs:1e3,timeoutMs:5e3,aheadToleranceMs:150,keyframeSearchBeforeMs:50,keyframeSearchAfterMs:100},timeshift:{enabled:!1,toleranceMs:50,toleranceMaxMs:600,backoffEveryN:3},playbackRate:{enabled:!1,startDiff:60,stopDiff:40,maxDiff:300,speed:.02,cooldownMs:2e3},backoff:{enabled:!0,decayEnabled:!0,decayCooldownMultiplier:3,decayCheckInterval:15e3}},QS=class{get driftSamplesToCollect(){return this._driftSamplesToCollect}set driftSamplesToCollect(e){this._driftSamplesToCollect=e,this.driftSamples=new T(e)}constructor(e,t,n,r,i,a=!0){m(this,`emitter`,void 0),m(this,`logger`,void 0),m(this,`playbackSource`,void 0),m(this,`bufferSource`,void 0),m(this,`keyframeTimestamps`,new T(10)),m(this,`lastSeekTime`,void 0),m(this,`needsMediaSourceRecovery`,!1),m(this,`lastAdjustmentTime`,performance.now()),m(this,`lastDecayCheckTime`,performance.now()),m(this,`syncInterval`,void 0),m(this,`currentSyncIntervalMs`,YS),m(this,`config`,void 0),m(this,`state`,void 0),m(this,`allowTimeshiftOnAudio`,!1),m(this,`syncInfoToleranceMaxMs`,150),m(this,`syncInfoToleranceStep`,20),m(this,`seekOvershoot`,void 0),m(this,`timers`,or.create()),m(this,`rtt`,0),m(this,`channelSyncInfo`,new Map),m(this,`seekAdjustmentCount`,0),m(this,`timeshiftAdjustmentCount`,0),m(this,`syncInfoCorrectionCount`,0),m(this,`playbackRateAdjustmentCount`,0),m(this,`lastPlaybackRateChangeTime`,0),m(this,`seekAdjustmentTimestamps`,[]),m(this,`timeshiftAdjustmentTimestamps`,[]),m(this,`_driftSamplesToCollect`,5),m(this,`driftSamples`,new T(this._driftSamplesToCollect)),m(this,`timestampOffset`,void 0),m(this,`hasObservedBFrames`,!1),m(this,`bFrameDetector`,new US),m(this,`currentChannelId`,void 0),m(this,`highestSeenTimestamps`,new Map),m(this,`isSuspended`,!1),m(this,`isSyncAdjustmentActivated`,!1),m(this,`queuedTimeshift`,!1),m(this,`playbackState`,void 0),m(this,`hasPerformedRecoverySeekInCurrentRecoveryState`,!1),m(this,`shouldSeekAfterBuffering`,!1),m(this,`usesMse`,void 0),m(this,`load`,()=>{this.emitter.on(`page active`,this.onPageActive),this.emitter.on(`pageshow`,this.onPageShow),this.setSyncInterval(document.visibilityState===`hidden`?XS:YS)}),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),this.emitter.off(`rtt`,this.updateRtt),this.emitter.off(`playback state`,this.onPlaybackState),this.emitter.off(`page active`,this.onPageActive),this.emitter.off(`pageshow`,this.onPageShow),this.emitter.off(`buffers flushed`,this.clearBFrameLatch),this.emitter.off(`recovered from media error`,this.onMediaSourceRecovered),this.clearSyncInterval(),this.timers.unload(),this.logger.debug(`Unloaded module`)}),m(this,`suspend`,()=>{this.isSuspended=!0}),m(this,`unsuspend`,()=>{this.resetSyncState(),this.isSuspended=!1,this.onSync()}),m(this,`deactivateSyncAdjustments`,()=>{this.isSyncAdjustmentActivated=!1}),m(this,`activateSyncAdjustments`,()=>{this.tryApplySyncInfo(0),this.isSyncAdjustmentActivated=!0}),m(this,`reset`,()=>{this.logger.info(`Reset sync state`),this.needsMediaSourceRecovery=!1,this.currentChannelId=void 0,this.timestampOffset=void 0,this.bFrameDetector.reset(),this.resetSyncState(),this.highestSeenTimestamps.clear()}),m(this,`getTimeshiftOffset`,()=>{var e;return(e=this.timestampOffset)==null?0:e}),m(this,`getCurrentChannelId`,()=>this.currentChannelId),m(this,`resetSyncState`,()=>{this.state.seekToleranceMultiplier=1,this.state.timeshiftToleranceMultiplier=1,this.seekAdjustmentTimestamps=[],this.timeshiftAdjustmentTimestamps=[],this.driftSamples.clear(),this.playbackState=void 0,this.hasPerformedRecoverySeekInCurrentRecoveryState=!1,this.clearRecoverySeekFlags()}),m(this,`getEffectiveSeekToleranceMs`,()=>this.config.timeshift.enabled?this.config.seek.toleranceMs*2:this.config.seek.toleranceMs),m(this,`isTimeshiftUnsafe`,()=>this.usesMse&&(this.hasObservedBFrames||this.bFrameDetector.isAwaitingReorderAssessment)),m(this,`clearBFrameLatch`,()=>{this.hasObservedBFrames=!1}),m(this,`latchBFramesIfDetected`,()=>{!this.hasObservedBFrames&&this.bFrameDetector.hasBFrames&&(this.hasObservedBFrames=!0,this.logger.info(this.usesMse?`B-frame stream detected; disabling timeshift drift correction`:`B-frame stream detected; timeshift drift correction stays enabled (no MSE buffer to splice)`))}),m(this,`getLiveEdgeTime`,e=>{let t=this.channelSyncInfo.get(e);if(!t)return;let n=performance.now()-t.localTimestamp;return t.timestamp+n}),m(this,`getLiveEdgeTimeLatencyAdjusted`,e=>{let t=this.getLiveEdgeTime(e);if(t)return t+this.rtt/2}),m(this,`getWallclockTime`,e=>{let t=this.channelSyncInfo.get(e);if(!t)return;let n=performance.now()-t.localTimestamp;return t.wallclockTime+n}),m(this,`getWallclockTimeLatencyAdjusted`,e=>{let t=this.getWallclockTime(e);if(t)return t+this.rtt/2}),m(this,`processSample`,e=>{var t;if(!e.channelId)throw Error(`Sample must be assigned to a channel`);this.currentChannelId||(this.currentChannelId=e.channelId),this.timestampOffset||(this.timestampOffset=e.timestamp/e.timescale*1e3-GS);let n=e.type===`video`&&e.isSync;if(this.bFrameDetector.update(e),this.latchBFramesIfDetected(),this.currentChannelId!==e.channelId){let t=2**53-1;console.assert(this.highestSeenTimestamps.size!==0,`no known timestamps`),this.highestSeenTimestamps.forEach(e=>{t=Math.min(t,e)});let n=e.timestamp/e.timescale*1e3;this.currentChannelId=e.channelId,this.timestampOffset=n-t}else (n||this.allowTimeshiftOnAudio)&&this.tryTimeshiftSync();let r=this.timestampOffset*e.timescale/1e3;return e.timestamp-=r,n&&this.keyframeTimestamps.push(e.timestamp/e.timescale*1e3),this.highestSeenTimestamps.set(e.type,Math.max((t=this.highestSeenTimestamps.get(e.type))==null?0:t,e.timestamp/e.timescale*1e3)),e}),m(this,`processFragment`,(e,t,n)=>{var r;this.currentChannelId||(this.currentChannelId=e);let i=t.mediaType();if(!i)throw Error(`Fragment must have a media type`);this.timestampOffset||(this.timestampOffset=t.baseMediaDecodeTime()/t.timescale()*1e3-GS);let a=i===`video`&&t.startsWithKeyframe();if(i===`video`&&(this.bFrameDetector.updateFromFragment({type:i,channelId:e,renditionId:n,startsWithKeyframe:a,sampleCount:t.samplesCount(),compositionTimeOffsets:t.sampleCompositionTimeOffsets()}),this.latchBFramesIfDetected()),this.currentChannelId!==e){let t=2**53-1;console.assert(this.highestSeenTimestamps.size!==0,`no known timestamps`),this.highestSeenTimestamps.forEach(e=>{t=Math.min(t,e)}),this.currentChannelId=e}else (a||this.allowTimeshiftOnAudio)&&this.tryTimeshiftSync();let o=this.timestampOffset*t.timescale()/1e3;return t.updateBaseMediaDecodeTime(t.baseMediaDecodeTime()-o),a&&this.keyframeTimestamps.push(t.baseMediaDecodeTime()/t.timescale()*1e3),this.highestSeenTimestamps.set(i,Math.max((r=this.highestSeenTimestamps.get(i))==null?0:r,t.baseMediaDecodeTime()/t.timescale()*1e3)),t}),m(this,`forceSeek`,()=>{this.logger.debug(`Forcing seek`,{amount:this.serverCurrentTime-this.playbackSource.currentTime}),this.clearRecoverySeekFlags(),this.playbackSource.currentTime=this.serverCurrentTime}),m(this,`forceTimeshift`,()=>{this.queuedTimeshift=!0}),m(this,`setPlaybackRateAdjustmentEnabled`,e=>{this.config.playbackRate.enabled=e}),m(this,`getStatistics`,()=>{let e=this.driftSamples.items(),t=e.length>0?zt(e.map(Math.abs)):0;return{drift:this.drift,seekAdjustmentCount:this.seekAdjustmentCount,timeshiftAdjustmentCount:this.timeshiftAdjustmentCount,seekTime:this.playbackSource.seekTime,totalSeekTime:this.playbackSource.totalSeekTime,seekToleranceMultiplier:this.state.seekToleranceMultiplier,currentSeekToleranceMs:this.currentSeekToleranceMs(),currentAheadToleranceMs:this.currentAheadToleranceMs(),isPlaybackRateAdjustmentEnabled:this.config.playbackRate.enabled,playbackRate:this.playbackSource.playbackRate||1,playbackRateAdjustmentCount:this.playbackRateAdjustmentCount,averageDrift:t,videoHasBFrames:this.bFrameDetector.hasBFrames}}),m(this,`updateRtt`,e=>{this.rtt=e}),m(this,`isPlaybackSourceReadyToSeek`,()=>!this.isSeeking()&&this.isSeekCooldownExpired()&&this.isSyncAdjustmentActivated),m(this,`isPlaybackSourceReady`,()=>!this.isSeeking()&&this.isSyncAdjustmentActivated),m(this,`isSeeking`,()=>this.playbackSource.isSeeking?!this.isSeekTimeoutExpired():!1),m(this,`isAllowedToSync`,()=>this.isPlaybackSourceReadyToSeek()&&!!this.currentChannelId&&!this.isSuspended&&!this.playbackSource.isPaused),m(this,`isAllowedToSyncIgnoringCooldown`,()=>this.isPlaybackSourceReady()&&!!this.currentChannelId&&!this.isSuspended&&!this.playbackSource.isPaused),m(this,`isSeekCooldownExpired`,()=>this.lastSeekTime===void 0||performance.now()-this.lastSeekTime>this.config.seek.cooldownMs),m(this,`isSeekTimeoutExpired`,()=>this.lastSeekTime===void 0||performance.now()-this.lastSeekTime>this.config.seek.timeoutMs),m(this,`currentTimeshiftToleranceMs`,()=>Math.min(this.config.timeshift.toleranceMs*this.state.timeshiftToleranceMultiplier,this.config.timeshift.toleranceMaxMs)),m(this,`currentSeekToleranceMs`,()=>Math.min(this.state.seekToleranceMultiplier*this.getEffectiveSeekToleranceMs(),this.config.seek.toleranceMaxMs)),m(this,`currentEmergencySeekToleranceMs`,()=>Math.max(this.currentSeekToleranceMs()+this.getEffectiveSeekToleranceMs(),this.bufferSource.getTargetBufferTime())),m(this,`currentAheadToleranceMs`,()=>{let e=Math.max(this.config.seek.aheadToleranceMs*this.state.seekToleranceMultiplier,400),t=this.playbackSource.seekTime>500?e:this.config.seek.aheadToleranceMs;return Math.min(t,this.bufferSource.getTargetBufferTime()/2)}),m(this,`tryDecayMultipliers`,()=>{if(!this.config.backoff.decayEnabled)return;let e=performance.now();if(e-this.lastDecayCheckTime<this.config.backoff.decayCheckInterval)return;this.lastDecayCheckTime=e;let t=this.seekAdjustmentTimestamps.length>0?Math.max(...this.seekAdjustmentTimestamps):0,n=this.timeshiftAdjustmentTimestamps.length>0?Math.max(...this.timeshiftAdjustmentTimestamps):0,r=e-Math.max(t,n,this.lastAdjustmentTime),i=Math.max(this.state.seekToleranceMultiplier,this.state.timeshiftToleranceMultiplier),a=this.config.seek.timeoutMs*this.config.backoff.decayCooldownMultiplier*i;if(r<a)return;let o=!1;if(this.state.seekToleranceMultiplier>1){let e=Math.max(1,this.state.seekToleranceMultiplier-.5);e!==this.state.seekToleranceMultiplier&&(this.logger.info(`Decaying seek tolerance multiplier`,{from:this.state.seekToleranceMultiplier,to:e,timeSinceLastAdjustment:r,requiredStabilityMs:a}),this.state.seekToleranceMultiplier=e,o=!0)}if(this.state.timeshiftToleranceMultiplier>1){let e=Math.max(1,this.state.timeshiftToleranceMultiplier-.5);e!==this.state.timeshiftToleranceMultiplier&&(this.logger.info(`Decaying timeshift tolerance multiplier`,{from:this.state.timeshiftToleranceMultiplier,to:e,timeSinceLastAdjustment:r,requiredStabilityMs:a}),this.state.timeshiftToleranceMultiplier=e,o=!0)}if(o){let t=e-a*2;this.seekAdjustmentTimestamps=this.seekAdjustmentTimestamps.filter(e=>e>t),this.timeshiftAdjustmentTimestamps=this.timeshiftAdjustmentTimestamps.filter(e=>e>t)}}),m(this,`applyBackoff`,()=>{if(this.config.backoff.enabled&&(this.lastAdjustmentTime=performance.now(),this.seekAdjustmentCount>0&&this.seekAdjustmentCount%this.config.seek.backoffEveryN===0)){let e=this.state.seekToleranceMultiplier,t=this.config.seek.toleranceMaxMs/this.getEffectiveSeekToleranceMs();this.state.seekToleranceMultiplier=Math.min(this.state.seekToleranceMultiplier+this.config.seek.toleranceMultiplierStep,t),e!==this.state.seekToleranceMultiplier&&this.logger.info(`Backoff: Increasing seek tolerance multiplier`,{from:e,to:this.state.seekToleranceMultiplier,currentSeekToleranceMs:this.currentSeekToleranceMs()})}}),m(this,`tryPlaybackRateSync`,e=>{if(!this.config.playbackRate.enabled)return!1;let t=this.playbackSource.playbackRate!==1,n=Math.abs(e),r=t&&n<this.config.playbackRate.stopDiff,i=!t&&n>=this.config.playbackRate.startDiff;if(n>this.config.playbackRate.maxDiff)return t&&(this.playbackSource.playbackRate=1,this.lastPlaybackRateChangeTime=performance.now()),!1;let a=performance.now(),o=a-this.lastPlaybackRateChangeTime>=this.config.playbackRate.cooldownMs;if(r&&o)return this.playbackSource.playbackRate=1,this.lastPlaybackRateChangeTime=a,this.logger.info(`Resetting playback rate to 1`,{drift:e}),!0;if(i&&o){let t=e>0?1+this.config.playbackRate.speed:1-this.config.playbackRate.speed;return this.playbackSource.playbackRate=t,this.lastPlaybackRateChangeTime=a,this.playbackRateAdjustmentCount++,this.logger.info(`Adjusting playback rate`,{drift:e,targetRate:t}),!0}if(t&&n>=this.config.playbackRate.stopDiff&&n<=this.config.playbackRate.maxDiff){let t=e>0?1+this.config.playbackRate.speed:1-this.config.playbackRate.speed;return this.playbackSource.playbackRate!==t&&o&&(this.playbackSource.playbackRate=t,this.lastPlaybackRateChangeTime=a,this.logger.info(`Changing playback rate direction`,{drift:e,targetRate:t})),!0}return!t&&n<this.config.playbackRate.startDiff?!0:t}),m(this,`tryTimeshiftSync`,()=>{var e;if(!this.config.timeshift.enabled)return;if(this.isTimeshiftUnsafe()){this.queuedTimeshift&&this.hasObservedBFrames&&(this.queuedTimeshift=!1,this.logger.info(`Dropping forced timeshift: suppressed for B-frame stream, use forceSeek to resync`));return}if(this.hasPendingRecoverySeek()||!this.isAllowedToSync()||this.playbackSource.playbackRate!==1)return;let t=(e=this.drift)==null?0:e;this.driftSamples.push(t);let n=Vt(this.driftSamples.items());if(this.queuedTimeshift&&n>0){this.queuedTimeshift=!1,this.applyTimeshift(n);return}if(n>=this.getEffectiveSeekToleranceMs()||n<this.currentTimeshiftToleranceMs())return;let r=performance.now()-this.config.seek.timeoutMs*this.state.timeshiftToleranceMultiplier,i=this.timeshiftAdjustmentTimestamps.filter(JS(r)).length;if(i&&this.state.timeshiftToleranceMultiplier>2){this.logger.debug(`Too many timeshifts within sliding window`,{timeshiftCooldownThreshold:r,recentTimeshiftCount:i});return}this.applyTimeshift(n)}),m(this,`clearRecoverySeekFlags`,()=>{this.shouldSeekAfterBuffering=!1}),m(this,`hasActiveRecoveryTrigger`,()=>this.playbackState===`buffering`),m(this,`hasPendingRecoverySeek`,()=>(this.refreshRecoverySeekState(),this.getRecoverySeekReason()!==void 0)),m(this,`refreshRecoverySeekState`,()=>{var e,t;if(!this.hasActiveRecoveryTrigger()||!this.usesMse||this.hasPerformedRecoverySeekInCurrentRecoveryState){this.clearRecoverySeekFlags();return}let n=(e=(t=this.bufferSource).getNextBufferedRangeStart)==null?void 0:e.call(t,this.playbackSource.currentTime);return this.shouldSeekAfterBuffering=n!==void 0,n}),m(this,`getRecoverySeekReason`,()=>{if(this.needsMediaSourceRecovery)return`media source reopen`;if(this.shouldSeekAfterBuffering)return`buffering`}),m(this,`shouldSkipNormalSeek`,e=>e<0&&-e<this.currentAheadToleranceMs()||e>0&&e<this.currentSeekToleranceMs()||Math.abs(e)<1?!0:!this.isAllowedToSync()),m(this,`shouldDeferRecoverySeek`,(e,t)=>t!==void 0&&t>e),m(this,`buildSeekPlan`,(e,t)=>{var n,r;let i=this.playbackSource.currentTime+e,a=t?(n=(r=this.bufferSource).getNextBufferedRangeStart)==null?void 0:n.call(r,this.playbackSource.currentTime):void 0;if(t===`media source reopen`&&a===void 0)return;let o=i+this.seekOvershoot,s=this.playbackSource.currentTime+this.seekOvershoot,c=t?Math.max(o,s):o;if(t&&this.shouldDeferRecoverySeek(c,a)){this.logger.debug(`Deferring recovery seek until expected playhead reaches next buffered range start`,{currentTime:this.playbackSource.currentTime,desiredCurrentTime:c,nextBufferedRangeStart:a,recoverySeekReason:t});return}let l=t&&a?a:i,u=this.findKeyframeCloseToTimestamp(l);if(!(!t&&!u&&!this.keyframeTimestamps.isEmpty()))return{closestKeyFrame:u,keyframeSearchTime:l,nextBufferedRangeStart:a,targetCurrentTime:u&&u>c?a?Math.max(a,u):u:c}}),m(this,`applySeek`,(e,t)=>{let n=this.playbackSource.seekTime,r=this.buildSeekPlan(e,t);if(!r)return;this.logger.info(`Adjusting for drift using seek`,{drift:e,currentTime:this.playbackSource.currentTime,recoverySeekReason:t,keyframeSearchTime:r.keyframeSearchTime,closestKeyFrame:r.closestKeyFrame,nextBufferedRangeStart:r.nextBufferedRangeStart,targetCurrentTime:r.targetCurrentTime,seekTime:n,rtt:this.rtt,seekToleranceMultiplier:this.state.seekToleranceMultiplier}),this.needsMediaSourceRecovery=!1;let i=performance.now();this.lastSeekTime=i,t&&(this.hasPerformedRecoverySeekInCurrentRecoveryState=!0),this.clearRecoverySeekFlags(),this.driftSamples.clear(),this.seekAdjustmentTimestamps.push(i),this.seekAdjustmentCount++,this.playbackSource.currentTime=r.targetCurrentTime+Math.min(n,this.bufferSource.getTargetBufferTime()),this.applyBackoff()}),m(this,`applyTimeshift`,e=>{var t;let n=(t=e==null?this.drift:e)==null?0:t;if(!this.timestampOffset)return;let r=n;this.logger.info(`Adjusting for drift using timeshift`,{drift:n,syncAmount:r,currentTime:this.playbackSource.currentTime,rtt:this.rtt,timeshiftToleranceMultiplier:this.state.timeshiftToleranceMultiplier}),this.timestampOffset+=r;let i=performance.now();if(this.lastSeekTime=i,this.lastAdjustmentTime=i,!this.playbackSource.isPaused&&(this.driftSamples.clear(),this.timeshiftAdjustmentTimestamps.push(i),this.timeshiftAdjustmentCount++,this.config.backoff.enabled&&this.timeshiftAdjustmentCount>0&&this.timeshiftAdjustmentCount%this.config.timeshift.backoffEveryN===0)){let e=this.state.timeshiftToleranceMultiplier,t=this.config.timeshift.toleranceMaxMs/this.config.timeshift.toleranceMs;this.state.timeshiftToleranceMultiplier=Math.min(this.state.timeshiftToleranceMultiplier+1,t),e!==this.state.timeshiftToleranceMultiplier&&this.logger.info(`Backoff: Increasing timeshift tolerance multiplier`,{from:e,to:this.state.timeshiftToleranceMultiplier,currentTimeshiftToleranceMs:this.currentTimeshiftToleranceMs()})}}),m(this,`onSync`,()=>{var e;this.tryDecayMultipliers(),this.refreshRecoverySeekState();let t=(e=this.drift)==null?0:e,n=this.getRecoverySeekReason(),r=n!==void 0;if(!r&&!this.isAllowedToSyncIgnoringCooldown()||r&&(this.isSeeking()||!this.currentChannelId||this.isSuspended||this.playbackSource.isPaused)||(this.driftSamples.push(t),!this.isSeekCooldownExpired())||!r&&this.driftSamples.items().length<this.driftSamplesToCollect&&Math.abs(t)<2e3)return;let i=r?t:Vt(this.driftSamples.items());if(!r&&this.tryPlaybackRateSync(i)||!r&&this.shouldSkipNormalSeek(i))return;let a=performance.now()-this.config.seek.timeoutMs*this.state.seekToleranceMultiplier,o=this.seekAdjustmentTimestamps.filter(JS(a)).length,s=this.currentEmergencySeekToleranceMs(),c=i>0&&i>=s;if(o&&this.state.seekToleranceMultiplier>2&&!r&&!c){this.logger.debug(`Too many seek adjustments within sliding window`,{seekCooldownThreshold:a,recentSeekCount:o});return}o&&(r||c)&&this.logger.debug(`Bypassing recent seek limit`,{drift:i,recoverySeekReason:n,emergencySeekToleranceMs:s,recentSeekCount:o,seekToleranceMultiplier:this.state.seekToleranceMultiplier}),this.applySeek(i,n)}),m(this,`onMediaSourceRecovered`,()=>{this.needsMediaSourceRecovery=!0,this.lastSeekTime=void 0,this.keyframeTimestamps.clear(),this.driftSamples.clear()}),m(this,`onPlaybackState`,e=>{e===`playing`&&(this.needsMediaSourceRecovery=!1);let t=this.playbackState===`buffering`;if(this.playbackState=e,e!==`buffering`){this.hasPerformedRecoverySeekInCurrentRecoveryState=!1,this.clearRecoverySeekFlags();return}if(t||(this.hasPerformedRecoverySeekInCurrentRecoveryState=!1),this.refreshRecoverySeekState()!==void 0){this.onSync();return}}),m(this,`onPageActive`,e=>{this.setSyncInterval(e?YS:XS),e&&this.onSync()}),m(this,`onPageShow`,e=>{e.persisted&&(this.setSyncInterval(document.visibilityState===`hidden`?XS:YS),this.onSync())}),m(this,`setSyncInterval`,e=>{this.syncInterval!==void 0&&this.currentSyncIntervalMs===e||(this.clearSyncInterval(),this.currentSyncIntervalMs=e,this.syncInterval=this.timers.setInterval(this.onSync,e))}),m(this,`clearSyncInterval`,()=>{this.syncInterval!==void 0&&(this.timers.clearInterval(this.syncInterval),this.syncInterval=void 0)}),m(this,`findKeyframeCloseToTimestamp`,e=>{let t=this.keyframeTimestamps.items();for(let n of t){let t=n>=e-this.config.seek.keyframeSearchBeforeMs,r=n<=e+this.config.seek.keyframeSearchAfterMs;if(t&&r)return n}}),this.logger=t,this.emitter=e,this.playbackSource=n,this.bufferSource=r,this.usesMse=a,this.seekOvershoot=qS(a),this.config={seek:B({},ZS.seek),timeshift:B({},ZS.timeshift),playbackRate:B({},ZS.playbackRate),backoff:B({},ZS.backoff)},this.config.timeshift.enabled=i,a||(this.config.seek.toleranceMs=50,this.config.timeshift.toleranceMs=20,this.config.seek.aheadToleranceMs=40),this.state={seekToleranceMultiplier:1,timeshiftToleranceMultiplier:1},typeof window<`u`&&window.location.search.includes(`playbackRateAdjustmentEnabled`)&&(this.config.playbackRate.enabled=!0),this.emitter.on(`rtt`,this.updateRtt),this.emitter.on(`playback state`,this.onPlaybackState),this.emitter.on(`buffers flushed`,this.clearBFrameLatch),this.emitter.on(`recovered from media error`,this.onMediaSourceRecovered),this.logger.info(`SyncModule initialized`,{config:this.config})}updateChannelSyncInfo(e,t){let n=performance.now(),r=this.channelSyncInfo.get(e),i=this.getLiveEdgeTime(e);if(this.isSuspended)return;if(!r||!i){this.logger.info(`Initial timing info`,{syncInfo:t}),this.channelSyncInfo.set(e,B(B({},t),{},{localTimestamp:n,timeDifferences:new T(12)}));return}let a=t.wallclockTime-r.wallclockTime,o=t.timestamp-r.timestamp,s=n-r.localTimestamp,c=o-s;if(r.timeDifferences.push(c),this.logger.debug(`Timing info`,{rtt:this.rtt,channelId:e,syncInfo:t,localTimestamp:n,diffFromEstimated:c,timestampDelta:o,wallclockDelta:a,localTimestampDelta:s}),Math.abs(c)>=Math.max(this.bufferSource.getTargetBufferTime()*2,3e3)){this.logger.info(`Resetting sync info`,{diffFromEstimated:c}),this.channelSyncInfo.set(e,B(B({},t),{},{localTimestamp:n,timeDifferences:new T(r.timeDifferences.maxSize+1)})),this.currentChannelId&&this.currentChannelId===e&&(this.reset(),this.emitter.emit(`channel reset`));return}r.timeDifferences.items().length<3||this.tryApplySyncInfo(Math.min(this.syncInfoToleranceMaxMs,this.syncInfoCorrectionCount*this.syncInfoToleranceStep))}tryApplySyncInfo(e){let t=this.getCurrentChannelId();if(!t)return;let n=this.channelSyncInfo.get(t);if(!n)return;let r=n.timeDifferences.items();if(r.length===0)return;let i=Vt(r);Math.abs(i)>e&&(this.logger.info(`Adjusting sync info`,{medianDifference:i,tolerance:e,count:r.length}),n.timestamp+=i,this.syncInfoCorrectionCount++,n.timeDifferences.clear())}get serverCurrentTime(){return this.channelCurrentTime-this.getTimeshiftOffset()}get channelCurrentTime(){let e=this.getCurrentChannelId();if(!e)return 0;let t=this.getLiveEdgeTime(e);return t?t-this.bufferSource.getTargetBufferTime():0}get drift(){return this.serverCurrentTime-this.playbackSource.currentTime}};WS=QS,m(QS,`create`,(e,t,n,r,i,a=!0)=>new WS(e,t,n,r,i,a)),U(),V(),h(),F();var $S,eC={enabled:!0,interval:3e4,includeErrors:!0,includeEvents:!0,includeStats:!0,maxRetries:10,maxErrorReports:50,maxEvents:50},tC=(e,t)=>B(B({},t),{},{type:e,timestamp:new Date().toISOString(),discriminator:`web`}),nC=class{constructor(e,t,n,r){var i=this;m(this,`logger`,void 0),m(this,`timers`,new or),m(this,`emitter`,void 0),m(this,`options`,void 0),m(this,`parentContext`,void 0),m(this,`unsentLines`,new T(100)),m(this,`retries`,0),m(this,`errorCount`,0),m(this,`eventCount`,0),m(this,`statsCount`,0),m(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`)}),m(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)}),m(this,`addStats`,({isFinal:e,initiator:t}={isFinal:!1,initiator:`interval`},n={})=>{if(!this.options.includeStats)return;let r=this.parentContext.getStatistics(),i=tC(`stats`,B(B(B({},n),r),{},{isFinal:e,initiator:t,count:this.statsCount++}));this.unsentLines.push(i)}),m(this,`addEvent`,e=>{if(!this.options.includeEvents||this.eventCount>this.options.maxEvents)return;let t=tC(`event`,B(B({},this.parentContext.getStatistics()),e));this.eventCount++,this.unsentLines.push(t)}),m(this,`getStatistics`,()=>({errorCount:this.errorCount})),m(this,`send`,function(){var e=P(function*(e){if(i.options.enabled&&!(i.retries>=i.options.maxRetries)&&!i.unsentLines.isEmpty()){i.logger.debug(`Sending telemetry`,{lines:i.unsentLines.items()});try{let t=i.unsentLines.items().map(e=>JSON.stringify(e)).reverse().join(`
1322
- `);switch(e){case`beacon`:navigator.sendBeacon(i.options.url,t);break;default:i.parentContext.connectionState===`connected`?i.emitter.emit(`send signal`,{type:`telemetry`,body:t}):yield Au(new URL(i.options.url),{body:t,headers:{"Content-Type":`text/plain`}});break}i.retries=0,i.unsentLines.clear()}catch(e){i.retries++}}});return function(t){return e.apply(this,arguments)}}()),m(this,`onVisibilityChange`,e=>{e===`hidden`&&(this.addStats({isFinal:!0,initiator:`visibilitychange`}),this.send(`beacon`))}),m(this,`onPageHide`,e=>{this.addStats({isFinal:!0,initiator:`pagehide`},{persisted:e.persisted}),this.send(`beacon`)}),m(this,`onRejection`,e=>this.addError(e.reason)),m(this,`onError`,e=>this.addError(e.error)),m(this,`addError`,e=>{let{includeErrors:t,maxErrorReports:n}=this.options;if(!(e instanceof W)||e.code()===`channel_not_live`||!t||(this.errorCount++,this.errorCount>n))return;let r=this.parentContext.getStatistics();this.unsentLines.push(tC(`error`,B(B({},r),e.toStringifiable())))}),this.logger=e,this.emitter=t,this.options=B(B({},eC),n),this.parentContext=r}};$S=nC,m(nC,`create`,(e,t,n,r)=>new $S(e,t,n,r)),U(),h();var rC,iC=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`elements`,void 0),m(this,`documentState`,void 0),m(this,`timers`,new or),m(this,`unload`,()=>{this.timers.unload()}),m(this,`unpause`,()=>{if(!(!this.documentState.isVisible||!this.documentState.isOnline))for(let e of this.elements)e.userHasProvidedInput&&e.isPaused&&(this.logger.debug(`Unpause media element`),e.tryPlay())}),this.logger=e,this.elements=t,this.documentState=n,this.timers.setInterval(this.unpause,100)}};rC=iC,m(iC,`create`,(e,t,n)=>new rC(e,t,n)),h();var aC=[`minBufferTime`,`maxBufferTime`,`burstEnabled`,`sizeBasedResolutionCapEnabled`,`webcodecsHardwareAcceleration`,`offscreenCanvasEnabled`,`videoCodecs`];function oC(e){return aC.includes(e)}var sC=class{constructor(e){m(this,`options`,void 0),m(this,`overrides`,new Map),this.options=e}getOptions(){return this.options}addOverrides(e,t){this.overrides.set(e,t)}set(e,t){this.options[e]=t}get(e,t){if(t&&oC(e)){var n;let r=(n=this.overrides.get(t))==null?void 0:n[e];if(r!==void 0)return r}return this.options[e]}getOverride(e,t){var n;return(n=this.overrides.get(t))==null?void 0:n[e]}};V();var cC=6,lC=e=>{let t=[e],n=0,r=0,i=!1,a=(e,t)=>{var i,a;if(e.flags&&Tl(e.flags)){var o;n=(o=e.compositionTimeOffset)==null?0:o}e.timestamp+=n,e.compositionTimeOffset=((i=e.compositionTimeOffset)==null?0:i)-n;let s=e.timestamp/e.timescale,c=t.flags&&Tl(t.flags)?(a=t.compositionTimeOffset)==null?0:a:n,l=(t.timestamp+c)/t.timescale,u=Math.max(0,Math.round((l-s)*e.timescale));return u>0&&(r=u),B(B({},e),{},{duration:u>0?u:r})};return(e,n=!1)=>{if(e.flags&&Tl(e.flags)&&n&&(i=!i),!(n&&t.length<cC&&i)&&t.length>0){i=!1;let n=e;for(let e=t.length-1;e>0;e--){let r=t[e];if(!r||!n)break;r.timestamp>=n.timestamp?t.splice(e,1):n=r}let r=t.map((n,r)=>a(n,t[r+1]||e));return t=[e],r}return t.push(e),[]}},uC=[`mse`,`wasm`],dC=e=>e==null?uC:e,fC=e=>{if(!e)return!1;let t=e.headers&&Object.keys(e.headers).length>0,n=e.queryParams&&Object.keys(e.queryParams).length>0;return!!(t||n)},pC=(e,t,n)=>{if(fC(n))return`mse`;let r=dC(e);for(let e of r)switch(e){case`mse`:if(t)return`mse`;break;case`webcodecs`:if(typeof VideoDecoder<`u`)return`webcodecs`;break;case`wasm`:return`wasm`}return`wasm`};V();var mC=(e,t,n)=>{if(Fr(t))return B(B({},e),{},{type:`video`,codec:t.codec,isSync:Tl(e.flags),data:e.payload,duration:0,width:t.width,height:t.height},n);if(t.codec===`webvtt`)throw Error(`WebVTT is not supported`);return B(B({},e),{},{type:`audio`,channels:t.channels,sampleRate:t.sampleRate,codec:t.codec,language:t.language,isSync:Tl(e.flags),data:e.payload,duration:0})};V();var hC=({average:e,last:t,max:n,min:r})=>({average:Math.round(e),last:Math.round(t),max:Math.round(n),min:Math.round(r)}),gC=[`timeSpentBuffering`,`timePerBufferingEvent`,`drift`,`seekTime`,`totalSeekTime`,`currentSeekToleranceMs`,`currentAheadToleranceMs`,`averageDrift`,`videoKeyframeIntervalMs`,`timeToConnected`,`mediaSourceOpenTime`],_C=[`videoDecodeTime`,`audioDecodeTime`,`videoTransportTime`,`rtt`],vC=e=>typeof e==`object`&&!!e&&`min`in e&&`max`in e&&`average`in e&&`last`in e,yC=e=>{let t=B({},e);for(let e of gC){let n=t[e];typeof n==`number`&&(t[e]=Math.round(n))}for(let e of _C){let n=t[e];vC(n)&&(t[e]=hC(n))}return t};V();var bC=(e,t)=>e&&typeof e==`object`&&t in e,xC=e=>!(typeof e!=`object`||!bC(e,`channelId`)||typeof e.channelId!=`string`||!bC(e,`url`)||typeof e.url!=`string`||e.channelId.length===0||e.url.length===0),SC=e=>{if(!xC(e))throw new W(`Invalid options`,{isFatal:!0,code:`invalid_options`});let t=B({},e);return Object.keys(t).forEach(e=>{let n=t;n[e]===void 0&&delete n[e]}),t},CC=e=>{if(typeof e!=`object`||!e)throw Error(`not an object`);if(!(`video`in e))throw Error(`missing video in subscription`);if(!(`audio`in e))throw Error(`missing audio in subscription`);if(!(`channelId`in e))throw Error(`missing channelId`);return!0};mo(),Cl(),ix(),h(),F();var wC=class{constructor(e){var t=this;m(this,`cache`,new Map),m(this,`inFlight`,new Map),m(this,`checkVideoSupport`,function(){var e=P(function*(e){var n;if(typeof VideoDecoder>`u`)return!1;let r=VideoDecoder.isConfigSupported;if(typeof r!=`function`)return!0;if(e.codec===`h265`&&!e.codecString)return t.logger.warn(`Missing HEVC codec string for WebCodecs support check. Falling back to optimistic support.`,{renditionId:e.id}),!0;let i=(n=e.codecString)==null?e.codec===`av1`?`av01.0.08M.08`:`avc1.42E01E`:n,a=`video|${i}|${e.width}x${e.height}`;return t.check(a,()=>r({codec:i,optimizeForLatency:!0,codedWidth:e.width,codedHeight:e.height}),!0,{message:`Failed to check WebCodecs rendition support. Falling back to optimistic support check.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`checkAudioSupport`,function(){var e=P(function*(e){var n;if(typeof AudioDecoder>`u`)return!1;let r=AudioDecoder.isConfigSupported;if(typeof r!=`function`)return!0;let i=(n=e.codecString)==null?rx(e.codec):n,a=`audio|${i}|${e.sampleRate}|${e.channels}`,o=e.codec===`aac`?ao(e.channels,e.sampleRate):e.codec===`opus`?xl(e.channels,e.sampleRate):void 0;return t.check(a,()=>r({codec:i,sampleRate:e.sampleRate,numberOfChannels:e.channels,description:o}),!1,{message:`Failed to check WebCodecs audio rendition support. Treating rendition as unsupported.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`check`,(e,t,n,r)=>{let i=this.cache.get(e);if(i!==void 0)return Promise.resolve(i);let a=this.inFlight.get(e);if(a)return a;let o=Promise.resolve().then(t).then(({supported:t})=>(this.cache.set(e,t),t)).catch(t=>(this.logger.warn(r.message,{codec:r.codec,renditionId:r.renditionId,error:t}),this.cache.set(e,n),n)).finally(()=>{this.inFlight.delete(e)});return this.inFlight.set(e,o),o}),this.logger=e}};U(),h(),D(),V(),F(),N(),j();var TC=1e4,EC=1280*720,DC=new WeakMap,OC=new WeakMap,kC=new WeakMap,AC=class e extends Qt{constructor(t){var n,r,i;super(),n=this,m(this,`pictureInPicture`,void 0),m(this,`drm`,void 0),m(this,`browser`,dt()),m(this,`options`,void 0),m(this,`element`,void 0),m(this,`playbackSource`,void 0),m(this,`emitter`,new Qt),m(this,`logger`,void 0),m(this,`modules`,void 0),m(this,`clientIp`,void 0),m(this,`sessionId`,void 0),m(this,`clientId`,Sr()),m(this,`_channels`,[]),m(this,`createdAt`,performance.now()),m(this,`offscreenCanvasElement`,void 0),m(this,`webCodecsRenditionSupport`,void 0),m(this,`hasCalledConnect`,!1),m(this,`hasRequestedAudioSession`,!1),m(this,`isUserPaused`,!1),m(this,`isMediaElementPaused`,!1),m(this,`latestEmittedLanguages`,[]),m(this,`wakeLock`,void 0),m(this,`pool`,new re(e.MAX_POOL_SIZE)),m(this,`userAgentInformation`,new br),m(this,`encryptedMediaExtensions`,void 0),E(this,DC,0),E(this,OC,[]),m(this,`sampleProcessingSesssions`,new Map),m(this,`unbackedSamplesWarned`,new nx),m(this,`unextractableSamplesWarned`,new nx),m(this,`sizes`,new Map),m(this,`isSuspended`,!0),m(this,`inactivityDisconnectInterval`,void 0),m(this,`visiblePauseTimeout`,void 0),m(this,`offscreenSubtitleInterval`,void 0),E(this,kC,void 0),m(this,`attach`,e=>{var t;(t=this.wakeLock)==null||t.attach(e),e.appendChild(this.element)}),m(this,`setElement`,e=>{this.element!==e&&(this.element=e,this.modules.constraintCap.setElement(e))}),m(this,`getOptions`,()=>this.options.getOptions()),m(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;let t=window.devicePixelRatio||1,n=Math.round(window.innerWidth*t),r=Math.round(window.innerHeight*t),i=this.options.get(`authenticationToken`),a=i?`&auth.token=${i}`:``;return`${e}/api/thumbnail?channelId=${this.channelId}${a}&width=${n}&height=${r}`}),m(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})}),m(this,`connect`,()=>{this.hasCalledConnect||(this.play(),this._connect())}),m(this,`_connect`,()=>{if(!this.hasCalledConnect){if(this.hasCalledConnect=!0,Object.values(this.modules).forEach(e=>{e&&`load`in e&&e.load()}),this.playbackSource instanceof $l){var e,t;(e=(t=this.playbackSource).load)==null||e.call(t)}this.unsuspend()}}),m(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`)})),m(this,`onConnectInfo`,function(){var e=P(function*(e){var t;n.sessionId=Sr();let r=n.modules.subscription.getTargetSubscription(),i=e.channels.find(e=>e.channelId===r.channelId);if(n.emitter.emit(`connect info`,e),`timeshift`in e&&e.timeshift?(e.timeshift,n._channels=e.channels.map(t=>B(B({},t),{},{timeshift:e.timeshift})),n.emit(`timeshift info`,e.timeshift)):n._channels=e.channels,n.updateTextTracks((t=i==null?void 0:i.renditions)==null?[]:t),!n.textTrack&&n.options.get(`textTrack`)&&(n.textTrack=n.options.get(`textTrack`)),yield Promise.all(e.channels.map(function(){var e=P(function*(e){e.overrides&&n.options.addOverrides(e.channelId,e.overrides),e.renditions=yield n.filterRenditions(e.renditions),n.modules.renditions.setRenditions(e.channelId,e.renditions)});return function(t){return e.apply(this,arguments)}}())),!i)throw Bi(`external`);let a=n.options.getOverride(`sizeBasedResolutionCapEnabled`,n.channelId);a!==void 0&&(n.modules.constraintCap.sizeBasedResolutionCapEnabled=a);let o=n.options.getOverride(`minBufferTime`,n.channelId),s=n.options.getOverride(`maxBufferTime`,n.channelId);if((o||s)&&(n.modules.bufferTime.updateConfig({minBufferTime:n.options.get(`minBufferTime`,n.channelId),maxBufferTime:n.options.get(`maxBufferTime`,n.channelId)}),n.targetBufferTime=n.options.get(`minBufferTime`,n.channelId)),n.options.get(`burstEnabled`,n.channelId)&&n.modules.subscription.enableBurst(n.targetBufferTime),n.emit(`is live`,i.isLive),!i.isLive)throw Vi();let c=n.modules.connection.estimatedBandwidth;n.patchSubscription(i,c),yield n.initializeDecodingModule(),n.resetModules(),n.emit(`rendition levels`,n.modules.renditions.getRenditionLevels()),n.emit(`channels`,n.channels),n.emitLanguagesIfChanged(),n.sampleProcessingSesssions.clear();let l=n.options.get(`burstEnabled`,n.channelId)&&n.burstFits(c);return{video:n.targetSubscription.video,audio:n.targetSubscription.audio,burstMs:l?n.targetBufferTime:void 0,sessionId:n.sessionId,clientId:n.clientId,channelId:n.channelId,channelGroupId:n.options.get(`channelGroupId`),authToken:n.options.get(`authenticationToken`),textTrack:n.textTrack}});return function(t){return e.apply(this,arguments)}}()),m(this,`emitLanguagesIfChanged`,()=>{let e=this.modules.renditions.getLanguages(),t=this.latestEmittedLanguages;e.length===t.length&&e.every(e=>t.includes(e))||(this.logger.debug(`Emitting new languages`,{currentLanguages:e}),this.latestEmittedLanguages=e,this.emit(`languages`,this.latestEmittedLanguages))}),m(this,`updateTextTracks`,e=>{let t=e.filter(e=>e.codec===`webvtt`);t.forEach(e=>{if(!M(OC,this).find(t=>t.language===e.language)){if(this.modules.canvasModule){let t=this.modules.canvasModule.textTracks.addTextTrack(e.kind,e.label||e.language||``,e.language||``);M(OC,this).push(t)}else if(this.mediaElement instanceof HTMLVideoElement){let t=this.mediaElement.addTextTrack(e.kind,e.label||e.language,e.language);M(OC,this).push(t)}}});for(let e of M(OC,this))t.find(t=>t.language===e.language)?e.mode===`disabled`&&(e.mode=`hidden`):e.mode=`disabled`;this.emit(`text tracks`,this.textTracks)}),m(this,`cleanupTextTracks`,(e=this.currentTime-2e4)=>{M(OC,this).forEach(t=>{if(t.cues)for(let n of Array.from(t.cues))n.endTime*1e3<e-2e3&&t.removeCue(n)})}),m(this,`filterRenditions`,function(){var e=P(function*(e){let t=yield Promise.all(e.map(function(){var e=P(function*(e){if(Ir(e)){var t;return n.willUseMediaSource()&&!((t=Ke())!=null&&t.isTypeSupported(Lr(e)))?!1:n.willUseMediaSource()||e.codec===`opus`?!0:n.isWebCodecsAudioAvailable(n.channelId)?n.webCodecsRenditionSupport.checkAudioSupport(e):!1}if(!Fr(e)||!n.isSupportedVideoCodecProfile(e.codec,e.codecString))return!1;if(!n.willUseMediaSource())return n.isWebCodecsVideoAvailable(n.channelId)?n.webCodecsRenditionSupport.checkVideoSupport(e):!0;let r=yield eu(e);if(!r.supported)return!1;if(e.codec===`av1`&&!r.smooth&&!r.powerEfficient)return n.logger.debug(`discarding av1 rendition, neither smooth nor power efficient`,{codecString:e.codecString,width:e.width,height:e.height,bitRate:e.bitRate,capabilities:r}),!1;let i=n.options.getOverride(`maxVideoBitRate`,n.channelId);return i?i>=e.bitRate:!0});return function(t){return e.apply(this,arguments)}}())),r=e.filter((e,n)=>t[n]),i=e.filter((e,n)=>!t[n]);i.length>0&&n.logger.debug(`unsupported renditions filtered out`,{renditions:i.map(e=>B(B({codec:e.codec,codecString:e.codecString},Fr(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))});let a=r.filter(e=>e.codec===`h264`).reverse()[0],o=r.filter(e=>e.codec===`av1`).reverse()[0];return a&&o&&a.width>o.width&&a.height>o.height&&(n.logger.debug(`discarding av1 renditions, h264 ladder has higher resolution`,{bestH264:{width:a.width,height:a.height,bitRate:a.bitRate},bestAV1:{width:o.width,height:o.height,bitRate:o.bitRate}}),r=r.filter(e=>e.codec!==`av1`)),n.logger.debug(`supported renditions`,{renditions:r.map(e=>B(B({codec:e.codec,codecString:e.codecString},Fr(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))}),r});return function(t){return e.apply(this,arguments)}}()),m(this,`burstFits`,e=>{var t,n;let{video:r,audio:i,channelId:a}=this.modules.subscription.getTargetSubscription(),o=Xl(((t=this.modules.renditions.getVideoRenditions(a))==null?[]:t).filter(e=>e.codec===r.codec).map(e=>e.bitRate),r.bitRate),s=Xl(((n=this.modules.renditions.getAudioRenditions(a))==null?[]:n).filter(e=>e.codec===i.codec).filter(e=>!i.language||e.language===i.language).map(e=>e.bitRate),i.bitRate),c=Zl(e,o+s);return c||this.logger.info(`Skipping the join burst: the starting rendition needs more than half the bandwidth`,{estimatedBandwidth:e,videoBitRate:o,audioBitRate:s}),c}),m(this,`patchSubscription`,(e,t)=>{var n;let r=this.options.get(`maxInitialBitRate`),i=Math.min(this.options.get(`maxVideoBitRate`),r,t,this.targetSubscription.video.bitRate),a=Math.min(this.options.get(`maxAudioBitRate`),r,t,this.targetSubscription.audio.bitRate),o=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`,this.channelId),s=this.supportedAudioCodecs(),c=e.renditions.filter(Ir),l=e.renditions.filter(Fr),u=s.find(e=>c.find(t=>t.codec===e)!==void 0),d=o.find(e=>l.find(t=>t.codec===e)!==void 0),f=c.map(e=>e.language);this.logger.debug(`supported and selected codecs`,{audioCodecs:s,videoCodecs:o,audioCodec:u,videoCodec:d});let p=(n=this.modules.subscription.getTargetSubscription().audio.language)==null?this.options.get(`language`):n;if(d&&this.abrEnabled&&this.options.get(`burstEnabled`,this.channelId)){let e=c.filter(e=>e.codec===u),n=e.filter(e=>e.language===p),r=Yl(t,l.filter(e=>e.codec===d).map(e=>e.bitRate),(n.length?n:e).map(e=>e.bitRate));i=Math.min(i,r)}if(d){let e=this.options.get(`maxSize`);this.modules.subscription.setVideoConstraint(B({codec:d,bitRate:this.abrEnabled?i:this.options.get(`maxVideoBitRate`)},e))}u&&(this.modules.subscription.setAudioConstraint({codec:u,bitRate:this.abrEnabled?a:this.options.get(`maxAudioBitRate`),language:p}),(p===void 0||!f.includes(p))&&this.modules.subscription.setLanguage(f[0])),this.alignSizeAndBitRate(this.targetSubscription);let m=this.modules.subscription.getTargetSubscription();this.emitter.emit(`subscription changed`,{to:m,from:this.modules.subscription.getCurrentSubscription()})}),m(this,`isSupportedVideoCodecProfile`,(e,t)=>{if(this.willUseMediaSource()){let n=Ke();return n?n.isTypeSupported(Lr({codec:e,codecString:t})):!0}if(this.isWebCodecsVideoAvailable(this.channelId)&&(e===`h264`||e===`h265`||e===`av1`))return!0;if(e===`h264`){let e=!!(t!=null&&t.startsWith(`avc1.42`)),n=!!(t!=null&&t.startsWith(`avc1.66.`));return e||n}return!(e===`h265`||e===`av1`)}),m(this,`supportedAudioCodecs`,()=>{if(this.options.get(`media`)===`video`)return[];let e=[];return(this.willUseMediaSource()||this.isWebCodecsAudioAvailable(this.channelId))&&e.push(`aac`),(this.browser.supportsMp4Opus&&this.options.get(`mseOpusEnabled`)||!this.willUseMediaSource())&&e.push(`opus`),this.isWebCodecsAudioAvailable(this.channelId)&&e.push(`mp3`),e}),m(this,`initializeDecodingModule`,P(function*(){var e;let t=n.currentRenditionLevel,r=[];if(!t)throw new W(`No currentRenditionLevel`,{code:`no_current_rendition_level`,isFatal:!1});if(t!=null&&t.video&&r.push({type:`video`,mimeType:Lr(t.video),codec:t.video.codec}),t!=null&&t.audio&&r.push({type:`audio`,codec:t.audio.codec,mimeType:Lr(t.audio),channels:t.audio.channels,sampleRate:t.audio.sampleRate}),r.length===0)throw new W(`Can't initialize decoding module without tracks`,{code:`no_tracks`,isFatal:!1});if(n.willUseMediaSource()&&n.element instanceof HTMLMediaElement){n.emitter.emit(`flush buffers`);try{var i;yield(i=n.modules.mseModule)==null?void 0:i.setSourceBuffers(r)}catch(e){throw e instanceof Fl?(n.logger.debug(`Abandoning decoding module setup for a disposed source buffer`),new W(`Source buffer setup was superseded`,{code:`start_failed`,isFatal:!1,type:`internal`,source:e})):e}return}let a=n.shouldUseWebCodecs(n.channelId),o=n.options.get(`webcodecsHardwareAcceleration`,n.channelId),s=n.shouldUseOffscreenCanvas(n.channelId)&&a,c=typeof OffscreenCanvas<`u`&&typeof HTMLCanvasElement<`u`&&typeof HTMLCanvasElement.prototype.transferControlToOffscreen==`function`,l=s&&c&&typeof VideoDecoder<`u`,u,d;if(l)try{d=document.createElement(`canvas`),Wr(d),u=d.transferControlToOffscreen()}catch(e){u=void 0,d=void 0,n.logger.warn(`Failed to enable OffscreenCanvas; falling back to main thread rendering`,{error:e})}else s&&n.logger.warn(`OffscreenCanvas requested but not supported; falling back to main thread rendering`);let f=n.capturesCanvasOnWebKit(u),p=yield zx.create(n.emitter,n.logger.createContext(`DecoderModule`),n.options.get(`logLevel`),r,n.playbackSource,n.pool,a,o,u,f),{videoRenderer:m}=p.getStatistics(),h=n.modules.canvasModule;if(h instanceof uS)if(m===`OffscreenCanvas`&&d){h.setVideoRenderingEnabled(!1);let e=n.element;e.parentElement?e.parentElement.replaceChild(d,e):n.logger.warn(`OffscreenCanvas rendering is active but the current element is not attached to the DOM. Updating internal element reference only.`),n.offscreenCanvasElement=d,n.setElement(d)}else{h.setVideoRenderingEnabled(!0),n.offscreenCanvasElement=void 0;let e=h.element();if(e!==n.element){let t=n.element;t.parentElement&&t.parentElement.replaceChild(e,t),n.setElement(e)}}else h instanceof _S&&(h.setBackgroundPlaybackEnabled(n.isBackgroundPlayEnabled(n.channelId)),m===`OffscreenCanvas`&&d?(h.setOffscreenCanvas(d),n.offscreenCanvasElement=d,f&&n.connectWebKitVideoOutput(p,h)):(h.setVideoTrack(void 0),h.setOffscreenCanvas(void 0),n.offscreenCanvasElement=void 0));(e=n.modules.decoder)==null||e.unload(),n.modules.decoder=p,n.isHiddenWithBackgroundPlayback()&&n.modules.decoder.enableBackgroundTimers(),n.modules.decoder.setVideoRenderingEnabled(n.isVideoOnScreen()),n.modules.decoder.load(),n.setupOffscreenSubtitleRouting()})),m(this,`capturesCanvasOnWebKit`,e=>!!e&&this.browser.platform.isWebKit&&this.modules.canvasModule instanceof _S),m(this,`connectWebKitVideoOutput`,(e,t)=>{let n=()=>{t.setVideoTrack(void 0),this.browser.platform.isIOS&&e.setMaxVideoCanvasPixels(EC)};e.onVideoTrackLost(e=>{this.logger.warn(`Worker video track lost, falling back to canvas capture`,{error:e}),n()});let r=e.videoTrack;r?t.setVideoTrack(r):n()}),m(this,`setupOffscreenSubtitleRouting`,()=>{if(this.offscreenSubtitleInterval!==void 0&&(clearInterval(this.offscreenSubtitleInterval),this.offscreenSubtitleInterval=void 0),!this.offscreenCanvasElement||!this.modules.decoder||this.modules.canvasModule instanceof _S)return;let e=this.modules.decoder,t=this.modules.canvasModule;if(!t)return;let n=!1;this.offscreenSubtitleInterval=setInterval(()=>{var r,i,a,o;if(!t.textTracks.language){n&&(e.setSubtitleCues([],0,0,1,0),n=!1);return}n=!0;let s=t.textTracks.getActiveCues(this.currentTime/1e3).map(e=>({text:e.text})),c=((r=this.element)==null?void 0:r.clientWidth)||0,l=((i=this.element)==null?void 0:i.clientHeight)||0,u=((a=this.element)==null?void 0:a.style.getPropertyValue(`--vindral-subtitle-offset`))||((o=this.element)==null?void 0:o.style.getPropertyValue(`--vindral-control-bar-offset`)),d=parseInt(u||`0`,10)||0;e.setSubtitleCues(s,c,l,globalThis.devicePixelRatio||1,-d)},100)}),m(this,`unload`,P(function*(){var t,r,i;n.logger.debug(`Unloading modules...`),n.offscreenSubtitleInterval!==void 0&&(clearInterval(n.offscreenSubtitleInterval),n.offscreenSubtitleInterval=void 0),yield Promise.all(Object.values(n.modules).map(e=>e==null?void 0:e.unload())),(t=n.wakeLock)==null||t.unload(),n.pool=new re(e.MAX_POOL_SIZE),(r=(i=n.playbackSource).unload)==null||r.call(i),n.element.remove(),n.emitter.reset(),n.encryptedMediaExtensions.unload(),n.reset(),n.logger.debug(`Unloaded modules`)})),m(this,`userInput`,()=>{this.play()}),m(this,`pause`,()=>{if(this.options.get(`pauseSupportEnabled`)&&(this.isUserPaused=!0,this.playbackState!==`paused`&&this.playbackSource.pause(),this.hasCalledConnect)){let e=!this.modules.documentState.isVisible;this.suspend(e),e&&this.disconnectForInactivePage(`Background playback paused`)}}),m(this,`yieldToInterruption`,()=>{if(!this.browser.platform.isWebKit&&(this.logger.info(`Yielding playback after an interruption`),this.options.get(`pauseSupportEnabled`)?this.pause():this.muted=!0,!this.modules.documentState.isVisible)){var e;(e=this.modules.mediaSession)==null||e.stop()}}),m(this,`fromNativeControls`,e=>{if(this.options.get(`pauseSupportEnabled`)){e===`pause`?this.pause():this.play();return}this.muted=e===`pause`,e===`play`&&this.play()}),m(this,`registerDebugInstance`,()=>{Ql(this)}),m(this,`play`,()=>{var t;this.clearVisiblePauseDisconnect(),this.isUserPaused=!1,this.requestAudioSessionOnce(),this.hasCalledConnect?this.unsuspend():this.playbackState!==`playing`&&(this._connect(),self.addEventListener(`__vindral_register_debug__`,this.registerDebugInstance),this.modules.timer.setInterval(()=>this.cleanupTextTracks(),e.REMOVE_CUE_THRESHOLD)),(t=this.wakeLock)==null||t.enable(),this.playbackState===`paused`&&this.playbackSource.isActivated&&(this.resetModules(),this.emitter.emit(`flush buffers`),this.cleanupTextTracks(2**53-1)),this.playbackSource.play(),this.isHiddenWithBackgroundPlayback()&&this.scheduleInactivityDisconnect()}),m(this,`getStatistics`,()=>{let e=Object.values(this.modules).reduce((e,t)=>t&&`getStatistics`in t?B(B({},e),t.getStatistics()):e,this.getRuntimeInfo()),t=Math.round(this.timeActive>0?(e.bytesReceived||0)*8/(this.timeActive/1e3):0),n=this.uptime/36e5,r=Math.max(0,(e.connectCount||0)-1),i=n>0?r/n:0,a=this.timeActive/6e4,o=Math.max(a,1),s=a>0?(e.seekAdjustmentCount||0)/o:0,c=a>0?(e.timeshiftAdjustmentCount||0)/o:0;return yC(B(B({},e),{},{averageBitRate:t,reconnectsPerHour:i,seekAdjustmentsPerMinute:s,timeshiftAdjustmentsPerMinute:c}))}),m(this,`resetModules`,()=>{Object.values(this.modules).forEach(e=>{e&&`reset`in e&&e.reset()}),this.playbackSource instanceof $l&&this.modules.adaptivity.reset(TC),this.sampleProcessingSesssions.clear(),this.cleanupTextTracks(1/0),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1}),m(this,`disconnectForInactivePage`,e=>{if(this.clearInactivityDisconnect(),this.emitter.emit(`flush buffers`),!this.isBackgroundPlayEnabled(this.channelId)){var t;(t=this.modules.mediaSession)==null||t.stop()}this.connectionState!==`disconnected`&&this.modules.connection.disconnect(e)}),m(this,`scheduleInactivityDisconnect`,()=>{this.clearInactivityDisconnect(),this.inactivityDisconnectInterval=this.modules.timer.setInterval(()=>{let e=this.modules.pictureInPicture.isPictureInPictureActive(),t=this.playbackState===`paused`||this.muted&&!e;this.connectionState===`connected`&&t&&(this.emitter.emit(`flush buffers`),this.modules.connection.disconnect(`Background playback inactive timeout`),this.suspend(!0),this.clearInactivityDisconnect())},e.BACKGROUND_INACTIVITY_DISCONNECT_TIMEOUT)}),m(this,`onVisiblePause`,()=>{if(!this.browser.platform.isIOS){this.disconnectForVisiblePause();return}this.clearVisiblePauseDisconnect(),this.visiblePauseTimeout=this.modules.timer.setTimeout(()=>{this.visiblePauseTimeout=void 0,this.disconnectForVisiblePause()},e.VISIBLE_PAUSE_DISCONNECT_DELAY)}),m(this,`disconnectForVisiblePause`,()=>{this.isUserPaused=!0,this.suspend(),this.modules.connection.disconnect()}),m(this,`clearVisiblePauseDisconnect`,()=>{this.visiblePauseTimeout!==void 0&&(this.modules.timer.clearTimeout(this.visiblePauseTimeout),this.visiblePauseTimeout=void 0)}),m(this,`clearInactivityDisconnect`,()=>{this.inactivityDisconnectInterval!==void 0&&(this.modules.timer.clearInterval(this.inactivityDisconnectInterval),this.inactivityDisconnectInterval=void 0)}),m(this,`isHiddenWithBackgroundPlayback`,()=>!this.modules.documentState.isVisible&&this.shouldAllowBackgroundPlayback(this.channelId)),m(this,`isVideoOnScreen`,(e=this.modules.documentState.isVisible)=>e||this.modules.pictureInPicture.isPictureInPictureActive()),m(this,`isHiddenWithBackgroundPlayDisabled`,()=>!this.modules.documentState.isVisible&&!this.isBackgroundPlayEnabled(this.channelId)),m(this,`resumeModules`,()=>{Object.values(this.modules).forEach(e=>{e&&`unsuspend`in e&&e.unsuspend()})}),m(this,`getRuntimeInfo`,()=>{let e=this.modules.canvasModule instanceof _S?!0:void 0;return B({uptime:this.uptime,version:`4.6.0-29-g4de98bfe`,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(),streamToMediaElementEnabled:e,iosMediaElementEnabled:e,mediaElementPaused:this.element&&`paused`in this.element?this.element.paused:void 0},this.userAgentInformation.getUserAgentInformation())}),m(this,`getPlaybackBufferState`,(e,t)=>{let n=t==null?void 0:t.getBufferState(e.currentTime);if(!n)return e;let r=e.playbackState===`buffering`||n.playbackState===`buffering`?`buffering`:e.playbackState===`paused`?`paused`:`playing`;return B(B({},e),{},{buffered:n.buffered,playbackState:r})}),m(this,`onMediaElementBufferState`,(e,t)=>{this.emitter.emit(`buffer state`,this.getPlaybackBufferState(e,t))}),m(this,`onMediaElementState`,e=>{var t;if(this.logger.info(`media element state`,{state:e}),this.isMediaElementPaused=e===`paused`,(t=this.modules.mediaSession)==null||t.refresh(),this.options.get(`pauseSupportEnabled`))if(e===`paused`)this.modules.documentState.isVisible&&this.onVisiblePause();else{if(this.clearVisiblePauseDisconnect(),this.isUserPaused=!1,this.isHiddenWithBackgroundPlayDisabled())return;this.unsuspend(),this.modules.connection.getState()===`disconnected`&&this.modules.connection.unsuspend()}}),m(this,`onBufferEvent`,e=>{this.emit(`buffer state event`,e);let t=!this.playbackSource.isActivated||this.playbackSource.isPaused;if(e===`filled`&&t){var n,r,i,a;let e=Math.max(this.currentTime,(n=(r=this.videoBufferedRanges[0])==null?void 0:r.start)==null?0:n,(i=(a=this.audioBufferedRanges[0])==null?void 0:a.start)==null?0:i);this.logger.info(`Buffer filled - starting playback`,{currentTime:e}),this.playbackSource.currentTime=e,this.modules.sync.activateSyncAdjustments(),this.playbackSource.isActivated=!0}else e===`drained`&&this.playbackSource.isPaused&&(this.playbackSource.isActivated=!1,this.modules.sync.deactivateSyncAdjustments())}),m(this,`timeToFirstFrame`,()=>{let e=this.modules.playback.getFirstFrameTime(),t=this.modules.connection.firstConnectStartTime;if(t!==void 0&&e!==void 0)return Math.round(e-t)}),m(this,`hiddenPauseIsStop`,()=>{var e;if(this.browser.platform.isWebKit||!this.browser.isMobile)return!1;let t=(e=this.modules)==null?void 0:e.decoder;return t?t.audioWebCodecsInUse:this.isWebCodecsAudioAvailable(this.channelId)}),this.options=new sC(B(B({},Vr),SC(t))),t.telemetryEnabled===void 0&&[`localhost`,`127.0.0.1`].includes(location.hostname)&&this.options.set(`telemetryEnabled`,!1);let a={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}},o=vn.get();o.setLevel(this.options.get(`logLevel`)),o.setDebug(!1),this.logger=o,this.webCodecsRenditionSupport=new wC(o),t.iosMediaElementEnabled!==void 0&&this.logger.warn(`Option iosMediaElementEnabled is deprecated and will be removed in a future release. Use streamToMediaElementEnabled instead.`);let s=(r=t.streamToMediaElementEnabled)==null?t.iosMediaElementEnabled:r;s!==void 0&&(this.options.set(`streamToMediaElementEnabled`,s),this.options.set(`iosMediaElementEnabled`,s)),t.iosBackgroundPlayEnabled!==void 0&&this.logger.warn(`Option iosBackgroundPlayEnabled is deprecated and will be removed in a future release. Use backgroundPlayEnabled instead.`);let c=(i=t.backgroundPlayEnabled)==null?t.iosBackgroundPlayEnabled:i;c!==void 0&&(this.options.set(`backgroundPlayEnabled`,c),this.options.set(`iosBackgroundPlayEnabled`,c));let l=t.mseEnabled!==void 0,u=t.decoders!==void 0;l&&this.logger.warn(`Option mseEnabled is deprecated and will be removed in a future release. Use decoders instead (e.g. decoders: ["wasm"]).`),l&&!u&&t.mseEnabled===!1&&this.options.set(`decoders`,[`wasm`]);let d=AS.create(this.emitter,this.logger.createContext(`PictureInPictureModule`)),f=this.options.get(`mediaSessionEnabled`)?hS.create(this.emitter,this.logger.createContext(`MediaSessionModule`),{metadata:this.options.get(`mediaSessionMetadata`),decoy:this.willUseMediaSource()||this.usesSplitCanvasAudio()?void 0:gu.create(this.logger.createContext(`AudioFocusDecoy`),this.yieldToInterruption),isMuted:()=>this.playbackSource.userMuted,isHidden:()=>!this.modules.documentState.isVisible,isSinkPaused:()=>this.isMediaElementPaused,releaseOnHiddenPause:this.hiddenPauseIsStop,isSuppressed:this.isHiddenWithBackgroundPlayDisabled,holdDecoyWhilePaused:this.holdsDecoyWhilePaused(),keepDecoyWhenMuted:this.isWebKitCanvasPath(),pauseMeansMute:!this.options.get(`pauseSupportEnabled`)}):void 0,p=or.create(),h=Jb.create(this.emitter,this.logger.createContext(`ConnectionModule`),{reconnectHandler:this.options.get(`reconnectHandler`),options:this.options,onConnectInfo:this.onConnectInfo}),g=HS.create(this.logger.createContext(`SubscriptionModule`),this.emitter,a),_=RS.create(this.emitter,g),v=IS.create(this.emitter,this.logger.createContext(`QualityOfServiceModule`),_),y=MS.create(this.emitter,this.logger.createContext(`PlaybackModule`),this,this.options.get(`minBufferTime`));this.encryptedMediaExtensions=new Ya(this.emitter,this.logger.createContext(`EncryptedMediaExtensions`),t.drm),this.drm={setHeaders:e=>{this.encryptedMediaExtensions.headers=e},setQueryParams:e=>{this.encryptedMediaExtensions.queryParams=e}};let b=Vx.create(this.emitter),ee=this.options.get(`poster`),x=ee===!0?this.getThumbnailUrl():ee||void 0,S,te,ne;if(this.willUseMediaSource()){let e=new $l({type:this.options.get(`media`)===`audio`?`audio`:`video`,autoplay:!1,muted:this.options.get(`muted`)||this.options.get(`media`)===`video`,volume:this.options.get(`volume`),logger:this.logger.createContext(`MediaElement`),poster:x});e.on(`buffer state`,e=>this.onMediaElementBufferState(e,S)),e.on(`needs user input`,e=>this.emitter.emit(`needs user input`,e)),e.on(`volume state`,e=>this.emitter.emit(`volume state`,e)),e.on(`media element state`,e=>this.onMediaElementState(e)),this.element=e.element,this.playbackSource=e,Ya.isSupported()&&this.encryptedMediaExtensions.attach(e.element),S=SS.create(this.logger.createContext(`MseModule`),this.emitter,this.element),this.options.get(`pauseSupportEnabled`)||(te=iC.create(this.logger.createContext(`UnpauseModule`),[e],b)),this.options.get(`pictureInPictureEnabled`)&&this.emitter.emit(`add picture in picture listener`,{element:e.element})}else if(this.streamsToMediaElement()){let e=_S.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`,volume:this.options.get(`volume`),poster:x,offscreenCanvas:this.offscreenCanvasElement,bufferTime:this.options.get(`minBufferTime`),backgroundPlaybackEnabled:this.isBackgroundPlayEnabled(this.channelId),splitAudio:this.usesSplitCanvasAudio()});this.element=e.element().element,this.playbackSource=e,ne=e;let t=this.browser.platform.isIOS&&this.browser.platform.iosVersion<=15;this.options.get(`pictureInPictureEnabled`)&&!t&&this.emitter.emit(`add picture in picture listener`,{element:this.element}),this.options.get(`pauseSupportEnabled`)||(te=iC.create(this.logger.createContext(`UnpauseModule`),e.elements(),b))}else{let e;e=uS.create(this.emitter,this.logger.createContext(`LegacyCanvasModule`),this.pool,this,this.options.get(`muted`)||this.options.get(`media`)===`video`,this.options.get(`volume`),()=>{this.setElement(e.element())},this.options.get(`minBufferTime`)),this.element=e.element(),this.playbackSource=e,ne=e,this.options.get(`iosWakeLockEnabled`)&&(this.wakeLock=new Bl)}this.emitter.on(`channel reset`,this.resetModules),this.emitter.on(`no data timeout`,this.resetModules),this.emitter.on(`media element state`,e=>this.onMediaElementState(e)),this.emitter.on(`volume state`,e=>this.emit(`volume state`,e)),this.options.get(`pauseSupportEnabled`)||this.emitter.on(`exit picture in picture`,()=>p.setTimeout(()=>this.play(),0)),this.emitter.on(`constraint cap changed`,e=>{this.logger.info(`new cap set`,{cap:e}),this.alignSizeAndBitRate(this.targetSubscription)}),this.pictureInPicture={enter:()=>d.requestPictureInPicture(),exit:()=>d.exitPictureInPicture(),isActive:()=>d.isPictureInPictureActive(),isSupported:()=>d.isPictureInPictureSupported()},this.emitter.on(`error`,e=>{if(e.type()===`external`&&this.emit(`error`,e),e.isFatal())return()=>void this.unload()});let ie=this.willUseMediaSource(),C=ie?!this.browser.platform.isWebKit:!0,ae={getTargetBufferTime:()=>y.getTargetBufferTime(),getNextBufferedRangeStart:S?e=>S.getNextBufferedRangeStart(e):void 0},w=QS.create(this.emitter,this.logger.createContext(`SyncModule`),this.playbackSource,ae,C,ie),oe=Yx.create(this.logger.createContext(`JitterModule`)),T=(this.options.get(`edgeUrl`)||this.options.get(`url`)).replace(`wss://`,`https://`).replace(`ws://`,`http://`).replace(`//lb.`,`//errors.`),se=new URL(`/telemetry`,T).toString();this.modules={telemetry:nC.create(this.logger.createContext(`TelemetryModule`),this.emitter,{url:se,enabled:this.options.get(`telemetryEnabled`),includeStats:!1,interval:5e3},this),bufferTime:bu.create(this.emitter,this.logger.createContext(`BufferTimeModule`),v,this,{maxBufferTime:this.options.get(`maxBufferTime`),minBufferTime:this.options.get(`minBufferTime`)}),incomingData:Kx.create(this.emitter),adaptivity:uu.create(this.emitter,this.logger.createContext(`AdaptivityModule`),v,{cooldownTime:Math.max(this.options.get(`minBufferTime`),2e3)}),constraintCap:$b.create(this.emitter,this.element,_,this.options.get(`abrEnabled`)?this.options.get(`sizeBasedResolutionCapEnabled`):!1),event:Wx.create(this.emitter,this.logger.createContext(`EventModule`),w),sync:w,jitter:oe,documentState:b,connection:h,playback:y,pictureInPicture:d,mediaSession:f,timer:p,subscription:g,renditions:_,qualityOfService:v,mseModule:S,unpause:te,canvasModule:ne},this.modules.adaptivity.isEnabled=this.options.get(`abrEnabled`),this.emitter.on(`enter picture in picture`,()=>{var e;return(e=this.modules.decoder)==null?void 0:e.setVideoRenderingEnabled(!0)}),this.emitter.on(`exit picture in picture`,()=>{var e;return(e=this.modules.decoder)==null?void 0:e.setVideoRenderingEnabled(this.modules.documentState.isVisible)}),this.emitter.on(`media session: request play`,()=>this.fromNativeControls(`play`)),this.emitter.on(`media session: request pause`,()=>this.fromNativeControls(`pause`)),this.emitter.on(`media session: request stop`,()=>this.fromNativeControls(`pause`)),this.emitter.on(`native control`,e=>{this.options.get(`pauseSupportEnabled`)&&this.fromNativeControls(e)}),this.emitter.on(`page active`,e=>{var t,n;if((t=this.modules.decoder)==null||t.setVideoRenderingEnabled(this.isVideoOnScreen(e)),e)this.clearInactivityDisconnect(),this.isUserPaused||(this.logger.debug(`Unsuspending`),this.unsuspend(),this.usesSplitCanvasAudio()&&this.playbackSource.isPlayingAsRequested===!1&&(this.logger.debug(`Playing again after show`),this.play()));else if(this.clearVisiblePauseDisconnect(),this.logger.debug(`Suspending`),this.suspend(),this.shouldAllowBackgroundPlayback(this.channelId)){var r,i,a;(r=this.modules.decoder)==null||r.enableBackgroundTimers(),this.modules.connection.unsuspend(),this.modules.sync.unsuspend(),(i=this.modules.decoder)==null||i.unsuspend(),(a=this.modules.canvasModule)==null||a.unsuspend(),this.scheduleInactivityDisconnect()}else this.disconnectForInactivePage(this.isUserPaused?`Background playback paused`:`Background playback disabled`);(n=this.modules.mediaSession)==null||n.refresh()}),this.emitter.on(`pageshow`,e=>{if(!e.persisted||this.isUserPaused)return;let t=this.shouldAllowBackgroundPlayback(this.channelId),n=document.visibilityState===`visible`;if(!n&&!t){this.logger.debug(`Ignoring pageshow while hidden`);return}if(this.logger.debug(`Resuming after pageshow`),!n){var r;(r=this.modules.decoder)==null||r.enableBackgroundTimers()}this.resumeModules(),this.isSuspended=!1,this.isHiddenWithBackgroundPlayback()&&this.scheduleInactivityDisconnect()});let ce;this.emitter.on(`context switch complete`,()=>{ce||(ce=window.setTimeout(()=>{window.clearTimeout(ce),ce=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`,e=>this.emit(`needs user input`,e)),this.emitter.on(`event`,e=>{switch(e.type){case`metadata`:this.emit(`metadata`,e);break;case`channel switch`:this.emit(`channel switch`,{channelId:e.channelId});break;case`language switch`:this.emit(`language switch`,{language:e.language});break}}),this.emitter.on(`buffer state event`,this.onBufferEvent),this.emitter.on(`playback state`,e=>this.emit(`playback state`,e)),this.emitter.on(`rendition level changed`,({to:e})=>{e&&this.emit(`rendition level`,e)}),this.emitter.on(`connection state`,e=>{this.emit(`connection state`,e)}),this.emitter.on(`recovered from media error`,()=>{this.modules.adaptivity.reset(this.targetBufferTime*2),!this.isUserPaused&&this.visiblePauseTimeout===void 0&&this.playbackSource.play()}),this.emitter.once(`connect info`,e=>{var t,n;let r=((t=(n=e.telemetry)==null?void 0:n.probability)==null?1:t)>=Math.random();if(e.telemetry){var i;(i=this.modules.telemetry)==null||i.unload(),this.modules.telemetry=nC.create(this.logger.createContext(`TelemetryModule`),this.emitter,B(B({},e.telemetry),{},{enabled:this.options.get(`telemetryEnabled`)&&r}),this),this.modules.telemetry.load()}}),this.emitter.on(`adapt level`,e=>{let t=this.modules.renditions.getRenditionLevels(),n=this.modules.renditions.getRenditionLevel(),r=t.findIndex(e=>e===n),i=t.length-1,a=r;switch(e){case`upgrade`:{var o,s,c,l,u;let e=Math.min(r+1,i),n=t[e],d=(o=this.modules.connection.estimatedBandwidth)==null?Rr():o,f=((s=n==null||(c=n.audio)==null?void 0:c.bitRate)==null?0:s)+((l=n==null||(u=n.video)==null?void 0:u.bitRate)==null?0:l),p=d*2>f;n&&p&&this.modules.adaptivity.isQoSOk(n)&&(a=e)}break;case`downgrade`:a=Math.max(r-1,0);break;case`double downgrade`:a=Math.max(r-2,0);break;case`reconnect`:if(r===0||this.modules.qualityOfService.timeSpentBufferingLast(6e3)>5e3){if(this.modules.connection.lastConnectionTime===void 0||performance.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 a=0}if(a===r)return;let d=t[a];this.alignSizeAndBitRate(B(B({},this.targetSubscription),{},{video:B(B({},this.targetSubscription.video),d==null?void 0:d.video),audio:B(B({},this.targetSubscription.audio),d==null?void 0:d.audio)})),this.emitter.emit(`adapted level`)}),this.emitter.on(`text track data`,e=>{let t=M(OC,this).find(t=>t.language===e.language),n=this.modules.sync.getTimeshiftOffset()/1e3,r=n-M(DC,this);if(A(DC,this,n),t){if(t.cues)for(let e of t.cues)e.startTime-=r,e.endTime-=r;for(let r of e.cues){let e=new VTTCue(r.startTime-n,r.endTime-n,r.text);t.addCue(e)}}}),this.emitter.on(`native text track selected`,e=>{this.textTrack=e}),this.emitter.on(`received signal`,e=>{let t=e,n=this.modules.subscription.getCurrentSubscription();switch(this.logger.debug(`received`,B({},t)),t.type){case`client ip`:this.clientIp=t.ip;break;case`renditions`:this.updateTextTracks(t.renditions),A(kC,this,this.filterRenditions(t.renditions).then(e=>{this.emitter.emit(`renditions`,{renditions:e,channelId:this.currentSubscription.channelId}),this.emit(`rendition levels`,this.modules.renditions.getRenditionLevels()),this.emitLanguagesIfChanged()}).finally(()=>{A(kC,this,void 0)}));break;case`subscription changed`:var r;try{CC(t.subscription)}catch(e){this.emitter.emit(`error`,new W(`Subscription failed validation`,{source:e instanceof Error?e:void 0,isFatal:!1,code:`subscription_failed_validation`}))}this.emitter.emit(`subscription changed`,{reset:t.reset,to:t.subscription,from:this.modules.subscription.getCurrentSubscription()}),t.reset&&n.channelId!==t.subscription.channelId&&(this.emit(`error`,qi(t.subscription.channelId)),this.emit(`channel switch failed`,{channelId:n.channelId})),this.modules.sync.allowTimeshiftOnAudio=!((r=t.subscription.video)!=null&&r.codec),this.modules.adaptivity.reset();break;case`timing info`:this.modules.sync.updateChannelSyncInfo(t.timingInfo.channelId,t.timingInfo),this.emit(`server wallclock time`,t.timingInfo.wallclockTime);break}}),this.emitter.on(`channel switch timeout`,e=>{this.emit(`error`,qi(e)),this.emit(`channel switch failed`,{channelId:this.currentSubscription.channelId})}),this.emitter.on(`received data`,e=>{let t=this.modules.subscription.getCurrentSubscription(),n=Al(e);if(!t){this.logger.warn(`Received unwanted message`,B({},n));return}D(B(B({},n),{},{channelId:t.channelId}))}),this.emitter.on(`received moq data`,e=>{let t=e.payload.mediaType(),n=e.channelId,r=e.renditionId,i=this.modules.sync.processFragment(n,e.payload,r),a=i.unbackedSamplesCount();if(a>0&&this.unbackedSamplesWarned.shouldNotify(n,r)&&this.logger.warn(`Fragment declares more samples than its payload holds`,{unbackedSamples:a,samplesCount:i.samplesCount(),channelId:n,renditionId:r}),t!==`text`&&this.modules.jitter.recordSample({type:t,renditionId:r,timestamp:i.baseMediaDecodeTime(),timescale:i.timescale()}),e.switchInfo.channelId&&(e.switchInfo.drmTransition&&this.emitter.emit(`error`,Ji(`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:e.switchInfo.channelId,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3})),e.switchInfo.language&&this.modules.event.addEvent({type:`language switch`,language:e.switchInfo.language,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3}),this.modules.incomingData.add(t,e.payload.rawBytes().byteLength),(t===`video`||t===`audio`)&&this.hasListeners(`cmaf fragment`)&&this.emit(`cmaf fragment`,{mediaType:t,initSegment:i.header().rawBytes().slice(),fragment:i.rawBytes().slice(),isKeyframe:i.startsWithKeyframe()}),i.fragment().emsgs.forEach(e=>{if(!e.presentationTime)return;let t=Do(e.data);t&&this.modules.event.addEvent({id:e.id,timestamp:e.presentationTime/e.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:t.txx.value,type:`metadata`})}),this.modules.decoder){var o,s;let a=(o=i.header().init().moov.traks[0])==null?void 0:o.mdia.minf.stbl.stsd,m=(s=a==null?void 0:a.codec)==null?`h264`:s,h;if(m===`h264`){var c;h=a==null||(c=a.avc1)==null?void 0:c.avcC.bytes}else if(m===`h265`){var l,u,d;let e=(l=a==null||(u=a.hvc1)==null?void 0:u.data())==null?a==null||(d=a.hev1)==null?void 0:d.data():l;e&&(h=To(e))}else if(m===`av1`&&a!=null&&a.av01)h=Kc(a.av01.data());else if(m===`aac`){var f;h=a==null||(f=a.mp4a)==null||(f=f.esds)==null?void 0:f.decoderConfig}else if(m===`opus`){var p;h=bl(a==null||(p=a.opus)==null?void 0:p.dops)}if(h){let i=h.buffer.slice(h.byteOffset,h.byteOffset+h.byteLength);if(t===`text`)throw Error(`Subtitles are not supported`);this.emitter.emit(`init segment`,{initSegment:{channelId:n,renditionId:r,data:i,timescale:1e3,type:t,codec:m,codecString:e.codecString},mimeType:t})}else m&&this.logger.warn(`Failed to extract init data for codec`,{codec:m,channelId:n,renditionId:r});let g=0;for(let e=0;e<i.samplesCount();e++){let t=i.sample(e);if(!t){g++;continue}this.emitter.emit(`coded sample`,B(B({},t),{},{renditionId:r,channelId:n,data:t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength)}))}g>0&&this.unextractableSamplesWarned.shouldNotify(n,r)&&this.logger.warn(`Dropped samples the demuxer could not extract`,{droppedSamples:g,samplesCount:i.samplesCount(),channelId:n,renditionId:r})}else this.emitter.emit(`fragment`,{mimeType:e.mimeType,codec:e.codec,fragment:i,channelId:n,renditionId:r})});let le=this.options.get(`container`);le&&this.attach(le),this.logger.info(`Created Vindral instance`,{options:this.options});let D=function(){var e=P(function*(e){let t=e.channelId;M(kC,n)&&(yield M(kC,n));let r=n.modules.renditions.getRendition(e.renditionId,t);if(!Dl(e.flags)){if(Ol(e.flags)){let t=new TextDecoder().decode(e.payload),r=n.modules.sync.getTimeshiftOffset();if(e.renditionId!==0){let e=_r(t);if(e&&e.language!==void 0){let t=new Kl,i=[];try{i=t.parse(e.content||``)}catch(e){n.logger.warn(`failed to parse WebVTT segment, dropping it`,e)}let a=r/1e3,o=M(OC,n).find(t=>t.language===e.language),s=a-M(DC,n);if(A(DC,n,a),o){if(o.cues)for(let e of o.cues)e.startTime-=s,e.endTime-=s;for(let e of i){let t=new VTTCue(e.startTime-a,e.endTime-a,e.text);o.addCue(t)}}}}else n.modules.event.addEvent({timestamp:e.timestamp/e.timescale*1e3-n.modules.sync.getTimeshiftOffset(),content:t,type:`metadata`})}else if(r!=null&&r.codec){let i=jr(r.codec);if(i===`text`)throw Error(`Subtitles are not supported`);if(n.modules.incomingData.add(i,e.payload.byteLength),El(e.flags)){let a=B(B({type:i,data:e.payload,codec:r.codec,codecString:r.codecString},e),{},{channelId:t},Fr(r)?{width:r.width,height:r.height}:{}),o=pl(a.codec,a.payload);o&&n.sizes.set(a.renditionId,o);let s=Lr({codec:r.codec,codecString:r.codecString});n.emitter.emit(`init segment`,{initSegment:a,mimeType:s}),n.emit(`initialized media`)}else{let t=mC(e,r,n.sizes.get(e.renditionId));n.modules.jitter.recordSample(t);let a=n.sampleProcessingSesssions.get(i);if(!a)a=lC(n.modules.sync.processSample(t)),n.sampleProcessingSesssions.set(i,a);else{let e=n.willUseMediaSource()&&n.isSwitchingRenditionLevel&&t.type===`video`,r=a(n.modules.sync.processSample(t),e),i=t;r.forEach(e=>{n.modules.event.extractEvent(e,i),n.emitter.emit(`coded sample`,e),i=e})}}}}});return function(t){return e.apply(this,arguments)}}();this.options.get(`maxVideoBitRate`)!==2**53-1&&(this.maxVideoBitRate=this.options.get(`maxVideoBitRate`)),this.options.get(`maxAudioBitRate`)!==2**53-1&&(this.maxAudioBitRate=this.options.get(`maxAudioBitRate`)),Xt(this.options.get(`maxSize`),zr())||(this.maxSize=this.options.get(`maxSize`)),this.options.get(`burstEnabled`)&&g.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){let t=this.playbackSource.muted;e===this.playbackSource.userMuted&&(e||!t)||(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))}updateBufferTimeConfig(e){this.modules.bufferTime.updateConfig(e)}get playbackLatency(){var e;if(this.playbackSource.currentTime!==0)return this.targetBufferTime+((e=this.modules.sync.drift)==null?0:e)+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){if(e===this.language)return;let t=this.languages;if(e!==void 0&&t.length>0&&!t.includes(e)){this.logger.warn(`Language "${e}" is not available. Available languages: ${t.join(`, `)}`);return}this.modules.subscription.setLanguage(e),this.alignSizeAndBitRate(this.targetSubscription)}set textTrack(e){e!==this.textTrack&&(M(OC,this).forEach(t=>{if(t.label===e)t.mode=`showing`;else{if(t.mode===`showing`&&t.cues)for(let e of[...t.cues])t.removeCue(e);t.mode=`hidden`}}),this.emitter.emit(`text track`,e))}get textTracks(){return M(OC,this).filter(e=>e.mode!==`disabled`).map(e=>e.label)}get textTrack(){var e;return(e=M(OC,this).find(e=>e.mode===`showing`))==null?void 0:e.label}get channelId(){var e,t;return(e=(t=this.modules)==null?void 0:t.subscription.getTargetSubscription().channelId)==null?this.options.get(`channelId`):e}set channelId(e){if(e===this.channelId)return;this.modules.subscription.setChannelId(e);let t=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`),n=this.modules.renditions.getAudioRenditions(e),r=this.modules.renditions.getVideoRenditions(e),i=this.targetSubscription.audio.language,a=n==null?void 0:n.some(e=>e.language===i),o=t.find(e=>(r==null?void 0:r.find(t=>t.codec===e))!==void 0);o&&this.modules.subscription.setVideoCodec(o),this.logger.debug(`Channel switch - started`,{audioRenditions:n,targetSubscriptionLanguage:i,targetHasCurrentLanguage:a}),this.alignSizeAndBitRate(this.targetSubscription)}get maxSize(){var e,t;let{width:n,height:r}=(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video)==null?zr():e;return{width:n,height:r}}set maxSize(e){this.modules.constraintCap.setUserSpecifiedCap({video:{width:e.width,height:e.height}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxVideoBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video.bitRate)==null?Rr():e}set maxVideoBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({video:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxAudioBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.audio.bitRate)==null?Rr():e}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,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`video`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`video`):t)==null?[]:e}get audioBufferedRanges(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`audio`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`audio`):t)==null?[]:e}get videoKeyframeTimestamps(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getVideoKeyframeTimestamps())==null?(r=this.modules.decoder)==null?void 0:r.getVideoKeyframeTimestamps():t)==null?[]:e}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 Math.round(this.modules.qualityOfService.timeSpentBuffering())}get timeActive(){return Math.round(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 Math.round(performance.now()-this.createdAt)}suspend(e=!1){this.isSuspended&&!e||(Object.values(this.modules).forEach(e=>{e&&`suspend`in e&&e.suspend()}),this.isSuspended=!0)}unsuspend(){if(this.isSuspended){if(this.isHiddenWithBackgroundPlayDisabled()){this.logger.debug(`Deferring resume until the page is visible`);return}this.resumeModules(),this.isSuspended=!1}}alignSizeAndBitRate(e){let t=this.modules.constraintCap.constrainSubscription(B(B({},e),{},{video:B({},e.video),audio:B({},e.audio)})),n=this.modules.constraintCap.getUserSpecifiedCap();!this.abrEnabled&&n&&(t.audio.bitRate=n.audio.bitRate,t.video.bitRate=n.video.bitRate,t.video.width=n.video.width,t.video.height=n.video.height);let r=this.modules.renditions.getRenditionLevel(t);if(r){if(r.video&&(this.modules.subscription.setVideoBitRate(r.video.bitRate),this.modules.subscription.setSize(r.video)),r.audio)this.modules.subscription.setAudioBitRate(r.audio.bitRate),this.modules.subscription.setLanguage(r.audio.language);else if(t.audio.language){let e=this.modules.renditions.getAudioRenditions(t.channelId);!this.abrEnabled&&n&&(e=e==null?void 0:e.filter(e=>e.bitRate<n.audio.bitRate));let r=t.audio.language,i=e==null?void 0:e.some(e=>e.language===r),a=e==null?void 0:e.find(e=>e.language),o=(e==null?void 0:e.length)&&e[0]||void 0;i||(a?(this.logger.debug(`Randomizing language since target did not have current language`),this.modules.subscription.setAudioBitRate(a.bitRate),this.modules.subscription.setLanguage(a.language)):(this.logger.debug(`Randomizing audio rendition since target did not have current language`),o!=null&&o.bitRate&&this.modules.subscription.setAudioBitRate(o.bitRate),this.modules.subscription.setLanguage(o==null?void 0:o.language)))}}}get currentSubscription(){return this.modules.subscription.getCurrentSubscription()}get targetSubscription(){return this.modules.subscription.getTargetSubscription()}resolvedDecoder(e){return pC(this.options.get(`decoders`,e),this.browser.supportsMediaSource,this.options.get(`drm`))}usesSplitCanvasAudio(){return!this.willUseMediaSource()&&this.options.get(`streamToMediaElementEnabled`)&&Ft(this.browser)&&this.options.get(`media`)!==`audio`&&this.options.get(`media`)!==`video`&&this.browser.platform.isIOS}isWebKitCanvasPath(){return!this.willUseMediaSource()&&this.browser.platform.isWebKit}holdsDecoyWhilePaused(){return!(!this.isWebKitCanvasPath()||this.browser.platform.isIOS&&this.streamsToMediaElement()&&lt(this.browser,26))}streamsToMediaElement(){return this.options.get(`streamToMediaElementEnabled`)===!0&&Ft(this.browser)}requestAudioSessionOnce(){this.hasRequestedAudioSession||!this.options.get(`mediaSessionEnabled`)||!this.isWebKitCanvasPath()||!this.isBackgroundPlayEnabled(this.channelId)||(this.hasRequestedAudioSession=!0,this.logger.info(`Requested playback audio session`,{playback:De()}))}willUseMediaSource(){return this.resolvedDecoder()===`mse`}shouldUseWebCodecs(e){return this.resolvedDecoder(e)===`webcodecs`}isWebCodecsVideoAvailable(e){return this.shouldUseWebCodecs(e)&&typeof VideoDecoder<`u`}isWebCodecsAudioAvailable(e){return this.shouldUseWebCodecs(e)&&typeof AudioDecoder<`u`}shouldUseOffscreenCanvas(e){let t=this.options.get(`offscreenCanvasEnabled`,e);return t===void 0?this.shouldUseWebCodecs(e):t}isBackgroundPlayEnabled(e){return this.options.get(`backgroundPlayEnabled`,e)}shouldAllowBackgroundPlayback(e){return this.hasCalledConnect&&this.isBackgroundPlayEnabled(e)&&!this.isUserPaused}};m(AC,`MAX_POOL_SIZE`,10),m(AC,`REMOVE_CUE_THRESHOLD`,1e3*10),m(AC,`BACKGROUND_INACTIVITY_DISCONNECT_TIMEOUT`,1e3*15),m(AC,`VISIBLE_PAUSE_DISCONNECT_DELAY`,1e3);var jC={bar:`_bar_qm7bl_1`,hidden:`_hidden_qm7bl_47`},MC=`_withThumbnails_suenn_19`,NC={"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:MC,"hide-on-small":`_hide-on-small_suenn_27`},PC={"icon-button":`_icon-button_5fg7v_1`},FC={viewBox:`-10 -10 44 44`,content:`<g fill="none" stroke="white">
1322
+ `);switch(e){case`beacon`:navigator.sendBeacon(i.options.url,t);break;default:i.parentContext.connectionState===`connected`?i.emitter.emit(`send signal`,{type:`telemetry`,body:t}):yield Au(new URL(i.options.url),{body:t,headers:{"Content-Type":`text/plain`}});break}i.retries=0,i.unsentLines.clear()}catch(e){i.retries++}}});return function(t){return e.apply(this,arguments)}}()),m(this,`onVisibilityChange`,e=>{e===`hidden`&&(this.addStats({isFinal:!0,initiator:`visibilitychange`}),this.send(`beacon`))}),m(this,`onPageHide`,e=>{this.addStats({isFinal:!0,initiator:`pagehide`},{persisted:e.persisted}),this.send(`beacon`)}),m(this,`onRejection`,e=>this.addError(e.reason)),m(this,`onError`,e=>this.addError(e.error)),m(this,`addError`,e=>{let{includeErrors:t,maxErrorReports:n}=this.options;if(!(e instanceof W)||e.code()===`channel_not_live`||!t||(this.errorCount++,this.errorCount>n))return;let r=this.parentContext.getStatistics();this.unsentLines.push(tC(`error`,B(B({},r),e.toStringifiable())))}),this.logger=e,this.emitter=t,this.options=B(B({},eC),n),this.parentContext=r}};$S=nC,m(nC,`create`,(e,t,n,r)=>new $S(e,t,n,r)),U(),h();var rC,iC=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`elements`,void 0),m(this,`documentState`,void 0),m(this,`timers`,new or),m(this,`unload`,()=>{this.timers.unload()}),m(this,`unpause`,()=>{if(!(!this.documentState.isVisible||!this.documentState.isOnline))for(let e of this.elements)e.userHasProvidedInput&&e.isPaused&&(this.logger.debug(`Unpause media element`),e.tryPlay())}),this.logger=e,this.elements=t,this.documentState=n,this.timers.setInterval(this.unpause,100)}};rC=iC,m(iC,`create`,(e,t,n)=>new rC(e,t,n)),h();var aC=[`minBufferTime`,`maxBufferTime`,`burstEnabled`,`sizeBasedResolutionCapEnabled`,`webcodecsHardwareAcceleration`,`offscreenCanvasEnabled`,`videoCodecs`];function oC(e){return aC.includes(e)}var sC=class{constructor(e){m(this,`options`,void 0),m(this,`overrides`,new Map),this.options=e}getOptions(){return this.options}addOverrides(e,t){this.overrides.set(e,t)}set(e,t){this.options[e]=t}get(e,t){if(t&&oC(e)){var n;let r=(n=this.overrides.get(t))==null?void 0:n[e];if(r!==void 0)return r}return this.options[e]}getOverride(e,t){var n;return(n=this.overrides.get(t))==null?void 0:n[e]}};V();var cC=6,lC=e=>{let t=[e],n=0,r=0,i=!1,a=(e,t)=>{var i,a;if(e.flags&&Tl(e.flags)){var o;n=(o=e.compositionTimeOffset)==null?0:o}e.timestamp+=n,e.compositionTimeOffset=((i=e.compositionTimeOffset)==null?0:i)-n;let s=e.timestamp/e.timescale,c=t.flags&&Tl(t.flags)?(a=t.compositionTimeOffset)==null?0:a:n,l=(t.timestamp+c)/t.timescale,u=Math.max(0,Math.round((l-s)*e.timescale));return u>0&&(r=u),B(B({},e),{},{duration:u>0?u:r})};return(e,n=!1)=>{if(e.flags&&Tl(e.flags)&&n&&(i=!i),!(n&&t.length<cC&&i)&&t.length>0){i=!1;let n=e;for(let e=t.length-1;e>0;e--){let r=t[e];if(!r||!n)break;r.timestamp>=n.timestamp?t.splice(e,1):n=r}let r=t.map((n,r)=>a(n,t[r+1]||e));return t=[e],r}return t.push(e),[]}},uC=[`mse`,`wasm`],dC=e=>e==null?uC:e,fC=e=>{if(!e)return!1;let t=e.headers&&Object.keys(e.headers).length>0,n=e.queryParams&&Object.keys(e.queryParams).length>0;return!!(t||n)},pC=(e,t,n)=>{if(fC(n))return`mse`;let r=dC(e);for(let e of r)switch(e){case`mse`:if(t)return`mse`;break;case`webcodecs`:if(typeof VideoDecoder<`u`)return`webcodecs`;break;case`wasm`:return`wasm`}return`wasm`};V();var mC=(e,t,n)=>{if(Fr(t))return B(B({},e),{},{type:`video`,codec:t.codec,isSync:Tl(e.flags),data:e.payload,duration:0,width:t.width,height:t.height},n);if(t.codec===`webvtt`)throw Error(`WebVTT is not supported`);return B(B({},e),{},{type:`audio`,channels:t.channels,sampleRate:t.sampleRate,codec:t.codec,language:t.language,isSync:Tl(e.flags),data:e.payload,duration:0})};V();var hC=({average:e,last:t,max:n,min:r})=>({average:Math.round(e),last:Math.round(t),max:Math.round(n),min:Math.round(r)}),gC=[`timeSpentBuffering`,`timePerBufferingEvent`,`drift`,`seekTime`,`totalSeekTime`,`currentSeekToleranceMs`,`currentAheadToleranceMs`,`averageDrift`,`videoKeyframeIntervalMs`,`timeToConnected`,`mediaSourceOpenTime`],_C=[`videoDecodeTime`,`audioDecodeTime`,`videoTransportTime`,`rtt`],vC=e=>typeof e==`object`&&!!e&&`min`in e&&`max`in e&&`average`in e&&`last`in e,yC=e=>{let t=B({},e);for(let e of gC){let n=t[e];typeof n==`number`&&(t[e]=Math.round(n))}for(let e of _C){let n=t[e];vC(n)&&(t[e]=hC(n))}return t};V();var bC=(e,t)=>e&&typeof e==`object`&&t in e,xC=e=>!(typeof e!=`object`||!bC(e,`channelId`)||typeof e.channelId!=`string`||!bC(e,`url`)||typeof e.url!=`string`||e.channelId.length===0||e.url.length===0),SC=e=>{if(!xC(e))throw new W(`Invalid options`,{isFatal:!0,code:`invalid_options`});let t=B({},e);return Object.keys(t).forEach(e=>{let n=t;n[e]===void 0&&delete n[e]}),t},CC=e=>{if(typeof e!=`object`||!e)throw Error(`not an object`);if(!(`video`in e))throw Error(`missing video in subscription`);if(!(`audio`in e))throw Error(`missing audio in subscription`);if(!(`channelId`in e))throw Error(`missing channelId`);return!0};mo(),Cl(),ix(),h(),F();var wC=class{constructor(e){var t=this;m(this,`cache`,new Map),m(this,`inFlight`,new Map),m(this,`checkVideoSupport`,function(){var e=P(function*(e){var n;if(typeof VideoDecoder>`u`)return!1;let r=VideoDecoder.isConfigSupported;if(typeof r!=`function`)return!0;if(e.codec===`h265`&&!e.codecString)return t.logger.warn(`Missing HEVC codec string for WebCodecs support check. Falling back to optimistic support.`,{renditionId:e.id}),!0;let i=(n=e.codecString)==null?e.codec===`av1`?`av01.0.08M.08`:`avc1.42E01E`:n,a=`video|${i}|${e.width}x${e.height}`;return t.check(a,()=>r({codec:i,optimizeForLatency:!0,codedWidth:e.width,codedHeight:e.height}),!0,{message:`Failed to check WebCodecs rendition support. Falling back to optimistic support check.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`checkAudioSupport`,function(){var e=P(function*(e){var n;if(typeof AudioDecoder>`u`)return!1;let r=AudioDecoder.isConfigSupported;if(typeof r!=`function`)return!0;let i=(n=e.codecString)==null?rx(e.codec):n,a=`audio|${i}|${e.sampleRate}|${e.channels}`,o=e.codec===`aac`?ao(e.channels,e.sampleRate):e.codec===`opus`?xl(e.channels,e.sampleRate):void 0;return t.check(a,()=>r({codec:i,sampleRate:e.sampleRate,numberOfChannels:e.channels,description:o}),!1,{message:`Failed to check WebCodecs audio rendition support. Treating rendition as unsupported.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`check`,(e,t,n,r)=>{let i=this.cache.get(e);if(i!==void 0)return Promise.resolve(i);let a=this.inFlight.get(e);if(a)return a;let o=Promise.resolve().then(t).then(({supported:t})=>(this.cache.set(e,t),t)).catch(t=>(this.logger.warn(r.message,{codec:r.codec,renditionId:r.renditionId,error:t}),this.cache.set(e,n),n)).finally(()=>{this.inFlight.delete(e)});return this.inFlight.set(e,o),o}),this.logger=e}};U(),h(),D(),V(),F(),N(),j();var TC=1e4,EC=1280*720,DC=new WeakMap,OC=new WeakMap,kC=new WeakMap,AC=class e extends Qt{constructor(t){var n,r,i;super(),n=this,m(this,`pictureInPicture`,void 0),m(this,`drm`,void 0),m(this,`browser`,dt()),m(this,`options`,void 0),m(this,`element`,void 0),m(this,`playbackSource`,void 0),m(this,`emitter`,new Qt),m(this,`logger`,void 0),m(this,`modules`,void 0),m(this,`clientIp`,void 0),m(this,`sessionId`,void 0),m(this,`clientId`,Sr()),m(this,`_channels`,[]),m(this,`createdAt`,performance.now()),m(this,`offscreenCanvasElement`,void 0),m(this,`webCodecsRenditionSupport`,void 0),m(this,`hasCalledConnect`,!1),m(this,`hasRequestedAudioSession`,!1),m(this,`isUserPaused`,!1),m(this,`isMediaElementPaused`,!1),m(this,`latestEmittedLanguages`,[]),m(this,`wakeLock`,void 0),m(this,`pool`,new re(e.MAX_POOL_SIZE)),m(this,`userAgentInformation`,new br),m(this,`encryptedMediaExtensions`,void 0),E(this,DC,0),E(this,OC,[]),m(this,`sampleProcessingSesssions`,new Map),m(this,`unbackedSamplesWarned`,new nx),m(this,`unextractableSamplesWarned`,new nx),m(this,`sizes`,new Map),m(this,`isSuspended`,!0),m(this,`inactivityDisconnectInterval`,void 0),m(this,`visiblePauseTimeout`,void 0),m(this,`offscreenSubtitleInterval`,void 0),E(this,kC,void 0),m(this,`attach`,e=>{var t;(t=this.wakeLock)==null||t.attach(e),e.appendChild(this.element)}),m(this,`setElement`,e=>{this.element!==e&&(this.element=e,this.modules.constraintCap.setElement(e))}),m(this,`applyBurstEnabled`,e=>{this.modules.subscription.enableBurst(this.options.get(`burstEnabled`,e)?this.targetBufferTime:0)}),m(this,`getOptions`,()=>this.options.getOptions()),m(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;let t=window.devicePixelRatio||1,n=Math.round(window.innerWidth*t),r=Math.round(window.innerHeight*t),i=this.options.get(`authenticationToken`),a=i?`&auth.token=${i}`:``;return`${e}/api/thumbnail?channelId=${this.channelId}${a}&width=${n}&height=${r}`}),m(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})}),m(this,`connect`,()=>{this.hasCalledConnect||(this.play(),this._connect())}),m(this,`_connect`,()=>{if(!this.hasCalledConnect){if(this.hasCalledConnect=!0,Object.values(this.modules).forEach(e=>{e&&`load`in e&&e.load()}),this.playbackSource instanceof $l){var e,t;(e=(t=this.playbackSource).load)==null||e.call(t)}this.unsuspend()}}),m(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`),burstEnabled:this.options.get(`burstEnabled`)})),m(this,`onConnectInfo`,function(){var e=P(function*(e){var t;n.sessionId=Sr();let r=n.modules.subscription.getTargetSubscription(),i=e.channels.find(e=>e.channelId===r.channelId);if(n.emitter.emit(`connect info`,e),`timeshift`in e&&e.timeshift?(e.timeshift,n._channels=e.channels.map(t=>B(B({},t),{},{timeshift:e.timeshift})),n.emit(`timeshift info`,e.timeshift)):n._channels=e.channels,n.updateTextTracks((t=i==null?void 0:i.renditions)==null?[]:t),!n.textTrack&&n.options.get(`textTrack`)&&(n.textTrack=n.options.get(`textTrack`)),yield Promise.all(e.channels.map(function(){var e=P(function*(e){e.overrides&&n.options.addOverrides(e.channelId,e.overrides),e.renditions=yield n.filterRenditions(e.renditions),n.modules.renditions.setRenditions(e.channelId,e.renditions)});return function(t){return e.apply(this,arguments)}}())),!i)throw Bi(`external`);let a=n.options.getOverride(`sizeBasedResolutionCapEnabled`,n.channelId);a!==void 0&&(n.modules.constraintCap.sizeBasedResolutionCapEnabled=a);let o=n.options.getOverride(`minBufferTime`,n.channelId),s=n.options.getOverride(`maxBufferTime`,n.channelId);if((o||s)&&(n.modules.bufferTime.updateConfig({minBufferTime:n.options.get(`minBufferTime`,n.channelId),maxBufferTime:n.options.get(`maxBufferTime`,n.channelId)}),n.targetBufferTime=n.options.get(`minBufferTime`,n.channelId)),n.applyBurstEnabled(n.channelId),n.emit(`is live`,i.isLive),!i.isLive)throw Vi();let c=n.modules.connection.estimatedBandwidth;n.patchSubscription(i,c),yield n.initializeDecodingModule(),n.resetModules(),n.emit(`rendition levels`,n.modules.renditions.getRenditionLevels()),n.emit(`channels`,n.channels),n.emitLanguagesIfChanged(),n.sampleProcessingSesssions.clear();let l=n.options.get(`burstEnabled`,n.channelId)&&n.burstFits(c);return{video:n.targetSubscription.video,audio:n.targetSubscription.audio,burstMs:l?n.targetBufferTime:void 0,sessionId:n.sessionId,clientId:n.clientId,channelId:n.channelId,channelGroupId:n.options.get(`channelGroupId`),authToken:n.options.get(`authenticationToken`),textTrack:n.textTrack}});return function(t){return e.apply(this,arguments)}}()),m(this,`emitLanguagesIfChanged`,()=>{let e=this.modules.renditions.getLanguages(),t=this.latestEmittedLanguages;e.length===t.length&&e.every(e=>t.includes(e))||(this.logger.debug(`Emitting new languages`,{currentLanguages:e}),this.latestEmittedLanguages=e,this.emit(`languages`,this.latestEmittedLanguages))}),m(this,`updateTextTracks`,e=>{let t=e.filter(e=>e.codec===`webvtt`);t.forEach(e=>{if(!M(OC,this).find(t=>t.language===e.language)){if(this.modules.canvasModule){let t=this.modules.canvasModule.textTracks.addTextTrack(e.kind,e.label||e.language||``,e.language||``);M(OC,this).push(t)}else if(this.mediaElement instanceof HTMLVideoElement){let t=this.mediaElement.addTextTrack(e.kind,e.label||e.language,e.language);M(OC,this).push(t)}}});for(let e of M(OC,this))t.find(t=>t.language===e.language)?e.mode===`disabled`&&(e.mode=`hidden`):e.mode=`disabled`;this.emit(`text tracks`,this.textTracks)}),m(this,`cleanupTextTracks`,(e=this.currentTime-2e4)=>{M(OC,this).forEach(t=>{if(t.cues)for(let n of Array.from(t.cues))n.endTime*1e3<e-2e3&&t.removeCue(n)})}),m(this,`filterRenditions`,function(){var e=P(function*(e){let t=yield Promise.all(e.map(function(){var e=P(function*(e){if(Ir(e)){var t;return n.willUseMediaSource()&&!((t=Ke())!=null&&t.isTypeSupported(Lr(e)))?!1:n.willUseMediaSource()||e.codec===`opus`?!0:n.isWebCodecsAudioAvailable(n.channelId)?n.webCodecsRenditionSupport.checkAudioSupport(e):!1}if(!Fr(e)||!n.isSupportedVideoCodecProfile(e.codec,e.codecString))return!1;if(!n.willUseMediaSource())return n.isWebCodecsVideoAvailable(n.channelId)?n.webCodecsRenditionSupport.checkVideoSupport(e):!0;let r=yield eu(e);if(!r.supported)return!1;if(e.codec===`av1`&&!r.smooth&&!r.powerEfficient)return n.logger.debug(`discarding av1 rendition, neither smooth nor power efficient`,{codecString:e.codecString,width:e.width,height:e.height,bitRate:e.bitRate,capabilities:r}),!1;let i=n.options.getOverride(`maxVideoBitRate`,n.channelId);return i?i>=e.bitRate:!0});return function(t){return e.apply(this,arguments)}}())),r=e.filter((e,n)=>t[n]),i=e.filter((e,n)=>!t[n]);i.length>0&&n.logger.debug(`unsupported renditions filtered out`,{renditions:i.map(e=>B(B({codec:e.codec,codecString:e.codecString},Fr(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))});let a=r.filter(e=>e.codec===`h264`).reverse()[0],o=r.filter(e=>e.codec===`av1`).reverse()[0];return a&&o&&a.width>o.width&&a.height>o.height&&(n.logger.debug(`discarding av1 renditions, h264 ladder has higher resolution`,{bestH264:{width:a.width,height:a.height,bitRate:a.bitRate},bestAV1:{width:o.width,height:o.height,bitRate:o.bitRate}}),r=r.filter(e=>e.codec!==`av1`)),n.logger.debug(`supported renditions`,{renditions:r.map(e=>B(B({codec:e.codec,codecString:e.codecString},Fr(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))}),r});return function(t){return e.apply(this,arguments)}}()),m(this,`burstFits`,e=>{var t,n;let{video:r,audio:i,channelId:a}=this.modules.subscription.getTargetSubscription(),o=Xl(((t=this.modules.renditions.getVideoRenditions(a))==null?[]:t).filter(e=>e.codec===r.codec).map(e=>e.bitRate),r.bitRate),s=Xl(((n=this.modules.renditions.getAudioRenditions(a))==null?[]:n).filter(e=>e.codec===i.codec).filter(e=>!i.language||e.language===i.language).map(e=>e.bitRate),i.bitRate),c=Zl(e,o+s);return c||this.logger.info(`Skipping the join burst: the starting rendition needs more than half the bandwidth`,{estimatedBandwidth:e,videoBitRate:o,audioBitRate:s}),c}),m(this,`patchSubscription`,(e,t)=>{var n;let r=this.options.get(`maxInitialBitRate`),i=Math.min(this.options.get(`maxVideoBitRate`),r,t,this.targetSubscription.video.bitRate),a=Math.min(this.options.get(`maxAudioBitRate`),r,t,this.targetSubscription.audio.bitRate),o=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`,this.channelId),s=this.supportedAudioCodecs(),c=e.renditions.filter(Ir),l=e.renditions.filter(Fr),u=s.find(e=>c.find(t=>t.codec===e)!==void 0),d=o.find(e=>l.find(t=>t.codec===e)!==void 0),f=c.map(e=>e.language);this.logger.debug(`supported and selected codecs`,{audioCodecs:s,videoCodecs:o,audioCodec:u,videoCodec:d});let p=(n=this.modules.subscription.getTargetSubscription().audio.language)==null?this.options.get(`language`):n;if(d&&this.abrEnabled&&this.options.get(`burstEnabled`,this.channelId)){let e=c.filter(e=>e.codec===u),n=e.filter(e=>e.language===p),r=Yl(t,l.filter(e=>e.codec===d).map(e=>e.bitRate),(n.length?n:e).map(e=>e.bitRate));i=Math.min(i,r)}if(d){let e=this.options.get(`maxSize`);this.modules.subscription.setVideoConstraint(B({codec:d,bitRate:this.abrEnabled?i:this.options.get(`maxVideoBitRate`)},e))}u&&(this.modules.subscription.setAudioConstraint({codec:u,bitRate:this.abrEnabled?a:this.options.get(`maxAudioBitRate`),language:p}),(p===void 0||!f.includes(p))&&this.modules.subscription.setLanguage(f[0])),this.alignSizeAndBitRate(this.targetSubscription);let m=this.modules.subscription.getTargetSubscription();this.emitter.emit(`subscription changed`,{to:m,from:this.modules.subscription.getCurrentSubscription()})}),m(this,`isSupportedVideoCodecProfile`,(e,t)=>{if(this.willUseMediaSource()){let n=Ke();return n?n.isTypeSupported(Lr({codec:e,codecString:t})):!0}if(this.isWebCodecsVideoAvailable(this.channelId)&&(e===`h264`||e===`h265`||e===`av1`))return!0;if(e===`h264`){let e=!!(t!=null&&t.startsWith(`avc1.42`)),n=!!(t!=null&&t.startsWith(`avc1.66.`));return e||n}return!(e===`h265`||e===`av1`)}),m(this,`supportedAudioCodecs`,()=>{if(this.options.get(`media`)===`video`)return[];let e=[];return(this.willUseMediaSource()||this.isWebCodecsAudioAvailable(this.channelId))&&e.push(`aac`),(this.browser.supportsMp4Opus&&this.options.get(`mseOpusEnabled`)||!this.willUseMediaSource())&&e.push(`opus`),this.isWebCodecsAudioAvailable(this.channelId)&&e.push(`mp3`),e}),m(this,`initializeDecodingModule`,P(function*(){var e;let t=n.currentRenditionLevel,r=[];if(!t)throw new W(`No currentRenditionLevel`,{code:`no_current_rendition_level`,isFatal:!1});if(t!=null&&t.video&&r.push({type:`video`,mimeType:Lr(t.video),codec:t.video.codec}),t!=null&&t.audio&&r.push({type:`audio`,codec:t.audio.codec,mimeType:Lr(t.audio),channels:t.audio.channels,sampleRate:t.audio.sampleRate}),r.length===0)throw new W(`Can't initialize decoding module without tracks`,{code:`no_tracks`,isFatal:!1});if(n.willUseMediaSource()&&n.element instanceof HTMLMediaElement){n.emitter.emit(`flush buffers`);try{var i;yield(i=n.modules.mseModule)==null?void 0:i.setSourceBuffers(r)}catch(e){throw e instanceof Fl?(n.logger.debug(`Abandoning decoding module setup for a disposed source buffer`),new W(`Source buffer setup was superseded`,{code:`start_failed`,isFatal:!1,type:`internal`,source:e})):e}return}let a=n.shouldUseWebCodecs(n.channelId),o=n.options.get(`webcodecsHardwareAcceleration`,n.channelId),s=n.shouldUseOffscreenCanvas(n.channelId)&&a,c=typeof OffscreenCanvas<`u`&&typeof HTMLCanvasElement<`u`&&typeof HTMLCanvasElement.prototype.transferControlToOffscreen==`function`,l=s&&c&&typeof VideoDecoder<`u`,u,d;if(l)try{d=document.createElement(`canvas`),Wr(d),u=d.transferControlToOffscreen()}catch(e){u=void 0,d=void 0,n.logger.warn(`Failed to enable OffscreenCanvas; falling back to main thread rendering`,{error:e})}else s&&n.logger.warn(`OffscreenCanvas requested but not supported; falling back to main thread rendering`);let f=n.capturesCanvasOnWebKit(u),p=yield zx.create(n.emitter,n.logger.createContext(`DecoderModule`),n.options.get(`logLevel`),r,n.playbackSource,n.pool,a,o,u,f),{videoRenderer:m}=p.getStatistics(),h=n.modules.canvasModule;if(h instanceof uS)if(m===`OffscreenCanvas`&&d){h.setVideoRenderingEnabled(!1);let e=n.element;e.parentElement?e.parentElement.replaceChild(d,e):n.logger.warn(`OffscreenCanvas rendering is active but the current element is not attached to the DOM. Updating internal element reference only.`),n.offscreenCanvasElement=d,n.setElement(d)}else{h.setVideoRenderingEnabled(!0),n.offscreenCanvasElement=void 0;let e=h.element();if(e!==n.element){let t=n.element;t.parentElement&&t.parentElement.replaceChild(e,t),n.setElement(e)}}else h instanceof _S&&(h.setBackgroundPlaybackEnabled(n.isBackgroundPlayEnabled(n.channelId)),m===`OffscreenCanvas`&&d?(h.setOffscreenCanvas(d),n.offscreenCanvasElement=d,f&&n.connectWebKitVideoOutput(p,h)):(h.setVideoTrack(void 0),h.setOffscreenCanvas(void 0),n.offscreenCanvasElement=void 0));(e=n.modules.decoder)==null||e.unload(),n.modules.decoder=p,n.isHiddenWithBackgroundPlayback()&&n.modules.decoder.enableBackgroundTimers(),n.modules.decoder.setVideoRenderingEnabled(n.isVideoOnScreen()),n.modules.decoder.load(),n.setupOffscreenSubtitleRouting()})),m(this,`capturesCanvasOnWebKit`,e=>!!e&&this.browser.platform.isWebKit&&this.modules.canvasModule instanceof _S),m(this,`connectWebKitVideoOutput`,(e,t)=>{let n=()=>{t.setVideoTrack(void 0),this.browser.platform.isIOS&&e.setMaxVideoCanvasPixels(EC)};e.onVideoTrackLost(e=>{this.logger.warn(`Worker video track lost, falling back to canvas capture`,{error:e}),n()});let r=e.videoTrack;r?t.setVideoTrack(r):n()}),m(this,`setupOffscreenSubtitleRouting`,()=>{if(this.offscreenSubtitleInterval!==void 0&&(clearInterval(this.offscreenSubtitleInterval),this.offscreenSubtitleInterval=void 0),!this.offscreenCanvasElement||!this.modules.decoder||this.modules.canvasModule instanceof _S)return;let e=this.modules.decoder,t=this.modules.canvasModule;if(!t)return;let n=!1;this.offscreenSubtitleInterval=setInterval(()=>{var r,i,a,o;if(!t.textTracks.language){n&&(e.setSubtitleCues([],0,0,1,0),n=!1);return}n=!0;let s=t.textTracks.getActiveCues(this.currentTime/1e3).map(e=>({text:e.text})),c=((r=this.element)==null?void 0:r.clientWidth)||0,l=((i=this.element)==null?void 0:i.clientHeight)||0,u=((a=this.element)==null?void 0:a.style.getPropertyValue(`--vindral-subtitle-offset`))||((o=this.element)==null?void 0:o.style.getPropertyValue(`--vindral-control-bar-offset`)),d=parseInt(u||`0`,10)||0;e.setSubtitleCues(s,c,l,globalThis.devicePixelRatio||1,-d)},100)}),m(this,`unload`,P(function*(){var t,r,i;n.logger.debug(`Unloading modules...`),n.offscreenSubtitleInterval!==void 0&&(clearInterval(n.offscreenSubtitleInterval),n.offscreenSubtitleInterval=void 0),yield Promise.all(Object.values(n.modules).map(e=>e==null?void 0:e.unload())),(t=n.wakeLock)==null||t.unload(),n.pool=new re(e.MAX_POOL_SIZE),(r=(i=n.playbackSource).unload)==null||r.call(i),n.element.remove(),n.emitter.reset(),n.encryptedMediaExtensions.unload(),n.reset(),n.logger.debug(`Unloaded modules`)})),m(this,`userInput`,()=>{this.play()}),m(this,`pause`,()=>{if(this.options.get(`pauseSupportEnabled`)&&(this.isUserPaused=!0,this.playbackState!==`paused`&&this.playbackSource.pause(),this.hasCalledConnect)){let e=!this.modules.documentState.isVisible;this.suspend(e),e&&this.disconnectForInactivePage(`Background playback paused`)}}),m(this,`yieldToInterruption`,()=>{if(!this.browser.platform.isWebKit&&(this.logger.info(`Yielding playback after an interruption`),this.options.get(`pauseSupportEnabled`)?this.pause():this.muted=!0,!this.modules.documentState.isVisible)){var e;(e=this.modules.mediaSession)==null||e.stop()}}),m(this,`fromNativeControls`,e=>{if(this.options.get(`pauseSupportEnabled`)){e===`pause`?this.pause():this.play();return}this.muted=e===`pause`,e===`play`&&this.play()}),m(this,`registerDebugInstance`,()=>{Ql(this)}),m(this,`play`,()=>{var t;this.clearVisiblePauseDisconnect(),this.isUserPaused=!1,this.requestAudioSessionOnce(),this.hasCalledConnect?this.unsuspend():this.playbackState!==`playing`&&(this._connect(),self.addEventListener(`__vindral_register_debug__`,this.registerDebugInstance),this.modules.timer.setInterval(()=>this.cleanupTextTracks(),e.REMOVE_CUE_THRESHOLD)),(t=this.wakeLock)==null||t.enable(),this.playbackState===`paused`&&this.playbackSource.isActivated&&(this.resetModules(),this.emitter.emit(`flush buffers`),this.cleanupTextTracks(2**53-1)),this.playbackSource.play(),this.isHiddenWithBackgroundPlayback()&&this.scheduleInactivityDisconnect()}),m(this,`getStatistics`,()=>{let e=Object.values(this.modules).reduce((e,t)=>t&&`getStatistics`in t?B(B({},e),t.getStatistics()):e,this.getRuntimeInfo()),t=Math.round(this.timeActive>0?(e.bytesReceived||0)*8/(this.timeActive/1e3):0),n=this.uptime/36e5,r=Math.max(0,(e.connectCount||0)-1),i=n>0?r/n:0,a=this.timeActive/6e4,o=Math.max(a,1),s=a>0?(e.seekAdjustmentCount||0)/o:0,c=a>0?(e.timeshiftAdjustmentCount||0)/o:0;return yC(B(B({},e),{},{averageBitRate:t,reconnectsPerHour:i,seekAdjustmentsPerMinute:s,timeshiftAdjustmentsPerMinute:c}))}),m(this,`resetModules`,()=>{Object.values(this.modules).forEach(e=>{e&&`reset`in e&&e.reset()}),this.playbackSource instanceof $l&&this.modules.adaptivity.reset(TC),this.sampleProcessingSesssions.clear(),this.cleanupTextTracks(1/0),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1}),m(this,`disconnectForInactivePage`,e=>{if(this.clearInactivityDisconnect(),this.emitter.emit(`flush buffers`),!this.isBackgroundPlayEnabled(this.channelId)){var t;(t=this.modules.mediaSession)==null||t.stop()}this.connectionState!==`disconnected`&&this.modules.connection.disconnect(e)}),m(this,`scheduleInactivityDisconnect`,()=>{this.clearInactivityDisconnect(),this.inactivityDisconnectInterval=this.modules.timer.setInterval(()=>{let e=this.modules.pictureInPicture.isPictureInPictureActive(),t=this.playbackState===`paused`||this.muted&&!e;this.connectionState===`connected`&&t&&(this.emitter.emit(`flush buffers`),this.modules.connection.disconnect(`Background playback inactive timeout`),this.suspend(!0),this.clearInactivityDisconnect())},e.BACKGROUND_INACTIVITY_DISCONNECT_TIMEOUT)}),m(this,`onVisiblePause`,()=>{if(!this.browser.platform.isIOS){this.disconnectForVisiblePause();return}this.clearVisiblePauseDisconnect(),this.visiblePauseTimeout=this.modules.timer.setTimeout(()=>{this.visiblePauseTimeout=void 0,this.disconnectForVisiblePause()},e.VISIBLE_PAUSE_DISCONNECT_DELAY)}),m(this,`disconnectForVisiblePause`,()=>{this.isUserPaused=!0,this.suspend(),this.modules.connection.disconnect()}),m(this,`clearVisiblePauseDisconnect`,()=>{this.visiblePauseTimeout!==void 0&&(this.modules.timer.clearTimeout(this.visiblePauseTimeout),this.visiblePauseTimeout=void 0)}),m(this,`clearInactivityDisconnect`,()=>{this.inactivityDisconnectInterval!==void 0&&(this.modules.timer.clearInterval(this.inactivityDisconnectInterval),this.inactivityDisconnectInterval=void 0)}),m(this,`isHiddenWithBackgroundPlayback`,()=>!this.modules.documentState.isVisible&&this.shouldAllowBackgroundPlayback(this.channelId)),m(this,`isVideoOnScreen`,(e=this.modules.documentState.isVisible)=>e||this.modules.pictureInPicture.isPictureInPictureActive()),m(this,`isHiddenWithBackgroundPlayDisabled`,()=>!this.modules.documentState.isVisible&&!this.isBackgroundPlayEnabled(this.channelId)),m(this,`resumeModules`,()=>{Object.values(this.modules).forEach(e=>{e&&`unsuspend`in e&&e.unsuspend()})}),m(this,`getRuntimeInfo`,()=>{let e=this.modules.canvasModule instanceof _S?!0:void 0;return B({uptime:this.uptime,version:`4.6.0-30-g09527bd9`,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(),streamToMediaElementEnabled:e,iosMediaElementEnabled:e,mediaElementPaused:this.element&&`paused`in this.element?this.element.paused:void 0},this.userAgentInformation.getUserAgentInformation())}),m(this,`getPlaybackBufferState`,(e,t)=>{let n=t==null?void 0:t.getBufferState(e.currentTime);if(!n)return e;let r=e.playbackState===`buffering`||n.playbackState===`buffering`?`buffering`:e.playbackState===`paused`?`paused`:`playing`;return B(B({},e),{},{buffered:n.buffered,playbackState:r})}),m(this,`onMediaElementBufferState`,(e,t)=>{this.emitter.emit(`buffer state`,this.getPlaybackBufferState(e,t))}),m(this,`onMediaElementState`,e=>{var t;if(this.logger.info(`media element state`,{state:e}),this.isMediaElementPaused=e===`paused`,(t=this.modules.mediaSession)==null||t.refresh(),this.options.get(`pauseSupportEnabled`))if(e===`paused`)this.modules.documentState.isVisible&&this.onVisiblePause();else{if(this.clearVisiblePauseDisconnect(),this.isUserPaused=!1,this.isHiddenWithBackgroundPlayDisabled())return;this.unsuspend(),this.modules.connection.getState()===`disconnected`&&this.modules.connection.unsuspend()}}),m(this,`onBufferEvent`,e=>{this.emit(`buffer state event`,e);let t=!this.playbackSource.isActivated||this.playbackSource.isPaused;if(e===`filled`&&t){var n,r,i,a;let e=Math.max(this.currentTime,(n=(r=this.videoBufferedRanges[0])==null?void 0:r.start)==null?0:n,(i=(a=this.audioBufferedRanges[0])==null?void 0:a.start)==null?0:i);this.logger.info(`Buffer filled - starting playback`,{currentTime:e}),this.playbackSource.currentTime=e,this.modules.sync.activateSyncAdjustments(),this.playbackSource.isActivated=!0}else e===`drained`&&this.playbackSource.isPaused&&(this.playbackSource.isActivated=!1,this.modules.sync.deactivateSyncAdjustments())}),m(this,`timeToFirstFrame`,()=>{let e=this.modules.playback.getFirstFrameTime(),t=this.modules.connection.firstConnectStartTime;if(t!==void 0&&e!==void 0)return Math.round(e-t)}),m(this,`hiddenPauseIsStop`,()=>{var e;if(this.browser.platform.isWebKit||!this.browser.isMobile)return!1;let t=(e=this.modules)==null?void 0:e.decoder;return t?t.audioWebCodecsInUse:this.isWebCodecsAudioAvailable(this.channelId)}),this.options=new sC(B(B({},Vr),SC(t))),t.telemetryEnabled===void 0&&[`localhost`,`127.0.0.1`].includes(location.hostname)&&this.options.set(`telemetryEnabled`,!1);let a={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}},o=vn.get();o.setLevel(this.options.get(`logLevel`)),o.setDebug(!1),this.logger=o,this.webCodecsRenditionSupport=new wC(o),t.iosMediaElementEnabled!==void 0&&this.logger.warn(`Option iosMediaElementEnabled is deprecated and will be removed in a future release. Use streamToMediaElementEnabled instead.`);let s=(r=t.streamToMediaElementEnabled)==null?t.iosMediaElementEnabled:r;s!==void 0&&(this.options.set(`streamToMediaElementEnabled`,s),this.options.set(`iosMediaElementEnabled`,s)),t.iosBackgroundPlayEnabled!==void 0&&this.logger.warn(`Option iosBackgroundPlayEnabled is deprecated and will be removed in a future release. Use backgroundPlayEnabled instead.`);let c=(i=t.backgroundPlayEnabled)==null?t.iosBackgroundPlayEnabled:i;c!==void 0&&(this.options.set(`backgroundPlayEnabled`,c),this.options.set(`iosBackgroundPlayEnabled`,c));let l=t.mseEnabled!==void 0,u=t.decoders!==void 0;l&&this.logger.warn(`Option mseEnabled is deprecated and will be removed in a future release. Use decoders instead (e.g. decoders: ["wasm"]).`),l&&!u&&t.mseEnabled===!1&&this.options.set(`decoders`,[`wasm`]);let d=AS.create(this.emitter,this.logger.createContext(`PictureInPictureModule`)),f=this.options.get(`mediaSessionEnabled`)?hS.create(this.emitter,this.logger.createContext(`MediaSessionModule`),{metadata:this.options.get(`mediaSessionMetadata`),decoy:this.willUseMediaSource()||this.usesSplitCanvasAudio()?void 0:gu.create(this.logger.createContext(`AudioFocusDecoy`),this.yieldToInterruption),isMuted:()=>this.playbackSource.userMuted,isHidden:()=>!this.modules.documentState.isVisible,isSinkPaused:()=>this.isMediaElementPaused,releaseOnHiddenPause:this.hiddenPauseIsStop,isSuppressed:this.isHiddenWithBackgroundPlayDisabled,holdDecoyWhilePaused:this.holdsDecoyWhilePaused(),keepDecoyWhenMuted:this.isWebKitCanvasPath(),pauseMeansMute:!this.options.get(`pauseSupportEnabled`)}):void 0,p=or.create(),h=Jb.create(this.emitter,this.logger.createContext(`ConnectionModule`),{reconnectHandler:this.options.get(`reconnectHandler`),options:this.options,onConnectInfo:this.onConnectInfo}),g=HS.create(this.logger.createContext(`SubscriptionModule`),this.emitter,a),_=RS.create(this.emitter,g),v=IS.create(this.emitter,this.logger.createContext(`QualityOfServiceModule`),_),y=MS.create(this.emitter,this.logger.createContext(`PlaybackModule`),this,this.options.get(`minBufferTime`));this.encryptedMediaExtensions=new Ya(this.emitter,this.logger.createContext(`EncryptedMediaExtensions`),t.drm),this.drm={setHeaders:e=>{this.encryptedMediaExtensions.headers=e},setQueryParams:e=>{this.encryptedMediaExtensions.queryParams=e}};let b=Vx.create(this.emitter),ee=this.options.get(`poster`),x=ee===!0?this.getThumbnailUrl():ee||void 0,S,te,ne;if(this.willUseMediaSource()){let e=new $l({type:this.options.get(`media`)===`audio`?`audio`:`video`,autoplay:!1,muted:this.options.get(`muted`)||this.options.get(`media`)===`video`,volume:this.options.get(`volume`),logger:this.logger.createContext(`MediaElement`),poster:x});e.on(`buffer state`,e=>this.onMediaElementBufferState(e,S)),e.on(`needs user input`,e=>this.emitter.emit(`needs user input`,e)),e.on(`volume state`,e=>this.emitter.emit(`volume state`,e)),e.on(`media element state`,e=>this.onMediaElementState(e)),this.element=e.element,this.playbackSource=e,Ya.isSupported()&&this.encryptedMediaExtensions.attach(e.element),S=SS.create(this.logger.createContext(`MseModule`),this.emitter,this.element),this.options.get(`pauseSupportEnabled`)||(te=iC.create(this.logger.createContext(`UnpauseModule`),[e],b)),this.options.get(`pictureInPictureEnabled`)&&this.emitter.emit(`add picture in picture listener`,{element:e.element})}else if(this.streamsToMediaElement()){let e=_S.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`,volume:this.options.get(`volume`),poster:x,offscreenCanvas:this.offscreenCanvasElement,bufferTime:this.options.get(`minBufferTime`),backgroundPlaybackEnabled:this.isBackgroundPlayEnabled(this.channelId),splitAudio:this.usesSplitCanvasAudio()});this.element=e.element().element,this.playbackSource=e,ne=e;let t=this.browser.platform.isIOS&&this.browser.platform.iosVersion<=15;this.options.get(`pictureInPictureEnabled`)&&!t&&this.emitter.emit(`add picture in picture listener`,{element:this.element}),this.options.get(`pauseSupportEnabled`)||(te=iC.create(this.logger.createContext(`UnpauseModule`),e.elements(),b))}else{let e;e=uS.create(this.emitter,this.logger.createContext(`LegacyCanvasModule`),this.pool,this,this.options.get(`muted`)||this.options.get(`media`)===`video`,this.options.get(`volume`),()=>{this.setElement(e.element())},this.options.get(`minBufferTime`)),this.element=e.element(),this.playbackSource=e,ne=e,this.options.get(`iosWakeLockEnabled`)&&(this.wakeLock=new Bl)}this.emitter.on(`channel reset`,this.resetModules),this.emitter.on(`no data timeout`,this.resetModules),this.emitter.on(`media element state`,e=>this.onMediaElementState(e)),this.emitter.on(`volume state`,e=>this.emit(`volume state`,e)),this.options.get(`pauseSupportEnabled`)||this.emitter.on(`exit picture in picture`,()=>p.setTimeout(()=>this.play(),0)),this.emitter.on(`constraint cap changed`,e=>{this.logger.info(`new cap set`,{cap:e}),this.alignSizeAndBitRate(this.targetSubscription)}),this.pictureInPicture={enter:()=>d.requestPictureInPicture(),exit:()=>d.exitPictureInPicture(),isActive:()=>d.isPictureInPictureActive(),isSupported:()=>d.isPictureInPictureSupported()},this.emitter.on(`error`,e=>{if(e.type()===`external`&&this.emit(`error`,e),e.isFatal())return()=>void this.unload()});let ie=this.willUseMediaSource(),C=ie?!this.browser.platform.isWebKit:!0,ae={getTargetBufferTime:()=>y.getTargetBufferTime(),getNextBufferedRangeStart:S?e=>S.getNextBufferedRangeStart(e):void 0},w=QS.create(this.emitter,this.logger.createContext(`SyncModule`),this.playbackSource,ae,C,ie),oe=Yx.create(this.logger.createContext(`JitterModule`)),T=(this.options.get(`edgeUrl`)||this.options.get(`url`)).replace(`wss://`,`https://`).replace(`ws://`,`http://`).replace(`//lb.`,`//errors.`),se=new URL(`/telemetry`,T).toString();this.modules={telemetry:nC.create(this.logger.createContext(`TelemetryModule`),this.emitter,{url:se,enabled:this.options.get(`telemetryEnabled`),includeStats:!1,interval:5e3},this),bufferTime:bu.create(this.emitter,this.logger.createContext(`BufferTimeModule`),v,this,{maxBufferTime:this.options.get(`maxBufferTime`),minBufferTime:this.options.get(`minBufferTime`)}),incomingData:Kx.create(this.emitter),adaptivity:uu.create(this.emitter,this.logger.createContext(`AdaptivityModule`),v,{cooldownTime:Math.max(this.options.get(`minBufferTime`),2e3)}),constraintCap:$b.create(this.emitter,this.element,_,this.options.get(`abrEnabled`)?this.options.get(`sizeBasedResolutionCapEnabled`):!1),event:Wx.create(this.emitter,this.logger.createContext(`EventModule`),w),sync:w,jitter:oe,documentState:b,connection:h,playback:y,pictureInPicture:d,mediaSession:f,timer:p,subscription:g,renditions:_,qualityOfService:v,mseModule:S,unpause:te,canvasModule:ne},this.modules.adaptivity.isEnabled=this.options.get(`abrEnabled`),this.emitter.on(`enter picture in picture`,()=>{var e;return(e=this.modules.decoder)==null?void 0:e.setVideoRenderingEnabled(!0)}),this.emitter.on(`exit picture in picture`,()=>{var e;return(e=this.modules.decoder)==null?void 0:e.setVideoRenderingEnabled(this.modules.documentState.isVisible)}),this.emitter.on(`media session: request play`,()=>this.fromNativeControls(`play`)),this.emitter.on(`media session: request pause`,()=>this.fromNativeControls(`pause`)),this.emitter.on(`media session: request stop`,()=>this.fromNativeControls(`pause`)),this.emitter.on(`native control`,e=>{this.options.get(`pauseSupportEnabled`)&&this.fromNativeControls(e)}),this.emitter.on(`page active`,e=>{var t,n;if((t=this.modules.decoder)==null||t.setVideoRenderingEnabled(this.isVideoOnScreen(e)),e)this.clearInactivityDisconnect(),this.isUserPaused||(this.logger.debug(`Unsuspending`),this.unsuspend(),this.usesSplitCanvasAudio()&&this.playbackSource.isPlayingAsRequested===!1&&(this.logger.debug(`Playing again after show`),this.play()));else if(this.clearVisiblePauseDisconnect(),this.logger.debug(`Suspending`),this.suspend(),this.shouldAllowBackgroundPlayback(this.channelId)){var r,i,a;(r=this.modules.decoder)==null||r.enableBackgroundTimers(),this.modules.connection.unsuspend(),this.modules.sync.unsuspend(),(i=this.modules.decoder)==null||i.unsuspend(),(a=this.modules.canvasModule)==null||a.unsuspend(),this.scheduleInactivityDisconnect()}else this.disconnectForInactivePage(this.isUserPaused?`Background playback paused`:`Background playback disabled`);(n=this.modules.mediaSession)==null||n.refresh()}),this.emitter.on(`pageshow`,e=>{if(!e.persisted||this.isUserPaused)return;let t=this.shouldAllowBackgroundPlayback(this.channelId),n=document.visibilityState===`visible`;if(!n&&!t){this.logger.debug(`Ignoring pageshow while hidden`);return}if(this.logger.debug(`Resuming after pageshow`),!n){var r;(r=this.modules.decoder)==null||r.enableBackgroundTimers()}this.resumeModules(),this.isSuspended=!1,this.isHiddenWithBackgroundPlayback()&&this.scheduleInactivityDisconnect()});let ce;this.emitter.on(`context switch complete`,()=>{ce||(ce=window.setTimeout(()=>{window.clearTimeout(ce),ce=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`,e=>this.emit(`needs user input`,e)),this.emitter.on(`event`,e=>{switch(e.type){case`metadata`:this.emit(`metadata`,e);break;case`channel switch`:this.emit(`channel switch`,{channelId:e.channelId});break;case`language switch`:this.emit(`language switch`,{language:e.language});break}}),this.emitter.on(`buffer state event`,this.onBufferEvent),this.emitter.on(`playback state`,e=>this.emit(`playback state`,e)),this.emitter.on(`rendition level changed`,({to:e})=>{e&&this.emit(`rendition level`,e)}),this.emitter.on(`connection state`,e=>{this.emit(`connection state`,e)}),this.emitter.on(`recovered from media error`,()=>{this.modules.adaptivity.reset(this.targetBufferTime*2),!this.isUserPaused&&this.visiblePauseTimeout===void 0&&this.playbackSource.play()}),this.emitter.once(`connect info`,e=>{var t,n;let r=((t=(n=e.telemetry)==null?void 0:n.probability)==null?1:t)>=Math.random();if(e.telemetry){var i;(i=this.modules.telemetry)==null||i.unload(),this.modules.telemetry=nC.create(this.logger.createContext(`TelemetryModule`),this.emitter,B(B({},e.telemetry),{},{enabled:this.options.get(`telemetryEnabled`)&&r}),this),this.modules.telemetry.load()}}),this.emitter.on(`adapt level`,e=>{let t=this.modules.renditions.getRenditionLevels(),n=this.modules.renditions.getRenditionLevel(),r=t.findIndex(e=>e===n),i=t.length-1,a=r;switch(e){case`upgrade`:{var o,s,c,l,u;let e=Math.min(r+1,i),n=t[e],d=(o=this.modules.connection.estimatedBandwidth)==null?Rr():o,f=((s=n==null||(c=n.audio)==null?void 0:c.bitRate)==null?0:s)+((l=n==null||(u=n.video)==null?void 0:u.bitRate)==null?0:l),p=d*2>f;n&&p&&this.modules.adaptivity.isQoSOk(n)&&(a=e)}break;case`downgrade`:a=Math.max(r-1,0);break;case`double downgrade`:a=Math.max(r-2,0);break;case`reconnect`:if(r===0||this.modules.qualityOfService.timeSpentBufferingLast(6e3)>5e3){if(this.modules.connection.lastConnectionTime===void 0||performance.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 a=0}if(a===r)return;let d=t[a];this.alignSizeAndBitRate(B(B({},this.targetSubscription),{},{video:B(B({},this.targetSubscription.video),d==null?void 0:d.video),audio:B(B({},this.targetSubscription.audio),d==null?void 0:d.audio)})),this.emitter.emit(`adapted level`)}),this.emitter.on(`text track data`,e=>{let t=M(OC,this).find(t=>t.language===e.language),n=this.modules.sync.getTimeshiftOffset()/1e3,r=n-M(DC,this);if(A(DC,this,n),t){if(t.cues)for(let e of t.cues)e.startTime-=r,e.endTime-=r;for(let r of e.cues){let e=new VTTCue(r.startTime-n,r.endTime-n,r.text);t.addCue(e)}}}),this.emitter.on(`native text track selected`,e=>{this.textTrack=e}),this.emitter.on(`received signal`,e=>{let t=e,n=this.modules.subscription.getCurrentSubscription();switch(this.logger.debug(`received`,B({},t)),t.type){case`client ip`:this.clientIp=t.ip;break;case`renditions`:this.updateTextTracks(t.renditions),A(kC,this,this.filterRenditions(t.renditions).then(e=>{this.emitter.emit(`renditions`,{renditions:e,channelId:this.currentSubscription.channelId}),this.emit(`rendition levels`,this.modules.renditions.getRenditionLevels()),this.emitLanguagesIfChanged()}).finally(()=>{A(kC,this,void 0)}));break;case`subscription changed`:var r;try{CC(t.subscription)}catch(e){this.emitter.emit(`error`,new W(`Subscription failed validation`,{source:e instanceof Error?e:void 0,isFatal:!1,code:`subscription_failed_validation`}))}this.emitter.emit(`subscription changed`,{reset:t.reset,to:t.subscription,from:this.modules.subscription.getCurrentSubscription()}),t.reset&&n.channelId!==t.subscription.channelId&&(this.emit(`error`,qi(t.subscription.channelId)),this.emit(`channel switch failed`,{channelId:n.channelId})),this.modules.sync.allowTimeshiftOnAudio=!((r=t.subscription.video)!=null&&r.codec),this.modules.adaptivity.reset();break;case`timing info`:this.modules.sync.updateChannelSyncInfo(t.timingInfo.channelId,t.timingInfo),this.emit(`server wallclock time`,t.timingInfo.wallclockTime);break}}),this.emitter.on(`channel switch timeout`,e=>{this.emit(`error`,qi(e)),this.emit(`channel switch failed`,{channelId:this.currentSubscription.channelId})}),this.emitter.on(`received data`,e=>{let t=this.modules.subscription.getCurrentSubscription(),n=Al(e);if(!t){this.logger.warn(`Received unwanted message`,B({},n));return}D(B(B({},n),{},{channelId:t.channelId}))}),this.emitter.on(`received moq data`,e=>{let t=e.payload.mediaType(),n=e.channelId,r=e.renditionId,i=this.modules.sync.processFragment(n,e.payload,r),a=i.unbackedSamplesCount();if(a>0&&this.unbackedSamplesWarned.shouldNotify(n,r)&&this.logger.warn(`Fragment declares more samples than its payload holds`,{unbackedSamples:a,samplesCount:i.samplesCount(),channelId:n,renditionId:r}),t!==`text`&&this.modules.jitter.recordSample({type:t,renditionId:r,timestamp:i.baseMediaDecodeTime(),timescale:i.timescale()}),e.switchInfo.channelId&&(e.switchInfo.drmTransition&&this.emitter.emit(`error`,Ji(`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:e.switchInfo.channelId,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3})),e.switchInfo.language&&this.modules.event.addEvent({type:`language switch`,language:e.switchInfo.language,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3}),this.modules.incomingData.add(t,e.payload.rawBytes().byteLength),(t===`video`||t===`audio`)&&this.hasListeners(`cmaf fragment`)&&this.emit(`cmaf fragment`,{mediaType:t,initSegment:i.header().rawBytes().slice(),fragment:i.rawBytes().slice(),isKeyframe:i.startsWithKeyframe()}),i.fragment().emsgs.forEach(e=>{if(!e.presentationTime)return;let t=Do(e.data);t&&this.modules.event.addEvent({id:e.id,timestamp:e.presentationTime/e.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:t.txx.value,type:`metadata`})}),this.modules.decoder){var o,s;let a=(o=i.header().init().moov.traks[0])==null?void 0:o.mdia.minf.stbl.stsd,m=(s=a==null?void 0:a.codec)==null?`h264`:s,h;if(m===`h264`){var c;h=a==null||(c=a.avc1)==null?void 0:c.avcC.bytes}else if(m===`h265`){var l,u,d;let e=(l=a==null||(u=a.hvc1)==null?void 0:u.data())==null?a==null||(d=a.hev1)==null?void 0:d.data():l;e&&(h=To(e))}else if(m===`av1`&&a!=null&&a.av01)h=Kc(a.av01.data());else if(m===`aac`){var f;h=a==null||(f=a.mp4a)==null||(f=f.esds)==null?void 0:f.decoderConfig}else if(m===`opus`){var p;h=bl(a==null||(p=a.opus)==null?void 0:p.dops)}if(h){let i=h.buffer.slice(h.byteOffset,h.byteOffset+h.byteLength);if(t===`text`)throw Error(`Subtitles are not supported`);this.emitter.emit(`init segment`,{initSegment:{channelId:n,renditionId:r,data:i,timescale:1e3,type:t,codec:m,codecString:e.codecString},mimeType:t})}else m&&this.logger.warn(`Failed to extract init data for codec`,{codec:m,channelId:n,renditionId:r});let g=0;for(let e=0;e<i.samplesCount();e++){let t=i.sample(e);if(!t){g++;continue}this.emitter.emit(`coded sample`,B(B({},t),{},{renditionId:r,channelId:n,data:t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength)}))}g>0&&this.unextractableSamplesWarned.shouldNotify(n,r)&&this.logger.warn(`Dropped samples the demuxer could not extract`,{droppedSamples:g,samplesCount:i.samplesCount(),channelId:n,renditionId:r})}else this.emitter.emit(`fragment`,{mimeType:e.mimeType,codec:e.codec,fragment:i,channelId:n,renditionId:r})});let le=this.options.get(`container`);le&&this.attach(le),this.logger.info(`Created Vindral instance`,{options:this.options});let D=function(){var e=P(function*(e){let t=e.channelId;M(kC,n)&&(yield M(kC,n));let r=n.modules.renditions.getRendition(e.renditionId,t);if(!Dl(e.flags)){if(Ol(e.flags)){let t=new TextDecoder().decode(e.payload),r=n.modules.sync.getTimeshiftOffset();if(e.renditionId!==0){let e=_r(t);if(e&&e.language!==void 0){let t=new Kl,i=[];try{i=t.parse(e.content||``)}catch(e){n.logger.warn(`failed to parse WebVTT segment, dropping it`,e)}let a=r/1e3,o=M(OC,n).find(t=>t.language===e.language),s=a-M(DC,n);if(A(DC,n,a),o){if(o.cues)for(let e of o.cues)e.startTime-=s,e.endTime-=s;for(let e of i){let t=new VTTCue(e.startTime-a,e.endTime-a,e.text);o.addCue(t)}}}}else n.modules.event.addEvent({timestamp:e.timestamp/e.timescale*1e3-n.modules.sync.getTimeshiftOffset(),content:t,type:`metadata`})}else if(r!=null&&r.codec){let i=jr(r.codec);if(i===`text`)throw Error(`Subtitles are not supported`);if(n.modules.incomingData.add(i,e.payload.byteLength),El(e.flags)){let a=B(B({type:i,data:e.payload,codec:r.codec,codecString:r.codecString},e),{},{channelId:t},Fr(r)?{width:r.width,height:r.height}:{}),o=pl(a.codec,a.payload);o&&n.sizes.set(a.renditionId,o);let s=Lr({codec:r.codec,codecString:r.codecString});n.emitter.emit(`init segment`,{initSegment:a,mimeType:s}),n.emit(`initialized media`)}else{let t=mC(e,r,n.sizes.get(e.renditionId));n.modules.jitter.recordSample(t);let a=n.sampleProcessingSesssions.get(i);if(!a)a=lC(n.modules.sync.processSample(t)),n.sampleProcessingSesssions.set(i,a);else{let e=n.willUseMediaSource()&&n.isSwitchingRenditionLevel&&t.type===`video`,r=a(n.modules.sync.processSample(t),e),i=t;r.forEach(e=>{n.modules.event.extractEvent(e,i),n.emitter.emit(`coded sample`,e),i=e})}}}}});return function(t){return e.apply(this,arguments)}}();this.options.get(`maxVideoBitRate`)!==2**53-1&&(this.maxVideoBitRate=this.options.get(`maxVideoBitRate`)),this.options.get(`maxAudioBitRate`)!==2**53-1&&(this.maxAudioBitRate=this.options.get(`maxAudioBitRate`)),Xt(this.options.get(`maxSize`),zr())||(this.maxSize=this.options.get(`maxSize`)),this.options.get(`burstEnabled`)&&g.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){let t=this.playbackSource.muted;e===this.playbackSource.userMuted&&(e||!t)||(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.applyBurstEnabled(this.channelId))}updateBufferTimeConfig(e){this.modules.bufferTime.updateConfig(e)}get playbackLatency(){var e;if(this.playbackSource.currentTime!==0)return this.targetBufferTime+((e=this.modules.sync.drift)==null?0:e)+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){if(e===this.language)return;let t=this.languages;if(e!==void 0&&t.length>0&&!t.includes(e)){this.logger.warn(`Language "${e}" is not available. Available languages: ${t.join(`, `)}`);return}this.modules.subscription.setLanguage(e),this.alignSizeAndBitRate(this.targetSubscription)}set textTrack(e){e!==this.textTrack&&(M(OC,this).forEach(t=>{if(t.label===e)t.mode=`showing`;else{if(t.mode===`showing`&&t.cues)for(let e of[...t.cues])t.removeCue(e);t.mode=`hidden`}}),this.emitter.emit(`text track`,e))}get textTracks(){return M(OC,this).filter(e=>e.mode!==`disabled`).map(e=>e.label)}get textTrack(){var e;return(e=M(OC,this).find(e=>e.mode===`showing`))==null?void 0:e.label}get channelId(){var e,t;return(e=(t=this.modules)==null?void 0:t.subscription.getTargetSubscription().channelId)==null?this.options.get(`channelId`):e}set channelId(e){if(e===this.channelId)return;this.applyBurstEnabled(e),this.modules.subscription.setChannelId(e);let t=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`),n=this.modules.renditions.getAudioRenditions(e),r=this.modules.renditions.getVideoRenditions(e),i=this.targetSubscription.audio.language,a=n==null?void 0:n.some(e=>e.language===i),o=t.find(e=>(r==null?void 0:r.find(t=>t.codec===e))!==void 0);o&&this.modules.subscription.setVideoCodec(o),this.logger.debug(`Channel switch - started`,{audioRenditions:n,targetSubscriptionLanguage:i,targetHasCurrentLanguage:a}),this.alignSizeAndBitRate(this.targetSubscription)}get maxSize(){var e,t;let{width:n,height:r}=(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video)==null?zr():e;return{width:n,height:r}}set maxSize(e){this.modules.constraintCap.setUserSpecifiedCap({video:{width:e.width,height:e.height}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxVideoBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video.bitRate)==null?Rr():e}set maxVideoBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({video:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxAudioBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.audio.bitRate)==null?Rr():e}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,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`video`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`video`):t)==null?[]:e}get audioBufferedRanges(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`audio`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`audio`):t)==null?[]:e}get videoKeyframeTimestamps(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getVideoKeyframeTimestamps())==null?(r=this.modules.decoder)==null?void 0:r.getVideoKeyframeTimestamps():t)==null?[]:e}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 Math.round(this.modules.qualityOfService.timeSpentBuffering())}get timeActive(){return Math.round(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 Math.round(performance.now()-this.createdAt)}suspend(e=!1){this.isSuspended&&!e||(Object.values(this.modules).forEach(e=>{e&&`suspend`in e&&e.suspend()}),this.isSuspended=!0)}unsuspend(){if(this.isSuspended){if(this.isHiddenWithBackgroundPlayDisabled()){this.logger.debug(`Deferring resume until the page is visible`);return}this.resumeModules(),this.isSuspended=!1}}alignSizeAndBitRate(e){let t=this.modules.constraintCap.constrainSubscription(B(B({},e),{},{video:B({},e.video),audio:B({},e.audio)})),n=this.modules.constraintCap.getUserSpecifiedCap();!this.abrEnabled&&n&&(t.audio.bitRate=n.audio.bitRate,t.video.bitRate=n.video.bitRate,t.video.width=n.video.width,t.video.height=n.video.height);let r=this.modules.renditions.getRenditionLevel(t);if(r){if(r.video&&(this.modules.subscription.setVideoBitRate(r.video.bitRate),this.modules.subscription.setSize(r.video)),r.audio)this.modules.subscription.setAudioBitRate(r.audio.bitRate),this.modules.subscription.setLanguage(r.audio.language);else if(t.audio.language){let e=this.modules.renditions.getAudioRenditions(t.channelId);!this.abrEnabled&&n&&(e=e==null?void 0:e.filter(e=>e.bitRate<n.audio.bitRate));let r=t.audio.language,i=e==null?void 0:e.some(e=>e.language===r),a=e==null?void 0:e.find(e=>e.language),o=(e==null?void 0:e.length)&&e[0]||void 0;i||(a?(this.logger.debug(`Randomizing language since target did not have current language`),this.modules.subscription.setAudioBitRate(a.bitRate),this.modules.subscription.setLanguage(a.language)):(this.logger.debug(`Randomizing audio rendition since target did not have current language`),o!=null&&o.bitRate&&this.modules.subscription.setAudioBitRate(o.bitRate),this.modules.subscription.setLanguage(o==null?void 0:o.language)))}}}get currentSubscription(){return this.modules.subscription.getCurrentSubscription()}get targetSubscription(){return this.modules.subscription.getTargetSubscription()}resolvedDecoder(e){return pC(this.options.get(`decoders`,e),this.browser.supportsMediaSource,this.options.get(`drm`))}usesSplitCanvasAudio(){return!this.willUseMediaSource()&&this.options.get(`streamToMediaElementEnabled`)&&Ft(this.browser)&&this.options.get(`media`)!==`audio`&&this.options.get(`media`)!==`video`&&this.browser.platform.isIOS}isWebKitCanvasPath(){return!this.willUseMediaSource()&&this.browser.platform.isWebKit}holdsDecoyWhilePaused(){return!(!this.isWebKitCanvasPath()||this.browser.platform.isIOS&&this.streamsToMediaElement()&&lt(this.browser,26))}streamsToMediaElement(){return this.options.get(`streamToMediaElementEnabled`)===!0&&Ft(this.browser)}requestAudioSessionOnce(){this.hasRequestedAudioSession||!this.options.get(`mediaSessionEnabled`)||!this.isWebKitCanvasPath()||!this.isBackgroundPlayEnabled(this.channelId)||(this.hasRequestedAudioSession=!0,this.logger.info(`Requested playback audio session`,{playback:De()}))}willUseMediaSource(){return this.resolvedDecoder()===`mse`}shouldUseWebCodecs(e){return this.resolvedDecoder(e)===`webcodecs`}isWebCodecsVideoAvailable(e){return this.shouldUseWebCodecs(e)&&typeof VideoDecoder<`u`}isWebCodecsAudioAvailable(e){return this.shouldUseWebCodecs(e)&&typeof AudioDecoder<`u`}shouldUseOffscreenCanvas(e){let t=this.options.get(`offscreenCanvasEnabled`,e);return t===void 0?this.shouldUseWebCodecs(e):t}isBackgroundPlayEnabled(e){return this.options.get(`backgroundPlayEnabled`,e)}shouldAllowBackgroundPlayback(e){return this.hasCalledConnect&&this.isBackgroundPlayEnabled(e)&&!this.isUserPaused}};m(AC,`MAX_POOL_SIZE`,10),m(AC,`REMOVE_CUE_THRESHOLD`,1e3*10),m(AC,`BACKGROUND_INACTIVITY_DISCONNECT_TIMEOUT`,1e3*15),m(AC,`VISIBLE_PAUSE_DISCONNECT_DELAY`,1e3);var jC={bar:`_bar_qm7bl_1`,hidden:`_hidden_qm7bl_47`},MC=`_withThumbnails_suenn_19`,NC={"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:MC,"hide-on-small":`_hide-on-small_suenn_27`},PC={"icon-button":`_icon-button_5fg7v_1`},FC={viewBox:`-10 -10 44 44`,content:`<g fill="none" stroke="white">
1323
1323
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z" clip-rule="evenodd" />
1324
1324
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2" />
1325
1325
  </g>`},IC={viewBox:`-160 -160 832 832`,content:`<path fill="white" d="M208,432H160a16,16,0,0,1-16-16V96a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16V416A16,16,0,0,1,208,432Z"/><path fill="white" d="M352,432H304a16,16,0,0,1-16-16V96a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16V416A16,16,0,0,1,352,432Z"/>`},LC={viewBox:`-6 -6 36 36`,content:`<path d="M7 17.259V6.74104C7 5.96925 7.83721 5.48837 8.50387 5.87726L18.2596 11.5681C18.5904 11.761 18.5904 12.2389 18.2596 12.4319L8.50387 18.1227C7.83721 18.5116 7 18.0308 7 17.259Z" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>`},RC={viewBox:`-10 -10 44 44`,content:`<g fill="none" stroke="white">
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.6.0-29-g4de98bfe",
2
+ "version": "4.6.0-30-g09527bd9",
3
3
  "name": "@vindral/web-sdk",
4
4
  "main": "./legacy.umd.js",
5
5
  "module": "./legacy.es.js",
package/player.d.ts CHANGED
@@ -251,7 +251,7 @@ interface Options {
251
251
  * starts below the lowest rendition. If the rendition it starts at still needs more than half the estimated
252
252
  * bandwidth (the lowest one on a slow link, or the fixed one with adaptive bit rate off), the burst is skipped.
253
253
  *
254
- * Is disabled by default.
254
+ * Is enabled by default.
255
255
  *
256
256
  */
257
257
  burstEnabled?: boolean;
@@ -1254,6 +1254,11 @@ declare class Vindral extends Emitter<PublicVindralEvents> {
1254
1254
  * setting targetBufferTime within that range for consistancy if using both min/max.
1255
1255
  */
1256
1256
  set targetBufferTime(bufferTimeMs: number);
1257
+ /**
1258
+ * Set the burst for joins and channel switches from `burstEnabled` as resolved for the channel, so a channel
1259
+ * override can turn it off as well as on
1260
+ */
1261
+ private applyBurstEnabled;
1257
1262
  /**
1258
1263
  * Update the dynamic buffer time configuration at runtime.
1259
1264
  * Allows adjusting min and max buffer time without recreating the Vindral instance.
package/player.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { t as e } from "./Ug7UWbYm.js";
2
- import "./DWxtmoaX.js";
3
- import { t } from "./BZjXqx5U.js";
2
+ import "./DzR0KUge.js";
3
+ import { t } from "./CKdlEmda.js";
4
4
  export { t as registerComponents, e as registerDebugComponents };
package/react.d.ts CHANGED
@@ -253,7 +253,7 @@ interface Options {
253
253
  * starts below the lowest rendition. If the rendition it starts at still needs more than half the estimated
254
254
  * bandwidth (the lowest one on a slow link, or the fixed one with adaptive bit rate off), the burst is skipped.
255
255
  *
256
- * Is disabled by default.
256
+ * Is enabled by default.
257
257
  *
258
258
  */
259
259
  burstEnabled?: boolean;
@@ -1256,6 +1256,11 @@ declare class Vindral extends Emitter<PublicVindralEvents> {
1256
1256
  * setting targetBufferTime within that range for consistancy if using both min/max.
1257
1257
  */
1258
1258
  set targetBufferTime(bufferTimeMs: number);
1259
+ /**
1260
+ * Set the burst for joins and channel switches from `burstEnabled` as resolved for the channel, so a channel
1261
+ * override can turn it off as well as on
1262
+ */
1263
+ private applyBurstEnabled;
1259
1264
  /**
1260
1265
  * Update the dynamic buffer time configuration at runtime.
1261
1266
  * Allows adjusting min and max buffer time without recreating the Vindral instance.
@@ -1,5 +1,5 @@
1
- import "./DWxtmoaX.js";
2
- import { t as e } from "./BZjXqx5U.js";
1
+ import "./DzR0KUge.js";
2
+ import { t as e } from "./CKdlEmda.js";
3
3
  //#region src/vindral-player-component.ts
4
4
  e();
5
5
  //#endregion